IAExtractor.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:19k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /*
  2.      File:       IAExtractor.h
  3.  
  4.      Contains:   Interfaces to Find by Content Plugins that scan files
  5.  
  6.      Version:    Technology: Mac OS 8.6
  7.                  Release:    QuickTime 6.0.2
  8.  
  9.      Copyright:  (c) 1999-2001 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:      For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __IAEXTRACTOR__
  18. #define __IAEXTRACTOR__
  19. #ifndef __CONDITIONALMACROS__
  20. #include "ConditionalMacros.h"
  21. #endif
  22. #ifndef __MACTYPES__
  23. #include "MacTypes.h"
  24. #endif
  25. #ifndef __MIXEDMODE__
  26. #include "MixedMode.h"
  27. #endif
  28. #ifndef __MACERRORS__
  29. #include "MacErrors.h"
  30. #endif
  31. #if PRAGMA_ONCE
  32. #pragma once
  33. #endif
  34. #ifdef __cplusplus
  35. extern "C" {
  36. #endif
  37. #if PRAGMA_IMPORT
  38. #pragma import on
  39. #endif
  40. #if PRAGMA_STRUCT_ALIGN
  41.     #pragma options align=mac68k
  42. #elif PRAGMA_STRUCT_PACKPUSH
  43.     #pragma pack(push, 2)
  44. #elif PRAGMA_STRUCT_PACK
  45.     #pragma pack(2)
  46. #endif
  47. /* modes for IASetDocAccessorReadPositionProc */
  48. enum {
  49.     kIAFromStartMode            = 0,
  50.     kIAFromCurrMode             = 1,
  51.     kIAFromEndMode              = 2
  52. };
  53. /* versions for plug-ins */
  54. enum {
  55.     kIAExtractorVersion1        = 0x00010001,
  56.     kIAExtractorCurrentVersion  = kIAExtractorVersion1
  57. };
  58. /* types */
  59. typedef OSStatus                        IAResult;
  60. typedef struct OpaqueIAPluginRef*       IAPluginRef;
  61. typedef struct OpaqueIADocAccessorRef*  IADocAccessorRef;
  62. typedef struct OpaqueIADocRef*          IADocRef;
  63. /* IAPluginInitBlock functions */
  64. typedef CALLBACK_API_C( void *, IAAllocProcPtr )(UInt32 inSize);
  65. typedef CALLBACK_API_C( void , IAFreeProcPtr )(void *inObject);
  66. typedef CALLBACK_API_C( UInt8 , IAIdleProcPtr )(void);
  67. typedef STACK_UPP_TYPE(IAAllocProcPtr)                          IAAllocUPP;
  68. typedef STACK_UPP_TYPE(IAFreeProcPtr)                           IAFreeUPP;
  69. typedef STACK_UPP_TYPE(IAIdleProcPtr)                           IAIdleUPP;
  70. #if OPAQUE_UPP_TYPES
  71. #if CALL_NOT_IN_CARBON
  72.     EXTERN_API(IAAllocUPP)
  73.     NewIAAllocUPP                  (IAAllocProcPtr          userRoutine);
  74.     EXTERN_API(IAFreeUPP)
  75.     NewIAFreeUPP                   (IAFreeProcPtr           userRoutine);
  76.     EXTERN_API(IAIdleUPP)
  77.     NewIAIdleUPP                   (IAIdleProcPtr           userRoutine);
  78.     EXTERN_API(void)
  79.     DisposeIAAllocUPP              (IAAllocUPP              userUPP);
  80.     EXTERN_API(void)
  81.     DisposeIAFreeUPP               (IAFreeUPP               userUPP);
  82.     EXTERN_API(void)
  83.     DisposeIAIdleUPP               (IAIdleUPP               userUPP);
  84.     EXTERN_API(void *)
  85.     InvokeIAAllocUPP               (UInt32                  inSize,
  86.                                     IAAllocUPP              userUPP);
  87.     EXTERN_API(void)
  88.     InvokeIAFreeUPP                (void *                  inObject,
  89.                                     IAFreeUPP               userUPP);
  90.     EXTERN_API(UInt8)
  91.     InvokeIAIdleUPP                (IAIdleUPP               userUPP);
  92. #endif  /* CALL_NOT_IN_CARBON */
  93. #else
  94.     enum { uppIAAllocProcInfo = 0x000000F1 };                       /* 4_bytes Func(4_bytes) */
  95.     enum { uppIAFreeProcInfo = 0x000000C1 };                        /* no_return_value Func(4_bytes) */
  96.     enum { uppIAIdleProcInfo = 0x00000011 };                        /* 1_byte Func() */
  97.     #define NewIAAllocUPP(userRoutine)                              (IAAllocUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIAAllocProcInfo, GetCurrentArchitecture())
  98.     #define NewIAFreeUPP(userRoutine)                               (IAFreeUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIAFreeProcInfo, GetCurrentArchitecture())
  99.     #define NewIAIdleUPP(userRoutine)                               (IAIdleUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIAIdleProcInfo, GetCurrentArchitecture())
  100.     #define DisposeIAAllocUPP(userUPP)                              DisposeRoutineDescriptor(userUPP)
  101.     #define DisposeIAFreeUPP(userUPP)                               DisposeRoutineDescriptor(userUPP)
  102.     #define DisposeIAIdleUPP(userUPP)                               DisposeRoutineDescriptor(userUPP)
  103.     #define InvokeIAAllocUPP(inSize, userUPP)                       (void *)CALL_ONE_PARAMETER_UPP((userUPP), uppIAAllocProcInfo, (inSize))
  104.     #define InvokeIAFreeUPP(inObject, userUPP)                      CALL_ONE_PARAMETER_UPP((userUPP), uppIAFreeProcInfo, (inObject))
  105.     #define InvokeIAIdleUPP(userUPP)                                (UInt8)CALL_ZERO_PARAMETER_UPP((userUPP), uppIAIdleProcInfo)
  106. #endif
  107. /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  108. #define NewIAAllocProc(userRoutine)                             NewIAAllocUPP(userRoutine)
  109. #define NewIAFreeProc(userRoutine)                              NewIAFreeUPP(userRoutine)
  110. #define NewIAIdleProc(userRoutine)                              NewIAIdleUPP(userRoutine)
  111. #define CallIAAllocProc(userRoutine, inSize)                    InvokeIAAllocUPP(inSize, userRoutine)
  112. #define CallIAFreeProc(userRoutine, inObject)                   InvokeIAFreeUPP(inObject, userRoutine)
  113. #define CallIAIdleProc(userRoutine)                             InvokeIAIdleUPP(userRoutine)
  114. struct IAPluginInitBlock {
  115.     IAAllocUPP                      Alloc;
  116.     IAFreeUPP                       Free;
  117.     IAIdleUPP                       Idle;
  118. };
  119. typedef struct IAPluginInitBlock        IAPluginInitBlock;
  120. typedef IAPluginInitBlock *             IAPluginInitBlockPtr;
  121. /* IADocAccessorRecord  functions */
  122. typedef CALLBACK_API_C( OSStatus , IADocAccessorOpenProcPtr )(IADocAccessorRef inAccessor);
  123. typedef CALLBACK_API_C( OSStatus , IADocAccessorCloseProcPtr )(IADocAccessorRef inAccessor);
  124. typedef CALLBACK_API_C( OSStatus , IADocAccessorReadProcPtr )(IADocAccessorRef inAccessor, void *buffer, UInt32 *ioSize);
  125. typedef CALLBACK_API_C( OSStatus , IASetDocAccessorReadPositionProcPtr )(IADocAccessorRef inAccessor, SInt32 inMode, SInt32 inOffset);
  126. typedef CALLBACK_API_C( OSStatus , IAGetDocAccessorReadPositionProcPtr )(IADocAccessorRef inAccessor, SInt32 *outPostion);
  127. typedef CALLBACK_API_C( OSStatus , IAGetDocAccessorEOFProcPtr )(IADocAccessorRef inAccessor, SInt32 *outEOF);
  128. typedef STACK_UPP_TYPE(IADocAccessorOpenProcPtr)                IADocAccessorOpenUPP;
  129. typedef STACK_UPP_TYPE(IADocAccessorCloseProcPtr)               IADocAccessorCloseUPP;
  130. typedef STACK_UPP_TYPE(IADocAccessorReadProcPtr)                IADocAccessorReadUPP;
  131. typedef STACK_UPP_TYPE(IASetDocAccessorReadPositionProcPtr)     IASetDocAccessorReadPositionUPP;
  132. typedef STACK_UPP_TYPE(IAGetDocAccessorReadPositionProcPtr)     IAGetDocAccessorReadPositionUPP;
  133. typedef STACK_UPP_TYPE(IAGetDocAccessorEOFProcPtr)              IAGetDocAccessorEOFUPP;
  134. #if OPAQUE_UPP_TYPES
  135. #if CALL_NOT_IN_CARBON
  136.     EXTERN_API(IADocAccessorOpenUPP)
  137.     NewIADocAccessorOpenUPP        (IADocAccessorOpenProcPtr userRoutine);
  138.     EXTERN_API(IADocAccessorCloseUPP)
  139.     NewIADocAccessorCloseUPP       (IADocAccessorCloseProcPtr userRoutine);
  140.     EXTERN_API(IADocAccessorReadUPP)
  141.     NewIADocAccessorReadUPP        (IADocAccessorReadProcPtr userRoutine);
  142.     EXTERN_API(IASetDocAccessorReadPositionUPP)
  143.     NewIASetDocAccessorReadPositionUPP    (IASetDocAccessorReadPositionProcPtr userRoutine);
  144.     EXTERN_API(IAGetDocAccessorReadPositionUPP)
  145.     NewIAGetDocAccessorReadPositionUPP    (IAGetDocAccessorReadPositionProcPtr userRoutine);
  146.     EXTERN_API(IAGetDocAccessorEOFUPP)
  147.     NewIAGetDocAccessorEOFUPP      (IAGetDocAccessorEOFProcPtr userRoutine);
  148.     EXTERN_API(void)
  149.     DisposeIADocAccessorOpenUPP    (IADocAccessorOpenUPP    userUPP);
  150.     EXTERN_API(void)
  151.     DisposeIADocAccessorCloseUPP    (IADocAccessorCloseUPP  userUPP);
  152.     EXTERN_API(void)
  153.     DisposeIADocAccessorReadUPP    (IADocAccessorReadUPP    userUPP);
  154.     EXTERN_API(void)
  155.     DisposeIASetDocAccessorReadPositionUPP    (IASetDocAccessorReadPositionUPP userUPP);
  156.     EXTERN_API(void)
  157.     DisposeIAGetDocAccessorReadPositionUPP    (IAGetDocAccessorReadPositionUPP userUPP);
  158.     EXTERN_API(void)
  159.     DisposeIAGetDocAccessorEOFUPP    (IAGetDocAccessorEOFUPP userUPP);
  160.     EXTERN_API(OSStatus)
  161.     InvokeIADocAccessorOpenUPP     (IADocAccessorRef        inAccessor,
  162.                                     IADocAccessorOpenUPP    userUPP);
  163.     EXTERN_API(OSStatus)
  164.     InvokeIADocAccessorCloseUPP    (IADocAccessorRef        inAccessor,
  165.                                     IADocAccessorCloseUPP   userUPP);
  166.     EXTERN_API(OSStatus)
  167.     InvokeIADocAccessorReadUPP     (IADocAccessorRef        inAccessor,
  168.                                     void *                  buffer,
  169.                                     UInt32 *                ioSize,
  170.                                     IADocAccessorReadUPP    userUPP);
  171.     EXTERN_API(OSStatus)
  172.     InvokeIASetDocAccessorReadPositionUPP    (IADocAccessorRef inAccessor,
  173.                                     SInt32                  inMode,
  174.                                     SInt32                  inOffset,
  175.                                     IASetDocAccessorReadPositionUPP userUPP);
  176.     EXTERN_API(OSStatus)
  177.     InvokeIAGetDocAccessorReadPositionUPP    (IADocAccessorRef inAccessor,
  178.                                     SInt32 *                outPostion,
  179.                                     IAGetDocAccessorReadPositionUPP userUPP);
  180.     EXTERN_API(OSStatus)
  181.     InvokeIAGetDocAccessorEOFUPP    (IADocAccessorRef       inAccessor,
  182.                                     SInt32 *                outEOF,
  183.                                     IAGetDocAccessorEOFUPP  userUPP);
  184. #endif  /* CALL_NOT_IN_CARBON */
  185. #else
  186.     enum { uppIADocAccessorOpenProcInfo = 0x000000F1 };             /* 4_bytes Func(4_bytes) */
  187.     enum { uppIADocAccessorCloseProcInfo = 0x000000F1 };            /* 4_bytes Func(4_bytes) */
  188.     enum { uppIADocAccessorReadProcInfo = 0x00000FF1 };             /* 4_bytes Func(4_bytes, 4_bytes, 4_bytes) */
  189.     enum { uppIASetDocAccessorReadPositionProcInfo = 0x00000FF1 };  /* 4_bytes Func(4_bytes, 4_bytes, 4_bytes) */
  190.     enum { uppIAGetDocAccessorReadPositionProcInfo = 0x000003F1 };  /* 4_bytes Func(4_bytes, 4_bytes) */
  191.     enum { uppIAGetDocAccessorEOFProcInfo = 0x000003F1 };           /* 4_bytes Func(4_bytes, 4_bytes) */
  192.     #define NewIADocAccessorOpenUPP(userRoutine)                    (IADocAccessorOpenUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIADocAccessorOpenProcInfo, GetCurrentArchitecture())
  193.     #define NewIADocAccessorCloseUPP(userRoutine)                   (IADocAccessorCloseUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIADocAccessorCloseProcInfo, GetCurrentArchitecture())
  194.     #define NewIADocAccessorReadUPP(userRoutine)                    (IADocAccessorReadUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIADocAccessorReadProcInfo, GetCurrentArchitecture())
  195.     #define NewIASetDocAccessorReadPositionUPP(userRoutine)         (IASetDocAccessorReadPositionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIASetDocAccessorReadPositionProcInfo, GetCurrentArchitecture())
  196.     #define NewIAGetDocAccessorReadPositionUPP(userRoutine)         (IAGetDocAccessorReadPositionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIAGetDocAccessorReadPositionProcInfo, GetCurrentArchitecture())
  197.     #define NewIAGetDocAccessorEOFUPP(userRoutine)                  (IAGetDocAccessorEOFUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIAGetDocAccessorEOFProcInfo, GetCurrentArchitecture())
  198.     #define DisposeIADocAccessorOpenUPP(userUPP)                    DisposeRoutineDescriptor(userUPP)
  199.     #define DisposeIADocAccessorCloseUPP(userUPP)                   DisposeRoutineDescriptor(userUPP)
  200.     #define DisposeIADocAccessorReadUPP(userUPP)                    DisposeRoutineDescriptor(userUPP)
  201.     #define DisposeIASetDocAccessorReadPositionUPP(userUPP)         DisposeRoutineDescriptor(userUPP)
  202.     #define DisposeIAGetDocAccessorReadPositionUPP(userUPP)         DisposeRoutineDescriptor(userUPP)
  203.     #define DisposeIAGetDocAccessorEOFUPP(userUPP)                  DisposeRoutineDescriptor(userUPP)
  204.     #define InvokeIADocAccessorOpenUPP(inAccessor, userUPP)         (OSStatus)CALL_ONE_PARAMETER_UPP((userUPP), uppIADocAccessorOpenProcInfo, (inAccessor))
  205.     #define InvokeIADocAccessorCloseUPP(inAccessor, userUPP)        (OSStatus)CALL_ONE_PARAMETER_UPP((userUPP), uppIADocAccessorCloseProcInfo, (inAccessor))
  206.     #define InvokeIADocAccessorReadUPP(inAccessor, buffer, ioSize, userUPP)  (OSStatus)CALL_THREE_PARAMETER_UPP((userUPP), uppIADocAccessorReadProcInfo, (inAccessor), (buffer), (ioSize))
  207.     #define InvokeIASetDocAccessorReadPositionUPP(inAccessor, inMode, inOffset, userUPP)  (OSStatus)CALL_THREE_PARAMETER_UPP((userUPP), uppIASetDocAccessorReadPositionProcInfo, (inAccessor), (inMode), (inOffset))
  208.     #define InvokeIAGetDocAccessorReadPositionUPP(inAccessor, outPostion, userUPP)  (OSStatus)CALL_TWO_PARAMETER_UPP((userUPP), uppIAGetDocAccessorReadPositionProcInfo, (inAccessor), (outPostion))
  209.     #define InvokeIAGetDocAccessorEOFUPP(inAccessor, outEOF, userUPP)  (OSStatus)CALL_TWO_PARAMETER_UPP((userUPP), uppIAGetDocAccessorEOFProcInfo, (inAccessor), (outEOF))
  210. #endif
  211. /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  212. #define NewIADocAccessorOpenProc(userRoutine)                   NewIADocAccessorOpenUPP(userRoutine)
  213. #define NewIADocAccessorCloseProc(userRoutine)                  NewIADocAccessorCloseUPP(userRoutine)
  214. #define NewIADocAccessorReadProc(userRoutine)                   NewIADocAccessorReadUPP(userRoutine)
  215. #define NewIASetDocAccessorReadPositionProc(userRoutine)        NewIASetDocAccessorReadPositionUPP(userRoutine)
  216. #define NewIAGetDocAccessorReadPositionProc(userRoutine)        NewIAGetDocAccessorReadPositionUPP(userRoutine)
  217. #define NewIAGetDocAccessorEOFProc(userRoutine)                 NewIAGetDocAccessorEOFUPP(userRoutine)
  218. #define CallIADocAccessorOpenProc(userRoutine, inAccessor)      InvokeIADocAccessorOpenUPP(inAccessor, userRoutine)
  219. #define CallIADocAccessorCloseProc(userRoutine, inAccessor)     InvokeIADocAccessorCloseUPP(inAccessor, userRoutine)
  220. #define CallIADocAccessorReadProc(userRoutine, inAccessor, buffer, ioSize) InvokeIADocAccessorReadUPP(inAccessor, buffer, ioSize, userRoutine)
  221. #define CallIASetDocAccessorReadPositionProc(userRoutine, inAccessor, inMode, inOffset) InvokeIASetDocAccessorReadPositionUPP(inAccessor, inMode, inOffset, userRoutine)
  222. #define CallIAGetDocAccessorReadPositionProc(userRoutine, inAccessor, outPostion) InvokeIAGetDocAccessorReadPositionUPP(inAccessor, outPostion, userRoutine)
  223. #define CallIAGetDocAccessorEOFProc(userRoutine, inAccessor, outEOF) InvokeIAGetDocAccessorEOFUPP(inAccessor, outEOF, userRoutine)
  224. /* IADocAccessorRecord */
  225. struct IADocAccessorRecord {
  226.     IADocAccessorRef                docAccessor;
  227.     IADocAccessorOpenUPP            OpenDoc;
  228.     IADocAccessorCloseUPP           CloseDoc;
  229.     IADocAccessorReadUPP            ReadDoc;
  230.     IASetDocAccessorReadPositionUPP  SetReadPosition;
  231.     IAGetDocAccessorReadPositionUPP  GetReadPosition;
  232.     IAGetDocAccessorEOFUPP          GetEOF;
  233. };
  234. typedef struct IADocAccessorRecord      IADocAccessorRecord;
  235. typedef IADocAccessorRecord *           IADocAccessorPtr;
  236. /*
  237.    If building a text extractor, define BUILDING_IAEXTRACTOR to 1 to export
  238.    the following functions.  If building a client of text extractor plug-ins,
  239.    define BUILDING_IAEXTRACTOR to false so the following methods are not
  240.    exported.
  241. */
  242. #ifndef BUILDING_IAEXTRACTOR
  243. #define BUILDING_IAEXTRACTOR 1
  244. #endif
  245. #if BUILDING_IAEXTRACTOR
  246. #if PRAGMA_IMPORT
  247. #pragma export on
  248. #endif
  249. #endif
  250. /*
  251.     A Sherlock Plugin is a CFM shared library that implements the following functions:
  252. */
  253. /*
  254.    IAPluginInit - plug-in's method that is called when opened by a client.  The
  255.    plug-in retuns an IAPluginRef which is an opaque type defined by the plug-in
  256.    and used for the current session.
  257. */
  258. #if CALL_NOT_IN_CARBON
  259. EXTERN_API_C( OSStatus )
  260. IAPluginInit                    (IAPluginInitBlockPtr   initBlock,
  261.                                  IAPluginRef *          outPluginRef);
  262. /*
  263.    IAPluginTerm - plug-in's method that is called when closed by a client.  The
  264.    client passes back the IAPluginRef that was returned from IAPluginInit.  At
  265.    this time the plug-in can perform any needed cleanup.
  266. */
  267. EXTERN_API_C( OSStatus )
  268. IAPluginTerm                    (IAPluginRef            inPluginRef);
  269. /*
  270.    IAGetExtractorVersion - returns the version of the Text Extractor interface that the
  271.    plug-in was built with.
  272. */
  273. EXTERN_API_C( OSStatus )
  274. IAGetExtractorVersion           (IAPluginRef            inPluginRef,
  275.                                  UInt32 *               outPluginVersion);
  276. /*
  277.    IACountSupportedDocTypes - returns number of document types the plug-in supports
  278. */
  279. EXTERN_API_C( OSStatus )
  280. IACountSupportedDocTypes        (IAPluginRef            inPluginRef,
  281.                                  UInt32 *               outCount);
  282. /*
  283.    IAGetIndSupportedDocType - returns the nth document type the plug-in supports.
  284.    First item is one not zero.  Returns the MIME type of supported document
  285. */
  286. EXTERN_API_C( OSStatus )
  287. IAGetIndSupportedDocType        (IAPluginRef            inPluginRef,
  288.                                  UInt32                 inIndex,
  289.                                  char **                outMIMEType);
  290. /*
  291.    IAOpenDocument - returns a reference to the text of a document.  Client passes in an
  292.    IADocAccessorRecord* that the plug-in can use to to access a document.  Plug-in
  293.    returns IADocRef which an opaque type defined by plug-in to reference the text of
  294.    a document.
  295. */
  296. EXTERN_API_C( OSStatus )
  297. IAOpenDocument                  (IAPluginRef            inPluginRef,
  298.                                  IADocAccessorRecord *  inDoc,
  299.                                  IADocRef *             outDoc);
  300. /*
  301.    IACloseDocument - perform any cleanup for IADocRef that was returned from IAOpenDocument.
  302. */
  303. EXTERN_API_C( OSStatus )
  304. IACloseDocument                 (IADocRef               inDoc);
  305. /*
  306.    IAGetNextTextRun - get next run of text.  On input, ioSize is the length of buffer argument.
  307.    On output, ioSize contains the number of bytes written to buffer argument
  308. */
  309. EXTERN_API_C( OSStatus )
  310. IAGetNextTextRun                (IADocRef               inDoc,
  311.                                  void *                 buffer,
  312.                                  UInt32 *               ioSize);
  313. /*
  314.    IAGetTextRunInfo - get information about the text returned from the last call to IAGetNextTextRun.
  315.    Arguments outEncoding ane outLanguage are options an NULL can be passed in.  If arguments are
  316.    non-null, plug-in will return pointer to internet encoding and language of last run of text.
  317.    If encoding or language are unknown, plug-in will set *outEncoding and/or *outLanguage to NULL. 
  318. */
  319. EXTERN_API_C( OSStatus )
  320. IAGetTextRunInfo                (IADocRef               inDoc,
  321.                                  char **                outEncoding,
  322.                                  char **                outLanguage);
  323. #if BUILDING_IAEXTRACTOR
  324. #if PRAGMA_IMPORT
  325. #pragma export off
  326. #endif
  327. #endif
  328. #endif  /* CALL_NOT_IN_CARBON */
  329. #if PRAGMA_STRUCT_ALIGN
  330.     #pragma options align=reset
  331. #elif PRAGMA_STRUCT_PACKPUSH
  332.     #pragma pack(pop)
  333. #elif PRAGMA_STRUCT_PACK
  334.     #pragma pack()
  335. #endif
  336. #ifdef PRAGMA_IMPORT_OFF
  337. #pragma import off
  338. #elif PRAGMA_IMPORT
  339. #pragma import reset
  340. #endif
  341. #ifdef __cplusplus
  342. }
  343. #endif
  344. #endif /* __IAEXTRACTOR__ */