Package Name: textutils
with Interfaces.C; use Interfaces.C;
with Interfaces.C.Extensions; use Interfaces.C.Extensions;
with Interfaces.C.Strings; use Interfaces.C.Strings;
with Types; use Types;
with OSUtils; use OSUtils;
with QuickdrawText; use QuickdrawText;
with IntlResources; use IntlResources;
package TextUtils is
--
-- File: TextUtils.h
--
-- Contains: Text Utilities Interfaces.
--
-- Version: Technology: System 7.5
-- Package: Universal Interfaces 2.0 in ÒMPW LatestÓ on ETO #17
--
-- Copyright: © 1984-1995 by Apple Computer, Inc.
-- All rights reserved.
--
--
-- Here are the current routine names and the translations to the older forms.
-- Please use the newer forms in all new code and migrate the older names out of existing
-- code as maintainance permits.
--
-- New Name Old Name(s)
--
-- CompareString IUCompPString IUMagString IUMagPString IUCompString
-- CompareText
-- DateString IUDatePString IUDateString
-- EqualString
-- ExtendedToString FormatX2Str
-- FindScriptRun
-- FindWordBreaks NFindWord FindWord
-- FormatRecToString Format2Str
-- GetIndString
-- GetString
-- IdenticalString IUMagIDString IUMagIDPString IUEqualString IUEqualPString
-- IdenticalText
-- InitDateCache
-- LanguageOrder IULangOrder
-- LongDateString IULDateString
-- LongTimeString IULTimeString
-- LowercaseText LwrText LowerText
-- Munger
-- NewString
-- NumToString
-- RelString
-- ReplaceText
-- ScriptOrder IUScriptOrder
-- SetString
-- StringOrder IUStringOrder
-- StringToDate String2Date
-- StringToExtended FormatStr2X
-- StringToFormatRec Str2Format
-- StringToNum
-- StringToTime
-- StripDiacritics StripText
-- StyledLineBreak
-- TextOrder
-- TimeString IUTimeString IUTimePString
-- TruncString
-- TruncText
-- UpperString UprString
-- UppercaseStripDiacritics StripUpperText
-- UppercaseText UprText UprText
-- New constants for System 7.0:
truncEnd : constant := 0; -- Truncate at end
truncMiddle : constant := 16#4000#; -- Truncate in middle
smTruncEnd : constant := 0; -- Truncate at end - obsolete
smTruncMiddle : constant := 16#4000#; -- Truncate in middle - obsolete
-- Constants for TruncString and TruncText results
notTruncated : constant := 0; -- No truncation was necessary
truncated : constant := 1; -- Truncation performed
truncErr : constant := -1; -- General error
smNotTruncated: constant := 0; -- No truncation was necessary - obsolete
smTruncated : constant := 1; -- Truncation performed - obsolete
smTruncErr : constant := -1; -- General error - obsolete
fVNumber : constant := 0; -- first version of NumFormatString
-- Special language code values for Language Order
systemCurLang : constant := -2; -- current (itlbLang) lang for system script
systemDefLang : constant := -3; -- default (table) lang for system script
currentCurLang : constant := -4; -- current (itlbLang) lang for current script
currentDefLang : constant := -5; -- default lang for current script
scriptCurLang : constant := -6; -- current (itlbLang) lang for specified script
scriptDefLang : constant := -7; -- default language for a specified script
iuSystemCurLang : constant := -2; -- current (itlbLang) lang for system script
iuSystemDefLang : constant := -3; -- default (table) lang for system script
iuCurrentCurLang : constant := -4; -- current (itlbLang) lang for current script
iuCurrentDefLang : constant := -5; -- default lang for current script
iuScriptCurLang : constant := -6; -- current (itlbLang) lang for specified script
subtype StyledLineBreakCode is SInt8;
subtype FormatClass is SInt8;
subtype FormatResultType is SInt8;
fFormatOK : constant := 0;
fBestGuess : constant := 1;
fOutOfSynch : constant := 2;
fSpuriousChars : constant := 3;
fMissingDelimiter : constant := 4;
fExtraDecimal : constant := 5;
fMissingLiteral : constant := 6;
fExtraExp : constant := 7;
fFormatOverflow : constant := 8;
fFormStrIsNAN : constant := 9;
fBadPartsTable : constant := 10;
fExtraPercent : constant := 11;
fExtraSeparator : constant := 12;
fEmptyFormatString: constant := 13;
type char_Vec_254 is array (0 .. 253) of char;
type NumFormatString is
record
fLength : UInt8;
fVersion : UInt8;
data : char_Vec_254; -- private data
end record;
subtype NumFormatStringRec is NumFormatString;
type FVector is
record
start : Short_Integer;
length : Short_Integer;
end record;
type FVector_Vec_3 is array (0 .. 2) of FVector;
-- index by [fPositive..fZero]
subtype TripleInt is FVector_Vec_3;
type ScriptRunStatus is
record
script : SInt8;
runVariant : SInt8;
end record;
-- Type for truncWhere parameter in new TruncString, TruncText
subtype TruncCode is Short_Integer;
shortDate : constant := 0;
longDate : constant := 1;
abbrevDate : constant := 2;
subtype DateForm is SInt8;
-- StringToDate status values
fatalDateTime : constant := 16#8000#; -- StringToDate and String2Time mask to a fatal error
longDateFound : constant := 1; -- StringToDate mask to long date found
leftOverChars : constant := 2; -- StringToDate & Time mask to warn of left over characters
sepNotIntlSep : constant := 4; -- StringToDate & Time mask to warn of non-standard separators
fieldOrderNotIntl : constant := 8; -- StringToDate & Time mask to warn of non-standard field order
extraneousStrings : constant := 16; -- StringToDate & Time mask to warn of unparsable strings in text
tooManySeps : constant := 32; -- StringToDate & Time mask to warn of too many separators
sepNotConsistent : constant := 64; -- StringToDate & Time mask to warn of inconsistent separators
tokenErr : constant := 16#8100#; -- StringToDate & Time mask for 'tokenizer err encountered'
cantReadUtilities : constant := 16#8200#;
dateTimeNotFound : constant := 16#8400#;
dateTimeInvalid : constant := 16#8800#;
subtype StringToDateStatus is Short_Integer;
subtype String2DateStatus is Short_Integer;
type Short_Integer_Vec_256 is array (0 .. 255) of Short_Integer;
type DateCacheRecord is
record
hidden : Short_Integer_Vec_256; -- only for temporary use
end record;
type DateCachePtr is Access DateCacheRecord;
type char_Vec_256 is array (0 .. 255) of char;
type Short_Integer_Vec_1 is array (0 .. 0) of Short_Integer;
type BreakTable is
record
charTypes : char_Vec_256;
tripleLength : Short_Integer;
triples : Short_Integer_Vec_1;
end record;
type BreakTablePtr is Access BreakTable;
-- New NBreakTable for System 7.0:
type NBreakTable is
record
flags1 : SInt8;
flags2 : SInt8;
version : Short_Integer;
classTableOff : Short_Integer;
auxCTableOff : Short_Integer;
backwdTableOff : Short_Integer;
forwdTableOff : Short_Integer;
doBackup : Short_Integer;
length : Short_Integer; -- length of NBreakTable
charTypes : char_Vec_256;
tables : Short_Integer_Vec_1;
end record;
type NBreakTablePtr is Access NBreakTable;
--
-- The following functions are new names that work on 68k and PowerPC
--
function InitDateCache
(theCache : in DateCachePtr)
return OSErr;
pragma Import (C, InitDateCache, "InitDateCache", "InitDateCache");
function Munger
(h : in Handle;
offset : in Long_Integer;
ptr1 : in Void_Ptr;
len1 : in Long_Integer;
ptr2 : in Void_Ptr;
len2 : in Long_Integer)
return Long_Integer;
pragma Import (C, Munger, "Munger", "Munger");
function NewString
(theString : access Str255)
return StringHandle;
pragma Import (C, NewString, "NewString", "NewString");
procedure SetString
(theString : in StringHandle;
strNew : access Str255);
pragma Import (C, SetString, "SetString", "SetString");
function GetString
(stringID : in Short_Integer)
return StringHandle;
pragma Import (C, GetString, "GetString", "GetString");
procedure GetIndString
(theString : access Str255;
strListID : in Short_Integer;
index : in Short_Integer);
pragma Import (C, GetIndString, "GetIndString", "GetIndString");
function ScriptOrder
(script1 : in ScriptCode;
script2 : in ScriptCode)
return Short_Integer;
pragma Import (C, ScriptOrder, "ScriptOrder", "ScriptOrder");
function StyledLineBreak
(textPtr : in Ptr;
textLen : in Long_Integer;
textStart : in Long_Integer;
textEnd : in Long_Integer;
flags : in Long_Integer;
textWidth : access Fixed;
textOffset : access Long_Integer)
return StyledLineBreakCode;
pragma Import (C, StyledLineBreak, "StyledLineBreak", "StyledLineBreak");
function TruncString
(width : in Short_Integer;
theString : access Str255;
truncWhere : in TruncCode)
return Short_Integer;
pragma Import (C, TruncString, "TruncString", "TruncString");
function TruncText
(width : in Short_Integer;
textPtr : in Ptr;
length : access Short_Integer;
truncWhere : in TruncCode)
return Short_Integer;
pragma Import (C, TruncText, "TruncText", "TruncText");
function ReplaceText
(baseText : in Handle;
substitutionText : in Handle;
key : in Str15)
return Short_Integer;
pragma Import (C, ReplaceText, "ReplaceText", "ReplaceText");
procedure FindWordBreaks
(textPtr : in Ptr;
textLength : in Short_Integer;
offset : in Short_Integer;
leadingEdge : in Boolean;
breaks : in BreakTablePtr;
offsets : in OffsetTable;
script : in ScriptCode);
pragma Import (C, FindWordBreaks, "FindWordBreaks", "FindWordBreaks");
procedure LowercaseText
(textPtr : in Ptr;
len : in Short_Integer;
script : in ScriptCode);
pragma Import (C, LowercaseText, "LowercaseText", "LowercaseText");
procedure UppercaseText
(textPtr : in Ptr;
len : in Short_Integer;
script : in ScriptCode);
pragma Import (C, UppercaseText, "UppercaseText", "UppercaseText");
procedure StripDiacritics
(textPtr : in Ptr;
len : in Short_Integer;
script : in ScriptCode);
pragma Import (C, StripDiacritics, "StripDiacritics", "StripDiacritics");
procedure UppercaseStripDiacritics
(textPtr : in Ptr;
len : in Short_Integer;
script : in ScriptCode);
pragma Import (C, UppercaseStripDiacritics, "UppercaseStripDiacritics", "UppercaseStripDiacritics");
function FindScriptRun
(textPtr : in Ptr;
textLen : in Long_Integer;
lenUsed : access Long_Integer)
return ScriptRunStatus;
pragma Import (C, FindScriptRun, "FindScriptRun", "FindScriptRun");
function EqualString
(str1 : access Str255;
str2 : access Str255;
caseSensitive : in Boolean;
diacSensitive : in Boolean)
return Boolean;
pragma Import (C, EqualString, "EqualString", "EqualString");
procedure UpperString
(theString : access Str255;
diacSensitive : in Boolean);
pragma Import (C, UpperString, "UpperString", "UpperString");
procedure StringToNum
(theString : access Str255;
theNum : access Long_Integer);
pragma Import (C, StringToNum, "StringToNum", "StringToNum");
procedure NumToString
(theNum : in Long_Integer;
theString : access Str255);
pragma Import (C, NumToString, "NumToString", "NumToString");
function RelString
(str1 : access Str255;
str2 : access Str255;
caseSensitive : in Boolean;
diacSensitive : in Boolean)
return Short_Integer;
pragma Import (C, RelString, "RelString", "RelString");
function StringToDate
(textPtr : in Ptr;
textLen : in Long_Integer;
theCache : in DateCachePtr;
lengthUsed : access Long_Integer;
dateTime : access LongDateRec)
return StringToDateStatus;
pragma Import (C, StringToDate, "StringToDate", "StringToDate");
function StringToTime
(textPtr : in Ptr;
textLen : in Long_Integer;
theCache : in DateCachePtr;
lengthUsed : access Long_Integer;
dateTime : access LongDateRec)
return StringToDateStatus;
pragma Import (C, StringToTime, "StringToTime", "StringToTime");
function ExtendedToString
(x : access extended80;
myCanonical : access NumFormatString;
partsTable : access NumberParts;
outString : access Str255)
return FormatStatus;
pragma Import (C, ExtendedToString, "ExtendedToString", "ExtendedToString");
function StringToExtended
(source : access Str255;
myCanonical : access NumFormatString;
partsTable : access NumberParts;
x : access extended80)
return FormatStatus;
pragma Import (C, StringToExtended, "StringToExtended", "StringToExtended");
function StringToFormatRec
(inString : access Str255;
partsTable : access NumberParts;
outString : access NumFormatString)
return FormatStatus;
pragma Import (C, StringToFormatRec, "StringToFormatRec", "StringToFormatRec");
function FormatRecToString
(myCanonical : access NumFormatString;
partsTable : access NumberParts;
outString : access Str255;
positions : in TripleInt)
return FormatStatus;
pragma Import (C, FormatRecToString, "FormatRecToString", "FormatRecToString");
--
-- The following functions are old names, but are required for PowerPC builds
-- becuase InterfaceLib exports these names, instead of the new ones.
--
function IUMagString
(aPtr : in Void_Ptr;
bPtr : in Void_Ptr;
aLen : in Short_Integer;
bLen : in Short_Integer)
return Short_Integer;
pragma Import (C, IUMagString, "IUMagString", "IUMagString");
function IUMagIDString
(aPtr : in Void_Ptr;
bPtr : in Void_Ptr;
aLen : in Short_Integer;
bLen : in Short_Integer)
return Short_Integer;
pragma Import (C, IUMagIDString, "IUMagIDString", "IUMagIDString");
function IUMagPString
(aPtr : in Void_Ptr;
bPtr : in Void_Ptr;
aLen : in Short_Integer;
bLen : in Short_Integer;
itl2Handle : in Handle)
return Short_Integer;
pragma Import (C, IUMagPString, "IUMagPString", "IUMagPString");
function IUMagIDPString
(aPtr : in Void_Ptr;
bPtr : in Void_Ptr;
aLen : in Short_Integer;
bLen : in Short_Integer;
itl2Handle : in Handle)
return Short_Integer;
pragma Import (C, IUMagIDPString, "IUMagIDPString", "IUMagIDPString");
procedure IUDateString
(dateTime : in Long_Integer;
longFlag : in DateForm;
result : access Str255);
pragma Import (C, IUDateString, "IUDateString", "IUDateString");
procedure IUTimeString
(dateTime : in Long_Integer;
wantSeconds : in Boolean;
result : access Str255);
pragma Import (C, IUTimeString, "IUTimeString", "IUTimeString");
procedure IUDatePString
(dateTime : in Long_Integer;
longFlag : in DateForm;
result : access Str255;
intlHandle : in Handle);
pragma Import (C, IUDatePString, "IUDatePString", "IUDatePString");
procedure IUTimePString
(dateTime : in Long_Integer;
wantSeconds : in Boolean;
result : access Str255;
intlHandle : in Handle);
pragma Import (C, IUTimePString, "IUTimePString", "IUTimePString");
procedure IULDateString
(dateTime : access LongDateTime;
longFlag : in DateForm;
result : access Str255;
intlHandle : in Handle);
pragma Import (C, IULDateString, "IULDateString", "IULDateString");
procedure IULTimeString
(dateTime : access LongDateTime;
wantSeconds : in Boolean;
result : access Str255;
intlHandle : in Handle);
pragma Import (C, IULTimeString, "IULTimeString", "IULTimeString");
function IUScriptOrder
(script1 : in ScriptCode;
script2 : in ScriptCode)
return Short_Integer;
pragma Import (C, IUScriptOrder, "IUScriptOrder", "IUScriptOrder");
function IULangOrder
(language1 : in LangCode;
language2 : in LangCode)
return Short_Integer;
pragma Import (C, IULangOrder, "IULangOrder", "IULangOrder");
function IUTextOrder
(aPtr : in Void_Ptr;
bPtr : in Void_Ptr;
aLen : in Short_Integer;
bLen : in Short_Integer;
aScript : in ScriptCode;
bScript : in ScriptCode;
aLang : in LangCode;
bLang : in LangCode)
return Short_Integer;
pragma Import (C, IUTextOrder, "IUTextOrder", "IUTextOrder");
procedure FindWord
(textPtr : in Ptr;
textLength : in Short_Integer;
offset : in Short_Integer;
leadingEdge : in Boolean;
breaks : in BreakTablePtr;
offsets : in OffsetTable);
pragma Import (C, FindWord, "FindWord", "FindWord");
procedure NFindWord
(textPtr : in Ptr;
textLength : in Short_Integer;
offset : in Short_Integer;
leadingEdge : in Boolean;
nbreaks : in NBreakTablePtr;
offsets : in OffsetTable);
pragma Import (C, NFindWord, "NFindWord", "NFindWord");
procedure UprText
(textPtr : in Ptr;
len : in Short_Integer);
pragma Import (C, UprText, "UprText", "UprText");
procedure LwrText
(textPtr : in Ptr;
len : in Short_Integer);
pragma Import (C, LwrText, "LwrText", "LwrText");
procedure LowerText
(textPtr : in Ptr;
len : in Short_Integer);
pragma Import (C, LowerText, "LowerText", "LowerText");
procedure StripText
(textPtr : in Ptr;
len : in Short_Integer);
pragma Import (C, StripText, "StripText", "StripText");
procedure UpperText
(textPtr : in Ptr;
len : in Short_Integer);
pragma Import (C, UpperText, "UpperText", "UpperText");
procedure StripUpperText
(textPtr : in Ptr;
len : in Short_Integer);
pragma Import (C, StripUpperText, "StripUpperText", "StripUpperText");
function IUCompPString
(aStr : access Str255;
bStr : access Str255;
itl2Handle : in Handle)
return Short_Integer;
pragma Import (C, IUCompPString, "IUCompPString", "IUCompPString");
function IUEqualPString
(aStr : access Str255;
bStr : access Str255;
itl2Handle : in Handle)
return Short_Integer;
pragma Import (C, IUEqualPString, "IUEqualPString", "IUEqualPString");
function IUStringOrder
(aStr : access Str255;
bStr : access Str255;
aScript : in ScriptCode;
bScript : in ScriptCode;
aLang : in LangCode;
bLang : in LangCode)
return Short_Integer;
pragma Import (C, IUStringOrder, "IUStringOrder", "IUStringOrder");
function IUCompString
(aStr : access Str255;
bStr : access Str255)
return Short_Integer;
pragma Import (C, IUCompString, "IUCompString", "IUCompString");
function IUEqualString
(aStr : access Str255;
bStr : access Str255)
return Short_Integer;
pragma Import (C, IUEqualString, "IUEqualString", "IUEqualString");
--
-- The following are C string versions of the above
--
procedure upperstringC
(theString : in Chars_Ptr;
diacSensitive : in Boolean);
pragma Import (C, upperstringC, "upperstring", "upperstring");
procedure upperstring
(theString : in Chars_Ptr;
diacSensitive : in Boolean)
renames upperstringC;
procedure stringtonumC
(theString : in Chars_Ptr;
theNum : access Long_Integer);
pragma Import (C, stringtonumC, "stringtonum", "stringtonum");
procedure stringtonum
(theString : in Chars_Ptr;
theNum : access Long_Integer)
renames stringtonumC;
procedure stringtonum
(theString : in String;
theNum : access Long_Integer);
procedure numtostringC
(theNum : in Long_Integer;
theString : in Chars_Ptr);
pragma Import (C, numtostringC, "numtostring", "numtostring");
procedure numtostring
(theNum : in Long_Integer;
theString : in Chars_Ptr)
renames numtostringC;
function equalstringC
(str1 : in Chars_Ptr;
str2 : in Chars_Ptr;
caseSensitive : in Boolean;
diacSensitive : in Boolean)
return Boolean;
pragma Import (C, equalstringC, "equalstring", "equalstring");
function equalstring
(str1 : in Chars_Ptr;
str2 : in Chars_Ptr;
caseSensitive : in Boolean;
diacSensitive : in Boolean)
return Boolean
renames equalstringC;
function equalstring
(str1 : in String;
str2 : in String;
caseSensitive : in Boolean;
diacSensitive : in Boolean)
return Boolean;
function relstringC
(str1 : in Chars_Ptr;
str2 : in Chars_Ptr;
caseSensitive : in Boolean;
diacSensitive : in Boolean)
return Short_Integer;
pragma Import (C, relstringC, "relstring", "relstring");
function relstring
(str1 : in Chars_Ptr;
str2 : in Chars_Ptr;
caseSensitive : in Boolean;
diacSensitive : in Boolean)
return Short_Integer
renames relstringC;
function relstring
(str1 : in String;
str2 : in String;
caseSensitive : in Boolean;
diacSensitive : in Boolean)
return Short_Integer;
procedure setstringC
(theString : in StringHandle;
strNew : in Chars_Ptr);
pragma Import (C, setstringC, "setstring", "setstring");
procedure setstring
(theString : in StringHandle;
strNew : in Chars_Ptr)
renames setstringC;
procedure setstring
(theString : in StringHandle;
strNew : in String);
function newstringC
(theString : in Chars_Ptr)
return StringHandle;
pragma Import (C, newstringC, "newstring", "newstring");
function newstring
(theString : in Chars_Ptr)
return StringHandle
renames newstringC;
function newstring
(theString : in String)
return StringHandle;
procedure getindstringC
(theString : in Chars_Ptr;
strListID : in Short_Integer;
index : in Short_Integer);
pragma Import (C, getindstringC, "getindstring", "getindstring");
procedure getindstring
(theString : in Chars_Ptr;
strListID : in Short_Integer;
index : in Short_Integer)
renames getindstringC;
function iucompstringC
(aStr : in Chars_Ptr;
bStr : in Chars_Ptr)
return Short_Integer;
pragma Import (C, iucompstringC, "iucompstring", "iucompstring");
function iucompstring
(aStr : in Chars_Ptr;
bStr : in Chars_Ptr)
return Short_Integer
renames iucompstringC;
function iucompstring
(aStr : in String;
bStr : in String)
return Short_Integer;
function iuequalstringC
(aStr : in Chars_Ptr;
bStr : in Chars_Ptr)
return Short_Integer;
pragma Import (C, iuequalstringC, "iuequalstring", "iuequalstring");
function iuequalstring
(aStr : in Chars_Ptr;
bStr : in Chars_Ptr)
return Short_Integer
renames iuequalstringC;
function iuequalstring
(aStr : in String;
bStr : in String)
return Short_Integer;
function iustringorderC
(aStr : in Chars_Ptr;
bStr : in Chars_Ptr;
aScript : in ScriptCode;
bScript : in ScriptCode;
aLang : in LangCode;
bLang : in LangCode)
return Short_Integer;
pragma Import (C, iustringorderC, "iustringorder", "iustringorder");
function iustringorder
(aStr : in Chars_Ptr;
bStr : in Chars_Ptr;
aScript : in ScriptCode;
bScript : in ScriptCode;
aLang : in LangCode;
bLang : in LangCode)
return Short_Integer
renames iustringorderC;
function iustringorder
(aStr : in String;
bStr : in String;
aScript : in ScriptCode;
bScript : in ScriptCode;
aLang : in LangCode;
bLang : in LangCode)
return Short_Integer;
procedure iudatestringC
(dateTime : in Long_Integer;
longFlag : in DateForm;
result : in Chars_Ptr);
pragma Import (C, iudatestringC, "iudatestring", "iudatestring");
procedure iudatestring
(dateTime : in Long_Integer;
longFlag : in DateForm;
result : in Chars_Ptr)
renames iudatestringC;
procedure iutimestringC
(dateTime : in Long_Integer;
wantSeconds : in Boolean;
result : in Chars_Ptr);
pragma Import (C, iutimestringC, "iutimestring", "iutimestring");
procedure iutimestring
(dateTime : in Long_Integer;
wantSeconds : in Boolean;
result : in Chars_Ptr)
renames iutimestringC;
procedure iuldatestringC
(dateTime : access LongDateTime;
longFlag : in DateForm;
result : in Chars_Ptr;
intlHandle : in Handle);
pragma Import (C, iuldatestringC, "iuldatestring", "iuldatestring");
procedure iuldatestring
(dateTime : access LongDateTime;
longFlag : in DateForm;
result : in Chars_Ptr;
intlHandle : in Handle)
renames iuldatestringC;
procedure iultimestring
(dateTime : access LongDateTime;
wantSeconds : in Boolean;
result : in Chars_Ptr;
intlHandle : in Handle);
pragma Import (C, iultimestring, "iultimestring", "iultimestring");
end TextUtils;