
{
Created: Sunday, September 15, 1991 at 11:56 PM
 Packages.p
 Pascal Interface to the Macintosh Libraries

  Copyright Apple Computer, Inc. 1985-1991
  All rights reserved
}


{$IFC UNDEFINED UsingIncludes}
{$SETC UsingIncludes := 0}
{$ENDC}

{$IFC NOT UsingIncludes}
 UNIT Packages;
 INTERFACE
{$ENDC}

{$IFC UNDEFINED UsingPackages}
{$SETC UsingPackages := 1}

{$I+}
{$SETC PackagesIncludes := UsingIncludes}
{$SETC UsingIncludes := 1}
{$IFC UNDEFINED UsingTypes}
{$I $$Shell(PInterfaces)Types.p}
{$ENDC}
{$IFC UNDEFINED UsingStandardFile}
{$I $$Shell(PInterfaces)StandardFile.p}
{$ENDC}
{$IFC UNDEFINED UsingScript}
{$I $$Shell(PInterfaces)Script.p}
{$ENDC}
{$SETC UsingIncludes := PackagesIncludes}

CONST
listMgr = 0;							{list manager}
dskInit = 2;							{Disk Initializaton}
stdFile = 3;							{Standard File}
flPoint = 4;							{Floating-Point Arithmetic}
trFunc = 5;								{Transcendental Functions}
intUtil = 6;							{International Utilities}
bdConv = 7;								{Binary/Decimal Conversion}
editionMgr = 11;						{Edition Manager}
currSymLead = 16;
currNegSym = 32;
currTrailingZ = 64;
currLeadingZ = 128;
zeroCycle = 1;							{0:00 AM/PM format}
longDay = 0;							{day of the month}
longWeek = 1;							{day of the week}
longMonth = 2;							{month of the year}
longYear = 3;							{year}
supDay = 1;								{suppress day of month}
supWeek = 2;							{suppress day of week}
supMonth = 4;							{suppress month}
supYear = 8;							{suppress year}
dayLdingZ = 32;
mntLdingZ = 64;
century = 128;
secLeadingZ = 32;
minLeadingZ = 64;
hrLeadingZ = 128;

{ Date Orders }
mdy = 0;
dmy = 1;
ymd = 2;
myd = 3;
dym = 4;
ydm = 5;


{ Regional version codes }
verUS = 0;
verFrance = 1;
verBritain = 2;
verGermany = 3;
verItaly = 4;
verNetherlands = 5;
verFrBelgiumLux = 6;					{ French for Belgium & Luxembourg }
verSweden = 7;
verSpain = 8;
verDenmark = 9;
verPortugal = 10;
verFrCanada = 11;
verNorway = 12;
verIsrael = 13;
verJapan = 14;
verAustralia = 15;
verArabic = 16;							{ synonym for verArabia }
verFinland = 17;
verFrSwiss = 18;						{ French Swiss }
verGrSwiss = 19;						{ German Swiss }
verGreece = 20;
verIceland = 21;
verMalta = 22;
verCyprus = 23;
verTurkey = 24;
verYugoCroatian = 25;					{ Croatian system for Yugoslavia }
verIndiaHindi = 33;						{ Hindi system for India }
verPakistan = 34;
verLithuania = 41;
verPoland = 42;
verHungary = 43;
verEstonia = 44;
verLatvia = 45;
verLapland = 46;
verFaeroeIsl = 47;
verIran = 48;
verRussia = 49;
verIreland = 50;						{ English-language version for Ireland }
verKorea = 51;
verChina = 52;
verTaiwan = 53;
verThailand = 54;
minCountry = verUS;
maxCountry = verThailand;

{Obsolete region code names, kept for backward compatibility}
verBelgiumLux = 6;						{ (use verFrBelgiumLux instead, less ambiguous) }
verArabia = 16;
verYugoslavia = 25;						{ (use verYugoCroatian instead, less ambiguous) }
verIndia = 33;							{ (use verIndiaHindi instead, less ambiguous) }

{ Special script code values for International Utilities }
iuSystemScript = -1;					{ system script }
iuCurrentScript = -2;					{ current script (for font of grafPort) }

{ Special language code values for International Utilities }
iuSystemCurLang = -2;					{ current (itlbLang) lang for system script }
iuSystemDefLang = -3;					{ default (table) lang for system script }
iuCurrentCurLang = -4;					{ current (itlbLang) lang for current script }
iuCurrentDefLang = -5;					{ default lang for current script }
iuScriptCurLang = -6;					{ current (itlbLang) lang for specified script }
iuScriptDefLang = -7;					{ default language for a specified script }

{ Table selectors for GetItlTable }
iuWordSelectTable = 0;					{ get word select break table from 'itl2' }
iuWordWrapTable = 1;					{ get word wrap break table from 'itl2' }
iuNumberPartsTable = 2;					{ get default number parts table from 'itl4' }
iuUnTokenTable = 3;						{ get unToken table from 'itl4' }
iuWhiteSpaceList = 4;					{ get white space list from 'itl4' }

TYPE
DateForm = (shortDate,longDate,abbrevDate);


Intl0Ptr = ^Intl0Rec;
Intl0Hndl = ^Intl0Ptr;
Intl0Rec = PACKED RECORD
 decimalPt: CHAR;						{decimal point character}
 thousSep: CHAR;						{thousands separator character}
 listSep: CHAR;							{list separator character}
 currSym1: CHAR;						{currency symbol}
 currSym2: CHAR;
 currSym3: CHAR;
 currFmt: Byte;							{currency format flags}
 dateOrder: Byte;						{order of short date elements: mdy, dmy, etc.}
 shrtDateFmt: Byte;						{format flags for each short date element}
 dateSep: CHAR;							{date separator character}
 timeCycle: Byte;						{specifies time cycle: 0..23, 1..12, or 0..11}
 timeFmt: Byte;							{format flags for each time element}
 mornStr: PACKED ARRAY [1..4] OF CHAR;	{trailing string for AM if 12-hour cycle}
 eveStr: PACKED ARRAY [1..4] OF CHAR;	{trailing string for PM if 12-hour cycle}
 timeSep: CHAR;							{time separator character}
 time1Suff: CHAR;						{trailing string for AM if 24-hour cycle}
 time2Suff: CHAR;
 time3Suff: CHAR;
 time4Suff: CHAR;
 time5Suff: CHAR;						{trailing string for PM if 24-hour cycle}
 time6Suff: CHAR;
 time7Suff: CHAR;
 time8Suff: CHAR;
 metricSys: Byte;						{255 if metric, 0 if inches etc.}
 intl0Vers: INTEGER;					{region code (hi byte) and version (lo byte)}
 END;

Intl1Ptr = ^Intl1Rec;
Intl1Hndl = ^Intl1Ptr;
Intl1Rec = PACKED RECORD
 days: ARRAY [1..7] OF Str15;			{day names}
 months: ARRAY [1..12] OF Str15;		{month names}
 suppressDay: Byte;						{255 for no day, or flags to suppress any element}
 lngDateFmt: Byte;						{order of long date elements}
 dayLeading0: Byte;						{255 for leading 0 in day number}
 abbrLen: Byte;							{length for abbreviating names}
 st0: PACKED ARRAY [1..4] OF CHAR;		{separator strings for long date format}
 st1: PACKED ARRAY [1..4] OF CHAR;
 st2: PACKED ARRAY [1..4] OF CHAR;
 st3: PACKED ARRAY [1..4] OF CHAR;
 st4: PACKED ARRAY [1..4] OF CHAR;
 intl1Vers: INTEGER;					{region code (hi byte) and version (lo byte)}
 localRtn: ARRAY [0..0] OF INTEGER;		{now a flag for opt extension}
 END;


PROCEDURE InitPack(packID: INTEGER);
 INLINE $A9E5;
PROCEDURE InitAllPacks;
 INLINE $A9E6;

FUNCTION IUGetIntl(theID: INTEGER): Handle;
 INLINE $3F3C,$0006,$A9ED;
PROCEDURE IUSetIntl(refNum: INTEGER;theID: INTEGER;intlHandle: Handle);
 INLINE $3F3C,$0008,$A9ED;
PROCEDURE IUDateString(dateTime: LONGINT;longFlag: DateForm;VAR result: Str255);
 INLINE $4267,$A9ED;
PROCEDURE IUDatePString(dateTime: LONGINT;longFlag: DateForm;VAR result: Str255;
 intlHandle: Handle);
 INLINE $3F3C,$000E,$A9ED;
PROCEDURE IUTimeString(dateTime: LONGINT;wantSeconds: BOOLEAN;VAR result: Str255);
 INLINE $3F3C,$0002,$A9ED;
PROCEDURE IUTimePString(dateTime: LONGINT;wantSeconds: BOOLEAN;VAR result: Str255;
 intlHandle: Handle);
 INLINE $3F3C,$0010,$A9ED;
FUNCTION IUMetric: BOOLEAN;
 INLINE $3F3C,$0004,$A9ED;

FUNCTION IUMagString(aPtr: Ptr;bPtr: Ptr;aLen: INTEGER;bLen: INTEGER): INTEGER;
 INLINE $3F3C,$000A,$A9ED;
FUNCTION IUMagIDString(aPtr: Ptr;bPtr: Ptr;aLen: INTEGER;bLen: INTEGER): INTEGER;
 INLINE $3F3C,$000C,$A9ED;
FUNCTION IUCompString(aStr: Str255;bStr: Str255): INTEGER;
FUNCTION IUEqualString(aStr: Str255;bStr: Str255): INTEGER;

PROCEDURE StringToNum(theString: Str255;VAR theNum: LONGINT);
PROCEDURE NumToString(theNum: LONGINT;VAR theString: Str255);

PROCEDURE IULDateString(VAR dateTime: LongDateTime;longFlag: DateForm;VAR result: Str255;
 intlHandle: Handle);
 INLINE $3F3C,$0014,$A9ED;
PROCEDURE IULTimeString(VAR dateTime: LongDateTime;wantSeconds: BOOLEAN;
 VAR result: Str255;intlHandle: Handle);
 INLINE $3F3C,$0016,$A9ED;
PROCEDURE IUClearCache;
 INLINE $3F3C,$0018,$A9ED;
FUNCTION IUMagPString(aPtr: Ptr;bPtr: Ptr;aLen: INTEGER;bLen: INTEGER;itl2Handle: Handle): INTEGER;
 INLINE $3F3C,$001A,$A9ED;
FUNCTION IUMagIDPString(aPtr: Ptr;bPtr: Ptr;aLen: INTEGER;bLen: INTEGER;
 itl2Handle: Handle): INTEGER;
 INLINE $3F3C,$001C,$A9ED;
FUNCTION IUCompPString(aStr: Str255;bStr: Str255;itl2Handle: Handle): INTEGER;
FUNCTION IUEqualPString(aStr: Str255;bStr: Str255;itl2Handle: Handle): INTEGER;
FUNCTION IUScriptOrder(script1: ScriptCode;script2: ScriptCode): INTEGER;
 INLINE $3F3C,$001E,$A9ED;
FUNCTION IULangOrder(language1: LangCode;language2: LangCode): INTEGER;
 INLINE $3F3C,$0020,$A9ED;
FUNCTION IUTextOrder(aPtr: Ptr;bPtr: Ptr;aLen: INTEGER;bLen: INTEGER;aScript: ScriptCode;
 bScript: ScriptCode;aLang: LangCode;bLang: LangCode): INTEGER;
 INLINE $3F3C,$0022,$A9ED;
FUNCTION IUStringOrder(aStr: Str255;bStr: Str255;aScript: ScriptCode;bScript: ScriptCode;
 aLang: LangCode;bLang: LangCode): INTEGER;
PROCEDURE IUGetItlTable(script: ScriptCode;tableCode: INTEGER;VAR itlHandle: Handle;
 VAR offset: LONGINT;VAR length: LONGINT);
 INLINE $3F3C,$0024,$A9ED;


{$ENDC} { UsingPackages }

{$IFC NOT UsingIncludes}
 END.
{$ENDC}

