diff --git a/rtl/inc/macpas.pp b/rtl/inc/macpas.pp index e3e2796b0a..6e28c49a12 100644 --- a/rtl/inc/macpas.pp +++ b/rtl/inc/macpas.pp @@ -19,9 +19,43 @@ unit MacPas; interface +{ Using inlining for small system functions/wrappers } +{$ifdef HASINLINE} + {$inline on} + {$define SYSTEMINLINE} +{$endif} + type LongDouble = ValReal; +{FourCharCode coercion +This routine coreces string literals to a FourCharCode.} +function FCC(literal: string): LongWord; {$ifdef systeminline}inline;{$endif} + +{Same as FCC, to be compatible with GPC} +function FOUR_CHAR_CODE(literal: string): LongWord; {$ifdef systeminline}inline;{$endif} + +{This makes casts from ShortString to FourCharCode automatically, + to emulate the behaviour of mac pascal compilers} +operator := (s: ShortString) result: LongWord; {$ifdef systeminline}inline;{$endif} + + implementation + +function FCC(literal: string): LongWord; {$ifdef systeminline}inline;{$endif} +begin + FCC := PLongWord(@literal[1])^; +end; + +function FOUR_CHAR_CODE(literal: string): LongWord; {$ifdef systeminline}inline;{$endif} +begin + FOUR_CHAR_CODE := PLongWord(@literal[1])^; +end; + +operator := (s: ShortString) result: LongWord; {$ifdef systeminline}inline;{$endif} +begin + result := PLongWord(@s[1])^; +end; + end. \ No newline at end of file