TextEncodingConverter.pas 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817
  1. {
  2. File: CarbonCore/TextEncodingConverter.h
  3. Contains: Text Encoding Conversion Interfaces.
  4. Copyright: © 1994-2011 Apple Inc. All rights reserved.
  5. Bugs?: For bug reports, consult the following page on
  6. the World Wide Web:
  7. http://bugs.freepascal.org
  8. }
  9. {
  10. Modified for use with Free Pascal
  11. Version 308
  12. Please report any bugs to <[email protected]>
  13. }
  14. {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}
  15. {$mode macpas}
  16. {$modeswitch cblocks}
  17. {$packenum 1}
  18. {$macro on}
  19. {$inline on}
  20. {$calling mwpascal}
  21. {$IFNDEF FPC_DOTTEDUNITS}
  22. unit TextEncodingConverter;
  23. {$ENDIF FPC_DOTTEDUNITS}
  24. interface
  25. {$setc UNIVERSAL_INTERFACES_VERSION := $0400}
  26. {$setc GAP_INTERFACES_VERSION := $0308}
  27. {$ifc not defined USE_CFSTR_CONSTANT_MACROS}
  28. {$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
  29. {$endc}
  30. {$ifc defined CPUPOWERPC and defined CPUI386}
  31. {$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
  32. {$endc}
  33. {$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
  34. {$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
  35. {$endc}
  36. {$ifc not defined __ppc__ and defined CPUPOWERPC32}
  37. {$setc __ppc__ := 1}
  38. {$elsec}
  39. {$setc __ppc__ := 0}
  40. {$endc}
  41. {$ifc not defined __ppc64__ and defined CPUPOWERPC64}
  42. {$setc __ppc64__ := 1}
  43. {$elsec}
  44. {$setc __ppc64__ := 0}
  45. {$endc}
  46. {$ifc not defined __i386__ and defined CPUI386}
  47. {$setc __i386__ := 1}
  48. {$elsec}
  49. {$setc __i386__ := 0}
  50. {$endc}
  51. {$ifc not defined __x86_64__ and defined CPUX86_64}
  52. {$setc __x86_64__ := 1}
  53. {$elsec}
  54. {$setc __x86_64__ := 0}
  55. {$endc}
  56. {$ifc not defined __arm__ and defined CPUARM}
  57. {$setc __arm__ := 1}
  58. {$elsec}
  59. {$setc __arm__ := 0}
  60. {$endc}
  61. {$ifc not defined __arm64__ and defined CPUAARCH64}
  62. {$setc __arm64__ := 1}
  63. {$elsec}
  64. {$setc __arm64__ := 0}
  65. {$endc}
  66. {$ifc defined cpu64}
  67. {$setc __LP64__ := 1}
  68. {$elsec}
  69. {$setc __LP64__ := 0}
  70. {$endc}
  71. {$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
  72. {$error Conflicting definitions for __ppc__ and __i386__}
  73. {$endc}
  74. {$ifc defined __ppc__ and __ppc__}
  75. {$setc TARGET_CPU_PPC := TRUE}
  76. {$setc TARGET_CPU_PPC64 := FALSE}
  77. {$setc TARGET_CPU_X86 := FALSE}
  78. {$setc TARGET_CPU_X86_64 := FALSE}
  79. {$setc TARGET_CPU_ARM := FALSE}
  80. {$setc TARGET_CPU_ARM64 := FALSE}
  81. {$setc TARGET_OS_MAC := TRUE}
  82. {$setc TARGET_OS_IPHONE := FALSE}
  83. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  84. {$setc TARGET_OS_EMBEDDED := FALSE}
  85. {$elifc defined __ppc64__ and __ppc64__}
  86. {$setc TARGET_CPU_PPC := FALSE}
  87. {$setc TARGET_CPU_PPC64 := TRUE}
  88. {$setc TARGET_CPU_X86 := FALSE}
  89. {$setc TARGET_CPU_X86_64 := FALSE}
  90. {$setc TARGET_CPU_ARM := FALSE}
  91. {$setc TARGET_CPU_ARM64 := FALSE}
  92. {$setc TARGET_OS_MAC := TRUE}
  93. {$setc TARGET_OS_IPHONE := FALSE}
  94. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  95. {$setc TARGET_OS_EMBEDDED := FALSE}
  96. {$elifc defined __i386__ and __i386__}
  97. {$setc TARGET_CPU_PPC := FALSE}
  98. {$setc TARGET_CPU_PPC64 := FALSE}
  99. {$setc TARGET_CPU_X86 := TRUE}
  100. {$setc TARGET_CPU_X86_64 := FALSE}
  101. {$setc TARGET_CPU_ARM := FALSE}
  102. {$setc TARGET_CPU_ARM64 := FALSE}
  103. {$ifc defined iphonesim}
  104. {$setc TARGET_OS_MAC := FALSE}
  105. {$setc TARGET_OS_IPHONE := TRUE}
  106. {$setc TARGET_IPHONE_SIMULATOR := TRUE}
  107. {$elsec}
  108. {$setc TARGET_OS_MAC := TRUE}
  109. {$setc TARGET_OS_IPHONE := FALSE}
  110. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  111. {$endc}
  112. {$setc TARGET_OS_EMBEDDED := FALSE}
  113. {$elifc defined __x86_64__ and __x86_64__}
  114. {$setc TARGET_CPU_PPC := FALSE}
  115. {$setc TARGET_CPU_PPC64 := FALSE}
  116. {$setc TARGET_CPU_X86 := FALSE}
  117. {$setc TARGET_CPU_X86_64 := TRUE}
  118. {$setc TARGET_CPU_ARM := FALSE}
  119. {$setc TARGET_CPU_ARM64 := FALSE}
  120. {$ifc defined iphonesim}
  121. {$setc TARGET_OS_MAC := FALSE}
  122. {$setc TARGET_OS_IPHONE := TRUE}
  123. {$setc TARGET_IPHONE_SIMULATOR := TRUE}
  124. {$elsec}
  125. {$setc TARGET_OS_MAC := TRUE}
  126. {$setc TARGET_OS_IPHONE := FALSE}
  127. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  128. {$endc}
  129. {$setc TARGET_OS_EMBEDDED := FALSE}
  130. {$elifc defined __arm__ and __arm__}
  131. {$setc TARGET_CPU_PPC := FALSE}
  132. {$setc TARGET_CPU_PPC64 := FALSE}
  133. {$setc TARGET_CPU_X86 := FALSE}
  134. {$setc TARGET_CPU_X86_64 := FALSE}
  135. {$setc TARGET_CPU_ARM := TRUE}
  136. {$setc TARGET_CPU_ARM64 := FALSE}
  137. {$setc TARGET_OS_MAC := FALSE}
  138. {$setc TARGET_OS_IPHONE := TRUE}
  139. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  140. {$setc TARGET_OS_EMBEDDED := TRUE}
  141. {$elifc defined __arm64__ and __arm64__}
  142. {$setc TARGET_CPU_PPC := FALSE}
  143. {$setc TARGET_CPU_PPC64 := FALSE}
  144. {$setc TARGET_CPU_X86 := FALSE}
  145. {$setc TARGET_CPU_X86_64 := FALSE}
  146. {$setc TARGET_CPU_ARM := FALSE}
  147. {$setc TARGET_CPU_ARM64 := TRUE}
  148. {$ifc defined ios}
  149. {$setc TARGET_OS_MAC := FALSE}
  150. {$setc TARGET_OS_IPHONE := TRUE}
  151. {$setc TARGET_OS_EMBEDDED := TRUE}
  152. {$elsec}
  153. {$setc TARGET_OS_MAC := TRUE}
  154. {$setc TARGET_OS_IPHONE := FALSE}
  155. {$setc TARGET_OS_EMBEDDED := FALSE}
  156. {$endc}
  157. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  158. {$elsec}
  159. {$error __ppc__ nor __ppc64__ nor __i386__ nor __x86_64__ nor __arm__ nor __arm64__ is defined.}
  160. {$endc}
  161. {$ifc defined __LP64__ and __LP64__ }
  162. {$setc TARGET_CPU_64 := TRUE}
  163. {$elsec}
  164. {$setc TARGET_CPU_64 := FALSE}
  165. {$endc}
  166. {$ifc defined FPC_BIG_ENDIAN}
  167. {$setc TARGET_RT_BIG_ENDIAN := TRUE}
  168. {$setc TARGET_RT_LITTLE_ENDIAN := FALSE}
  169. {$elifc defined FPC_LITTLE_ENDIAN}
  170. {$setc TARGET_RT_BIG_ENDIAN := FALSE}
  171. {$setc TARGET_RT_LITTLE_ENDIAN := TRUE}
  172. {$elsec}
  173. {$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
  174. {$endc}
  175. {$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}
  176. {$setc CALL_NOT_IN_CARBON := FALSE}
  177. {$setc OLDROUTINENAMES := FALSE}
  178. {$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}
  179. {$setc OPAQUE_UPP_TYPES := TRUE}
  180. {$setc OTCARBONAPPLICATION := TRUE}
  181. {$setc OTKERNEL := FALSE}
  182. {$setc PM_USE_SESSION_APIS := TRUE}
  183. {$setc TARGET_API_MAC_CARBON := TRUE}
  184. {$setc TARGET_API_MAC_OS8 := FALSE}
  185. {$setc TARGET_API_MAC_OSX := TRUE}
  186. {$setc TARGET_CARBON := TRUE}
  187. {$setc TARGET_CPU_68K := FALSE}
  188. {$setc TARGET_CPU_MIPS := FALSE}
  189. {$setc TARGET_CPU_SPARC := FALSE}
  190. {$setc TARGET_OS_UNIX := FALSE}
  191. {$setc TARGET_OS_WIN32 := FALSE}
  192. {$setc TARGET_RT_MAC_68881 := FALSE}
  193. {$setc TARGET_RT_MAC_CFM := FALSE}
  194. {$setc TARGET_RT_MAC_MACHO := TRUE}
  195. {$setc TYPED_FUNCTION_POINTERS := TRUE}
  196. {$setc TYPE_BOOL := FALSE}
  197. {$setc TYPE_EXTENDED := FALSE}
  198. {$setc TYPE_LONGLONG := TRUE}
  199. {$IFDEF FPC_DOTTEDUNITS}
  200. uses MacOsApi.MacTypes,MacOsApi.TextCommon,MacOsApi.CFBase;
  201. {$ELSE FPC_DOTTEDUNITS}
  202. uses MacTypes,TextCommon,CFBase;
  203. {$ENDIF FPC_DOTTEDUNITS}
  204. {$endc} {not MACOSALLINCLUDE}
  205. {$ifc TARGET_OS_MAC}
  206. {$ALIGN MAC68K}
  207. type
  208. TECPluginSignature = OSType;
  209. TECPluginVersion = UInt32;
  210. { plugin signatures }
  211. const
  212. kTECSignature = FourCharCode('encv');
  213. kTECUnicodePluginSignature = FourCharCode('puni');
  214. kTECJapanesePluginSignature = FourCharCode('pjpn');
  215. kTECChinesePluginSignature = FourCharCode('pzho');
  216. kTECKoreanPluginSignature = FourCharCode('pkor');
  217. { converter object reference }
  218. type
  219. TECObjectRef = ^SInt32; { an opaque type }
  220. TECObjectRefPtr = ^TECObjectRef; { when a var xx:TECObjectRef parameter can be nil, it is changed to xx: TECObjectRefPtr }
  221. TECSnifferObjectRef = ^SInt32; { an opaque type }
  222. TECSnifferObjectRefPtr = ^TECSnifferObjectRef; { when a var xx:TECSnifferObjectRef parameter can be nil, it is changed to xx: TECSnifferObjectRefPtr }
  223. TECPluginSig = OSType;
  224. TECConversionInfoPtr = ^TECConversionInfo;
  225. TECConversionInfo = record
  226. sourceEncoding: TextEncoding;
  227. destinationEncoding: TextEncoding;
  228. reserved1: UInt16;
  229. reserved2: UInt16;
  230. end;
  231. {
  232. * TECInternetNameUsageMask
  233. *
  234. * Discussion:
  235. * Mask values that control the mapping between TextEncoding and
  236. * IANA charset name or MIB enum.
  237. }
  238. type
  239. TECInternetNameUsageMask = UInt32;
  240. const
  241. { Use one of the following}
  242. {
  243. * Use the default type of mapping given other usage information
  244. * (none currently defined).
  245. }
  246. kTECInternetNameDefaultUsageMask = 0;
  247. {
  248. * Use the closest possible match between TextEncoding value and IANA
  249. * charset name or MIB enum
  250. }
  251. kTECInternetNameStrictUsageMask = 1;
  252. {
  253. * When mapping from IANA charset name or MIB enum to TextEncoding,
  254. * map to the largest superset of the encoding specified by the
  255. * charset name or MIB enum (i.e. be tolerant). When mapping from
  256. * TextEncoding to IANA charset name or MIB enum, typically map to
  257. * the most generic or widely recognized charset name or MIB enum.
  258. }
  259. kTECInternetNameTolerantUsageMask = 2;
  260. { Special values for MIB enums }
  261. const
  262. kTEC_MIBEnumDontCare = -1;
  263. { Additional control flags for TECSetBasicOptions }
  264. const
  265. kTECDisableFallbacksBit = 16;
  266. kTECDisableLooseMappingsBit = 17;
  267. const
  268. kTECDisableFallbacksMask = 1 shl kTECDisableFallbacksBit;
  269. kTECDisableLooseMappingsMask = 1 shl kTECDisableLooseMappingsBit;
  270. { return number of encodings types supported by user's configuraton of the encoding converter }
  271. {
  272. * TECCountAvailableTextEncodings()
  273. *
  274. * Availability:
  275. * Mac OS X: in version 10.0 and later in CoreServices.framework
  276. * CarbonLib: in CarbonLib 1.0 and later
  277. * Non-Carbon CFM: in TextEncodingConverter 1.1 and later
  278. }
  279. function TECCountAvailableTextEncodings( var numberEncodings: ItemCount ): OSStatus; external name '_TECCountAvailableTextEncodings';
  280. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  281. { fill in an array of type TextEncoding passed in by the user with types of encodings the current configuration of the encoder can handle. }
  282. {
  283. * TECGetAvailableTextEncodings()
  284. *
  285. * Availability:
  286. * Mac OS X: in version 10.0 and later in CoreServices.framework
  287. * CarbonLib: in CarbonLib 1.0 and later
  288. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  289. }
  290. function TECGetAvailableTextEncodings( availableEncodings: {variable-size-array} TextEncodingPtr; maxAvailableEncodings: ItemCount; var actualAvailableEncodings: ItemCount ): OSStatus; external name '_TECGetAvailableTextEncodings';
  291. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  292. { return number of from-to encoding conversion pairs supported }
  293. {
  294. * TECCountDirectTextEncodingConversions()
  295. *
  296. * Availability:
  297. * Mac OS X: in version 10.0 and later in CoreServices.framework
  298. * CarbonLib: in CarbonLib 1.0 and later
  299. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  300. }
  301. function TECCountDirectTextEncodingConversions( var numberOfEncodings: ItemCount ): OSStatus; external name '_TECCountDirectTextEncodingConversions';
  302. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  303. { 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. }
  304. {
  305. * TECGetDirectTextEncodingConversions()
  306. *
  307. * Availability:
  308. * Mac OS X: in version 10.0 and later in CoreServices.framework
  309. * CarbonLib: in CarbonLib 1.0 and later
  310. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  311. }
  312. function TECGetDirectTextEncodingConversions( availableConversions: {variable-size-array} TECConversionInfoPtr; maxAvailableConversions: ItemCount; var actualAvailableConversions: ItemCount ): OSStatus; external name '_TECGetDirectTextEncodingConversions';
  313. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  314. { return number of encodings a given encoding can be converter into }
  315. {
  316. * TECCountDestinationTextEncodings()
  317. *
  318. * Availability:
  319. * Mac OS X: in version 10.0 and later in CoreServices.framework
  320. * CarbonLib: in CarbonLib 1.0 and later
  321. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  322. }
  323. function TECCountDestinationTextEncodings( inputEncoding: TextEncoding; var numberOfEncodings: ItemCount ): OSStatus; external name '_TECCountDestinationTextEncodings';
  324. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  325. { 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. }
  326. {
  327. * TECGetDestinationTextEncodings()
  328. *
  329. * Availability:
  330. * Mac OS X: in version 10.0 and later in CoreServices.framework
  331. * CarbonLib: in CarbonLib 1.0 and later
  332. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  333. }
  334. function TECGetDestinationTextEncodings( inputEncoding: TextEncoding; destinationEncodings: {variable-size-array} TextEncodingPtr; maxDestinationEncodings: ItemCount; var actualDestinationEncodings: ItemCount ): OSStatus; external name '_TECGetDestinationTextEncodings';
  335. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  336. { get info about a text encoding }
  337. {
  338. * TECGetTextEncodingInternetName()
  339. *
  340. * Availability:
  341. * Mac OS X: in version 10.0 and later in CoreServices.framework
  342. * CarbonLib: in CarbonLib 1.0 and later
  343. * Non-Carbon CFM: in TextEncodingConverter 1.1 and later
  344. }
  345. function TECGetTextEncodingInternetName( textEncoding_: TextEncoding; var encodingName: Str255 ): OSStatus; external name '_TECGetTextEncodingInternetName';
  346. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  347. {
  348. * TECGetTextEncodingFromInternetName()
  349. *
  350. * Availability:
  351. * Mac OS X: in version 10.0 and later in CoreServices.framework
  352. * CarbonLib: in CarbonLib 1.0 and later
  353. * Non-Carbon CFM: in TextEncodingConverter 1.1 and later
  354. }
  355. function TECGetTextEncodingFromInternetName( var textEncoding_: TextEncoding; const (*var*) encodingName: Str255 ): OSStatus; external name '_TECGetTextEncodingFromInternetName';
  356. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  357. { create/dispose converters }
  358. {
  359. * TECCreateConverter()
  360. *
  361. * Availability:
  362. * Mac OS X: in version 10.0 and later in CoreServices.framework
  363. * CarbonLib: in CarbonLib 1.0 and later
  364. * Non-Carbon CFM: in TextEncodingConverter 1.1 and later
  365. }
  366. function TECCreateConverter( var newEncodingConverter: TECObjectRef; inputEncoding: TextEncoding; outputEncoding: TextEncoding ): OSStatus; external name '_TECCreateConverter';
  367. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  368. {
  369. * TECCreateConverterFromPath()
  370. *
  371. * Availability:
  372. * Mac OS X: in version 10.0 and later in CoreServices.framework
  373. * CarbonLib: in CarbonLib 1.0 and later
  374. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  375. }
  376. function TECCreateConverterFromPath( var newEncodingConverter: TECObjectRef; {const} inPath: {variable-size-array} TextEncodingPtr; inEncodings: ItemCount ): OSStatus; external name '_TECCreateConverterFromPath';
  377. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  378. {
  379. * TECDisposeConverter()
  380. *
  381. * Availability:
  382. * Mac OS X: in version 10.0 and later in CoreServices.framework
  383. * CarbonLib: in CarbonLib 1.0 and later
  384. * Non-Carbon CFM: in TextEncodingConverter 1.1 and later
  385. }
  386. function TECDisposeConverter( newEncodingConverter: TECObjectRef ): OSStatus; external name '_TECDisposeConverter';
  387. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  388. { convert text encodings }
  389. {
  390. * TECClearConverterContextInfo()
  391. *
  392. * Availability:
  393. * Mac OS X: in version 10.0 and later in CoreServices.framework
  394. * CarbonLib: in CarbonLib 1.0 and later
  395. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  396. }
  397. function TECClearConverterContextInfo( encodingConverter: TECObjectRef ): OSStatus; external name '_TECClearConverterContextInfo';
  398. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  399. {
  400. * TECConvertText()
  401. *
  402. * Availability:
  403. * Mac OS X: in version 10.0 and later in CoreServices.framework
  404. * CarbonLib: in CarbonLib 1.0 and later
  405. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  406. }
  407. function TECConvertText( encodingConverter: TECObjectRef; inputBuffer: ConstTextPtr; inputBufferLength: ByteCount; var actualInputLength: ByteCount; outputBuffer: TextPtr; outputBufferLength: ByteCount; var actualOutputLength: ByteCount ): OSStatus; external name '_TECConvertText';
  408. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  409. {
  410. * TECFlushText()
  411. *
  412. * Availability:
  413. * Mac OS X: in version 10.0 and later in CoreServices.framework
  414. * CarbonLib: in CarbonLib 1.0 and later
  415. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  416. }
  417. function TECFlushText( encodingConverter: TECObjectRef; outputBuffer: TextPtr; outputBufferLength: ByteCount; var actualOutputLength: ByteCount ): OSStatus; external name '_TECFlushText';
  418. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  419. { one-to-many routines }
  420. {
  421. * TECCountSubTextEncodings()
  422. *
  423. * Availability:
  424. * Mac OS X: in version 10.0 and later in CoreServices.framework
  425. * CarbonLib: in CarbonLib 1.0 and later
  426. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  427. }
  428. function TECCountSubTextEncodings( inputEncoding: TextEncoding; var numberOfEncodings: ItemCount ): OSStatus; external name '_TECCountSubTextEncodings';
  429. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  430. {
  431. * TECGetSubTextEncodings()
  432. *
  433. * Availability:
  434. * Mac OS X: in version 10.0 and later in CoreServices.framework
  435. * CarbonLib: in CarbonLib 1.0 and later
  436. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  437. }
  438. function TECGetSubTextEncodings( inputEncoding: TextEncoding; subEncodings: {variable-size-array} TextEncodingPtr; maxSubEncodings: ItemCount; var actualSubEncodings: ItemCount ): OSStatus; external name '_TECGetSubTextEncodings';
  439. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  440. {
  441. * TECGetEncodingList()
  442. *
  443. * Parameters:
  444. *
  445. * encodingConverter:
  446. * The encodingConverter to return the encoding list for
  447. *
  448. * numEncodings:
  449. * On exit, the number of encodings in encodingList
  450. *
  451. * encodingList:
  452. * On exit, a handle containing numEncodings values of type
  453. * TextEncoding, for each known encoding. Do not dispose of this
  454. * handle.
  455. *
  456. * Availability:
  457. * Mac OS X: in version 10.0 and later in CoreServices.framework
  458. * CarbonLib: in CarbonLib 1.0 and later
  459. * Non-Carbon CFM: in TextEncodingConverter 1.1 and later
  460. }
  461. function TECGetEncodingList( encodingConverter: TECObjectRef; var numEncodings: ItemCount; var encodingList: Handle ): OSStatus; external name '_TECGetEncodingList';
  462. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  463. {
  464. * TECCreateOneToManyConverter()
  465. *
  466. * Availability:
  467. * Mac OS X: in version 10.0 and later in CoreServices.framework
  468. * CarbonLib: in CarbonLib 1.0 and later
  469. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  470. }
  471. function TECCreateOneToManyConverter( var newEncodingConverter: TECObjectRef; inputEncoding: TextEncoding; numOutputEncodings: ItemCount; {const} outputEncodings: {variable-size-array} TextEncodingPtr ): OSStatus; external name '_TECCreateOneToManyConverter';
  472. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  473. {
  474. * TECConvertTextToMultipleEncodings()
  475. *
  476. * Availability:
  477. * Mac OS X: in version 10.0 and later in CoreServices.framework
  478. * CarbonLib: in CarbonLib 1.0 and later
  479. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  480. }
  481. function TECConvertTextToMultipleEncodings( encodingConverter: TECObjectRef; inputBuffer: ConstTextPtr; inputBufferLength: ByteCount; var actualInputLength: ByteCount; outputBuffer: TextPtr; outputBufferLength: ByteCount; var actualOutputLength: ByteCount; outEncodingsBuffer: {variable-size-array} TextEncodingRunPtr; maxOutEncodingRuns: ItemCount; var actualOutEncodingRuns: ItemCount ): OSStatus; external name '_TECConvertTextToMultipleEncodings';
  482. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  483. {
  484. * TECFlushMultipleEncodings()
  485. *
  486. * Availability:
  487. * Mac OS X: in version 10.0 and later in CoreServices.framework
  488. * CarbonLib: in CarbonLib 1.0 and later
  489. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  490. }
  491. function TECFlushMultipleEncodings( encodingConverter: TECObjectRef; outputBuffer: TextPtr; outputBufferLength: ByteCount; var actualOutputLength: ByteCount; outEncodingsBuffer: {variable-size-array} TextEncodingRunPtr; maxOutEncodingRuns: ItemCount; var actualOutEncodingRuns: ItemCount ): OSStatus; external name '_TECFlushMultipleEncodings';
  492. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  493. { international internet info }
  494. {
  495. * TECCountWebTextEncodings()
  496. *
  497. * Availability:
  498. * Mac OS X: in version 10.0 and later in CoreServices.framework
  499. * CarbonLib: in CarbonLib 1.0 and later
  500. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  501. }
  502. function TECCountWebTextEncodings( locale: RegionCode; var numberEncodings: ItemCount ): OSStatus; external name '_TECCountWebTextEncodings';
  503. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  504. {
  505. * TECGetWebTextEncodings()
  506. *
  507. * Availability:
  508. * Mac OS X: in version 10.0 and later in CoreServices.framework
  509. * CarbonLib: in CarbonLib 1.0 and later
  510. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  511. }
  512. function TECGetWebTextEncodings( locale: RegionCode; availableEncodings: {variable-size-array} TextEncodingPtr; maxAvailableEncodings: ItemCount; var actualAvailableEncodings: ItemCount ): OSStatus; external name '_TECGetWebTextEncodings';
  513. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  514. {
  515. * TECCountMailTextEncodings()
  516. *
  517. * Availability:
  518. * Mac OS X: in version 10.0 and later in CoreServices.framework
  519. * CarbonLib: in CarbonLib 1.0 and later
  520. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  521. }
  522. function TECCountMailTextEncodings( locale: RegionCode; var numberEncodings: ItemCount ): OSStatus; external name '_TECCountMailTextEncodings';
  523. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  524. {
  525. * TECGetMailTextEncodings()
  526. *
  527. * Availability:
  528. * Mac OS X: in version 10.0 and later in CoreServices.framework
  529. * CarbonLib: in CarbonLib 1.0 and later
  530. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  531. }
  532. function TECGetMailTextEncodings( locale: RegionCode; availableEncodings: {variable-size-array} TextEncodingPtr; maxAvailableEncodings: ItemCount; var actualAvailableEncodings: ItemCount ): OSStatus; external name '_TECGetMailTextEncodings';
  533. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  534. { examine text encodings }
  535. {
  536. * TECCountAvailableSniffers()
  537. *
  538. * Availability:
  539. * Mac OS X: in version 10.0 and later in CoreServices.framework
  540. * CarbonLib: in CarbonLib 1.0 and later
  541. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  542. }
  543. function TECCountAvailableSniffers( var numberOfEncodings: ItemCount ): OSStatus; external name '_TECCountAvailableSniffers';
  544. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  545. {
  546. * TECGetAvailableSniffers()
  547. *
  548. * Availability:
  549. * Mac OS X: in version 10.0 and later in CoreServices.framework
  550. * CarbonLib: in CarbonLib 1.0 and later
  551. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  552. }
  553. function TECGetAvailableSniffers( availableSniffers: {variable-size-array} TextEncodingPtr; maxAvailableSniffers: ItemCount; var actualAvailableSniffers: ItemCount ): OSStatus; external name '_TECGetAvailableSniffers';
  554. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  555. {
  556. * TECCreateSniffer()
  557. *
  558. * Availability:
  559. * Mac OS X: in version 10.0 and later in CoreServices.framework
  560. * CarbonLib: in CarbonLib 1.0 and later
  561. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  562. }
  563. function TECCreateSniffer( var encodingSniffer: TECSnifferObjectRef; {const} testEncodings: {variable-size-array} TextEncodingPtr; numTextEncodings: ItemCount ): OSStatus; external name '_TECCreateSniffer';
  564. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  565. {
  566. * TECSniffTextEncoding()
  567. *
  568. * Availability:
  569. * Mac OS X: in version 10.0 and later in CoreServices.framework
  570. * CarbonLib: in CarbonLib 1.0 and later
  571. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  572. }
  573. function TECSniffTextEncoding( encodingSniffer: TECSnifferObjectRef; inputBuffer: ConstTextPtr; inputBufferLength: ByteCount; testEncodings: {variable-size-array} TextEncodingPtr; numTextEncodings: ItemCount; numErrsArray: {variable-size-array} ItemCountPtr; maxErrs: ItemCount; numFeaturesArray: {variable-size-array} ItemCountPtr; maxFeatures: ItemCount ): OSStatus; external name '_TECSniffTextEncoding';
  574. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  575. {
  576. * TECDisposeSniffer()
  577. *
  578. * Availability:
  579. * Mac OS X: in version 10.0 and later in CoreServices.framework
  580. * CarbonLib: in CarbonLib 1.0 and later
  581. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  582. }
  583. function TECDisposeSniffer( encodingSniffer: TECSnifferObjectRef ): OSStatus; external name '_TECDisposeSniffer';
  584. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  585. {
  586. * TECClearSnifferContextInfo()
  587. *
  588. * Availability:
  589. * Mac OS X: in version 10.0 and later in CoreServices.framework
  590. * CarbonLib: in CarbonLib 1.0 and later
  591. * Non-Carbon CFM: in TextEncodingConverter 1.2 and later
  592. }
  593. function TECClearSnifferContextInfo( encodingSniffer: TECSnifferObjectRef ): OSStatus; external name '_TECClearSnifferContextInfo';
  594. (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
  595. {
  596. * TECSetBasicOptions()
  597. *
  598. * Summary:
  599. * Sets encodingConverter options affecting
  600. * TECConvertText[ToMultipleEncodings].
  601. *
  602. * Parameters:
  603. *
  604. * encodingConverter:
  605. * The high-level encoding converter object created by
  606. * TECCreateConverter or TECCreateOneToManyConverter whose
  607. * behavior is to be modified by the options specified in
  608. * controlFlags.
  609. *
  610. * controlFlags:
  611. * A bit mask specifying the desired options. The following mask
  612. * constants are valid for this parameter; multiple mask constants
  613. * may be ORed together to set multiple options; passing 0 for
  614. * this parameter clears all options:
  615. *
  616. * kUnicodeForceASCIIRangeMask, kUnicodeNoHalfwidthCharsMask
  617. * (defined in UnicodeConverter.h)
  618. *
  619. * kTECDisableFallbacksMask, kTECDisableLooseMappingsMask (defined
  620. * above) - loose and fallback mappings are both enabled by
  621. * default for the TextEncodingConverter.h conversion APIs
  622. * (TECConvertText, TECConvertTextToMultipleEncodings), unlike the
  623. * behavior of the conversion APIs in UnicodeConverter.h. These
  624. * options may be used to disable loose and/or fallback mappings
  625. * for the TextEncodingConverter.h conversion APIs.
  626. *
  627. * Result:
  628. * The function returns paramErr for invalid masks,
  629. * kTECCorruptConverterErr for an invalid encodingConverter, noErr
  630. * otherwise.
  631. *
  632. * Availability:
  633. * Mac OS X: in version 10.3 and later in CoreServices.framework
  634. * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.3 and later
  635. * Non-Carbon CFM: in TextEncodingConverter 1.5 and later
  636. }
  637. function TECSetBasicOptions( encodingConverter: TECObjectRef; controlFlags: OptionBits ): OSStatus; external name '_TECSetBasicOptions';
  638. (* __OSX_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_NA) *)
  639. { Map TextEncoding values to/from IANA charset names and/or MIB enums, with usage control }
  640. {
  641. * TECCopyTextEncodingInternetNameAndMIB()
  642. *
  643. * Summary:
  644. * Converts a TextEncoding value to an IANA charset name and/or a
  645. * MIB enum value
  646. *
  647. * Discussion:
  648. * Given a TextEncoding value, this function maps it to an IANA
  649. * charset name (if encodingNamePtr is non-NULL) and/or a MIB enum
  650. * value (if mibEnumPtr is non-NULL), as specified by the usage
  651. * parameter.
  652. *
  653. * Parameters:
  654. *
  655. * textEncoding:
  656. * A TextEncoding value to map to a charset name and/or MIB enum.
  657. *
  658. * usage:
  659. * Specifies the type of mapping desired (see
  660. * TECInternetNameUsageMask above).
  661. *
  662. * encodingNamePtr:
  663. * If non-NULL, is a pointer to a CStringRef for an immutable
  664. * CFString created by this function; when the caller is finished
  665. * with it, the caller must dispose of it by calling CFRelease.
  666. *
  667. * mibEnumPtr:
  668. * If non-NULL, is a pointer to an SInt32 that will be set to the
  669. * appropriate MIB enum value, or to 0 (or kTEC_MIBEnumDontCare)
  670. * if there is no appropriate MIB enum value (valid MIB enums
  671. * begin at 3).
  672. *
  673. * Result:
  674. * The function returns paramErr if encodingNamePtr and mibEnumPtr
  675. * are both NULL. It returns kTextUnsupportedEncodingErr if it has
  676. * no data for the supplied textEncoding. It returns noErr if it
  677. * found useful data.
  678. *
  679. * Availability:
  680. * Mac OS X: in version 10.3 and later in CoreServices.framework
  681. * CarbonLib: not available
  682. * Non-Carbon CFM: not available
  683. }
  684. function TECCopyTextEncodingInternetNameAndMIB( textEncoding_: TextEncoding; usage: TECInternetNameUsageMask; encodingNamePtr: CFStringRefPtr { can be NULL }; mibEnumPtr: SInt32Ptr { can be NULL } ): OSStatus; external name '_TECCopyTextEncodingInternetNameAndMIB';
  685. (* __OSX_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_NA) *)
  686. {
  687. * TECGetTextEncodingFromInternetNameOrMIB()
  688. *
  689. * Summary:
  690. * Converts an IANA charset name or a MIB enum value to a
  691. * TextEncoding value
  692. *
  693. * Discussion:
  694. * If encodingName is non-NULL, this function treats it as an IANA
  695. * charset name and maps it to a TextEncoding value; in this case
  696. * mibEnum is ignored, and may be set to kTEC_MIBEnumDontCare.
  697. * Otherwise, this function maps the mibEnum to a TextEncoding
  698. * value. In either case, the mapping is controlled by the usage
  699. * parameter. The textEncodingPtr parameter must be non-NULL.
  700. *
  701. * Result:
  702. * The function returns paramErr if textEncodingPtr is NULL. It
  703. * returns kTextUnsupportedEncodingErr if it has no data for the
  704. * supplied encodingName or mibEnum. It returns noErr if it found
  705. * useful data.
  706. *
  707. * Availability:
  708. * Mac OS X: in version 10.3 and later in CoreServices.framework
  709. * CarbonLib: not available
  710. * Non-Carbon CFM: not available
  711. }
  712. function TECGetTextEncodingFromInternetNameOrMIB( var textEncodingPtr: TextEncoding; usage: TECInternetNameUsageMask; encodingName: CFStringRef; mibEnum: SInt32 ): OSStatus; external name '_TECGetTextEncodingFromInternetNameOrMIB';
  713. (* __OSX_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_NA) *)
  714. {$endc} {TARGET_OS_MAC}
  715. {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}
  716. end.
  717. {$endc} {not MACOSALLINCLUDE}