TextEncodingConverter.pas 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471
  1. {
  2. File: TextEncodingConverter.p
  3. Contains: Text Encoding Conversion Interfaces.
  4. Version: Technology: Mac OS 9.0
  5. Release: Universal Interfaces 3.4.2
  6. Copyright: © 1994-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 TextEncodingConverter;
  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,TextCommon;
  92. {$ALIGN MAC68K}
  93. type
  94. TECPluginSignature = OSType;
  95. TECPluginVersion = UInt32;
  96. { plugin signatures }
  97. const
  98. kTECSignature = $656E6376 (* 'encv' *);
  99. kTECUnicodePluginSignature = $70756E69 (* 'puni' *);
  100. kTECJapanesePluginSignature = $706A706E (* 'pjpn' *);
  101. kTECChinesePluginSignature = $707A686F (* 'pzho' *);
  102. kTECKoreanPluginSignature = $706B6F72 (* 'pkor' *);
  103. { converter object reference }
  104. type
  105. TECObjectRef = ^SInt32; { an opaque 32-bit type }
  106. TECObjectRefPtr = ^TECObjectRef; { when a var xx:TECObjectRef parameter can be nil, it is changed to xx: TECObjectRefPtr }
  107. TECSnifferObjectRef = ^SInt32; { an opaque 32-bit type }
  108. TECSnifferObjectRefPtr = ^TECSnifferObjectRef; { when a var xx:TECSnifferObjectRef parameter can be nil, it is changed to xx: TECSnifferObjectRefPtr }
  109. TECPluginSig = OSType;
  110. TECConversionInfoPtr = ^TECConversionInfo;
  111. TECConversionInfo = record
  112. sourceEncoding: TextEncoding;
  113. destinationEncoding: TextEncoding;
  114. reserved1: UInt16;
  115. reserved2: UInt16;
  116. end;
  117. { return number of encodings types supported by user's configuraton of the encoding converter }
  118. {
  119. * TECCountAvailableTextEncodings()
  120. *
  121. * Availability:
  122. * Non-Carbon CFM: in TextEncodingConverter 1.1 and later
  123. * CarbonLib: in CarbonLib 1.0 and later
  124. * Mac OS X: in version 10.0 and later
  125. }
  126. function TECCountAvailableTextEncodings(var numberEncodings: ItemCount): OSStatus; external name '_TECCountAvailableTextEncodings';
  127. { fill in an array of type TextEncoding passed in by the user with types of encodings the current configuration of the encoder can handle. }
  128. {
  129. * TECGetAvailableTextEncodings()
  130. *
  131. * Availability:
  132. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  133. * CarbonLib: in CarbonLib 1.0 and later
  134. * Mac OS X: in version 10.0 and later
  135. }
  136. function TECGetAvailableTextEncodings(availableEncodings: TextEncodingPtr; maxAvailableEncodings: ItemCount; var actualAvailableEncodings: ItemCount): OSStatus; external name '_TECGetAvailableTextEncodings';
  137. { return number of from-to encoding conversion pairs supported }
  138. {
  139. * TECCountDirectTextEncodingConversions()
  140. *
  141. * Availability:
  142. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  143. * CarbonLib: in CarbonLib 1.0 and later
  144. * Mac OS X: in version 10.0 and later
  145. }
  146. function TECCountDirectTextEncodingConversions(var numberOfEncodings: ItemCount): OSStatus; external name '_TECCountDirectTextEncodingConversions';
  147. { fill in an array of type TextEncodingPair passed in by the user with types of encoding pairs the current configuration of the encoder can handle. }
  148. {
  149. * TECGetDirectTextEncodingConversions()
  150. *
  151. * Availability:
  152. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  153. * CarbonLib: in CarbonLib 1.0 and later
  154. * Mac OS X: in version 10.0 and later
  155. }
  156. function TECGetDirectTextEncodingConversions(availableConversions: TECConversionInfoPtr; maxAvailableConversions: ItemCount; var actualAvailableConversions: ItemCount): OSStatus; external name '_TECGetDirectTextEncodingConversions';
  157. { return number of encodings a given encoding can be converter into }
  158. {
  159. * TECCountDestinationTextEncodings()
  160. *
  161. * Availability:
  162. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  163. * CarbonLib: in CarbonLib 1.0 and later
  164. * Mac OS X: in version 10.0 and later
  165. }
  166. function TECCountDestinationTextEncodings(inputEncoding: TextEncoding; var numberOfEncodings: ItemCount): OSStatus; external name '_TECCountDestinationTextEncodings';
  167. { fill in an array of type TextEncodingPair passed in by the user with types of encodings pairs the current configuration of the encoder can handle. }
  168. {
  169. * TECGetDestinationTextEncodings()
  170. *
  171. * Availability:
  172. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  173. * CarbonLib: in CarbonLib 1.0 and later
  174. * Mac OS X: in version 10.0 and later
  175. }
  176. function TECGetDestinationTextEncodings(inputEncoding: TextEncoding; destinationEncodings: TextEncodingPtr; maxDestinationEncodings: ItemCount; var actualDestinationEncodings: ItemCount): OSStatus; external name '_TECGetDestinationTextEncodings';
  177. { get info about a text encoding }
  178. {
  179. * TECGetTextEncodingInternetName()
  180. *
  181. * Availability:
  182. * Non-Carbon CFM: in TextEncodingConverter 1.1 and later
  183. * CarbonLib: in CarbonLib 1.0 and later
  184. * Mac OS X: in version 10.0 and later
  185. }
  186. function TECGetTextEncodingInternetName(textEncoding_: TextEncoding; var encodingName: Str255): OSStatus; external name '_TECGetTextEncodingInternetName';
  187. {
  188. * TECGetTextEncodingFromInternetName()
  189. *
  190. * Availability:
  191. * Non-Carbon CFM: in TextEncodingConverter 1.1 and later
  192. * CarbonLib: in CarbonLib 1.0 and later
  193. * Mac OS X: in version 10.0 and later
  194. }
  195. function TECGetTextEncodingFromInternetName(var textEncoding_: TextEncoding; const (*var*) encodingName: Str255): OSStatus; external name '_TECGetTextEncodingFromInternetName';
  196. { create/dispose converters }
  197. {
  198. * TECCreateConverter()
  199. *
  200. * Availability:
  201. * Non-Carbon CFM: in TextEncodingConverter 1.1 and later
  202. * CarbonLib: in CarbonLib 1.0 and later
  203. * Mac OS X: in version 10.0 and later
  204. }
  205. function TECCreateConverter(var newEncodingConverter: TECObjectRef; inputEncoding: TextEncoding; outputEncoding: TextEncoding): OSStatus; external name '_TECCreateConverter';
  206. {
  207. * TECCreateConverterFromPath()
  208. *
  209. * Availability:
  210. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  211. * CarbonLib: in CarbonLib 1.0 and later
  212. * Mac OS X: in version 10.0 and later
  213. }
  214. function TECCreateConverterFromPath(var newEncodingConverter: TECObjectRef; inPath: TextEncodingPtr; inEncodings: ItemCount): OSStatus; external name '_TECCreateConverterFromPath';
  215. {
  216. * TECDisposeConverter()
  217. *
  218. * Availability:
  219. * Non-Carbon CFM: in TextEncodingConverter 1.1 and later
  220. * CarbonLib: in CarbonLib 1.0 and later
  221. * Mac OS X: in version 10.0 and later
  222. }
  223. function TECDisposeConverter(newEncodingConverter: TECObjectRef): OSStatus; external name '_TECDisposeConverter';
  224. { convert text encodings }
  225. {
  226. * TECClearConverterContextInfo()
  227. *
  228. * Availability:
  229. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  230. * CarbonLib: in CarbonLib 1.0 and later
  231. * Mac OS X: in version 10.0 and later
  232. }
  233. function TECClearConverterContextInfo(encodingConverter: TECObjectRef): OSStatus; external name '_TECClearConverterContextInfo';
  234. {
  235. * TECConvertText()
  236. *
  237. * Availability:
  238. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  239. * CarbonLib: in CarbonLib 1.0 and later
  240. * Mac OS X: in version 10.0 and later
  241. }
  242. function TECConvertText(encodingConverter: TECObjectRef; inputBuffer: ConstTextPtr; inputBufferLength: ByteCount; var actualInputLength: ByteCount; outputBuffer: TextPtr; outputBufferLength: ByteCount; var actualOutputLength: ByteCount): OSStatus; external name '_TECConvertText';
  243. {
  244. * TECFlushText()
  245. *
  246. * Availability:
  247. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  248. * CarbonLib: in CarbonLib 1.0 and later
  249. * Mac OS X: in version 10.0 and later
  250. }
  251. function TECFlushText(encodingConverter: TECObjectRef; outputBuffer: TextPtr; outputBufferLength: ByteCount; var actualOutputLength: ByteCount): OSStatus; external name '_TECFlushText';
  252. { one-to-many routines }
  253. {
  254. * TECCountSubTextEncodings()
  255. *
  256. * Availability:
  257. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  258. * CarbonLib: in CarbonLib 1.0 and later
  259. * Mac OS X: in version 10.0 and later
  260. }
  261. function TECCountSubTextEncodings(inputEncoding: TextEncoding; var numberOfEncodings: ItemCount): OSStatus; external name '_TECCountSubTextEncodings';
  262. {
  263. * TECGetSubTextEncodings()
  264. *
  265. * Availability:
  266. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  267. * CarbonLib: in CarbonLib 1.0 and later
  268. * Mac OS X: in version 10.0 and later
  269. }
  270. function TECGetSubTextEncodings(inputEncoding: TextEncoding; subEncodings: TextEncodingPtr; maxSubEncodings: ItemCount; var actualSubEncodings: ItemCount): OSStatus; external name '_TECGetSubTextEncodings';
  271. {
  272. * TECGetEncodingList()
  273. *
  274. * Availability:
  275. * Non-Carbon CFM: in TextEncodingConverter 1.1 and later
  276. * CarbonLib: in CarbonLib 1.0 and later
  277. * Mac OS X: in version 10.0 and later
  278. }
  279. function TECGetEncodingList(encodingConverter: TECObjectRef; var numEncodings: ItemCount; var encodingList: Handle): OSStatus; external name '_TECGetEncodingList';
  280. {
  281. * TECCreateOneToManyConverter()
  282. *
  283. * Availability:
  284. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  285. * CarbonLib: in CarbonLib 1.0 and later
  286. * Mac OS X: in version 10.0 and later
  287. }
  288. function TECCreateOneToManyConverter(var newEncodingConverter: TECObjectRef; inputEncoding: TextEncoding; numOutputEncodings: ItemCount; outputEncodings: TextEncodingPtr): OSStatus; external name '_TECCreateOneToManyConverter';
  289. {
  290. * TECConvertTextToMultipleEncodings()
  291. *
  292. * Availability:
  293. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  294. * CarbonLib: in CarbonLib 1.0 and later
  295. * Mac OS X: in version 10.0 and later
  296. }
  297. function TECConvertTextToMultipleEncodings(encodingConverter: TECObjectRef; inputBuffer: ConstTextPtr; inputBufferLength: ByteCount; var actualInputLength: ByteCount; outputBuffer: TextPtr; outputBufferLength: ByteCount; var actualOutputLength: ByteCount; var outEncodingsBuffer: TextEncodingRun; maxOutEncodingRuns: ItemCount; var actualOutEncodingRuns: ItemCount): OSStatus; external name '_TECConvertTextToMultipleEncodings';
  298. {
  299. * TECFlushMultipleEncodings()
  300. *
  301. * Availability:
  302. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  303. * CarbonLib: in CarbonLib 1.0 and later
  304. * Mac OS X: in version 10.0 and later
  305. }
  306. function TECFlushMultipleEncodings(encodingConverter: TECObjectRef; outputBuffer: TextPtr; outputBufferLength: ByteCount; var actualOutputLength: ByteCount; var outEncodingsBuffer: TextEncodingRun; maxOutEncodingRuns: ItemCount; var actualOutEncodingRuns: ItemCount): OSStatus; external name '_TECFlushMultipleEncodings';
  307. { international internet info }
  308. {
  309. * TECCountWebTextEncodings()
  310. *
  311. * Availability:
  312. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  313. * CarbonLib: in CarbonLib 1.0 and later
  314. * Mac OS X: in version 10.0 and later
  315. }
  316. function TECCountWebTextEncodings(locale: RegionCode; var numberEncodings: ItemCount): OSStatus; external name '_TECCountWebTextEncodings';
  317. {
  318. * TECGetWebTextEncodings()
  319. *
  320. * Availability:
  321. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  322. * CarbonLib: in CarbonLib 1.0 and later
  323. * Mac OS X: in version 10.0 and later
  324. }
  325. function TECGetWebTextEncodings(locale: RegionCode; availableEncodings: TextEncodingPtr; maxAvailableEncodings: ItemCount; var actualAvailableEncodings: ItemCount): OSStatus; external name '_TECGetWebTextEncodings';
  326. {
  327. * TECCountMailTextEncodings()
  328. *
  329. * Availability:
  330. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  331. * CarbonLib: in CarbonLib 1.0 and later
  332. * Mac OS X: in version 10.0 and later
  333. }
  334. function TECCountMailTextEncodings(locale: RegionCode; var numberEncodings: ItemCount): OSStatus; external name '_TECCountMailTextEncodings';
  335. {
  336. * TECGetMailTextEncodings()
  337. *
  338. * Availability:
  339. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  340. * CarbonLib: in CarbonLib 1.0 and later
  341. * Mac OS X: in version 10.0 and later
  342. }
  343. function TECGetMailTextEncodings(locale: RegionCode; availableEncodings: TextEncodingPtr; maxAvailableEncodings: ItemCount; var actualAvailableEncodings: ItemCount): OSStatus; external name '_TECGetMailTextEncodings';
  344. { examine text encodings }
  345. {
  346. * TECCountAvailableSniffers()
  347. *
  348. * Availability:
  349. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  350. * CarbonLib: in CarbonLib 1.0 and later
  351. * Mac OS X: in version 10.0 and later
  352. }
  353. function TECCountAvailableSniffers(var numberOfEncodings: ItemCount): OSStatus; external name '_TECCountAvailableSniffers';
  354. {
  355. * TECGetAvailableSniffers()
  356. *
  357. * Availability:
  358. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  359. * CarbonLib: in CarbonLib 1.0 and later
  360. * Mac OS X: in version 10.0 and later
  361. }
  362. function TECGetAvailableSniffers(availableSniffers: TextEncodingPtr; maxAvailableSniffers: ItemCount; var actualAvailableSniffers: ItemCount): OSStatus; external name '_TECGetAvailableSniffers';
  363. {
  364. * TECCreateSniffer()
  365. *
  366. * Availability:
  367. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  368. * CarbonLib: in CarbonLib 1.0 and later
  369. * Mac OS X: in version 10.0 and later
  370. }
  371. function TECCreateSniffer(var encodingSniffer: TECSnifferObjectRef; testEncodings: TextEncodingPtr; numTextEncodings: ItemCount): OSStatus; external name '_TECCreateSniffer';
  372. {
  373. * TECSniffTextEncoding()
  374. *
  375. * Availability:
  376. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  377. * CarbonLib: in CarbonLib 1.0 and later
  378. * Mac OS X: in version 10.0 and later
  379. }
  380. function TECSniffTextEncoding(encodingSniffer: TECSnifferObjectRef; inputBuffer: TextPtr; inputBufferLength: ByteCount; testEncodings: TextEncodingPtr; numTextEncodings: ItemCount; var numErrsArray: ItemCount; maxErrs: ItemCount; var numFeaturesArray: ItemCount; maxFeatures: ItemCount): OSStatus; external name '_TECSniffTextEncoding';
  381. {
  382. * TECDisposeSniffer()
  383. *
  384. * Availability:
  385. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  386. * CarbonLib: in CarbonLib 1.0 and later
  387. * Mac OS X: in version 10.0 and later
  388. }
  389. function TECDisposeSniffer(encodingSniffer: TECSnifferObjectRef): OSStatus; external name '_TECDisposeSniffer';
  390. {
  391. * TECClearSnifferContextInfo()
  392. *
  393. * Availability:
  394. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  395. * CarbonLib: in CarbonLib 1.0 and later
  396. * Mac OS X: in version 10.0 and later
  397. }
  398. function TECClearSnifferContextInfo(encodingSniffer: TECSnifferObjectRef): OSStatus; external name '_TECClearSnifferContextInfo';
  399. {$ifc CALL_NOT_IN_CARBON}
  400. {
  401. * TECSetBasicOptions()
  402. *
  403. * Availability:
  404. * Non-Carbon CFM: in TextEncodingConverter 1.5 and later
  405. * CarbonLib: not available
  406. * Mac OS X: not available
  407. }
  408. function TECSetBasicOptions(encodingConverter: TECObjectRef; controlFlags: OptionBits): OSStatus; external name '_TECSetBasicOptions';
  409. {$endc} {CALL_NOT_IN_CARBON}
  410. {$ALIGN MAC68K}
  411. end.