home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 July: Technology Seed / ATS July '97.toast / Text Encoding Converter 1.2 / Headers / TextEncodingPlugin.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-06-12  |  7.5 KB  |  188 lines  |  [TEXT/MPS ]

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