sys7.1-doc-wip/Interfaces/PInterfaces/TextUtils.p
2019-07-27 22:37:48 +08:00

374 lines
15 KiB
OpenEdge ABL

{
File: TextUtils.p
Pascal Interface to the Macintosh Libraries
Copyright: © 1985-1992 by Apple Computer, Inc.
All rights reserved.
Change History (most recent first):
<14> 10/16/92 PKE For new IM: Change reserved field name in NBreakTable to length,
reflecting its real usage.
<13> 6/26/92 DCL Miner Formatting Changes. Digging deep for things to do. Getting
the file ready for ETO 8.
<12> 5/29/92 DCL Moved DateTime stuff to OSUtils and Intl stuff to IntlResources
<11> 5/7/92 DCL NIIM: Movin date & time Stuff from DateTime to TextUtils.
<10> 5/6/92 DCL NIIM: Moved KeyTrans back from TextUtils to Events.
<9> 5/5/92 DCL For New Inside Mac: removing 'sc' prefixes from some calls,
moving some calls from script to TextUtils, and moving some from
TextUtils & QuickDraw to QuickdrawText. Weeeeeeee!
<8> 4/17/92 DCL For New Inside Mac: Mo' Better Call Names. Str -> String, Secs
-> Seconds. Sorry, no more Secs.
<7> 4/15/92 DCL For New Inside Mac: Moved StyledLineBreakCode from script to
TextUtils.
<6> 4/15/92 DCL For New Inside Mac: Moved many definitions from Script to
TextUtils and QuickDraw. And added new synonyms. #1025005
<5> 4/6/92 DCL For New Inside Mac: Moved declarations from Script.[aph] to
TextUtils.[aph]. #1025005
<4> 4/1/92 DCL Fix the calls from xxxxIntlxxxx to xxxxxxxxxIntl.
<3> 3/30/92 DCL New Improved Names for New Improved Inside Mac.
<2+> 3/26/92 DCL For New Inside Mac: Added New Improved Better Names for the
same old calls. #1025005
<2> 3/26/92 DCL For New IM: Moved many declarations and routines from
Packages.[ph] to TextUtils.[ph]
<1> 3/12/92 DCL first checked in
}
{$IFC UNDEFINED UsingIncludes}
{$SETC UsingIncludes := 0}
{$ENDC}
{$IFC NOT UsingIncludes}
UNIT TextUtils;
INTERFACE
{$ENDC}
{$IFC UNDEFINED UsingTextUtils}
{$SETC UsingTextUtils := 1}
{$I+}
{$SETC TextUtilsIncludes := UsingIncludes}
{$SETC UsingIncludes := 1}
{$IFC UNDEFINED UsingTypes}
{$I $$Shell(PInterfaces)Types.p}
{$ENDC}
{$IFC UNDEFINED UsingScript}
{$I $$Shell(PInterfaces)Script.p}
{$ENDC}
{$IFC UNDEFINED UsingOSUtils}
{$I $$Shell(PInterfaces)OSUtils.p}
{$ENDC}
{$SETC UsingIncludes := TextUtilsIncludes}
CONST
{ Constants for truncWhere argument in TruncString and TruncText }
truncEnd = 0; { Truncate at end }
truncMiddle = $4000; { Truncate in middle }
smTruncEnd = 0; { Truncate at end obsolete }
smTruncMiddle = $4000; { Truncate in middle obsolete }
{ Constants for TruncString and TruncText results }
notTruncated = 0; { No truncation was necessary }
truncated = 1; { Truncation performed }
truncErr = -1; { General error }
smNotTruncated = 0; { No truncation was necessary obsolete }
smTruncated = 1; { Truncation performed obsolete }
smTruncErr = -1; { General error obsolete }
fVNumber = 0; {first version of NumFormatString}
{ String2Date status values }
fatalDateTime = $8000; {String2Date and String2Time mask to a fatal error}
longDateFound = 1; {String2Date mask to long date found}
leftOverChars = 2; {String2Date & Time mask to warn of left over characters}
sepNotIntlSep = 4; {String2Date & Time mask to warn of non-standard separators}
fieldOrderNotIntl = 8; {String2Date & Time mask to warn of non-standard field order}
extraneousStrings = 16; {String2Date & Time mask to warn of unparsable strings in text}
tooManySeps = 32; {String2Date & Time mask to warn of too many separators}
sepNotConsistent = 64; {String2Date & Time mask to warn of inconsistent separators}
tokenErr = $8100; {String2Date & Time mask for 'tokenizer err encountered'}
cantReadUtilities = $8200;
dateTimeNotFound = $8400;
dateTimeInvalid = $8800;
{ Special language code values for Language Order }
systemCurLang = -2; { current (itlbLang) lang for system script }
systemDefLang = -3; { default (table) lang for system script }
currentCurLang = -4; { current (itlbLang) lang for current script }
currentDefLang = -5; { default lang for current script }
scriptCurLang = -6; { current (itlbLang) lang for specified script }
scriptDefLang = -7; { default language for a specified script }
iuSystemCurLang = -2; { <obsolete> current (itlbLang) lang for system script }
iuSystemDefLang = -3; { <obsolete> default (table) lang for system script }
iuCurrentCurLang = -4; { <obsolete> current (itlbLang) lang for current script }
iuCurrentDefLang = -5; { <obsolete> default lang for current script }
iuScriptCurLang = -6; { <obsolete> current (itlbLang) lang for specified script }
iuScriptDefLang = -7; { <obsolete> default language for a specified script }
TYPE
StyledLineBreakCode = (smBreakWord,smBreakChar,smBreakOverflow);
FormatClass = (fPositive,fNegative,fZero);
FormatResultType = (fFormatOK,fBestGuess,fOutOfSynch,fSpuriousChars,fMissingDelimiter,
fExtraDecimal,fMissingLiteral,fExtraExp,fFormatOverflow,fFormStrIsNAN,
fBadPartsTable,fExtraPercent,fExtraSeparator,fEmptyFormatString);
NumFormatString = PACKED RECORD
fLength: Byte;
fVersion: Byte;
data: PACKED ARRAY [0..253] OF SignedByte; {private data}
END;
NumFormatStringRec = NumFormatString;
FVector = RECORD
start: INTEGER;
length: INTEGER;
END;
TripleInt = ARRAY [0..2] OF FVector; { index by [fPositive..fZero] }
ScriptRunStatus = RECORD
script: SignedByte;
variant: SignedByte;
END;
{ New types for System 7.0:
type for truncWhere parameter in new TruncString, TruncText }
TruncCode = INTEGER;
DateForm = (shortDate,longDate,abbrevDate);
StringToDateStatus = INTEGER;
String2DateStatus = INTEGER;
DateCachePtr = ^DateCacheRecord;
DateCacheRecord = PACKED RECORD
hidden: ARRAY [0..255] OF INTEGER; {only for temporary use}
END;
BreakTablePtr = ^BreakTable;
BreakTable = RECORD
charTypes: ARRAY [0..255] OF SignedByte;
tripleLength: INTEGER;
triples: ARRAY [0..0] OF INTEGER;
END;
NBreakTablePtr = ^NBreakTable;
NBreakTable = RECORD
flags1: SignedByte;
flags2: SignedByte;
version: INTEGER;
classTableOff: INTEGER;
auxCTableOff: INTEGER;
backwdTableOff: INTEGER;
forwdTableOff: INTEGER;
doBackup: INTEGER;
length: INTEGER; {length of NBreakTable} {<14>}
charTypes: ARRAY [0..255] OF SignedByte;
tables: ARRAY [0..0] OF INTEGER;
END;
PROCEDURE IUDateString(dateTime: LONGINT;longFlag: DateForm;VAR result: Str255);
INLINE $4267,$A9ED;
PROCEDURE DateString(dateTime: LONGINT;longFlag: DateForm;VAR result: Str255;
intlHandle: Handle);
INLINE $3F3C,$000E,$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 TimeString(dateTime: LONGINT;wantSeconds: BOOLEAN;VAR result: Str255;
intlHandle: Handle);
INLINE $3F3C,$0010,$A9ED;
PROCEDURE IUTimePString(dateTime: LONGINT;wantSeconds: BOOLEAN;VAR result: Str255;
intlHandle: Handle);
INLINE $3F3C,$0010,$A9ED;
PROCEDURE LongDateString(VAR dateTime: LongDateTime;longFlag: DateForm;
VAR result: Str255;intlHandle: Handle);
INLINE $3F3C,$0014,$A9ED;
PROCEDURE IULDateString(VAR dateTime: LongDateTime;longFlag: DateForm;VAR result: Str255;
intlHandle: Handle);
INLINE $3F3C,$0014,$A9ED;
PROCEDURE LongTimeString(VAR dateTime: LongDateTime;wantSeconds: BOOLEAN;
VAR result: Str255;intlHandle: Handle);
INLINE $3F3C,$0016,$A9ED;
PROCEDURE IULTimeString(VAR dateTime: LongDateTime;wantSeconds: BOOLEAN;
VAR result: Str255;intlHandle: Handle);
INLINE $3F3C,$0016,$A9ED;
FUNCTION InitDateCache(theCache: DateCachePtr): OSErr;
INLINE $2F3C,$8204,$FFF8,$A8B5;
FUNCTION StringToDate(textPtr: Ptr;textLen: LONGINT;theCache: DateCachePtr;
VAR lengthUsed: LONGINT;VAR dateTime: LongDateRec): StringToDateStatus;
INLINE $2F3C,$8214,$FFF6,$A8B5;
FUNCTION String2Date(textPtr: Ptr;textLen: LONGINT;theCache: DateCachePtr;
VAR lengthUsed: LONGINT;VAR dateTime: LongDateRec): String2DateStatus;
INLINE $2F3C,$8214,$FFF6,$A8B5;
FUNCTION StringToTime(textPtr: Ptr;textLen: LONGINT;theCache: DateCachePtr;
VAR lengthUsed: LONGINT;VAR dateTime: LongDateRec): StringToDateStatus;
INLINE $2F3C,$8214,$FFF4,$A8B5;
FUNCTION String2Time(textPtr: Ptr;textLen: LONGINT;theCache: DateCachePtr;
VAR lengthUsed: LONGINT;VAR dateTime: LongDateRec): String2DateStatus;
INLINE $2F3C,$8214,$FFF4,$A8B5;
FUNCTION EqualString(str1: Str255;str2: Str255;caseSens: BOOLEAN;diacSens: BOOLEAN): BOOLEAN;
PROCEDURE UpperString(VAR theString: Str255;diacSens: BOOLEAN);
PROCEDURE UprString(VAR theString: Str255;diacSens: BOOLEAN);
FUNCTION RelString(str1: Str255;str2: Str255;caseSens: BOOLEAN;diacSens: BOOLEAN): INTEGER;
FUNCTION GetString(stringID: INTEGER): StringHandle;
INLINE $A9BA;
FUNCTION Munger(h: Handle;offset: LONGINT;ptr1: Ptr;len1: LONGINT;ptr2: Ptr;
len2: LONGINT): LONGINT;
INLINE $A9E0;
PROCEDURE SetString(theString: StringHandle;strNew: Str255);
INLINE $A907;
FUNCTION NewString(theString: Str255): StringHandle;
INLINE $A906;
PROCEDURE GetIndString(VAR theString: Str255;strListID: INTEGER;index: INTEGER);
{ The next four calls will be obsolete. Use the similar Pstring call and pass a NIL handle. }
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);
FUNCTION CompareText(aPtr: Ptr;bPtr: Ptr;aLen: INTEGER;bLen: INTEGER;itl2Handle: Handle): INTEGER;
INLINE $3F3C,$001A,$A9ED;
FUNCTION IUMagPString(aPtr: Ptr;bPtr: Ptr;aLen: INTEGER;bLen: INTEGER;itl2Handle: Handle): INTEGER;
INLINE $3F3C,$001A,$A9ED;
FUNCTION IdenticalText(aPtr: Ptr;bPtr: Ptr;aLen: INTEGER;bLen: INTEGER;
itl2Handle: Handle): INTEGER;
INLINE $3F3C,$001C,$A9ED;
FUNCTION IUMagIDPString(aPtr: Ptr;bPtr: Ptr;aLen: INTEGER;bLen: INTEGER;
itl2Handle: Handle): INTEGER;
INLINE $3F3C,$001C,$A9ED;
FUNCTION CompareString(aStr: Str255;bStr: Str255;itl2Handle: Handle): INTEGER;
FUNCTION IUCompPString(aStr: Str255;bStr: Str255;itl2Handle: Handle): INTEGER;
FUNCTION IdenticalString(aStr: Str255;bStr: Str255;itl2Handle: Handle): INTEGER;
FUNCTION IUEqualPString(aStr: Str255;bStr: Str255;itl2Handle: Handle): INTEGER;
FUNCTION ScriptOrder(script1: ScriptCode;script2: ScriptCode): INTEGER;
INLINE $3F3C,$001E,$A9ED;
FUNCTION IUScriptOrder(script1: ScriptCode;script2: ScriptCode): INTEGER;
INLINE $3F3C,$001E,$A9ED;
FUNCTION LanguageOrder(language1: LangCode;language2: LangCode): INTEGER;
INLINE $3F3C,$0020,$A9ED;
FUNCTION IULangOrder(language1: LangCode;language2: LangCode): INTEGER;
INLINE $3F3C,$0020,$A9ED;
FUNCTION TextOrder(aPtr: Ptr;bPtr: Ptr;aLen: INTEGER;bLen: INTEGER;aScript: ScriptCode;
bScript: ScriptCode;aLang: LangCode;bLang: LangCode): INTEGER;
INLINE $3F3C,$0022,$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 StringOrder(aStr: Str255;bStr: Str255;aScript: ScriptCode;bScript: ScriptCode;
aLang: LangCode;bLang: LangCode): INTEGER;
FUNCTION IUStringOrder(aStr: Str255;bStr: Str255;aScript: ScriptCode;bScript: ScriptCode;
aLang: LangCode;bLang: LangCode): INTEGER;
PROCEDURE FindWord(textPtr: Ptr;textLength: INTEGER;offset: INTEGER;leadingEdge: BOOLEAN;
breaks: BreakTablePtr;VAR offsets: OffsetTable);
INLINE $2F3C,$8012,$001A,$A8B5;
PROCEDURE FindWordBreaks(textPtr: Ptr;textLength: INTEGER;offset: INTEGER;
leadingEdge: BOOLEAN;breaks: BreakTablePtr;VAR offsets: OffsetTable;script: ScriptCode);
INLINE $2F3C,$C012,$001A,$A8B5;
PROCEDURE UprText(textPtr: Ptr;len: INTEGER);
INLINE $301F,$205F,$A054;
PROCEDURE LwrText(textPtr: Ptr;len: INTEGER);
INLINE $301F,$205F,$A056;
{ New for 7.0
}
PROCEDURE LowerText(textPtr: Ptr;len: INTEGER);
INLINE $301F,$205F,$A056;
PROCEDURE StripText(textPtr: Ptr;len: INTEGER);
INLINE $301F,$205F,$A256;
PROCEDURE UpperText(textPtr: Ptr;len: INTEGER);
INLINE $301F,$205F,$A456;
PROCEDURE StripUpperText(textPtr: Ptr;len: INTEGER);
INLINE $301F,$205F,$A656;
FUNCTION StyledLineBreak(textPtr: Ptr;textLen: LONGINT;textStart: LONGINT;
textEnd: LONGINT;flags: LONGINT;VAR textWidth: Fixed;VAR textOffset: LONGINT): StyledLineBreakCode;
INLINE $2F3C,$821C,$FFFE,$A8B5;
FUNCTION StringToFormatRec(inString: Str255;partsTable: NumberParts;VAR outString: NumFormatString): FormatStatus;
INLINE $2F3C,$820C,$FFEC,$A8B5;
FUNCTION Str2Format(inString: Str255;partsTable: NumberParts;VAR outString: NumFormatString): FormatStatus;
INLINE $2F3C,$820C,$FFEC,$A8B5;
FUNCTION FormatRecToString(myCanonical: NumFormatString;partsTable: NumberParts;
VAR outString: Str255;VAR positions: TripleInt): FormatStatus;
INLINE $2F3C,$8210,$FFEA,$A8B5;
FUNCTION Format2Str(myCanonical: NumFormatString;partsTable: NumberParts;
VAR outString: Str255;VAR positions: TripleInt): FormatStatus;
INLINE $2F3C,$8210,$FFEA,$A8B5;
FUNCTION ExtendedToString(x: Extended80;myCanonical: NumFormatString;partsTable: NumberParts;
VAR outString: Str255): FormatStatus;
INLINE $2F3C,$8210,$FFE8,$A8B5;
FUNCTION FormatX2Str(x: Extended80;myCanonical: NumFormatString;partsTable: NumberParts;
VAR outString: Str255): FormatStatus;
INLINE $2F3C,$8210,$FFE8,$A8B5;
FUNCTION StringToExtended(source: Str255;myCanonical: NumFormatString;partsTable: NumberParts;
VAR x: Extended80): FormatStatus;
INLINE $2F3C,$8210,$FFE6,$A8B5;
FUNCTION FormatStr2X(source: Str255;myCanonical: NumFormatString;partsTable: NumberParts;
VAR x: Extended80): FormatStatus;
INLINE $2F3C,$8210,$FFE6,$A8B5;
FUNCTION FindScriptRun(textPtr: Ptr;textLen: LONGINT;VAR lenUsed: LONGINT): ScriptRunStatus;
INLINE $2F3C,$820C,$0026,$A8B5;
PROCEDURE NFindWord(textPtr: Ptr;textLength: INTEGER;offset: INTEGER;leadingEdge: BOOLEAN;
nbreaks: NBreakTablePtr;VAR offsets: OffsetTable);
INLINE $2F3C,$8012,$FFE2,$A8B5;
FUNCTION TruncString(width: INTEGER;VAR theString: Str255;truncWhere: TruncCode): INTEGER;
INLINE $2F3C,$8208,$FFE0,$A8B5;
FUNCTION TruncText(width: INTEGER;textPtr: Ptr;VAR length: INTEGER;truncWhere: TruncCode): INTEGER;
INLINE $2F3C,$820C,$FFDE,$A8B5;
FUNCTION ReplaceText(baseText: Handle;substitutionText: Handle;key: Str15): INTEGER;
INLINE $2F3C,$820C,$FFDC,$A8B5;
PROCEDURE LowercaseText(textPtr: Ptr;len: INTEGER;script: ScriptCode);
INLINE $3F3C,$0000,$2F3C,$800A,$FFB6,$A8B5;
PROCEDURE StripDiacritics(textPtr: Ptr;len: INTEGER;script: ScriptCode);
INLINE $3F3C,$0200,$2F3C,$800A,$FFB6,$A8B5;
PROCEDURE UppercaseText(textPtr: Ptr;len: INTEGER;script: ScriptCode);
INLINE $3F3C,$0400,$2F3C,$800A,$FFB6,$A8B5;
PROCEDURE UppercaseStripDiacritics(textPtr: Ptr;len: INTEGER;script: ScriptCode);
INLINE $3F3C,$0600,$2F3C,$800A,$FFB6,$A8B5;
{$ENDC} { UsingTextUtils }
{$IFC NOT UsingIncludes}
END.
{$ENDC}