Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

210 lines
8.8 KiB

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