Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

635 lines
15 KiB

  1. /*
  2. File: StringCompare.h
  3. Contains: Public interfaces for String Comparison and related operations
  4. Version: QuickTime 7.3
  5. Copyright: (c) 2007 (c) 1985-2001 by Apple Computer, Inc., all rights reserved.
  6. Bugs?: For bug reports, consult the following page on
  7. the World Wide Web:
  8. http://developer.apple.com/bugreporter/
  9. */
  10. #ifndef __STRINGCOMPARE__
  11. #define __STRINGCOMPARE__
  12. #ifndef __MACTYPES__
  13. #include <MacTypes.h>
  14. #endif
  15. #ifndef __MIXEDMODE__
  16. #include <MixedMode.h>
  17. #endif
  18. #ifndef __TEXTCOMMON__
  19. #include <TextCommon.h>
  20. #endif
  21. #ifndef __SCRIPT__
  22. #include <Script.h>
  23. #endif
  24. #if PRAGMA_ONCE
  25. #pragma once
  26. #endif
  27. #ifdef __cplusplus
  28. extern "C" {
  29. #endif
  30. #if PRAGMA_IMPORT
  31. #pragma import on
  32. #endif
  33. /*
  34. Here are the current System 7 routine names and the translations to the older forms.
  35. Please use the newer forms in all new code and migrate the older names out of existing
  36. code as maintenance permits.
  37. NEW NAME OLD NAME OBSOLETE FORM (no handle)
  38. CompareString (Str255) IUCompPString (hp only) IUCompString (hp only)
  39. CompareText (ptr/len) IUMagPString IUMagString
  40. IdenticalString (Str255) IUEqualPString (hp only) IUEqualString (hp only)
  41. IdenticalText (ptr/len) IUMagIDPString IUMagIDString
  42. LanguageOrder IULangOrder
  43. ScriptOrder IUScriptOrder
  44. StringOrder (Str255) IUStringOrder (hp only)
  45. TextOrder (ptr/len) IUTextOrder
  46. RelString
  47. CmpString (a only)
  48. EqualString (hp only)
  49. ReplaceText
  50. Carbon only supports the new names. The old names are undefined for Carbon targets.
  51. InterfaceLib always has exported the old names. For C macros have been defined to allow
  52. the use of the new names. For Pascal and Assembly using the new names will result
  53. in link errors.
  54. */
  55. enum {
  56. /* Special language code values for Language Order*/
  57. systemCurLang = -2, /* current (itlbLang) lang for system script*/
  58. systemDefLang = -3, /* default (table) lang for system script*/
  59. currentCurLang = -4, /* current (itlbLang) lang for current script*/
  60. currentDefLang = -5, /* default lang for current script*/
  61. scriptCurLang = -6, /* current (itlbLang) lang for specified script*/
  62. scriptDefLang = -7 /* default language for a specified script*/
  63. };
  64. /* obsolete names*/
  65. enum {
  66. iuSystemCurLang = systemCurLang,
  67. iuSystemDefLang = systemDefLang,
  68. iuCurrentCurLang = currentCurLang,
  69. iuCurrentDefLang = currentDefLang,
  70. iuScriptCurLang = scriptCurLang,
  71. iuScriptDefLang = scriptDefLang
  72. };
  73. /*
  74. * These routines are available in Carbon with the new names.
  75. */
  76. /*
  77. * [Mac]ReplaceText()
  78. *
  79. * Availability:
  80. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  81. * CarbonLib: in CarbonLib 1.0 and later
  82. * Mac OS X: in version 10.0 and later
  83. */
  84. #if TARGET_OS_MAC
  85. #define MacReplaceText ReplaceText
  86. #endif
  87. EXTERN_API( short )
  88. MacReplaceText(
  89. Handle baseText,
  90. Handle substitutionText,
  91. Str15 key) FOURWORDINLINE(0x2F3C, 0x820C, 0xFFDC, 0xA8B5);
  92. /*
  93. * ScriptOrder()
  94. *
  95. * Availability:
  96. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  97. * CarbonLib: in CarbonLib 1.0 and later
  98. * Mac OS X: in version 10.0 and later
  99. */
  100. EXTERN_API( short )
  101. ScriptOrder(
  102. ScriptCode script1,
  103. ScriptCode script2) THREEWORDINLINE(0x3F3C, 0x001E, 0xA9ED);
  104. /*
  105. * [Mac]CompareString()
  106. *
  107. * Availability:
  108. * Non-Carbon CFM: not available
  109. * CarbonLib: in CarbonLib 1.0 and later
  110. * Mac OS X: in version 10.0 and later
  111. */
  112. #if TARGET_OS_MAC
  113. #define MacCompareString CompareString
  114. #endif
  115. EXTERN_API( short )
  116. MacCompareString(
  117. ConstStr255Param aStr,
  118. ConstStr255Param bStr,
  119. Handle itl2Handle);
  120. /*
  121. * IdenticalString()
  122. *
  123. * Availability:
  124. * Non-Carbon CFM: not available
  125. * CarbonLib: in CarbonLib 1.0 and later
  126. * Mac OS X: in version 10.0 and later
  127. */
  128. EXTERN_API( short )
  129. IdenticalString(
  130. ConstStr255Param aStr,
  131. ConstStr255Param bStr,
  132. Handle itl2Handle);
  133. /*
  134. * StringOrder()
  135. *
  136. * Availability:
  137. * Non-Carbon CFM: not available
  138. * CarbonLib: in CarbonLib 1.0 and later
  139. * Mac OS X: in version 10.0 and later
  140. */
  141. EXTERN_API( short )
  142. StringOrder(
  143. ConstStr255Param aStr,
  144. ConstStr255Param bStr,
  145. ScriptCode aScript,
  146. ScriptCode bScript,
  147. LangCode aLang,
  148. LangCode bLang);
  149. /*
  150. * CompareText()
  151. *
  152. * Availability:
  153. * Non-Carbon CFM: not available
  154. * CarbonLib: in CarbonLib 1.0 and later
  155. * Mac OS X: in version 10.0 and later
  156. */
  157. EXTERN_API( short )
  158. CompareText(
  159. const void * aPtr,
  160. const void * bPtr,
  161. short aLen,
  162. short bLen,
  163. Handle itl2Handle) THREEWORDINLINE(0x3F3C, 0x001A, 0xA9ED);
  164. /*
  165. * IdenticalText()
  166. *
  167. * Availability:
  168. * Non-Carbon CFM: not available
  169. * CarbonLib: in CarbonLib 1.0 and later
  170. * Mac OS X: in version 10.0 and later
  171. */
  172. EXTERN_API( short )
  173. IdenticalText(
  174. const void * aPtr,
  175. const void * bPtr,
  176. short aLen,
  177. short bLen,
  178. Handle itl2Handle) THREEWORDINLINE(0x3F3C, 0x001C, 0xA9ED);
  179. /*
  180. * TextOrder()
  181. *
  182. * Availability:
  183. * Non-Carbon CFM: not available
  184. * CarbonLib: in CarbonLib 1.0 and later
  185. * Mac OS X: in version 10.0 and later
  186. */
  187. EXTERN_API( short )
  188. TextOrder(
  189. const void * aPtr,
  190. const void * bPtr,
  191. short aLen,
  192. short bLen,
  193. ScriptCode aScript,
  194. ScriptCode bScript,
  195. LangCode aLang,
  196. LangCode bLang) THREEWORDINLINE(0x3F3C, 0x0022, 0xA9ED);
  197. /*
  198. * LanguageOrder()
  199. *
  200. * Availability:
  201. * Non-Carbon CFM: not available
  202. * CarbonLib: in CarbonLib 1.0 and later
  203. * Mac OS X: in version 10.0 and later
  204. */
  205. EXTERN_API( short )
  206. LanguageOrder(
  207. LangCode language1,
  208. LangCode language2) THREEWORDINLINE(0x3F3C, 0x0020, 0xA9ED);
  209. /*
  210. * These routines are available in InterfaceLib with old names.
  211. * Macros are provided for C to allow source code use to the new names.
  212. */
  213. #if CALL_NOT_IN_CARBON
  214. /*
  215. * IUMagPString()
  216. *
  217. * Availability:
  218. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  219. * CarbonLib: not available
  220. * Mac OS X: not available
  221. */
  222. EXTERN_API( short )
  223. IUMagPString(
  224. const void * aPtr,
  225. const void * bPtr,
  226. short aLen,
  227. short bLen,
  228. Handle itl2Handle) THREEWORDINLINE(0x3F3C, 0x001A, 0xA9ED);
  229. /*
  230. * IUMagIDPString()
  231. *
  232. * Availability:
  233. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  234. * CarbonLib: not available
  235. * Mac OS X: not available
  236. */
  237. EXTERN_API( short )
  238. IUMagIDPString(
  239. const void * aPtr,
  240. const void * bPtr,
  241. short aLen,
  242. short bLen,
  243. Handle itl2Handle) THREEWORDINLINE(0x3F3C, 0x001C, 0xA9ED);
  244. /*
  245. * IUTextOrder()
  246. *
  247. * Availability:
  248. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  249. * CarbonLib: not available
  250. * Mac OS X: not available
  251. */
  252. EXTERN_API( short )
  253. IUTextOrder(
  254. const void * aPtr,
  255. const void * bPtr,
  256. short aLen,
  257. short bLen,
  258. ScriptCode aScript,
  259. ScriptCode bScript,
  260. LangCode aLang,
  261. LangCode bLang) THREEWORDINLINE(0x3F3C, 0x0022, 0xA9ED);
  262. /*
  263. * IULangOrder()
  264. *
  265. * Availability:
  266. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  267. * CarbonLib: not available
  268. * Mac OS X: not available
  269. */
  270. EXTERN_API( short )
  271. IULangOrder(
  272. LangCode language1,
  273. LangCode language2) THREEWORDINLINE(0x3F3C, 0x0020, 0xA9ED);
  274. /*
  275. * IUScriptOrder()
  276. *
  277. * Availability:
  278. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  279. * CarbonLib: not available
  280. * Mac OS X: not available
  281. */
  282. EXTERN_API( short )
  283. IUScriptOrder(
  284. ScriptCode script1,
  285. ScriptCode script2) THREEWORDINLINE(0x3F3C, 0x001E, 0xA9ED);
  286. /*
  287. * IUMagString()
  288. *
  289. * Availability:
  290. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  291. * CarbonLib: not available
  292. * Mac OS X: not available
  293. */
  294. EXTERN_API( short )
  295. IUMagString(
  296. const void * aPtr,
  297. const void * bPtr,
  298. short aLen,
  299. short bLen) THREEWORDINLINE(0x3F3C, 0x000A, 0xA9ED);
  300. /*
  301. * IUMagIDString()
  302. *
  303. * Availability:
  304. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  305. * CarbonLib: not available
  306. * Mac OS X: not available
  307. */
  308. EXTERN_API( short )
  309. IUMagIDString(
  310. const void * aPtr,
  311. const void * bPtr,
  312. short aLen,
  313. short bLen) THREEWORDINLINE(0x3F3C, 0x000C, 0xA9ED);
  314. #endif /* CALL_NOT_IN_CARBON */
  315. #if CALL_NOT_IN_CARBON
  316. /*
  317. * IUCompPString()
  318. *
  319. * Availability:
  320. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  321. * CarbonLib: not available
  322. * Mac OS X: not available
  323. */
  324. EXTERN_API( short )
  325. IUCompPString(
  326. ConstStr255Param aStr,
  327. ConstStr255Param bStr,
  328. Handle itl2Handle);
  329. /*
  330. * IUEqualPString()
  331. *
  332. * Availability:
  333. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  334. * CarbonLib: not available
  335. * Mac OS X: not available
  336. */
  337. EXTERN_API( short )
  338. IUEqualPString(
  339. ConstStr255Param aStr,
  340. ConstStr255Param bStr,
  341. Handle itl2Handle);
  342. /*
  343. * IUStringOrder()
  344. *
  345. * Availability:
  346. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  347. * CarbonLib: not available
  348. * Mac OS X: not available
  349. */
  350. EXTERN_API( short )
  351. IUStringOrder(
  352. ConstStr255Param aStr,
  353. ConstStr255Param bStr,
  354. ScriptCode aScript,
  355. ScriptCode bScript,
  356. LangCode aLang,
  357. LangCode bLang);
  358. /*
  359. * IUCompString()
  360. *
  361. * Availability:
  362. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  363. * CarbonLib: not available
  364. * Mac OS X: not available
  365. */
  366. EXTERN_API( short )
  367. IUCompString(
  368. ConstStr255Param aStr,
  369. ConstStr255Param bStr);
  370. /*
  371. * IUEqualString()
  372. *
  373. * Availability:
  374. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  375. * CarbonLib: not available
  376. * Mac OS X: not available
  377. */
  378. EXTERN_API( short )
  379. IUEqualString(
  380. ConstStr255Param aStr,
  381. ConstStr255Param bStr);
  382. #endif /* CALL_NOT_IN_CARBON */
  383. #if CALL_NOT_IN_CARBON
  384. #if TARGET_OS_MAC
  385. #define CompareString(aStr, bStr, itl2Handle) \
  386. IUCompPString(aStr, bStr, itl2Handle)
  387. #endif
  388. #define CompareText(aPtr, bPtr, aLen, bLen, itl2Handle) \
  389. IUMagPString(aPtr, bPtr, aLen, bLen, itl2Handle)
  390. #define IdenticalString(aStr, bStr, itl2Handle) \
  391. IUEqualPString(aStr, bStr, itl2Handle)
  392. #define IdenticalText(aPtr, bPtr, aLen, bLen, itl2Handle) \
  393. IUMagIDPString(aPtr, bPtr, aLen, bLen, itl2Handle)
  394. #define StringOrder(aStr, bStr, aScript, bScript, aLang, bLang) \
  395. IUStringOrder(aStr, bStr, aScript, bScript, aLang, bLang)
  396. #define TextOrder(aPtr, bPtr, aLen, bLen, aScript, bScript, aLang, bLang) \
  397. IUTextOrder(aPtr, bPtr, aLen, bLen, aScript, bScript, aLang, bLang)
  398. #define LanguageOrder(language1, language2) \
  399. IULangOrder(language1, language2)
  400. #endif /* CALL_NOT_IN_CARBON */
  401. #if CALL_NOT_IN_CARBON
  402. /*
  403. * iucomppstring()
  404. *
  405. * Availability:
  406. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  407. * CarbonLib: not available
  408. * Mac OS X: not available
  409. */
  410. EXTERN_API_C( short )
  411. iucomppstring(
  412. const char * aStr,
  413. const char * bStr,
  414. Handle intlHandle);
  415. /*
  416. * iuequalpstring()
  417. *
  418. * Availability:
  419. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  420. * CarbonLib: not available
  421. * Mac OS X: not available
  422. */
  423. EXTERN_API_C( short )
  424. iuequalpstring(
  425. const char * aStr,
  426. const char * bStr,
  427. Handle intlHandle);
  428. /*
  429. * iustringorder()
  430. *
  431. * Availability:
  432. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  433. * CarbonLib: not available
  434. * Mac OS X: not available
  435. */
  436. EXTERN_API_C( short )
  437. iustringorder(
  438. const char * aStr,
  439. const char * bStr,
  440. ScriptCode aScript,
  441. ScriptCode bScript,
  442. LangCode aLang,
  443. LangCode bLang);
  444. /*
  445. * iucompstring()
  446. *
  447. * Availability:
  448. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  449. * CarbonLib: not available
  450. * Mac OS X: not available
  451. */
  452. EXTERN_API_C( short )
  453. iucompstring(
  454. const char * aStr,
  455. const char * bStr);
  456. /*
  457. * iuequalstring()
  458. *
  459. * Availability:
  460. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  461. * CarbonLib: not available
  462. * Mac OS X: not available
  463. */
  464. EXTERN_API_C( short )
  465. iuequalstring(
  466. const char * aStr,
  467. const char * bStr);
  468. #endif /* CALL_NOT_IN_CARBON */
  469. /*
  470. * RelString()
  471. *
  472. * Availability:
  473. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  474. * CarbonLib: in CarbonLib 1.0 and later
  475. * Mac OS X: in version 10.0 and later
  476. */
  477. EXTERN_API( short )
  478. RelString(
  479. ConstStr255Param str1,
  480. ConstStr255Param str2,
  481. Boolean caseSensitive,
  482. Boolean diacSensitive);
  483. /*
  484. * EqualString()
  485. *
  486. * Availability:
  487. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  488. * CarbonLib: in CarbonLib 1.0 and later
  489. * Mac OS X: in version 10.0 and later
  490. */
  491. EXTERN_API( Boolean )
  492. EqualString(
  493. ConstStr255Param str1,
  494. ConstStr255Param str2,
  495. Boolean caseSensitive,
  496. Boolean diacSensitive);
  497. /*
  498. * relstring()
  499. *
  500. * Availability:
  501. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  502. * CarbonLib: in CarbonLib 1.0 and later
  503. * Mac OS X: in version 10.0 and later
  504. */
  505. EXTERN_API_C( short )
  506. relstring(
  507. const char * str1,
  508. const char * str2,
  509. Boolean caseSensitive,
  510. Boolean diacSensitive);
  511. #if CALL_NOT_IN_CARBON
  512. /*
  513. * equalstring()
  514. *
  515. * Availability:
  516. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  517. * CarbonLib: not available
  518. * Mac OS X: not available
  519. */
  520. EXTERN_API_C( Boolean )
  521. equalstring(
  522. const char * str1,
  523. const char * str2,
  524. Boolean caseSensitive,
  525. Boolean diacSensitive);
  526. #endif /* CALL_NOT_IN_CARBON */
  527. #ifdef PRAGMA_IMPORT_OFF
  528. #pragma import off
  529. #elif PRAGMA_IMPORT
  530. #pragma import reset
  531. #endif
  532. #ifdef __cplusplus
  533. }
  534. #endif
  535. #endif /* __STRINGCOMPARE__ */