From 759170f822579ab3fdcec6bb22ab680c1d0dd649 Mon Sep 17 00:00:00 2001 From: marcus Date: Sat, 12 Mar 2016 13:50:00 +0000 Subject: [PATCH] Amiga, AROS, MorphOS: TAG_(), AsTag() for easer varargs handling git-svn-id: trunk@33223 - --- packages/amunits/src/coreunits/utility.pas | 56 ++++++++++++++++++++++ packages/arosunits/src/utility.pas | 56 ++++++++++++++++++++++ packages/morphunits/src/utility.pas | 45 ++++++++++++++++- 3 files changed, 155 insertions(+), 2 deletions(-) diff --git a/packages/amunits/src/coreunits/utility.pas b/packages/amunits/src/coreunits/utility.pas index 2721c8e4a8..5a48e05e84 100644 --- a/packages/amunits/src/coreunits/utility.pas +++ b/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. diff --git a/packages/arosunits/src/utility.pas b/packages/arosunits/src/utility.pas index 830a28e298..f6bcce0f13 100644 --- a/packages/arosunits/src/utility.pas +++ b/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. diff --git a/packages/morphunits/src/utility.pas b/packages/morphunits/src/utility.pas index ad4dce255f..e7a4ec782f 100644 --- a/packages/morphunits/src/utility.pas +++ b/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;