mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-16 00:42:06 +02:00
AmigaOS4: library units for utility.library, timer.device and dos.library
git-svn-id: trunk@33552 -
This commit is contained in:
parent
f0e75de730
commit
44a544d0f5
3
.gitattributes
vendored
3
.gitattributes
vendored
@ -6316,7 +6316,10 @@ packages/os4units/Makefile svneol=native#text/plain
|
||||
packages/os4units/Makefile.fpc svneol=native#text/plain
|
||||
packages/os4units/Makefile.fpc.fpcmake svneol=native#text/plain
|
||||
packages/os4units/fpmake.pp svneol=native#text/pascal
|
||||
packages/os4units/src/amigados.pas svneol=native#text/pascal
|
||||
packages/os4units/src/exec.pas svneol=native#text/pascal
|
||||
packages/os4units/src/timer.pas svneol=native#text/pascal
|
||||
packages/os4units/src/utility.pas svneol=native#text/pascal
|
||||
packages/palmunits/Makefile svneol=native#text/plain
|
||||
packages/palmunits/Makefile.fpc svneol=native#text/plain
|
||||
packages/palmunits/Makefile.fpc.fpcmake svneol=native#text/plain
|
||||
|
@ -32,6 +32,9 @@ begin
|
||||
P.IncludePath.Add('src');
|
||||
|
||||
T:=P.Targets.AddUnit('exec.pas');
|
||||
T:=P.Targets.AddUnit('timer.pas');
|
||||
T:=P.Targets.AddUnit('utility.pas');
|
||||
T:=P.Targets.AddUnit('amigados.pas');
|
||||
|
||||
{$ifndef ALLPACKAGES}
|
||||
Run;
|
||||
|
2780
packages/os4units/src/amigados.pas
Normal file
2780
packages/os4units/src/amigados.pas
Normal file
File diff suppressed because it is too large
Load Diff
@ -2,7 +2,7 @@
|
||||
This file is part of the Free Pascal run time library.
|
||||
Copyright (c) 2016 by Free Pascal development team
|
||||
|
||||
exec.library functions
|
||||
exec.library functions for Amiga OS 4.x
|
||||
|
||||
See the file COPYING.FPC, included in this distribution,
|
||||
for details about the copyright.
|
||||
@ -25,11 +25,12 @@ interface
|
||||
|
||||
type
|
||||
STRPTR = PChar;
|
||||
PSTRPTR = PPChar;
|
||||
ULONG = Longword;
|
||||
LONG = LongInt;
|
||||
APTR = Pointer;
|
||||
BPTR = LongInt;
|
||||
BSTR = LongInt;
|
||||
BPTR = LongInt; // Long word (BCPL) pointer
|
||||
BSTR = LongInt; // Long word pointer to BCPL string
|
||||
BOOL = SmallInt;
|
||||
UWORD = Word;
|
||||
WORDBITS = Word;
|
||||
@ -114,14 +115,14 @@ const
|
||||
const
|
||||
// differentiates user tags from control tags
|
||||
TAG_USER = $80000000; // differentiates user tags from system tags
|
||||
Type
|
||||
type
|
||||
Tag = LongWord;
|
||||
PTag = ^Tag;
|
||||
|
||||
PTagItem = ^TTagItem;
|
||||
TTagItem = record
|
||||
ti_Tag: Tag;
|
||||
ti_Data: LongWord;
|
||||
ti_Tag: Tag; // identifies the type of data
|
||||
ti_Data: LongWord; // type-specific data
|
||||
end;
|
||||
PPTagItem = ^PTagItem;
|
||||
|
||||
@ -1742,10 +1743,10 @@ const
|
||||
|
||||
//**********************************************************************
|
||||
|
||||
function Obtain(): LongWord; syscall IExec 60;
|
||||
function Release(): LongWord; syscall IExec 64;
|
||||
procedure Expunge(); syscall IExec 68;
|
||||
function Clone(): PInterface; syscall IExec 72;
|
||||
function ExecObtain(): LongWord; syscall IExec 60;
|
||||
function ExecRelease(): LongWord; syscall IExec 64;
|
||||
procedure ExecExpunge(); syscall IExec 68;
|
||||
function ExecClone(): PInterface; syscall IExec 72;
|
||||
procedure AddHead(List: PList; Node: PNode); syscall IExec 76;
|
||||
procedure AddMemHandler(MemHand: PInterrupt); syscall IExec 80;
|
||||
procedure AddMemList(Size: LongWord; Attributes: LongWord; Pri: LongInt; Base: APTR; const Name: PChar); syscall IExec 84;
|
||||
|
86
packages/os4units/src/timer.pas
Normal file
86
packages/os4units/src/timer.pas
Normal file
@ -0,0 +1,86 @@
|
||||
{
|
||||
This file is part of the Free Pascal run time library.
|
||||
Copyright (c) 2016 by Free Pascal development team
|
||||
|
||||
dos.library functions for Amiga OS 4.x
|
||||
|
||||
See the file COPYING.FPC, included in this distribution,
|
||||
for details about the copyright.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
**********************************************************************}
|
||||
{$PACKRECORDS 2}
|
||||
|
||||
unit timer;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
exec;
|
||||
|
||||
const
|
||||
// unit defintions
|
||||
// enTimerUnits
|
||||
UNIT_MICROHZ = 0; // 1/1000000 second granularity
|
||||
UNIT_VBLANK = 1; // 1/60 second granularity
|
||||
UNIT_ECLOCK = 2; // system dependant number of ticks/second
|
||||
UNIT_WAITUNTIL = 3; // wait until a certain point of time
|
||||
UNIT_WAITECLOCK = 4; // wait until a certain point of time (in EClock ticks)
|
||||
UNIT_ENTROPY = 5; // Read entropy data
|
||||
|
||||
TIMERNAME : PChar = 'timer.device';
|
||||
|
||||
type
|
||||
PTimeVal = ^TTimeVal;
|
||||
TTimeVal = record
|
||||
tv_secs: LongWord;
|
||||
tv_micro: LongWord;
|
||||
end;
|
||||
|
||||
PTimeRequest = ^TTimeRequest;
|
||||
TTimeRequest = record
|
||||
tr_node: TIORequest;
|
||||
tr_time: TTimeVal;
|
||||
end;
|
||||
|
||||
PEClockVal = ^TEClockVal;
|
||||
TEClockVal = record
|
||||
ev_hi: LongWord;
|
||||
ev_lo: LongWord;
|
||||
end;
|
||||
|
||||
const
|
||||
// enTimerCmd
|
||||
TR_ADDREQUEST = CMD_NONSTD;
|
||||
TR_GETSYSTIME = CMD_NONSTD + 1;
|
||||
TR_SETSYSTIME = CMD_NONSTD + 2;
|
||||
|
||||
{ To use any of the routines below, TimerBase must be set to point
|
||||
to the timer.device, either by calling CreateTimer or by pulling
|
||||
the device pointer from a valid TimeRequest, and get the
|
||||
Interface i.e.
|
||||
TimerBase := TimeRequest.io_Device;
|
||||
ITimer := GetInterface(TimerBase, 'main', 1, nil);
|
||||
_after_ you have called OpenDevice on the timer.}
|
||||
var
|
||||
TimerBase: Pointer = nil;
|
||||
ITimer: Pointer = nil;
|
||||
|
||||
function TimerObtain(): LongWord; syscall ITimer 60;
|
||||
function TimerRelease(): LongWord; syscall ITimer 64;
|
||||
procedure TimerExpunge(); syscall ITimer 68;
|
||||
function TimerClone(): PInterface; syscall ITimer 72;
|
||||
procedure AddTime(Dest: PTimeVal; Src: PTimeVal); syscall TimerBase 76;
|
||||
function CmpTime(Dest: PTimeVal; Src: PTimeVal): LongInt; syscall TimerBase 80;
|
||||
procedure SubTime(Dest: PTimeVal; Src: PTimeVal); syscall TimerBase 84;
|
||||
function ReadEClock(Dest: PEClockVal): LongWord; syscall TimerBase 88;
|
||||
procedure GetSysTime(Dest: PTimeVal); syscall TimerBase 92;
|
||||
procedure GetUpTime(Dest: PTimeVal); syscall TimerBase 96;
|
||||
procedure MicroDelay(MicroSeconds: LongWord); syscall TimerBase 100;
|
||||
|
||||
implementation
|
||||
|
||||
end.
|
389
packages/os4units/src/utility.pas
Normal file
389
packages/os4units/src/utility.pas
Normal file
@ -0,0 +1,389 @@
|
||||
{
|
||||
This file is part of the Free Pascal run time library.
|
||||
Copyright (c) 2016 by Free Pascal development team
|
||||
|
||||
utility.library functions for Amiga OS 4.x
|
||||
|
||||
See the file COPYING.FPC, included in this distribution,
|
||||
for details about the copyright.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
**********************************************************************}
|
||||
|
||||
|
||||
{$PACKRECORDS 2}
|
||||
|
||||
unit utility;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
exec;
|
||||
|
||||
type
|
||||
PClockData = ^TClockData;
|
||||
TClockData = record
|
||||
sec: Word; // 0..59
|
||||
min: Word; // 0..59
|
||||
hour: Word; // 0..23
|
||||
mday: Word; // 1..31
|
||||
month: Word; // 1..12
|
||||
year: Word; // 1978..
|
||||
wday: Word; // 0..6; 0 = Sunday
|
||||
end;
|
||||
|
||||
// PHook/THook relocated to Exec
|
||||
|
||||
// Namespace definitions
|
||||
type
|
||||
// The named object structure
|
||||
PNamedObject = ^TNamedObject;
|
||||
TNamedObject = record
|
||||
no_Object: APTR; // Your pointer, for whatever you want
|
||||
end;
|
||||
|
||||
const
|
||||
// Tags for AllocNamedObject()
|
||||
|
||||
// enAllocNamedObjectTags
|
||||
ANO_NameSpace = 4000; // Tag to define namespace
|
||||
ANO_UserSpace = 4001; // tag to define userspace
|
||||
ANO_Priority = 4002; // tag to define priority
|
||||
ANO_Flags = 4003; // tag to define flags
|
||||
|
||||
// Flags for tag ANO_Flags
|
||||
// enANOFlagBits
|
||||
NSB_NODUPS = 0;
|
||||
NSB_CASE = 1;
|
||||
// enANOFlags
|
||||
NSF_NODUPS = 1 shl NSB_NODUPS; // Default allow duplicates
|
||||
NSF_CASE = 1 shl NSB_CASE; // Default to caseless...
|
||||
|
||||
|
||||
{ Control attributes for Pack/UnpackStructureTags() }
|
||||
|
||||
|
||||
{ PackTable definition:
|
||||
*
|
||||
* The PackTable is a simple array of LONGWORDS that are evaluated by
|
||||
* PackStructureTags() and UnpackStructureTags().
|
||||
*
|
||||
* The table contains compressed information such as the tag offset from
|
||||
* the base tag. The tag offset has a limited range so the base tag is
|
||||
* defined in the first longword.
|
||||
*
|
||||
* After the first longword, the fields look as follows:
|
||||
*
|
||||
* +--------- 1 = signed, 0 = unsigned (for bits, 1=inverted boolean)
|
||||
* |
|
||||
* | +------ 00 = Pack/Unpack, 10 = Pack, 01 = Unpack, 11 = special
|
||||
* | / \
|
||||
* | | | +-- 00 = Byte, 01 = Integer, 10 = Long, 11 = Bit
|
||||
* | | | / \
|
||||
* | | | | | /----- For bit operations: 1 = TAG_EXISTS is TRUE
|
||||
* | | | | | |
|
||||
* | | | | | | /-------------------- Tag offset from base tag value
|
||||
* | | | | | | | \
|
||||
* m n n o o p q q q q q q q q q q r r r s s s s s s s s s s s s s
|
||||
* \ | | |
|
||||
* Bit offset (for bit operations) ----/ | |
|
||||
* \ |
|
||||
* Offset into data structure -----------------------------------/
|
||||
*
|
||||
* A -1 longword signifies that the next longword will be a new base tag
|
||||
*
|
||||
* A 0 longword signifies that it is the end of the pack table.
|
||||
*
|
||||
* What this implies is that there are only 13-bits of address offset
|
||||
* and 10 bits for tag offsets from the base tag. For most uses this
|
||||
* should be enough, but when this is not, either multiple pack tables
|
||||
* or a pack table with extra base tags would be able to do the trick.
|
||||
* The goal here was to make the tables small and yet flexible enough to
|
||||
* handle most cases.
|
||||
}
|
||||
|
||||
const
|
||||
PSTB_SIGNED = 31;
|
||||
PSTB_UNPACK = 30; // Note that these are active low...
|
||||
PSTB_PACK = 29; // Note that these are active low...
|
||||
PSTB_EXISTS = 26; // Tag exists bit true flag hack...
|
||||
|
||||
PSTF_SIGNED = 1 shl PSTB_SIGNED;
|
||||
PSTF_UNPACK = 1 shl PSTB_UNPACK;
|
||||
PSTF_PACK = 1 shl PSTB_PACK;
|
||||
|
||||
PSTF_EXISTS = 1 shl PSTB_EXISTS;
|
||||
|
||||
|
||||
// *********************************************************************
|
||||
|
||||
PKCTRL_PACKUNPACK = $00000000;
|
||||
PKCTRL_PACKONLY = $40000000;
|
||||
PKCTRL_UNPACKONLY = $20000000;
|
||||
|
||||
PKCTRL_BYTE = $80000000;
|
||||
PKCTRL_WORD = $88000000;
|
||||
PKCTRL_LONG = $90000000;
|
||||
|
||||
PKCTRL_UBYTE = $00000000;
|
||||
PKCTRL_UWORD = $08000000;
|
||||
PKCTRL_ULONG = $10000000;
|
||||
|
||||
PKCTRL_BIT = $18000000;
|
||||
PKCTRL_FLIPBIT = $98000000;
|
||||
|
||||
|
||||
// *********************************************************************
|
||||
// Tags are a general mechanism of extensible data arrays for parameter
|
||||
// specification and property inquiry. In practice, tags are used in arrays,
|
||||
// or chain of arrays.
|
||||
|
||||
// PTagItem/TTagItem/TAG relocated to Exec
|
||||
|
||||
// constants for Tag.ti_Tag, control tag values
|
||||
const
|
||||
TAG_DONE = 0; // terminates array of TagItems. ti_Data unused
|
||||
TAG_END = 0; // synonym for TAG_DONE
|
||||
TAG_IGNORE = 1; // ignore this item, not end of array
|
||||
TAG_MORE = 2; // ti_Data is pointer to another array of TagItems note that this tag terminates the current array
|
||||
TAG_SKIP = 3; // skip this and the next ti_Data items
|
||||
|
||||
// differentiates user tags from control tags
|
||||
TAG_USER = $80000000; { differentiates user tags from system tags}
|
||||
|
||||
{ If the TAG_USER bit is set in a tag number, it tells utility.library that
|
||||
the tag is not a control tag (like TAG_DONE, TAG_IGNORE, TAG_MORE) and is
|
||||
instead an application tag. "USER" means a client of utility.library in
|
||||
general, including system code like Intuition or ASL, it has nothing to do
|
||||
with user code.}
|
||||
|
||||
// Tag filter logic specifiers for use with FilterTagItems()
|
||||
// enTagLogic
|
||||
TAGFILTER_AND = 0; // exclude everything but filter hits
|
||||
TAGFILTER_NOT = 1; // exclude only filter hits
|
||||
|
||||
// Mapping types for use with MapTags()
|
||||
// enTagMap
|
||||
MAP_REMOVE_NOT_FOUND = 0; // remove tags that aren't in mapList
|
||||
MAP_KEEP_NOT_FOUND = 1; // keep tags that aren't in mapList
|
||||
|
||||
type
|
||||
PUtilityBase = ^TUtilityBase;
|
||||
TUtilityBase = record
|
||||
ub_LibNode: TLibrary;
|
||||
ub_Language: Byte; // Private, for lowlevel.library
|
||||
ub_Reserved: Byte;
|
||||
end;
|
||||
|
||||
//**********************************************************************
|
||||
// Flags used by the UTF-8 functions. */
|
||||
const
|
||||
UTF_INVALID_SUBST_FFFD = 1 shl 0;
|
||||
// Do not abort decoding when an invalid UTF-8 sequence is encountered,
|
||||
// instead, substitute the invalid byte sequence with the special
|
||||
// $FFFD character. (inverse ? on square background)
|
||||
|
||||
type
|
||||
// *********************************************************************
|
||||
// Lists with probabilistic balancing
|
||||
PSkipList = ^TSkipList;
|
||||
TSkipList = record
|
||||
sl_Error: LongInt; // If an insertion fails, here is why
|
||||
end;
|
||||
|
||||
PSkipNode = ^TSkipNode;
|
||||
TSkipNode = record
|
||||
sn_Reserved: APTR;
|
||||
sn_Key: APTR; // Unique key associated with this node
|
||||
end;
|
||||
|
||||
// *********************************************************************
|
||||
// Self-organizing binary trees
|
||||
PSplayTree = ^TSplayTree;
|
||||
TSplayTree = record
|
||||
st_Error: LongInt; // If an insertion fails, here is why
|
||||
end;
|
||||
|
||||
PSplayNode = ^TSplayNode;
|
||||
TSplayNode = record
|
||||
sn_UserData: APTR; // Points to user data area for this node
|
||||
end;
|
||||
|
||||
const
|
||||
// *********************************************************************
|
||||
// Error codes that may be returned by the insertion functions.
|
||||
// enErrorCodes
|
||||
INSERTNODE_OUT_OF_MEMORY = 1; // Not enough memory
|
||||
INSERTNODE_DUPLICATE_KEY = 2; // Key is not unique
|
||||
INSERTNODE_TOO_SHORT = 3; // Node size must be at least as large as sizeof(TSkipNode)
|
||||
|
||||
// *********************************************************************
|
||||
// Context information to be passed around between the different SHA-1
|
||||
// calculation routines. When the digest has been calculated, you fill
|
||||
// find it stored in the 'mdsha_Code' member (all 160 bits of it).
|
||||
type
|
||||
PMessageDigest_SHA = ^TMessageDigest_SHA;
|
||||
TMessageDigest_SHA = record
|
||||
mdsha_Code: array[0..19] of Byte;
|
||||
mdsha_Reserved: array[0..327] of Byte;
|
||||
end;
|
||||
|
||||
PRandomState = ^TRandomState;
|
||||
TRandomState = record
|
||||
rs_High: LongInt;
|
||||
rs_Low: LongInt;
|
||||
end;
|
||||
|
||||
var
|
||||
UtilityBase: pUtilityBase;
|
||||
|
||||
function UtilityObtain(): LongWord; syscall IUtility 60;
|
||||
function UtilityRelease(): LongWord; syscall IUtility 64;
|
||||
procedure UtilityExpunge(); syscall IUtility 68;
|
||||
function UtilityClone(): PInterface; syscall IUtility 72;
|
||||
function AllocateTagItems(NumTags: LongWord): PTagItem; syscall IUtility 76;
|
||||
procedure ApplyTagChanges(List: PTagItem; const ChangeList: PTagItem); syscall IUtility 80;
|
||||
function CloneTagItems(const Original: PTagItem): PTagItem; syscall IUtility 84;
|
||||
procedure FilterTagChanges(Changelist: PTagItem; OriginalList: PTagItem; Apply: LongWord); syscall IUtility 88;
|
||||
function FilterTagItems(Taglist: PTagItem; const FilterArray: PLongWord; Logic: LongWord): LongWord; syscall IUtility 92;
|
||||
function FindTagItem(TagValue: Tag; const TagList: PTagItem): PTagItem; syscall IUtility 96;
|
||||
procedure FreeTagItems(TagList: PTagItem); syscall IUtility 100;
|
||||
function GetTagData(TagValue: Tag; DefaultValue: LongWord; const TagList: PTagItem): LongWord; syscall IUtility 104;
|
||||
procedure MapTags(TagList: PTagItem; const Maplist: PTagItem; MapType: LongWord); syscall IUtility 108;
|
||||
function NextTagItem(ItemPtr: PPTagItem): PTagItem; overload; syscall IUtility 112;
|
||||
function NextTagItem(var Item: PTagItem): PTagItem; overload; syscall IUtility 112;
|
||||
function PackBoolTags(InitialFlags: LongWord; const TagList: PTagItem; const Boolmap: PTagItem) : LongWord; syscall IUtility 116;
|
||||
procedure RefreshTagItemClones(Clone: PTagItem; const OriginalTagItems : PTagItem); syscall IUtility 120;
|
||||
function TagInArray(TagValue: Tag; const TagArray: PLongWord): LongBool; syscall IUtility 124;
|
||||
function CallHookPkt(Hook: PHook; Obj: APTR; Message_: APTR): LongWord; syscall IUtility 128;
|
||||
// 132 CallHook
|
||||
function AddNamedObject(NameSpace: PNamedObject; Obj: PNamedObject): LongBool; syscall IUtility 136;
|
||||
function AllocNamedObjectA(const Name: STRPTR; const TagList: PTagItem): PNamedObject; syscall IUtility 140;
|
||||
// 144 AllocNamedObject
|
||||
function AttemptRemNamedObject(Obj: PNamedObject): LongInt; syscall IUtility 148;
|
||||
function FindNamedObject(NameSpace: PNamedObject; const Name: STRPTR; PreviousObject: PNamedObject): PNamedObject; syscall IUtility 152;
|
||||
procedure FreeNamedObject(Obj: PNamedObject); syscall IUtility 156;
|
||||
function NamedObjectName(Obj: PNamedObject): STRPTR; syscall IUtility 160;
|
||||
procedure ReleaseNamedObject(Obj: PNamedObject); syscall IUtility 164;
|
||||
procedure RemNamedObject(Obj: PNamedObject; Message_: PMessage); syscall IUtility 168;
|
||||
procedure Amiga2Date(DateAmiga: LongWord; Cd: PClockData); syscall IUtility 172;
|
||||
function CheckDate(const Date: PClockData): LongWord; syscall IUtility 176;
|
||||
function Date2Amiga(const Date: PClockData): LongWord; syscall IUtility 180;
|
||||
function CreateSkipList(Hook: PHook; MaxLevels: LongInt): PSkipList; syscall IUtility 184;
|
||||
procedure DeleteSkipList(SkipList: PSkipList); syscall IUtility 188;
|
||||
function FindSkipNode(SkipList: PSkipList; Key: APTR): PSkipList; syscall IUtility 192;
|
||||
function GetFirstSkipNode(SkipList: PSkipList): PSkipList; syscall IUtility 196;
|
||||
function GetNextSkipNode(SkipList: PSkipList): PSkipList; syscall IUtility 200;
|
||||
function InsertSkipNode(SkipList: PSkipList): PSkipList; syscall IUtility 204;
|
||||
function RemoveSkipNode(SkipList: PSkipList; Key: APTR): LongBool; syscall IUtility 208;
|
||||
function CreateSplayTree(CompareHook: PHook): PSplayTree; syscall IUtility 212;
|
||||
procedure DeleteSplayTree(SplayTree: PSplayTree); syscall IUtility 216;
|
||||
function FindSplayNode(SplayTree: PSplayTree; Key: APTR): PSplayTree; syscall IUtility 220;
|
||||
function InsertSplayNode(SplayTree: PSplayTree; Key: APTR; DateSize: LongWord): PSplayTree; syscall IUtility 224;
|
||||
function RemoveSplayNode(SplayTree: PSplayTree; Key: APTR): PSplayTree; syscall IUtility 228;
|
||||
function FindNameNC(List: PList; const Name: PChar): PNode; syscall IUtility 232;
|
||||
function GetUniqueID : LongWord; syscall IUtility 236;
|
||||
procedure MessageDigest_SHA_Final(SHAs: PMessageDigest_SHA); syscall IUtility 240;
|
||||
procedure MessageDigest_SHA_Init(SHAs: PMessageDigest_SHA); syscall IUtility 244;
|
||||
procedure MessageDigest_SHA_Update(SHAs: PMessageDigest_SHA; Data: APTR; NumBytes: LongInt); syscall IUtility 248;
|
||||
function PackStructureTags(Pack: APTR; const PackTable: PLongWord; const TagList: PTagItem): LongWord; syscall IUtility 252;
|
||||
function UnpackStructureTags(const Pack: APTR; const PackTable: PLongWord; TagList: PTagItem): LongWord; syscall IUtility 256;
|
||||
function Random(State: PRandomState): LongWord; syscall IUtility 260;
|
||||
function SetMem(Destination: APTR; FillChar: Byte; Length: LongInt): APTR; syscall IUtility 264;
|
||||
function Stricmp(const S1: STRPTR; const S2: STRPTR): LongInt; syscall IUtility 268;
|
||||
function Strlcpy(Dst: STRPTR; const Src: STRPTR; Size: LongInt): LongInt; syscall IUtility 272;
|
||||
function Strlcat(Dst: STRPTR; const Src: STRPTR; Size: LongInt): LongInt; syscall IUtility 276;
|
||||
function Strnicmp(const S1: STRPTR; const S2: STRPTR; n: LongInt): LongInt; syscall IUtility 280;
|
||||
function ToLower(c: Char): LongWord; syscall IUtility 284;
|
||||
function ToUpper(c: Char): LongWord; syscall IUtility 288;
|
||||
function VASPrintf(const Fmt: STRPTR; Args: APTR): STRPTR; syscall IUtility 292;
|
||||
// 296 ASPrintf
|
||||
function VSNPrintf(Buffer: STRPTR; BufferSize: LongInt; const Fmt: STRPTR; Args: APTR): STRPTR; syscall IUtility 300;
|
||||
// 304 SNPrintf
|
||||
procedure ClearMem(Destination: APTR; Size: LongWord); syscall IUtility 308;
|
||||
procedure MoveMem(const Source: APTR; Destination: APTR; Size: LongWord); syscall IUtility 312;
|
||||
function Strlen(const String_: STRPTR): LongWord; syscall IUtility 316;
|
||||
function UTF8toUCS4(const UTF8Source: STRPTR; UCS4Destination: PLongInt; UCS4DestinationSize: LongInt; Flags: LongWord): LongInt; syscall IUtility 320;
|
||||
function UCS4toUTF8(const UCS4Source: PLongInt; UTF8Destination: STRPTR; UTF8DestinationSize: LongInt; Flags: LongWord): LongInt; syscall IUtility 324;
|
||||
function UTF8Strnicmp(const UTF8String1: STRPTR; const UTF8String2: STRPTR; MaxUCSchars: LongInt): LongInt; syscall IUtility 328;
|
||||
function UTF8Stricmp(const UTF8String1: STRPTR; const UTF8String2: STRPTR): LongInt; syscall IUtility 332;
|
||||
function UTF8Count(const UTF8String: STRPTR; Validate: LongInt): LongInt; syscall IUtility 336;
|
||||
function UCS4Count(const UCS4String: PLongInt; Validate: LongInt): LongInt; syscall IUtility 340;
|
||||
function UTF8Encode(UCS4: LongInt; Buffer: STRPTR; BufSize: LongInt; Flags: LongWord): LongInt; syscall IUtility 344;
|
||||
function UTF8Decode(const UTF8PPTR: PSTRPTR; Flags: LongWord): LongInt; syscall IUtility 348;
|
||||
function UCS4ToLower(UCS4In: LongInt): LongInt; syscall IUtility 352;
|
||||
function UCS4ToUpper(UCS4In: LongInt): LongInt; syscall IUtility 356;
|
||||
function UCS4Valid(UCS4: LongInt): LongInt; syscall IUtility 360;
|
||||
|
||||
|
||||
function AllocNamedObject(Name: STRPTR; const Tags: array of PtrUInt): PNamedObject; inline;
|
||||
|
||||
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 Tags: array of PtrUInt): PNamedObject; inline;
|
||||
begin
|
||||
AllocNamedObject := AllocNamedObjectA(Name, @Tags);
|
||||
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.
|
Loading…
Reference in New Issue
Block a user