Browse Source

+ added assigning op which converts FourCharCode to LongWord
+ added convertion functions FCC and FOUR_CHAR_CODE which
does the above conv manually.

olle 21 years ago
parent
commit
6d429b0d95
1 changed files with 34 additions and 0 deletions
  1. 34 0
      rtl/inc/macpas.pp

+ 34 - 0
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.