home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 April: Mac OS SDK / Dev.CD Apr 99 SDK1.toast / Development Kits / Interfaces&Libraries / Universal / Interfaces / CIncludes / TextEncodingConverter.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-17  |  8.0 KB  |  267 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        TextEncodingConverter.h
  3.  
  4.      Contains:    Text Encoding Conversion Interfaces. 
  5.  
  6.      Version:    Technology:    Mac OS 8
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1994-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __TEXTENCODINGCONVERTER__
  18. #define __TEXTENCODINGCONVERTER__
  19.  
  20. #ifndef __MACTYPES__
  21. #include <MacTypes.h>
  22. #endif
  23. #ifndef __TEXTCOMMON__
  24. #include <TextCommon.h>
  25. #endif
  26.  
  27.  
  28.  
  29. #if PRAGMA_ONCE
  30. #pragma once
  31. #endif
  32.  
  33. #ifdef __cplusplus
  34. extern "C" {
  35. #endif
  36.  
  37. #if PRAGMA_IMPORT
  38. #pragma import on
  39. #endif
  40.  
  41. #if PRAGMA_STRUCT_ALIGN
  42.     #pragma options align=mac68k
  43. #elif PRAGMA_STRUCT_PACKPUSH
  44.     #pragma pack(push, 2)
  45. #elif PRAGMA_STRUCT_PACK
  46.     #pragma pack(2)
  47. #endif
  48.  
  49. typedef OSType                             TECPluginSignature;
  50. typedef UInt32                             TECPluginVersion;
  51. /* plugin signatures */
  52.  
  53. enum {
  54.     kTECSignature                = FOUR_CHAR_CODE('encv'),
  55.     kTECUnicodePluginSignature    = FOUR_CHAR_CODE('puni'),
  56.     kTECJapanesePluginSignature    = FOUR_CHAR_CODE('pjpn'),
  57.     kTECChinesePluginSignature    = FOUR_CHAR_CODE('pzho'),
  58.     kTECKoreanPluginSignature    = FOUR_CHAR_CODE('pkor')
  59. };
  60.  
  61.  
  62. /* converter object reference */
  63. typedef struct OpaqueTECObjectRef*         TECObjectRef;
  64. typedef struct OpaqueTECSnifferObjectRef*  TECSnifferObjectRef;
  65. typedef OSType                             TECPluginSig;
  66.  
  67. struct TECConversionInfo {
  68.     TextEncoding                     sourceEncoding;
  69.     TextEncoding                     destinationEncoding;
  70.     UInt16                             reserved1;
  71.     UInt16                             reserved2;
  72. };
  73. typedef struct TECConversionInfo        TECConversionInfo;
  74. /* return number of encodings types supported by user's configuraton of the encoding converter */
  75. EXTERN_API( OSStatus )
  76. TECCountAvailableTextEncodings    (ItemCount *            numberEncodings);
  77.  
  78. /* fill in an array of type TextEncoding passed in by the user with types of encodings the current configuration of the encoder can handle. */
  79. EXTERN_API( OSStatus )
  80. TECGetAvailableTextEncodings    (TextEncoding             availableEncodings[],
  81.                                  ItemCount                 maxAvailableEncodings,
  82.                                  ItemCount *            actualAvailableEncodings);
  83.  
  84. /* return number of from-to encoding conversion pairs supported  */
  85. EXTERN_API( OSStatus )
  86. TECCountDirectTextEncodingConversions (ItemCount *        numberOfEncodings);
  87.  
  88. /* 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. */
  89. EXTERN_API( OSStatus )
  90. TECGetDirectTextEncodingConversions (TECConversionInfo     availableConversions[],
  91.                                  ItemCount                 maxAvailableConversions,
  92.                                  ItemCount *            actualAvailableConversions);
  93.  
  94. /* return number of encodings a given encoding can be converter into */
  95. EXTERN_API( OSStatus )
  96. TECCountDestinationTextEncodings (TextEncoding             inputEncoding,
  97.                                  ItemCount *            numberOfEncodings);
  98.  
  99. /* 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. */
  100. EXTERN_API( OSStatus )
  101. TECGetDestinationTextEncodings    (TextEncoding             inputEncoding,
  102.                                  TextEncoding             destinationEncodings[],
  103.                                  ItemCount                 maxDestinationEncodings,
  104.                                  ItemCount *            actualDestinationEncodings);
  105.  
  106. /* get info about a text encoding */
  107. EXTERN_API( OSStatus )
  108. TECGetTextEncodingInternetName    (TextEncoding             textEncoding,
  109.                                  Str255                 encodingName);
  110.  
  111. EXTERN_API( OSStatus )
  112. TECGetTextEncodingFromInternetName (TextEncoding *        textEncoding,
  113.                                  ConstStr255Param         encodingName);
  114.  
  115. /* create/dispose converters */
  116. EXTERN_API( OSStatus )
  117. TECCreateConverter                (TECObjectRef *            newEncodingConverter,
  118.                                  TextEncoding             inputEncoding,
  119.                                  TextEncoding             outputEncoding);
  120.  
  121. EXTERN_API( OSStatus )
  122. TECCreateConverterFromPath        (TECObjectRef *            newEncodingConverter,
  123.                                  const TextEncoding     inPath[],
  124.                                  ItemCount                 inEncodings);
  125.  
  126. EXTERN_API( OSStatus )
  127. TECDisposeConverter                (TECObjectRef             newEncodingConverter);
  128.  
  129. /* convert text encodings */
  130. EXTERN_API( OSStatus )
  131. TECClearConverterContextInfo    (TECObjectRef             encodingConverter);
  132.  
  133. EXTERN_API( OSStatus )
  134. TECConvertText                    (TECObjectRef             encodingConverter,
  135.                                  ConstTextPtr             inputBuffer,
  136.                                  ByteCount                 inputBufferLength,
  137.                                  ByteCount *            actualInputLength,
  138.                                  TextPtr                 outputBuffer,
  139.                                  ByteCount                 outputBufferLength,
  140.                                  ByteCount *            actualOutputLength);
  141.  
  142. EXTERN_API( OSStatus )
  143. TECFlushText                    (TECObjectRef             encodingConverter,
  144.                                  TextPtr                 outputBuffer,
  145.                                  ByteCount                 outputBufferLength,
  146.                                  ByteCount *            actualOutputLength);
  147.  
  148. /* one-to-many routines */
  149. EXTERN_API( OSStatus )
  150. TECCountSubTextEncodings        (TextEncoding             inputEncoding,
  151.                                  ItemCount *            numberOfEncodings);
  152.  
  153. EXTERN_API( OSStatus )
  154. TECGetSubTextEncodings            (TextEncoding             inputEncoding,
  155.                                  TextEncoding             subEncodings[],
  156.                                  ItemCount                 maxSubEncodings,
  157.                                  ItemCount *            actualSubEncodings);
  158.  
  159. EXTERN_API( OSStatus )
  160. TECGetEncodingList                (TECObjectRef             encodingConverter,
  161.                                  ItemCount *            numEncodings,
  162.                                  Handle *                encodingList);
  163.  
  164. EXTERN_API( OSStatus )
  165. TECCreateOneToManyConverter        (TECObjectRef *            newEncodingConverter,
  166.                                  TextEncoding             inputEncoding,
  167.                                  ItemCount                 numOutputEncodings,
  168.                                  const TextEncoding     outputEncodings[]);
  169.  
  170.  
  171. EXTERN_API( OSStatus )
  172. TECConvertTextToMultipleEncodings (TECObjectRef         encodingConverter,
  173.                                  ConstTextPtr             inputBuffer,
  174.                                  ByteCount                 inputBufferLength,
  175.                                  ByteCount *            actualInputLength,
  176.                                  TextPtr                 outputBuffer,
  177.                                  ByteCount                 outputBufferLength,
  178.                                  ByteCount *            actualOutputLength,
  179.                                  TextEncodingRun         outEncodingsBuffer[],
  180.                                  ItemCount                 maxOutEncodingRuns,
  181.                                  ItemCount *            actualOutEncodingRuns);
  182.  
  183. EXTERN_API( OSStatus )
  184. TECFlushMultipleEncodings        (TECObjectRef             encodingConverter,
  185.                                  TextPtr                 outputBuffer,
  186.                                  ByteCount                 outputBufferLength,
  187.                                  ByteCount *            actualOutputLength,
  188.                                  TextEncodingRun         outEncodingsBuffer[],
  189.                                  ItemCount                 maxOutEncodingRuns,
  190.                                  ItemCount *            actualOutEncodingRuns);
  191.  
  192. /* international internet info */
  193. EXTERN_API( OSStatus )
  194. TECCountWebTextEncodings        (RegionCode             locale,
  195.                                  ItemCount *            numberEncodings);
  196.  
  197. EXTERN_API( OSStatus )
  198. TECGetWebTextEncodings            (RegionCode             locale,
  199.                                  TextEncoding             availableEncodings[],
  200.                                  ItemCount                 maxAvailableEncodings,
  201.                                  ItemCount *            actualAvailableEncodings);
  202.  
  203. EXTERN_API( OSStatus )
  204. TECCountMailTextEncodings        (RegionCode             locale,
  205.                                  ItemCount *            numberEncodings);
  206.  
  207. EXTERN_API( OSStatus )
  208. TECGetMailTextEncodings            (RegionCode             locale,
  209.                                  TextEncoding             availableEncodings[],
  210.                                  ItemCount                 maxAvailableEncodings,
  211.                                  ItemCount *            actualAvailableEncodings);
  212.  
  213. /* examine text encodings */
  214. EXTERN_API( OSStatus )
  215. TECCountAvailableSniffers        (ItemCount *            numberOfEncodings);
  216.  
  217. EXTERN_API( OSStatus )
  218. TECGetAvailableSniffers            (TextEncoding             availableSniffers[],
  219.                                  ItemCount                 maxAvailableSniffers,
  220.                                  ItemCount *            actualAvailableSniffers);
  221.  
  222. EXTERN_API( OSStatus )
  223. TECCreateSniffer                (TECSnifferObjectRef *    encodingSniffer,
  224.                                  TextEncoding             testEncodings[],
  225.                                  ItemCount                 numTextEncodings);
  226.  
  227. EXTERN_API( OSStatus )
  228. TECSniffTextEncoding            (TECSnifferObjectRef     encodingSniffer,
  229.                                  TextPtr                 inputBuffer,
  230.                                  ByteCount                 inputBufferLength,
  231.                                  TextEncoding             testEncodings[],
  232.                                  ItemCount                 numTextEncodings,
  233.                                  ItemCount                 numErrsArray[],
  234.                                  ItemCount                 maxErrs,
  235.                                  ItemCount                 numFeaturesArray[],
  236.                                  ItemCount                 maxFeatures);
  237.  
  238. EXTERN_API( OSStatus )
  239. TECDisposeSniffer                (TECSnifferObjectRef     encodingSniffer);
  240.  
  241. EXTERN_API( OSStatus )
  242. TECClearSnifferContextInfo        (TECSnifferObjectRef     encodingSniffer);
  243.  
  244.  
  245.  
  246.  
  247. #if PRAGMA_STRUCT_ALIGN
  248.     #pragma options align=reset
  249. #elif PRAGMA_STRUCT_PACKPUSH
  250.     #pragma pack(pop)
  251. #elif PRAGMA_STRUCT_PACK
  252.     #pragma pack()
  253. #endif
  254.  
  255. #ifdef PRAGMA_IMPORT_OFF
  256. #pragma import off
  257. #elif PRAGMA_IMPORT
  258. #pragma import reset
  259. #endif
  260.  
  261. #ifdef __cplusplus
  262. }
  263. #endif
  264.  
  265. #endif /* __TEXTENCODINGCONVERTER__ */
  266.  
  267.