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

  1. /*
  2.      File:        TextEncodingPlugin.h
  3.  
  4.      Contains:    Required interface for Text Encoding Converter-Plugins
  5.  
  6.      Version:    
  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:                TextEncodingPlugin.i
  19.                      Revision:        17
  20.                      Dated:            2/21/97
  21.                      Last change by:    TRN
  22.                      Last comment:    Add flush procPtr to converter context, remove set/get options
  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 __TEXTENCODINGPLUGIN__
  29. #define __TEXTENCODINGPLUGIN__
  30.  
  31. #ifndef __TEXTENCODINGCONVERTER__
  32. #include <TextEncodingConverter.h>
  33. #endif
  34.  
  35. #ifdef __cplusplus
  36. extern "C" {
  37. #endif
  38.  
  39. #if PRAGMA_IMPORT_SUPPORTED
  40. #pragma import on
  41. #endif
  42.  
  43. #if PRAGMA_ALIGN_SUPPORTED
  44. #pragma options align=mac68k
  45. #endif
  46.  
  47. /*
  48. ####################################################################################
  49.         Structs
  50. ####################################################################################
  51. */
  52. struct TECBufferContextRec {
  53.     TextPtr                         textInputBuffer;
  54.     TextPtr                         textInputBufferEnd;
  55.     TextPtr                         textOutputBuffer;
  56.     TextPtr                         textOutputBufferEnd;
  57.  
  58.     TextPtr                         encodingInputBuffer;
  59.     TextPtr                         encodingInputBufferEnd;
  60.     TextPtr                         encodingOutputBuffer;
  61.     TextPtr                         encodingOutputBufferEnd;
  62.  
  63. };
  64. typedef struct TECBufferContextRec TECBufferContextRec;
  65.  
  66. struct TECPluginStateRec {
  67.  
  68.     UInt8                             state1;
  69.     UInt8                             state2;
  70.     UInt8                             state3;
  71.     UInt8                             state4;
  72.  
  73.     UInt32                             longState1;
  74.     UInt32                             longState2;
  75.     UInt32                             longState3;
  76.     UInt32                             longState4;
  77.  
  78. };
  79. typedef struct TECPluginStateRec TECPluginStateRec;
  80.  
  81. struct TECConverterContextRec {
  82.  
  83.                                                                 /* public - manipulated externally and by plugin*/
  84.     Ptr                             pluginRec;
  85.     TextEncoding                     sourceEncoding;
  86.     TextEncoding                     destEncoding;
  87.     UInt32                             reserved1;
  88.     UInt32                             reserved2;
  89.     TECBufferContextRec             bufferContext;
  90.                                                                 /* private - manipulated only within Plugin*/
  91.     UInt32                             contextRefCon;
  92.     ProcPtr                         conversionProc;
  93.     ProcPtr                         flushProc;
  94.     ProcPtr                         clearContextInfoProc;
  95.     UInt32                             options1;
  96.     UInt32                             options2;
  97.     TECPluginStateRec                 pluginState;
  98.  
  99. };
  100. typedef struct TECConverterContextRec TECConverterContextRec;
  101.  
  102. struct TECSnifferContextRec {
  103.  
  104.                                                                 /* public - manipulated externally*/
  105.     Ptr                             pluginRec;
  106.     TextEncoding                     encoding;
  107.     ItemCount                         maxErrors;
  108.     ItemCount                         maxFeatures;
  109.     TextPtr                         textInputBuffer;
  110.     TextPtr                         textInputBufferEnd;
  111.     ItemCount                         numFeatures;
  112.     ItemCount                         numErrors;
  113.                                                                 /* private - manipulated only within Plugin*/
  114.     UInt32                             contextRefCon;
  115.     ProcPtr                         sniffProc;
  116.     ProcPtr                         clearContextInfoProc;
  117.     TECPluginStateRec                 pluginState;
  118. };
  119. typedef struct TECSnifferContextRec TECSnifferContextRec;
  120.  
  121. /*
  122. ####################################################################################
  123.         Functional Messages
  124. ####################################################################################
  125. */
  126. typedef OSStatus (*TECPluginNewEncodingConverterPtr)(TECObjectRef *newEncodingConverter, TECConverterContextRec *plugContext, TextEncoding inputEncoding, TextEncoding outputEncoding);
  127. typedef OSStatus (*TECPluginClearContextInfoPtr)(TECObjectRef encodingConverter, TECConverterContextRec *plugContext);
  128. typedef OSStatus (*TECPluginConvertTextEncodingPtr)(TECObjectRef encodingConverter, TECConverterContextRec *plugContext);
  129. typedef OSStatus (*TECPluginFlushConversionPtr)(TECObjectRef encodingConverter, TECConverterContextRec *plugContext);
  130. typedef OSStatus (*TECPluginDisposeEncodingConverterPtr)(TECObjectRef newEncodingConverter, TECConverterContextRec *plugContext);
  131. typedef OSStatus (*TECPluginNewEncodingSnifferPtr)(TECSnifferObjectRef *encodingSniffer, TECSnifferContextRec *snifContext, TextEncoding inputEncoding);
  132. typedef OSStatus (*TECPluginClearSnifferContextInfoPtr)(TECSnifferObjectRef encodingSniffer, TECSnifferContextRec *snifContext);
  133. typedef OSStatus (*TECPluginSniffTextEncodingPtr)(TECSnifferObjectRef encodingSniffer, TECSnifferContextRec *snifContext);
  134. typedef OSStatus (*TECPluginDisposeEncodingSnifferPtr)(TECSnifferObjectRef encodingSniffer, TECSnifferContextRec *snifContext);
  135. typedef OSStatus (*TECPluginGetCountAvailableTextEncodingsPtr)(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  136. typedef OSStatus (*TECPluginGetCountAvailableTextEncodingPairsPtr)(TECConversionInfo *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  137. typedef OSStatus (*TECPluginGetCountDestinationTextEncodingsPtr)(TextEncoding inputEncoding, TextEncoding *destinationEncodings, ItemCount maxDestinationEncodings, ItemCount *actualDestinationEncodings);
  138. typedef OSStatus (*TECPluginGetCountSubTextEncodingsPtr)(TextEncoding inputEncoding, TextEncoding subEncodings[], ItemCount maxSubEncodings, ItemCount *actualSubEncodings);
  139. typedef OSStatus (*TECPluginGetCountAvailableSniffersPtr)(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  140. typedef OSStatus (*TECPluginGetTextEncodingInternetNamePtr)(TextEncoding textEncoding, Str255 encodingName);
  141. typedef OSStatus (*TECPluginGetTextEncodingFromInternetNamePtr)(TextEncoding *textEncoding, ConstStr255Param encodingName);
  142. typedef OSStatus (*TECPluginGetTextEncodingLocalizedNamePtr)(TextEncoding inputEncoding, RegionCode locale, TextEncoding preferedEncoding, ByteCount bufLen, TextEncoding *nameEncoding, ByteCount *nameLength, Byte encodingName[]);
  143. typedef OSStatus (*TECPluginGetCountWebEncodingsPtr)(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  144. typedef OSStatus (*TECPluginGetCountMailEncodingsPtr)(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  145. /*
  146. ####################################################################################
  147.         Dispatch Table Definition
  148. ####################################################################################
  149. */
  150.  
  151. enum {
  152.     kTECPluginDispatchTableVersion1 = 0x00010000,                /* 1.0 through 1.0.3 releases*/
  153.     kTECPluginDispatchTableVersion1_1 = 0x00010001,                /* 1.1 releases*/
  154.     kTECPluginDispatchTableVersion1_2 = 0x00010002,                /* 1.2 releases*/
  155.     kTECPluginDispatchTableCurrentVersion = kTECPluginDispatchTableVersion1_1
  156. };
  157.  
  158. struct TECPluginDispatchTable {
  159.  
  160.     TECPluginVersion                 version;
  161.     TECPluginVersion                 compatibleVersion;
  162.     TECPluginSignature                 PluginID;
  163.  
  164.     TECPluginNewEncodingConverterPtr  PluginNewEncodingConverter;
  165.     TECPluginClearContextInfoPtr     PluginClearContextInfo;
  166.     TECPluginConvertTextEncodingPtr  PluginConvertTextEncoding;
  167.     TECPluginFlushConversionPtr     PluginFlushConversion;
  168.     TECPluginDisposeEncodingConverterPtr  PluginDisposeEncodingConverter;
  169.  
  170.     TECPluginNewEncodingSnifferPtr     PluginNewEncodingSniffer;
  171.     TECPluginClearSnifferContextInfoPtr  PluginClearSnifferContextInfo;
  172.     TECPluginSniffTextEncodingPtr     PluginSniffTextEncoding;
  173.     TECPluginDisposeEncodingSnifferPtr  PluginDisposeEncodingSniffer;
  174.  
  175.     TECPluginGetCountAvailableTextEncodingsPtr  PluginGetCountAvailableTextEncodings;
  176.     TECPluginGetCountAvailableTextEncodingPairsPtr  PluginGetCountAvailableTextEncodingPairs;
  177.     TECPluginGetCountDestinationTextEncodingsPtr  PluginGetCountDestinationTextEncodings;
  178.     TECPluginGetCountSubTextEncodingsPtr  PluginGetCountSubTextEncodings;
  179.     TECPluginGetCountAvailableSniffersPtr  PluginGetCountAvailableSniffers;
  180.     TECPluginGetTextEncodingInternetNamePtr  PluginGetTextEncodingInternetName;
  181.     TECPluginGetTextEncodingFromInternetNamePtr  PluginGetTextEncodingFromInternetName;
  182.     TECPluginGetTextEncodingLocalizedNamePtr  PluginGetTextEncodingLocalizedName;
  183.     TECPluginGetCountWebEncodingsPtr  PluginGetCountWebTextEncodings;
  184.     TECPluginGetCountMailEncodingsPtr  PluginGetCountMailTextEncodings;
  185.  
  186. };
  187. typedef struct TECPluginDispatchTable TECPluginDispatchTable;
  188.  
  189.  
  190. #if PRAGMA_ALIGN_SUPPORTED
  191. #pragma options align=reset
  192. #endif
  193.  
  194. #if PRAGMA_IMPORT_SUPPORTED
  195. #pragma import off
  196. #endif
  197.  
  198. #ifdef __cplusplus
  199. }
  200. #endif
  201.  
  202. #endif /* __TEXTENCODINGPLUGIN__ */
  203.  
  204.