Browse Source

Amiga, AROS, MorphOS: TAG_(), AsTag() for easer varargs handling

git-svn-id: trunk@33223 -
marcus 9 years ago
parent
commit
759170f822

+ 56 - 0
packages/amunits/src/coreunits/utility.pas

@@ -391,6 +391,16 @@ FUNCTION Strnicmp(CONST string1 : pCHAR; CONST string2 : string; length : LONGIN
 FUNCTION Strnicmp(CONST string1 : string; CONST string2 : string; length : LONGINT) : LONGINT;
 
 
+function TAG_(value: pointer): PtrUInt; overload; inline;
+function TAG_(value: pchar): PtrUInt; overload; inline;
+function TAG_(value: boolean): PtrUInt; overload; inline;
+function TAG_(value: integer): PtrUInt; overload; inline;
+
+function AsTag(value: pointer): PtrUInt; overload; inline;
+function AsTag(value: pchar): PtrUInt; overload; inline;
+function AsTag(value: boolean): PtrUInt; overload; inline;
+function AsTag(value: integer): PtrUInt; overload; inline;
+
 IMPLEMENTATION
 
 function AllocNamedObject(name : STRPTR; Const argv : array of PtrUInt) : pNamedObject;
@@ -439,6 +449,52 @@ begin
        Strnicmp := Strnicmp(PChar(RawbyteString(string1)),PChar(RawbyteString(string2)),length);
 end;
 
+function TAG_(value: pointer): PtrUInt; inline;
+begin
+  TAG_:=PtrUInt(value);
+end;
+
+function TAG_(value: pchar): PtrUInt; inline;
+begin
+  TAG_:=PtrUInt(value);
+end;
+
+function TAG_(value: boolean): PtrUInt; inline;
+begin
+  if value then
+    TAG_ := LTrue
+  else
+    TAG_ := LFalse;
+end;
+
+function TAG_(value: integer): PtrUInt; inline;
+begin
+  TAG_:=PtrUInt(value);
+end;
+
+function AsTag(value: pointer): PtrUInt; inline;
+begin
+  AsTag:=PtrUInt(value);
+end;
+
+function AsTag(value: pchar): PtrUInt; inline;
+begin
+  AsTag:=PtrUInt(value);
+end;
+
+function AsTag(value: boolean): PtrUInt; inline;
+begin
+  if value then
+    AsTag := LTrue
+  else
+    AsTag := LFalse;
+end;
+
+function AsTag(value: integer): PtrUInt; inline;
+begin
+  AsTag:=PtrUInt(value);
+end;
+
 initialization
   UtilityBase := _UtilityBase;
 end.

+ 56 - 0
packages/arosunits/src/utility.pas

@@ -255,6 +255,16 @@ function CALLHOOKPKT_(Hook: PHook; Object_: APTR; Message: APTR): IPTR; inline;
 function AllocNamedObject(const Name: STRPTR; const Tags: array of PtrUInt): PNamedObject;
 function CallHook(Hook: PHook; Object_: APTR; const Params: array of PtrUInt): IPTR;
 
+function TAG_(Value: Pointer): PtrUInt; overload; inline;
+function TAG_(Value: PChar): PtrUInt; overload; inline;
+function TAG_(Value: boolean): PtrUInt; overload; inline;
+function TAG_(Value: integer): PtrUInt; overload; inline;
+
+function AsTag(Value: Pointer): PtrUInt; overload; inline;
+function AsTag(Value: PChar): PtrUInt; overload; inline;
+function AsTag(Value: boolean): PtrUInt; overload; inline;
+function AsTag(Value: integer): PtrUInt; overload; inline;
+
 implementation
 
 function AllocNamedObject(const Name: STRPTR; const Tags: array of PtrUInt): PNamedObject; inline;
@@ -280,4 +290,50 @@ begin
   CALLHOOKPKT_ := FuncPtr(Hook, Object_, Message);
 end;
 
+function TAG_(Value: pointer): PtrUInt; inline;
+begin
+  TAG_ := PtrUInt(Value);
+end;
+
+function TAG_(value: pchar): PtrUInt; inline;
+begin
+  TAG_ := PtrUInt(Value);
+end;
+
+function TAG_(value: boolean): PtrUInt; inline;
+begin
+  if Value then
+    TAG_ := LTrue
+  else
+    TAG_ := LFalse;
+end;
+
+function TAG_(Value: Integer): PtrUInt; inline;
+begin
+  TAG_ := PtrUInt(Value);
+end;
+
+function AsTag(Value: pointer): PtrUInt; inline;
+begin
+  AsTag := PtrUInt(Value);
+end;
+
+function AsTag(value: pchar): PtrUInt; inline;
+begin
+  AsTag := PtrUInt(Value);
+end;
+
+function AsTag(value: boolean): PtrUInt; inline;
+begin
+  if Value then
+    AsTag := LTrue
+  else
+    AsTag := LFalse;
+end;
+
+function AsTag(Value: Integer): PtrUInt; inline;
+begin
+  AsTag := PtrUInt(Value);
+end;
+
 end.

+ 43 - 2
packages/morphunits/src/utility.pas

@@ -347,9 +347,15 @@ function GetUniqueID: Cardinal;
 SysCall MOS_UtilityBase 270;
 
 
-function TAG_(value: pointer): longword; inline;
-function TAG_(value: pchar): longword; inline;
+function TAG_(value: pointer): longword; overload; inline;
+function TAG_(value: pchar): longword; overload; inline;
+function TAG_(value: boolean): longword; overload; inline;
+function TAG_(value: integer): longword; overload; inline;
 
+function AsTag(value: pointer): longword; overload; inline;
+function AsTag(value: pchar): longword; overload; inline;
+function AsTag(value: boolean): longword; overload; inline;
+function AsTag(value: integer): longword; overload; inline;
 
 implementation
 
@@ -363,6 +369,41 @@ begin
   TAG_:=longword(value);
 end;
 
+function TAG_(value: boolean): longword; inline;
+begin
+  if value then
+    TAG_ := LTrue
+  else
+    TAG_ := LFalse;
+end;
+
+function TAG_(value: integer): longword; inline;
+begin
+  TAG_:=longword(value);
+end;
+
+function AsTag(value: pointer): longword; inline;
+begin
+  AsTag:=longword(value);
+end;
+
+function AsTag(value: pchar): longword; inline;
+begin
+  AsTag:=longword(value);
+end;
+
+function AsTag(value: boolean): longword; inline;
+begin
+  if value then
+    AsTag := LTrue
+  else
+    AsTag := LFalse;
+end;
+
+function AsTag(value: integer): longword; inline;
+begin
+  AsTag:=longword(value);
+end;
 
 begin
   UtilityBase:=MOS_UtilityBase;