home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 April: Technology Seed / Mac Tech Seed Apr '97.toast / Text Encoding Converter / Headers / TextEncodingConverter.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-03-12  |  7.7 KB  |  178 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        TextEncodingConverter.h
  3.  
  4.      Contains:    Text Encoding Conversion Interfaces.
  5.  
  6.      Version:    System 7.7
  7.  
  8.      DRI:        Tom Naughton
  9.  
  10.      Copyright:    © 1984-1996 by Apple Computer, Inc.
  11.                  All rights reserved.
  12.  
  13.      Warning:    *** APPLE INTERNAL USE ONLY ***
  14.                  This file may contain unreleased API's
  15.  
  16.      BuildInfo:    Built by:            Sue Kuo
  17.                  With Interfacer:    2.0d13   (PowerPC native)
  18.                  From:                TextEncodingConverter.i
  19.                      Revision:        21
  20.                      Dated:            2/28/97
  21.                      Last change by:    jag
  22.                      Last comment:    RADAR 1632070: Cosmetic change to TECGetAvailableSniffers -
  23.  
  24.      Bugs:        Report bugs to Radar component “System Interfaces”, “Latest”
  25.                  List the version information (from above) in the Problem Description.
  26.  
  27. */
  28. #ifndef __TEXTENCODINGCONVERTER__
  29. #define __TEXTENCODINGCONVERTER__
  30.  
  31. #ifndef __TYPES__
  32. #include <Types.h>
  33. #endif
  34. #ifndef __MIXEDMODE__
  35. #include <MixedMode.h>
  36. #endif
  37. #ifndef __TEXTCOMMON__
  38. #include <TextCommon.h>
  39. #endif
  40.  
  41. #ifdef __cplusplus
  42. extern "C" {
  43. #endif
  44.  
  45. #if PRAGMA_IMPORT_SUPPORTED
  46. #pragma import on
  47. #endif
  48.  
  49. #if PRAGMA_ALIGN_SUPPORTED
  50. #pragma options align=mac68k
  51. #endif
  52.  
  53. typedef OSType TECPluginSignature;
  54. typedef UInt32 TECPluginVersion;
  55. /* plugin signatures */
  56.  
  57. enum {
  58.     kTECSignature                = 'encv',
  59.     kTECUnicodePluginSignature    = 'puni',
  60.     kTECJapanesePluginSignature    = 'pjpn',
  61.     kTECChinesePluginSignature    = 'pzho',
  62.     kTECKoreanPluginSignature    = 'pkor'
  63. };
  64.  
  65. /* misc constants */
  66.  
  67. enum {
  68.     kMultiTextEncoding            = 0xFE
  69. };
  70.  
  71. #if FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  72. /* converter object reference */
  73. typedef struct OpaqueTECObjectRef* TECObjectRef;
  74. typedef struct OpaqueTECSnifferObjectRef* TECSnifferObjectRef;
  75. typedef OSType TECPluginSig;
  76. struct TECConversionInfo {
  77.     TextEncoding                     sourceEncoding;
  78.     TextEncoding                     destinationEncoding;
  79.     UInt16                             reserved1;
  80.     UInt16                             reserved2;
  81. };
  82. typedef struct TECConversionInfo TECConversionInfo;
  83.  
  84. #endif
  85. #if FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  86. /* return number of encodings types supported by user's configuraton of the encoding converter */
  87. extern pascal OSStatus TECCountAvailableTextEncodings(ItemCount *numberEncodings);
  88.  
  89. /* fill in an array of type TextEncoding passed in by the user with types of encodings the current configuration of the encoder can handle. */
  90. extern pascal OSStatus TECGetAvailableTextEncodings(TextEncoding availableEncodings[], ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  91.  
  92. /* return number of from-to encoding conversion pairs supported  */
  93. extern pascal OSStatus TECCountDirectTextEncodingConversions(ItemCount *numberOfEncodings);
  94.  
  95. /* 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. */
  96. extern pascal OSStatus TECGetDirectTextEncodingConversions(TECConversionInfo availableConversions[], ItemCount maxAvailableConversions, ItemCount *actualAvailableConversions);
  97.  
  98. /* return number of encodings a given encoding can be converter into */
  99. extern pascal OSStatus TECCountDestinationTextEncodings(TextEncoding inputEncoding, ItemCount *numberOfEncodings);
  100.  
  101. /* 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. */
  102. extern pascal OSStatus TECGetDestinationTextEncodings(TextEncoding inputEncoding, TextEncoding destinationEncodings[], ItemCount maxDestinationEncodings, ItemCount *actualDestinationEncodings);
  103.  
  104. /* get info about a text encoding */
  105. extern pascal OSStatus TECGetTextEncodingLocalizedName(TextEncoding textEncoding, RegionCode locale, TextEncoding preferedEncoding, ByteCount bufLen, TextEncoding *nameEncoding, ByteCount *nameLength, Byte encodingName[]);
  106.  
  107. extern pascal OSStatus TECGetTextEncodingInternetName(TextEncoding textEncoding, Str255 encodingName);
  108.  
  109. extern pascal OSStatus TECGetTextEncodingFromInternetName(TextEncoding *textEncoding, ConstStr255Param encodingName);
  110.  
  111. /* create/dispose converters */
  112. extern pascal OSStatus TECCreateConverter(TECObjectRef *newEncodingConverter, TextEncoding inputEncoding, TextEncoding outputEncoding);
  113.  
  114. extern pascal OSStatus TECCreateConverterFromPath(TECObjectRef *newEncodingConverter, const TextEncoding inPath[], ItemCount inEncodings);
  115.  
  116. extern pascal OSStatus TECDisposeConverter(TECObjectRef newEncodingConverter);
  117.  
  118. /* convert text encodings */
  119. extern pascal OSStatus TECClearConverterContextInfo(TECObjectRef encodingConverter);
  120.  
  121. extern pascal OSStatus TECConvertText(TECObjectRef encodingConverter, ConstTextPtr inputBuffer, ByteCount inputBufferLength, ByteCount *actualInputLength, TextPtr outputBuffer, ByteCount outputBufferLength, ByteCount *actualOutputLength);
  122.  
  123. extern pascal OSStatus TECFlushText(TECObjectRef encodingConverter, TextPtr outputBuffer, ByteCount outputBufferLength, ByteCount *actualOutputLength);
  124.  
  125. /* one-to-many routines */
  126. extern pascal OSStatus TECCountSubTextEncodings(TextEncoding inputEncoding, ItemCount *numberOfEncodings);
  127.  
  128. extern pascal OSStatus TECGetSubTextEncodings(TextEncoding inputEncoding, TextEncoding subEncodings[], ItemCount maxSubEncodings, ItemCount *actualSubEncodings);
  129.  
  130. extern pascal OSStatus TECGetEncodingList(TECObjectRef encodingConverter, ItemCount *numEncodings, Handle *encodingList);
  131.  
  132. extern pascal OSStatus TECCreateOneToManyConverter(TECObjectRef *newEncodingConverter, TextEncoding inputEncoding, ItemCount numOutputEncodings, const TextEncoding outputEncodings[]);
  133.  
  134. extern pascal OSStatus TECCreateOneToManyConverterFromPath(TECObjectRef *newEncodingConverter, const TextEncoding *inPath, ItemCount inEncodings, ItemCount numOutputEncodings, const TextEncoding outputEncodings[]);
  135.  
  136. extern pascal OSStatus TECConvertTextToMultipleEncodings(TECObjectRef encodingConverter, ConstTextPtr inputBuffer, ByteCount inputBufferLength, ByteCount *actualInputLength, TextPtr outputBuffer, ByteCount outputBufferLength, ByteCount *actualOutputLength, TextEncodingRun outEncodingsBuffer[], ByteCount outEncodingsBufferLength, ByteCount *actualOutEncodingsLength);
  137.  
  138. extern pascal OSStatus TECFlushMultipleEncodings(TECObjectRef encodingConverter, TextPtr outputBuffer, ByteCount outputBufferLength, ByteCount *actualOutputLength, TextEncodingRun outEncodingsBuffer[], ByteCount outEncodingsBufferLength, ByteCount *actualOutEncodingsLength);
  139.  
  140. /* international internet info */
  141. extern pascal OSStatus TECCountWebTextEncodings(RegionCode locale, ItemCount *numberEncodings);
  142.  
  143. extern pascal OSStatus TECGetWebTextEncodings(RegionCode locale, TextEncoding availableEncodings[], ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  144.  
  145. extern pascal OSStatus TECCountMailTextEncodings(RegionCode locale, ItemCount *numberEncodings);
  146.  
  147. extern pascal OSStatus TECGetMailTextEncodings(RegionCode locale, TextEncoding availableEncodings[], ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  148.  
  149. /* examine text encodings */
  150. extern pascal OSStatus TECCountAvailableSniffers(ItemCount *numberOfEncodings);
  151.  
  152. extern pascal OSStatus TECGetAvailableSniffers(TextEncoding availableSniffers[], ItemCount maxAvailableSniffers, ItemCount *actualAvailableSniffers);
  153.  
  154. extern pascal OSStatus TECCreateSniffer(TECSnifferObjectRef *encodingSniffer, TextEncoding testEncodings[], ItemCount numTextEncodings);
  155.  
  156. extern pascal OSStatus TECSniffTextEncoding(TECSnifferObjectRef encodingSniffer, TextPtr inputBuffer, ByteCount inputBufferLength, TextEncoding testEncodings[], ItemCount numTextEncodings, ItemCount numErrsArray[], ItemCount maxErrs, ItemCount numFeaturesArray[], ItemCount maxFeatures);
  157.  
  158. extern pascal OSStatus TECDisposeSniffer(TECSnifferObjectRef encodingSniffer);
  159.  
  160. extern pascal OSStatus TECClearSnifferContextInfo(TECSnifferObjectRef encodingSniffer);
  161.  
  162. #endif
  163.  
  164. #if PRAGMA_ALIGN_SUPPORTED
  165. #pragma options align=reset
  166. #endif
  167.  
  168. #if PRAGMA_IMPORT_SUPPORTED
  169. #pragma import off
  170. #endif
  171.  
  172. #ifdef __cplusplus
  173. }
  174. #endif
  175.  
  176. #endif /* __TEXTENCODINGCONVERTER__ */
  177.  
  178.