home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 January: Mac OS SDK / Dev.CD Jan 00 SDK1.toast / Development Kits / Mac OS / Text Encoding Converter 1.5 / Headers / TextEncodingPlugin.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-09-17  |  8.6 KB  |  231 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.      DRI:        Julio Gonzalez
  9.  
  10.      Copyright:    © 1996-1999 by Apple Computer, Inc., all rights reserved.
  11.  
  12.      Warning:    *** APPLE INTERNAL USE ONLY ***
  13.                  This file may contain unreleased API's
  14.  
  15.      BuildInfo:    Built by:            BuildGod
  16.                  On:                    09/17/99 11:19 AM
  17.                  With Interfacer:    3.0d13   (MPW PowerPC)
  18.                  From:                TextEncodingPlugin.i
  19.                      Revision:        20
  20.                      Dated:            1/25/99
  21.                      Last change by:    ngk
  22.                      Last comment:    Clean up directives for Interfacer 3.0d10.
  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 __MACTYPES__
  32. #include <MacTypes.h>
  33. #endif
  34.  
  35. #ifndef __TEXTCOMMON__
  36. #include <TextCommon.h>
  37. #endif
  38.  
  39. #ifndef __TEXTENCODINGCONVERTER__
  40. #include <TextEncodingConverter.h>
  41. #endif
  42.  
  43.  
  44.  
  45.  
  46. #if PRAGMA_ONCE
  47. #pragma once
  48. #endif
  49.  
  50. #ifdef __cplusplus
  51. extern "C" {
  52. #endif
  53.  
  54. #if PRAGMA_IMPORT
  55. #pragma import on
  56. #endif
  57.  
  58. #if PRAGMA_STRUCT_ALIGN
  59.     #pragma options align=mac68k
  60. #elif PRAGMA_STRUCT_PACKPUSH
  61.     #pragma pack(push, 2)
  62. #elif PRAGMA_STRUCT_PACK
  63.     #pragma pack(2)
  64. #endif
  65.  
  66. /*
  67. ####################################################################################
  68.         Structs
  69. ####################################################################################
  70. */
  71.  
  72. struct TECBufferContextRec {
  73.     TextPtr                         textInputBuffer;
  74.     TextPtr                         textInputBufferEnd;
  75.     TextPtr                         textOutputBuffer;
  76.     TextPtr                         textOutputBufferEnd;
  77.  
  78.     TextEncodingRunPtr                 encodingInputBuffer;
  79.     TextEncodingRunPtr                 encodingInputBufferEnd;
  80.     TextEncodingRunPtr                 encodingOutputBuffer;
  81.     TextEncodingRunPtr                 encodingOutputBufferEnd;
  82. };
  83. typedef struct TECBufferContextRec        TECBufferContextRec;
  84.  
  85. struct TECPluginStateRec {
  86.  
  87.     UInt8                             state1;
  88.     UInt8                             state2;
  89.     UInt8                             state3;
  90.     UInt8                             state4;
  91.  
  92.     UInt32                             longState1;
  93.     UInt32                             longState2;
  94.     UInt32                             longState3;
  95.     UInt32                             longState4;
  96. };
  97. typedef struct TECPluginStateRec        TECPluginStateRec;
  98.  
  99. struct TECConverterContextRec {
  100.  
  101.                                                                 /* public - manipulated externally and by plugin*/
  102.     Ptr                             pluginRec;
  103.     TextEncoding                     sourceEncoding;
  104.     TextEncoding                     destEncoding;
  105.     UInt32                             reserved1;
  106.     UInt32                             reserved2;
  107.     TECBufferContextRec             bufferContext;
  108.                                                                 /* private - manipulated only within Plugin*/
  109.     UInt32                             contextRefCon;
  110.     ProcPtr                         conversionProc;
  111.     ProcPtr                         flushProc;
  112.     ProcPtr                         clearContextInfoProc;
  113.     UInt32                             options1;
  114.     UInt32                             options2;
  115.     TECPluginStateRec                 pluginState;
  116. };
  117. typedef struct TECConverterContextRec    TECConverterContextRec;
  118.  
  119. struct TECSnifferContextRec {
  120.                                                                 /* public - manipulated externally*/
  121.     Ptr                             pluginRec;
  122.     TextEncoding                     encoding;
  123.     ItemCount                         maxErrors;
  124.     ItemCount                         maxFeatures;
  125.     TextPtr                         textInputBuffer;
  126.     TextPtr                         textInputBufferEnd;
  127.     ItemCount                         numFeatures;
  128.     ItemCount                         numErrors;
  129.                                                                 /* private - manipulated only within Plugin*/
  130.     UInt32                             contextRefCon;
  131.     ProcPtr                         sniffProc;
  132.     ProcPtr                         clearContextInfoProc;
  133.     TECPluginStateRec                 pluginState;
  134. };
  135. typedef struct TECSnifferContextRec        TECSnifferContextRec;
  136. /*
  137.   ####################################################################################
  138.           Functional Messages
  139.   ####################################################################################
  140. */
  141.  
  142. typedef CALLBACK_API_C( OSStatus , TECPluginNewEncodingConverterPtr )(TECObjectRef *newEncodingConverter, TECConverterContextRec *plugContext, TextEncoding inputEncoding, TextEncoding outputEncoding);
  143. typedef CALLBACK_API_C( OSStatus , TECPluginClearContextInfoPtr )(TECObjectRef encodingConverter, TECConverterContextRec *plugContext);
  144. typedef CALLBACK_API_C( OSStatus , TECPluginConvertTextEncodingPtr )(TECObjectRef encodingConverter, TECConverterContextRec *plugContext);
  145. typedef CALLBACK_API_C( OSStatus , TECPluginFlushConversionPtr )(TECObjectRef encodingConverter, TECConverterContextRec *plugContext);
  146. typedef CALLBACK_API_C( OSStatus , TECPluginDisposeEncodingConverterPtr )(TECObjectRef newEncodingConverter, TECConverterContextRec *plugContext);
  147. typedef CALLBACK_API_C( OSStatus , TECPluginNewEncodingSnifferPtr )(TECSnifferObjectRef *encodingSniffer, TECSnifferContextRec *snifContext, TextEncoding inputEncoding);
  148. typedef CALLBACK_API_C( OSStatus , TECPluginClearSnifferContextInfoPtr )(TECSnifferObjectRef encodingSniffer, TECSnifferContextRec *snifContext);
  149. typedef CALLBACK_API_C( OSStatus , TECPluginSniffTextEncodingPtr )(TECSnifferObjectRef encodingSniffer, TECSnifferContextRec *snifContext);
  150. typedef CALLBACK_API_C( OSStatus , TECPluginDisposeEncodingSnifferPtr )(TECSnifferObjectRef encodingSniffer, TECSnifferContextRec *snifContext);
  151. typedef CALLBACK_API_C( OSStatus , TECPluginGetCountAvailableTextEncodingsPtr )(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  152. typedef CALLBACK_API_C( OSStatus , TECPluginGetCountAvailableTextEncodingPairsPtr )(TECConversionInfo *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  153. typedef CALLBACK_API_C( OSStatus , TECPluginGetCountDestinationTextEncodingsPtr )(TextEncoding inputEncoding, TextEncoding *destinationEncodings, ItemCount maxDestinationEncodings, ItemCount *actualDestinationEncodings);
  154. typedef CALLBACK_API_C( OSStatus , TECPluginGetCountSubTextEncodingsPtr )(TextEncoding inputEncoding, TextEncoding subEncodings[], ItemCount maxSubEncodings, ItemCount *actualSubEncodings);
  155. typedef CALLBACK_API_C( OSStatus , TECPluginGetCountAvailableSniffersPtr )(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  156. typedef CALLBACK_API_C( OSStatus , TECPluginGetTextEncodingInternetNamePtr )(TextEncoding textEncoding, Str255 encodingName);
  157. typedef CALLBACK_API_C( OSStatus , TECPluginGetTextEncodingFromInternetNamePtr )(TextEncoding *textEncoding, ConstStr255Param encodingName);
  158. typedef CALLBACK_API_C( OSStatus , TECPluginGetCountWebEncodingsPtr )(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  159. typedef CALLBACK_API_C( OSStatus , TECPluginGetCountMailEncodingsPtr )(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  160. /*
  161.   ####################################################################################
  162.           Dispatch Table Definition
  163.   ####################################################################################
  164. */
  165.  
  166. enum {
  167.     kTECPluginDispatchTableVersion1 = 0x00010000,                /* 1.0 through 1.0.3 releases*/
  168.     kTECPluginDispatchTableVersion1_1 = 0x00010001,                /* 1.1 releases*/
  169.     kTECPluginDispatchTableVersion1_2 = 0x00010002,                /* 1.2 releases*/
  170.     kTECPluginDispatchTableCurrentVersion = kTECPluginDispatchTableVersion1_2
  171. };
  172.  
  173.  
  174. struct TECPluginDispatchTable {
  175.  
  176.     TECPluginVersion                 version;
  177.     TECPluginVersion                 compatibleVersion;
  178.     TECPluginSignature                 PluginID;
  179.  
  180.     TECPluginNewEncodingConverterPtr  PluginNewEncodingConverter;
  181.     TECPluginClearContextInfoPtr     PluginClearContextInfo;
  182.     TECPluginConvertTextEncodingPtr  PluginConvertTextEncoding;
  183.     TECPluginFlushConversionPtr     PluginFlushConversion;
  184.     TECPluginDisposeEncodingConverterPtr  PluginDisposeEncodingConverter;
  185.  
  186.     TECPluginNewEncodingSnifferPtr     PluginNewEncodingSniffer;
  187.     TECPluginClearSnifferContextInfoPtr  PluginClearSnifferContextInfo;
  188.     TECPluginSniffTextEncodingPtr     PluginSniffTextEncoding;
  189.     TECPluginDisposeEncodingSnifferPtr  PluginDisposeEncodingSniffer;
  190.  
  191.     TECPluginGetCountAvailableTextEncodingsPtr  PluginGetCountAvailableTextEncodings;
  192.     TECPluginGetCountAvailableTextEncodingPairsPtr  PluginGetCountAvailableTextEncodingPairs;
  193.     TECPluginGetCountDestinationTextEncodingsPtr  PluginGetCountDestinationTextEncodings;
  194.     TECPluginGetCountSubTextEncodingsPtr  PluginGetCountSubTextEncodings;
  195.     TECPluginGetCountAvailableSniffersPtr  PluginGetCountAvailableSniffers;
  196.     TECPluginGetCountWebEncodingsPtr  PluginGetCountWebTextEncodings;
  197.     TECPluginGetCountMailEncodingsPtr  PluginGetCountMailTextEncodings;
  198.  
  199.     TECPluginGetTextEncodingInternetNamePtr  PluginGetTextEncodingInternetName;
  200.     TECPluginGetTextEncodingFromInternetNamePtr  PluginGetTextEncodingFromInternetName;
  201.  
  202. };
  203. typedef struct TECPluginDispatchTable    TECPluginDispatchTable;
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211. #if PRAGMA_STRUCT_ALIGN
  212.     #pragma options align=reset
  213. #elif PRAGMA_STRUCT_PACKPUSH
  214.     #pragma pack(pop)
  215. #elif PRAGMA_STRUCT_PACK
  216.     #pragma pack()
  217. #endif
  218.  
  219. #ifdef PRAGMA_IMPORT_OFF
  220. #pragma import off
  221. #elif PRAGMA_IMPORT
  222. #pragma import reset
  223. #endif
  224.  
  225. #ifdef __cplusplus
  226. }
  227. #endif
  228.  
  229. #endif /* __TEXTENCODINGPLUGIN__ */
  230.  
  231.