Package Name: textutils

Return to: Package List


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;