StringCompare.pas 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396
  1. {
  2. File: StringCompare.p
  3. Contains: Public interfaces for String Comparison and related operations
  4. Version: Technology: Mac OS 8
  5. Release: Universal Interfaces 3.4.2
  6. Copyright: © 1985-2002 by Apple Computer, Inc., all rights reserved.
  7. Bugs?: For bug reports, consult the following page on
  8. the World Wide Web:
  9. http://www.freepascal.org/bugs.html
  10. }
  11. {
  12. Modified for use with Free Pascal
  13. Version 200
  14. Please report any bugs to <[email protected]>
  15. }
  16. {$mode macpas}
  17. {$packenum 1}
  18. {$macro on}
  19. {$inline on}
  20. {$CALLING MWPASCAL}
  21. unit StringCompare;
  22. interface
  23. {$setc UNIVERSAL_INTERFACES_VERSION := $0342}
  24. {$setc GAP_INTERFACES_VERSION := $0200}
  25. {$ifc not defined USE_CFSTR_CONSTANT_MACROS}
  26. {$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
  27. {$endc}
  28. {$ifc defined CPUPOWERPC and defined CPUI386}
  29. {$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
  30. {$endc}
  31. {$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
  32. {$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
  33. {$endc}
  34. {$ifc not defined __ppc__ and defined CPUPOWERPC}
  35. {$setc __ppc__ := 1}
  36. {$elsec}
  37. {$setc __ppc__ := 0}
  38. {$endc}
  39. {$ifc not defined __i386__ and defined CPUI386}
  40. {$setc __i386__ := 1}
  41. {$elsec}
  42. {$setc __i386__ := 0}
  43. {$endc}
  44. {$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
  45. {$error Conflicting definitions for __ppc__ and __i386__}
  46. {$endc}
  47. {$ifc defined __ppc__ and __ppc__}
  48. {$setc TARGET_CPU_PPC := TRUE}
  49. {$setc TARGET_CPU_X86 := FALSE}
  50. {$elifc defined __i386__ and __i386__}
  51. {$setc TARGET_CPU_PPC := FALSE}
  52. {$setc TARGET_CPU_X86 := TRUE}
  53. {$elsec}
  54. {$error Neither __ppc__ nor __i386__ is defined.}
  55. {$endc}
  56. {$setc TARGET_CPU_PPC_64 := FALSE}
  57. {$ifc defined FPC_BIG_ENDIAN}
  58. {$setc TARGET_RT_BIG_ENDIAN := TRUE}
  59. {$setc TARGET_RT_LITTLE_ENDIAN := FALSE}
  60. {$elifc defined FPC_LITTLE_ENDIAN}
  61. {$setc TARGET_RT_BIG_ENDIAN := FALSE}
  62. {$setc TARGET_RT_LITTLE_ENDIAN := TRUE}
  63. {$elsec}
  64. {$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
  65. {$endc}
  66. {$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}
  67. {$setc CALL_NOT_IN_CARBON := FALSE}
  68. {$setc OLDROUTINENAMES := FALSE}
  69. {$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}
  70. {$setc OPAQUE_UPP_TYPES := TRUE}
  71. {$setc OTCARBONAPPLICATION := TRUE}
  72. {$setc OTKERNEL := FALSE}
  73. {$setc PM_USE_SESSION_APIS := TRUE}
  74. {$setc TARGET_API_MAC_CARBON := TRUE}
  75. {$setc TARGET_API_MAC_OS8 := FALSE}
  76. {$setc TARGET_API_MAC_OSX := TRUE}
  77. {$setc TARGET_CARBON := TRUE}
  78. {$setc TARGET_CPU_68K := FALSE}
  79. {$setc TARGET_CPU_MIPS := FALSE}
  80. {$setc TARGET_CPU_SPARC := FALSE}
  81. {$setc TARGET_OS_MAC := TRUE}
  82. {$setc TARGET_OS_UNIX := FALSE}
  83. {$setc TARGET_OS_WIN32 := FALSE}
  84. {$setc TARGET_RT_MAC_68881 := FALSE}
  85. {$setc TARGET_RT_MAC_CFM := FALSE}
  86. {$setc TARGET_RT_MAC_MACHO := TRUE}
  87. {$setc TYPED_FUNCTION_POINTERS := TRUE}
  88. {$setc TYPE_BOOL := FALSE}
  89. {$setc TYPE_EXTENDED := FALSE}
  90. {$setc TYPE_LONGLONG := TRUE}
  91. uses MacTypes,MixedMode,TextCommon,Script,TypeSelect;
  92. {$ALIGN MAC68K}
  93. {
  94. Here are the current System 7 routine names and the translations to the older forms.
  95. Please use the newer forms in all new code and migrate the older names out of existing
  96. code as maintenance permits.
  97. NEW NAME OLD NAME OBSOLETE FORM (no handle)
  98. CompareString (Str255) IUCompPString (hp only) IUCompString (hp only)
  99. CompareText (ptr/len) IUMagPString IUMagString
  100. IdenticalString (Str255) IUEqualPString (hp only) IUEqualString (hp only)
  101. IdenticalText (ptr/len) IUMagIDPString IUMagIDString
  102. LanguageOrder IULangOrder
  103. ScriptOrder IUScriptOrder
  104. StringOrder (Str255) IUStringOrder (hp only)
  105. TextOrder (ptr/len) IUTextOrder
  106. RelString
  107. CmpString (a only)
  108. EqualString (hp only)
  109. ReplaceText
  110. Carbon only supports the new names. The old names are undefined for Carbon targets.
  111. InterfaceLib always has exported the old names. For C macros have been defined to allow
  112. the use of the new names. For Pascal and Assembly using the new names will result
  113. in link errors.
  114. }
  115. const
  116. { Special language code values for Language Order }
  117. systemCurLang = -2; { current (itlbLang) lang for system script }
  118. systemDefLang = -3; { default (table) lang for system script }
  119. currentCurLang = -4; { current (itlbLang) lang for current script }
  120. currentDefLang = -5; { default lang for current script }
  121. scriptCurLang = -6; { current (itlbLang) lang for specified script }
  122. scriptDefLang = -7; { default language for a specified script }
  123. { obsolete names }
  124. iuSystemCurLang = -2;
  125. iuSystemDefLang = -3;
  126. iuCurrentCurLang = -4;
  127. iuCurrentDefLang = -5;
  128. iuScriptCurLang = -6;
  129. iuScriptDefLang = -7;
  130. {
  131. * These routines are available in Carbon with the new names.
  132. }
  133. {
  134. * [Mac]ReplaceText()
  135. *
  136. * Availability:
  137. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  138. * CarbonLib: in CarbonLib 1.0 and later
  139. * Mac OS X: in version 10.0 and later
  140. }
  141. function ReplaceText(baseText: Handle; substitutionText: Handle; var key: Str15): SInt16; external name '_ReplaceText';
  142. {
  143. * ScriptOrder()
  144. *
  145. * Availability:
  146. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  147. * CarbonLib: in CarbonLib 1.0 and later
  148. * Mac OS X: in version 10.0 and later
  149. }
  150. function ScriptOrder(script1: ScriptCode; script2: ScriptCode): SInt16; external name '_ScriptOrder';
  151. {
  152. * [Mac]CompareString()
  153. *
  154. * Availability:
  155. * Non-Carbon CFM: not available
  156. * CarbonLib: in CarbonLib 1.0 and later
  157. * Mac OS X: in version 10.0 and later
  158. }
  159. function CompareString(const (*var*) aStr: Str255; const (*var*) bStr: Str255; itl2Handle: Handle): SInt16; external name '_CompareString';
  160. {
  161. * IdenticalString()
  162. *
  163. * Availability:
  164. * Non-Carbon CFM: not available
  165. * CarbonLib: in CarbonLib 1.0 and later
  166. * Mac OS X: in version 10.0 and later
  167. }
  168. function IdenticalString(const (*var*) aStr: Str255; const (*var*) bStr: Str255; itl2Handle: Handle): SInt16; external name '_IdenticalString';
  169. {
  170. * StringOrder()
  171. *
  172. * Availability:
  173. * Non-Carbon CFM: not available
  174. * CarbonLib: in CarbonLib 1.0 and later
  175. * Mac OS X: in version 10.0 and later
  176. }
  177. function StringOrder(const (*var*) aStr: Str255; const (*var*) bStr: Str255; aScript: ScriptCode; bScript: ScriptCode; aLang: LangCode; bLang: LangCode): SInt16; external name '_StringOrder';
  178. {
  179. * CompareText()
  180. *
  181. * Availability:
  182. * Non-Carbon CFM: not available
  183. * CarbonLib: in CarbonLib 1.0 and later
  184. * Mac OS X: in version 10.0 and later
  185. }
  186. function CompareText(aPtr: UnivPtr; bPtr: UnivPtr; aLen: SInt16; bLen: SInt16; itl2Handle: Handle): SInt16; external name '_CompareText';
  187. {
  188. * IdenticalText()
  189. *
  190. * Availability:
  191. * Non-Carbon CFM: not available
  192. * CarbonLib: in CarbonLib 1.0 and later
  193. * Mac OS X: in version 10.0 and later
  194. }
  195. function IdenticalText(aPtr: UnivPtr; bPtr: UnivPtr; aLen: SInt16; bLen: SInt16; itl2Handle: Handle): SInt16; external name '_IdenticalText';
  196. {
  197. * TextOrder()
  198. *
  199. * Availability:
  200. * Non-Carbon CFM: not available
  201. * CarbonLib: in CarbonLib 1.0 and later
  202. * Mac OS X: in version 10.0 and later
  203. }
  204. function TextOrder(aPtr: UnivPtr; bPtr: UnivPtr; aLen: SInt16; bLen: SInt16; aScript: ScriptCode; bScript: ScriptCode; aLang: LangCode; bLang: LangCode): SInt16; external name '_TextOrder';
  205. {
  206. * LanguageOrder()
  207. *
  208. * Availability:
  209. * Non-Carbon CFM: not available
  210. * CarbonLib: in CarbonLib 1.0 and later
  211. * Mac OS X: in version 10.0 and later
  212. }
  213. function LanguageOrder(language1: LangCode; language2: LangCode): SInt16; external name '_LanguageOrder';
  214. {
  215. * These routines are available in InterfaceLib with old names.
  216. * Macros are provided for C to allow source code use to the new names.
  217. }
  218. {$ifc CALL_NOT_IN_CARBON}
  219. {
  220. * IUMagPString()
  221. *
  222. * Availability:
  223. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  224. * CarbonLib: not available
  225. * Mac OS X: not available
  226. }
  227. function IUMagPString(aPtr: UnivPtr; bPtr: UnivPtr; aLen: SInt16; bLen: SInt16; itl2Handle: Handle): SInt16; external name '_IUMagPString';
  228. {
  229. * IUMagIDPString()
  230. *
  231. * Availability:
  232. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  233. * CarbonLib: not available
  234. * Mac OS X: not available
  235. }
  236. function IUMagIDPString(aPtr: UnivPtr; bPtr: UnivPtr; aLen: SInt16; bLen: SInt16; itl2Handle: Handle): SInt16; external name '_IUMagIDPString';
  237. {
  238. * IUTextOrder()
  239. *
  240. * Availability:
  241. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  242. * CarbonLib: not available
  243. * Mac OS X: not available
  244. }
  245. function IUTextOrder(aPtr: UnivPtr; bPtr: UnivPtr; aLen: SInt16; bLen: SInt16; aScript: ScriptCode; bScript: ScriptCode; aLang: LangCode; bLang: LangCode): SInt16; external name '_IUTextOrder';
  246. {
  247. * IULangOrder()
  248. *
  249. * Availability:
  250. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  251. * CarbonLib: not available
  252. * Mac OS X: not available
  253. }
  254. function IULangOrder(language1: LangCode; language2: LangCode): SInt16; external name '_IULangOrder';
  255. {
  256. * IUScriptOrder()
  257. *
  258. * Availability:
  259. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  260. * CarbonLib: not available
  261. * Mac OS X: not available
  262. }
  263. function IUScriptOrder(script1: ScriptCode; script2: ScriptCode): SInt16; external name '_IUScriptOrder';
  264. {
  265. * IUMagString()
  266. *
  267. * Availability:
  268. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  269. * CarbonLib: not available
  270. * Mac OS X: not available
  271. }
  272. function IUMagString(aPtr: UnivPtr; bPtr: UnivPtr; aLen: SInt16; bLen: SInt16): SInt16; external name '_IUMagString';
  273. {
  274. * IUMagIDString()
  275. *
  276. * Availability:
  277. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  278. * CarbonLib: not available
  279. * Mac OS X: not available
  280. }
  281. function IUMagIDString(aPtr: UnivPtr; bPtr: UnivPtr; aLen: SInt16; bLen: SInt16): SInt16; external name '_IUMagIDString';
  282. {$endc} {CALL_NOT_IN_CARBON}
  283. {$ifc CALL_NOT_IN_CARBON}
  284. {
  285. * IUCompPString()
  286. *
  287. * Availability:
  288. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  289. * CarbonLib: not available
  290. * Mac OS X: not available
  291. }
  292. function IUCompPString(const (*var*) aStr: Str255; const (*var*) bStr: Str255; itl2Handle: Handle): SInt16; external name '_IUCompPString';
  293. {
  294. * IUEqualPString()
  295. *
  296. * Availability:
  297. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  298. * CarbonLib: not available
  299. * Mac OS X: not available
  300. }
  301. function IUEqualPString(const (*var*) aStr: Str255; const (*var*) bStr: Str255; itl2Handle: Handle): SInt16; external name '_IUEqualPString';
  302. {
  303. * IUStringOrder()
  304. *
  305. * Availability:
  306. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  307. * CarbonLib: not available
  308. * Mac OS X: not available
  309. }
  310. function IUStringOrder(const (*var*) aStr: Str255; const (*var*) bStr: Str255; aScript: ScriptCode; bScript: ScriptCode; aLang: LangCode; bLang: LangCode): SInt16; external name '_IUStringOrder';
  311. {
  312. * IUCompString()
  313. *
  314. * Availability:
  315. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  316. * CarbonLib: not available
  317. * Mac OS X: not available
  318. }
  319. function IUCompString(const (*var*) aStr: Str255; const (*var*) bStr: Str255): SInt16; external name '_IUCompString';
  320. {
  321. * IUEqualString()
  322. *
  323. * Availability:
  324. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  325. * CarbonLib: not available
  326. * Mac OS X: not available
  327. }
  328. function IUEqualString(const (*var*) aStr: Str255; const (*var*) bStr: Str255): SInt16; external name '_IUEqualString';
  329. {$endc} {CALL_NOT_IN_CARBON}
  330. {
  331. * RelString()
  332. *
  333. * Availability:
  334. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  335. * CarbonLib: in CarbonLib 1.0 and later
  336. * Mac OS X: in version 10.0 and later
  337. }
  338. function RelString(const (*var*) str1: Str255; const (*var*) str2: Str255; caseSensitive: boolean; diacSensitive: boolean): SInt16; external name '_RelString';
  339. {
  340. * EqualString()
  341. *
  342. * Availability:
  343. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  344. * CarbonLib: in CarbonLib 1.0 and later
  345. * Mac OS X: in version 10.0 and later
  346. }
  347. function EqualString(const (*var*) str1: Str255; const (*var*) str2: Str255; caseSensitive: boolean; diacSensitive: boolean): boolean; external name '_EqualString';
  348. {$ALIGN MAC68K}
  349. end.