home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 January: Mac OS SDK / Dev.CD Jan 99 SDK2.toast / Development Kits / TEC 1.4 / Interfaces / TextEncodingPlugin.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-09-25  |  8.1 KB  |  215 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        TextEncodingPlugin.h
  3.  
  4.      Contains:    Required interface for Text Encoding Converter-Plugins
  5.  
  6.      Version:    Mac OS 8
  7.  
  8.      Copyright:    © 1996-1998 by Apple Computer, Inc., all rights reserved.
  9.  
  10. */
  11. #ifndef __TEXTENCODINGPLUGIN__
  12. #define __TEXTENCODINGPLUGIN__
  13.  
  14. #ifndef __MACTYPES__
  15. #include <MacTypes.h>
  16. #endif
  17. #ifndef __TEXTCOMMON__
  18. #include <TextCommon.h>
  19. #endif
  20. #ifndef __TEXTENCODINGCONVERTER__
  21. #include <TextEncodingConverter.h>
  22. #endif
  23.  
  24.  
  25.  
  26. #if PRAGMA_ONCE
  27. #pragma once
  28. #endif
  29.  
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33.  
  34. #if PRAGMA_IMPORT
  35. #pragma import on
  36. #endif
  37.  
  38. #if PRAGMA_STRUCT_ALIGN
  39.     #pragma options align=mac68k
  40. #elif PRAGMA_STRUCT_PACKPUSH
  41.     #pragma pack(push, 2)
  42. #elif PRAGMA_STRUCT_PACK
  43.     #pragma pack(2)
  44. #endif
  45.  
  46. /*
  47. ####################################################################################
  48.         Structs
  49. ####################################################################################
  50. */
  51.  
  52. struct TECBufferContextRec {
  53.     TextPtr                         textInputBuffer;
  54.     TextPtr                         textInputBufferEnd;
  55.     TextPtr                         textOutputBuffer;
  56.     TextPtr                         textOutputBufferEnd;
  57.  
  58.     TextEncodingRunPtr                 encodingInputBuffer;
  59.     TextEncodingRunPtr                 encodingInputBufferEnd;
  60.     TextEncodingRunPtr                 encodingOutputBuffer;
  61.     TextEncodingRunPtr                 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.           Functional Messages
  123.   ####################################################################################
  124. */
  125. typedef CALLBACK_API_C( OSStatus , TECPluginNewEncodingConverterPtr )(TECObjectRef *newEncodingConverter, TECConverterContextRec *plugContext, TextEncoding inputEncoding, TextEncoding outputEncoding);
  126. typedef CALLBACK_API_C( OSStatus , TECPluginClearContextInfoPtr )(TECObjectRef encodingConverter, TECConverterContextRec *plugContext);
  127. typedef CALLBACK_API_C( OSStatus , TECPluginConvertTextEncodingPtr )(TECObjectRef encodingConverter, TECConverterContextRec *plugContext);
  128. typedef CALLBACK_API_C( OSStatus , TECPluginFlushConversionPtr )(TECObjectRef encodingConverter, TECConverterContextRec *plugContext);
  129. typedef CALLBACK_API_C( OSStatus , TECPluginDisposeEncodingConverterPtr )(TECObjectRef newEncodingConverter, TECConverterContextRec *plugContext);
  130. typedef CALLBACK_API_C( OSStatus , TECPluginNewEncodingSnifferPtr )(TECSnifferObjectRef *encodingSniffer, TECSnifferContextRec *snifContext, TextEncoding inputEncoding);
  131. typedef CALLBACK_API_C( OSStatus , TECPluginClearSnifferContextInfoPtr )(TECSnifferObjectRef encodingSniffer, TECSnifferContextRec *snifContext);
  132. typedef CALLBACK_API_C( OSStatus , TECPluginSniffTextEncodingPtr )(TECSnifferObjectRef encodingSniffer, TECSnifferContextRec *snifContext);
  133. typedef CALLBACK_API_C( OSStatus , TECPluginDisposeEncodingSnifferPtr )(TECSnifferObjectRef encodingSniffer, TECSnifferContextRec *snifContext);
  134. typedef CALLBACK_API_C( OSStatus , TECPluginGetCountAvailableTextEncodingsPtr )(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  135. typedef CALLBACK_API_C( OSStatus , TECPluginGetCountAvailableTextEncodingPairsPtr )(TECConversionInfo *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  136. typedef CALLBACK_API_C( OSStatus , TECPluginGetCountDestinationTextEncodingsPtr )(TextEncoding inputEncoding, TextEncoding *destinationEncodings, ItemCount maxDestinationEncodings, ItemCount *actualDestinationEncodings);
  137. typedef CALLBACK_API_C( OSStatus , TECPluginGetCountSubTextEncodingsPtr )(TextEncoding inputEncoding, TextEncoding subEncodings[], ItemCount maxSubEncodings, ItemCount *actualSubEncodings);
  138. typedef CALLBACK_API_C( OSStatus , TECPluginGetCountAvailableSniffersPtr )(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  139. typedef CALLBACK_API_C( OSStatus , TECPluginGetTextEncodingInternetNamePtr )(TextEncoding textEncoding, Str255 encodingName);
  140. typedef CALLBACK_API_C( OSStatus , TECPluginGetTextEncodingFromInternetNamePtr )(TextEncoding *textEncoding, ConstStr255Param encodingName);
  141. typedef CALLBACK_API_C( OSStatus , TECPluginGetCountWebEncodingsPtr )(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  142. typedef CALLBACK_API_C( OSStatus , TECPluginGetCountMailEncodingsPtr )(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  143. /*
  144.   ####################################################################################
  145.           Dispatch Table Definition
  146.   ####################################################################################
  147. */
  148.  
  149.  
  150. enum {
  151.     kTECPluginDispatchTableVersion1 = 0x00010000,                /* 1.0 through 1.0.3 releases*/
  152.     kTECPluginDispatchTableVersion1_1 = 0x00010001,                /* 1.1 releases*/
  153.     kTECPluginDispatchTableVersion1_2 = 0x00010002,                /* 1.2 releases*/
  154.     kTECPluginDispatchTableCurrentVersion = kTECPluginDispatchTableVersion1_2
  155. };
  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.     TECPluginGetCountWebEncodingsPtr  PluginGetCountWebTextEncodings;
  181.     TECPluginGetCountMailEncodingsPtr  PluginGetCountMailTextEncodings;
  182.  
  183.     TECPluginGetTextEncodingInternetNamePtr  PluginGetTextEncodingInternetName;
  184.     TECPluginGetTextEncodingFromInternetNamePtr  PluginGetTextEncodingFromInternetName;
  185.  
  186. };
  187. typedef struct TECPluginDispatchTable    TECPluginDispatchTable;
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195. #if PRAGMA_STRUCT_ALIGN
  196.     #pragma options align=reset
  197. #elif PRAGMA_STRUCT_PACKPUSH
  198.     #pragma pack(pop)
  199. #elif PRAGMA_STRUCT_PACK
  200.     #pragma pack()
  201. #endif
  202.  
  203. #ifdef PRAGMA_IMPORT_OFF
  204. #pragma import off
  205. #elif PRAGMA_IMPORT
  206. #pragma import reset
  207. #endif
  208.  
  209. #ifdef __cplusplus
  210. }
  211. #endif
  212.  
  213. #endif /* __TEXTENCODINGPLUGIN__ */
  214.  
  215.