topical media & game development
lib-of-vs-libs-QTDevWin-CIncludes-IAExtractor.h / h
/*
File: IAExtractor.h
Contains: Interfaces to Find by Content Plugins that scan files
Version: Technology: Mac OS 8.6
Release: QuickTime 6.0.2
Copyright: (c) 1999-2001 by Apple Computer, Inc., all rights reserved.
Bugs?: For bug reports, consult the following page on
the World Wide Web:
http://developer.apple.com/bugreporter/
*/
ifndef __IAEXTRACTOR__
define __IAEXTRACTOR__
ifndef __CONDITIONALMACROS__
include <ConditionalMacros.h>
endif
ifndef __MACTYPES__
include <MacTypes.h>
endif
ifndef __MIXEDMODE__
include <MixedMode.h>
endif
ifndef __MACERRORS__
include <MacErrors.h>
endif
if PRAGMA_ONCE
#pragma once
endif
ifdef __cplusplus
extern "C" {
endif
if PRAGMA_IMPORT
#pragma import on
endif
if PRAGMA_STRUCT_ALIGN
#pragma options align=mac68k
#elif PRAGMA_STRUCT_PACKPUSH
#pragma pack(push, 2)
#elif PRAGMA_STRUCT_PACK
#pragma pack(2)
endif
/* modes for IASetDocAccessorReadPositionProc */
enum {
kIAFromStartMode = 0,
kIAFromCurrMode = 1,
kIAFromEndMode = 2
};
/* versions for plug-ins */
enum {
kIAExtractorVersion1 = 0x00010001,
kIAExtractorCurrentVersion = kIAExtractorVersion1
};
/* types */
typedef OSStatus IAResult;
typedef struct OpaqueIAPluginRef* IAPluginRef;
typedef struct OpaqueIADocAccessorRef* IADocAccessorRef;
typedef struct OpaqueIADocRef* IADocRef;
/* IAPluginInitBlock functions */
typedef CALLBACK_API_C( void *, IAAllocProcPtr )(UInt32 inSize);
typedef CALLBACK_API_C( void , IAFreeProcPtr )(void *inObject);
typedef CALLBACK_API_C( UInt8 , IAIdleProcPtr )(void);
typedef STACK_UPP_TYPE(IAAllocProcPtr) IAAllocUPP;
typedef STACK_UPP_TYPE(IAFreeProcPtr) IAFreeUPP;
typedef STACK_UPP_TYPE(IAIdleProcPtr) IAIdleUPP;
if OPAQUE_UPP_TYPES
if CALL_NOT_IN_CARBON
EXTERN_API(IAAllocUPP)
NewIAAllocUPP (IAAllocProcPtr userRoutine);
EXTERN_API(IAFreeUPP)
NewIAFreeUPP (IAFreeProcPtr userRoutine);
EXTERN_API(IAIdleUPP)
NewIAIdleUPP (IAIdleProcPtr userRoutine);
EXTERN_API(void)
DisposeIAAllocUPP (IAAllocUPP userUPP);
EXTERN_API(void)
DisposeIAFreeUPP (IAFreeUPP userUPP);
EXTERN_API(void)
DisposeIAIdleUPP (IAIdleUPP userUPP);
EXTERN_API(void *)
InvokeIAAllocUPP (UInt32 inSize,
IAAllocUPP userUPP);
EXTERN_API(void)
InvokeIAFreeUPP (void * inObject,
IAFreeUPP userUPP);
EXTERN_API(UInt8)
InvokeIAIdleUPP (IAIdleUPP userUPP);
endif /* CALL_NOT_IN_CARBON */
else
enum { uppIAAllocProcInfo = 0x000000F1 }; /* 4_bytes Func(4_bytes) */
enum { uppIAFreeProcInfo = 0x000000C1 }; /* no_return_value Func(4_bytes) */
enum { uppIAIdleProcInfo = 0x00000011 }; /* 1_byte Func() */
#define NewIAAllocUPP(userRoutine) (IAAllocUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIAAllocProcInfo, GetCurrentArchitecture())
#define NewIAFreeUPP(userRoutine) (IAFreeUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIAFreeProcInfo, GetCurrentArchitecture())
#define NewIAIdleUPP(userRoutine) (IAIdleUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIAIdleProcInfo, GetCurrentArchitecture())
#define DisposeIAAllocUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeIAFreeUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeIAIdleUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define InvokeIAAllocUPP(inSize, userUPP) (void *)CALL_ONE_PARAMETER_UPP((userUPP), uppIAAllocProcInfo, (inSize))
#define InvokeIAFreeUPP(inObject, userUPP) CALL_ONE_PARAMETER_UPP((userUPP), uppIAFreeProcInfo, (inObject))
#define InvokeIAIdleUPP(userUPP) (UInt8)CALL_ZERO_PARAMETER_UPP((userUPP), uppIAIdleProcInfo)
endif
/* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
define NewIAAllocProc(userRoutine) NewIAAllocUPP(userRoutine)
define NewIAFreeProc(userRoutine) NewIAFreeUPP(userRoutine)
define NewIAIdleProc(userRoutine) NewIAIdleUPP(userRoutine)
define CallIAAllocProc(userRoutine, inSize) InvokeIAAllocUPP(inSize, userRoutine)
define CallIAFreeProc(userRoutine, inObject) InvokeIAFreeUPP(inObject, userRoutine)
define CallIAIdleProc(userRoutine) InvokeIAIdleUPP(userRoutine)
struct IAPluginInitBlock {
IAAllocUPP Alloc;
IAFreeUPP Free;
IAIdleUPP Idle;
};
typedef struct IAPluginInitBlock IAPluginInitBlock;
typedef IAPluginInitBlock * IAPluginInitBlockPtr;
/* IADocAccessorRecord functions */
typedef CALLBACK_API_C( OSStatus , IADocAccessorOpenProcPtr )(IADocAccessorRef inAccessor);
typedef CALLBACK_API_C( OSStatus , IADocAccessorCloseProcPtr )(IADocAccessorRef inAccessor);
typedef CALLBACK_API_C( OSStatus , IADocAccessorReadProcPtr )(IADocAccessorRef inAccessor, void *buffer, UInt32 *ioSize);
typedef CALLBACK_API_C( OSStatus , IASetDocAccessorReadPositionProcPtr )(IADocAccessorRef inAccessor, SInt32 inMode, SInt32 inOffset);
typedef CALLBACK_API_C( OSStatus , IAGetDocAccessorReadPositionProcPtr )(IADocAccessorRef inAccessor, SInt32 *outPostion);
typedef CALLBACK_API_C( OSStatus , IAGetDocAccessorEOFProcPtr )(IADocAccessorRef inAccessor, SInt32 *outEOF);
typedef STACK_UPP_TYPE(IADocAccessorOpenProcPtr) IADocAccessorOpenUPP;
typedef STACK_UPP_TYPE(IADocAccessorCloseProcPtr) IADocAccessorCloseUPP;
typedef STACK_UPP_TYPE(IADocAccessorReadProcPtr) IADocAccessorReadUPP;
typedef STACK_UPP_TYPE(IASetDocAccessorReadPositionProcPtr) IASetDocAccessorReadPositionUPP;
typedef STACK_UPP_TYPE(IAGetDocAccessorReadPositionProcPtr) IAGetDocAccessorReadPositionUPP;
typedef STACK_UPP_TYPE(IAGetDocAccessorEOFProcPtr) IAGetDocAccessorEOFUPP;
if OPAQUE_UPP_TYPES
if CALL_NOT_IN_CARBON
EXTERN_API(IADocAccessorOpenUPP)
NewIADocAccessorOpenUPP (IADocAccessorOpenProcPtr userRoutine);
EXTERN_API(IADocAccessorCloseUPP)
NewIADocAccessorCloseUPP (IADocAccessorCloseProcPtr userRoutine);
EXTERN_API(IADocAccessorReadUPP)
NewIADocAccessorReadUPP (IADocAccessorReadProcPtr userRoutine);
EXTERN_API(IASetDocAccessorReadPositionUPP)
NewIASetDocAccessorReadPositionUPP (IASetDocAccessorReadPositionProcPtr userRoutine);
EXTERN_API(IAGetDocAccessorReadPositionUPP)
NewIAGetDocAccessorReadPositionUPP (IAGetDocAccessorReadPositionProcPtr userRoutine);
EXTERN_API(IAGetDocAccessorEOFUPP)
NewIAGetDocAccessorEOFUPP (IAGetDocAccessorEOFProcPtr userRoutine);
EXTERN_API(void)
DisposeIADocAccessorOpenUPP (IADocAccessorOpenUPP userUPP);
EXTERN_API(void)
DisposeIADocAccessorCloseUPP (IADocAccessorCloseUPP userUPP);
EXTERN_API(void)
DisposeIADocAccessorReadUPP (IADocAccessorReadUPP userUPP);
EXTERN_API(void)
DisposeIASetDocAccessorReadPositionUPP (IASetDocAccessorReadPositionUPP userUPP);
EXTERN_API(void)
DisposeIAGetDocAccessorReadPositionUPP (IAGetDocAccessorReadPositionUPP userUPP);
EXTERN_API(void)
DisposeIAGetDocAccessorEOFUPP (IAGetDocAccessorEOFUPP userUPP);
EXTERN_API(OSStatus)
InvokeIADocAccessorOpenUPP (IADocAccessorRef inAccessor,
IADocAccessorOpenUPP userUPP);
EXTERN_API(OSStatus)
InvokeIADocAccessorCloseUPP (IADocAccessorRef inAccessor,
IADocAccessorCloseUPP userUPP);
EXTERN_API(OSStatus)
InvokeIADocAccessorReadUPP (IADocAccessorRef inAccessor,
void * buffer,
UInt32 * ioSize,
IADocAccessorReadUPP userUPP);
EXTERN_API(OSStatus)
InvokeIASetDocAccessorReadPositionUPP (IADocAccessorRef inAccessor,
SInt32 inMode,
SInt32 inOffset,
IASetDocAccessorReadPositionUPP userUPP);
EXTERN_API(OSStatus)
InvokeIAGetDocAccessorReadPositionUPP (IADocAccessorRef inAccessor,
SInt32 * outPostion,
IAGetDocAccessorReadPositionUPP userUPP);
EXTERN_API(OSStatus)
InvokeIAGetDocAccessorEOFUPP (IADocAccessorRef inAccessor,
SInt32 * outEOF,
IAGetDocAccessorEOFUPP userUPP);
endif /* CALL_NOT_IN_CARBON */
else
enum { uppIADocAccessorOpenProcInfo = 0x000000F1 }; /* 4_bytes Func(4_bytes) */
enum { uppIADocAccessorCloseProcInfo = 0x000000F1 }; /* 4_bytes Func(4_bytes) */
enum { uppIADocAccessorReadProcInfo = 0x00000FF1 }; /* 4_bytes Func(4_bytes, 4_bytes, 4_bytes) */
enum { uppIASetDocAccessorReadPositionProcInfo = 0x00000FF1 }; /* 4_bytes Func(4_bytes, 4_bytes, 4_bytes) */
enum { uppIAGetDocAccessorReadPositionProcInfo = 0x000003F1 }; /* 4_bytes Func(4_bytes, 4_bytes) */
enum { uppIAGetDocAccessorEOFProcInfo = 0x000003F1 }; /* 4_bytes Func(4_bytes, 4_bytes) */
#define NewIADocAccessorOpenUPP(userRoutine) (IADocAccessorOpenUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIADocAccessorOpenProcInfo, GetCurrentArchitecture())
#define NewIADocAccessorCloseUPP(userRoutine) (IADocAccessorCloseUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIADocAccessorCloseProcInfo, GetCurrentArchitecture())
#define NewIADocAccessorReadUPP(userRoutine) (IADocAccessorReadUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIADocAccessorReadProcInfo, GetCurrentArchitecture())
#define NewIASetDocAccessorReadPositionUPP(userRoutine) (IASetDocAccessorReadPositionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIASetDocAccessorReadPositionProcInfo, GetCurrentArchitecture())
#define NewIAGetDocAccessorReadPositionUPP(userRoutine) (IAGetDocAccessorReadPositionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIAGetDocAccessorReadPositionProcInfo, GetCurrentArchitecture())
#define NewIAGetDocAccessorEOFUPP(userRoutine) (IAGetDocAccessorEOFUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIAGetDocAccessorEOFProcInfo, GetCurrentArchitecture())
#define DisposeIADocAccessorOpenUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeIADocAccessorCloseUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeIADocAccessorReadUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeIASetDocAccessorReadPositionUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeIAGetDocAccessorReadPositionUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeIAGetDocAccessorEOFUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define InvokeIADocAccessorOpenUPP(inAccessor, userUPP) (OSStatus)CALL_ONE_PARAMETER_UPP((userUPP), uppIADocAccessorOpenProcInfo, (inAccessor))
#define InvokeIADocAccessorCloseUPP(inAccessor, userUPP) (OSStatus)CALL_ONE_PARAMETER_UPP((userUPP), uppIADocAccessorCloseProcInfo, (inAccessor))
#define InvokeIADocAccessorReadUPP(inAccessor, buffer, ioSize, userUPP) (OSStatus)CALL_THREE_PARAMETER_UPP((userUPP), uppIADocAccessorReadProcInfo, (inAccessor), (buffer), (ioSize))
#define InvokeIASetDocAccessorReadPositionUPP(inAccessor, inMode, inOffset, userUPP) (OSStatus)CALL_THREE_PARAMETER_UPP((userUPP), uppIASetDocAccessorReadPositionProcInfo, (inAccessor), (inMode), (inOffset))
#define InvokeIAGetDocAccessorReadPositionUPP(inAccessor, outPostion, userUPP) (OSStatus)CALL_TWO_PARAMETER_UPP((userUPP), uppIAGetDocAccessorReadPositionProcInfo, (inAccessor), (outPostion))
#define InvokeIAGetDocAccessorEOFUPP(inAccessor, outEOF, userUPP) (OSStatus)CALL_TWO_PARAMETER_UPP((userUPP), uppIAGetDocAccessorEOFProcInfo, (inAccessor), (outEOF))
endif
/* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
define NewIADocAccessorOpenProc(userRoutine) NewIADocAccessorOpenUPP(userRoutine)
define NewIADocAccessorCloseProc(userRoutine) NewIADocAccessorCloseUPP(userRoutine)
define NewIADocAccessorReadProc(userRoutine) NewIADocAccessorReadUPP(userRoutine)
define NewIASetDocAccessorReadPositionProc(userRoutine) NewIASetDocAccessorReadPositionUPP(userRoutine)
define NewIAGetDocAccessorReadPositionProc(userRoutine) NewIAGetDocAccessorReadPositionUPP(userRoutine)
define NewIAGetDocAccessorEOFProc(userRoutine) NewIAGetDocAccessorEOFUPP(userRoutine)
define CallIADocAccessorOpenProc(userRoutine, inAccessor) InvokeIADocAccessorOpenUPP(inAccessor, userRoutine)
define CallIADocAccessorCloseProc(userRoutine, inAccessor) InvokeIADocAccessorCloseUPP(inAccessor, userRoutine)
define CallIADocAccessorReadProc(userRoutine, inAccessor, buffer, ioSize) InvokeIADocAccessorReadUPP(inAccessor, buffer, ioSize, userRoutine)
define CallIASetDocAccessorReadPositionProc(userRoutine, inAccessor, inMode, inOffset) InvokeIASetDocAccessorReadPositionUPP(inAccessor, inMode, inOffset, userRoutine)
define CallIAGetDocAccessorReadPositionProc(userRoutine, inAccessor, outPostion) InvokeIAGetDocAccessorReadPositionUPP(inAccessor, outPostion, userRoutine)
define CallIAGetDocAccessorEOFProc(userRoutine, inAccessor, outEOF) InvokeIAGetDocAccessorEOFUPP(inAccessor, outEOF, userRoutine)
/* IADocAccessorRecord */
struct IADocAccessorRecord {
IADocAccessorRef docAccessor;
IADocAccessorOpenUPP OpenDoc;
IADocAccessorCloseUPP CloseDoc;
IADocAccessorReadUPP ReadDoc;
IASetDocAccessorReadPositionUPP SetReadPosition;
IAGetDocAccessorReadPositionUPP GetReadPosition;
IAGetDocAccessorEOFUPP GetEOF;
};
typedef struct IADocAccessorRecord IADocAccessorRecord;
typedef IADocAccessorRecord * IADocAccessorPtr;
/*
If building a text extractor, define BUILDING_IAEXTRACTOR to 1 to export
the following functions. If building a client of text extractor plug-ins,
define BUILDING_IAEXTRACTOR to false so the following methods are not
exported.
*/
ifndef BUILDING_IAEXTRACTOR
define BUILDING_IAEXTRACTOR 1
endif
if BUILDING_IAEXTRACTOR
if PRAGMA_IMPORT
#pragma export on
endif
endif
/*
A Sherlock Plugin is a CFM shared library that implements the following functions:
*/
/*
IAPluginInit - plug-in's method that is called when opened by a client. The
plug-in retuns an IAPluginRef which is an opaque type defined by the plug-in
and used for the current session.
*/
if CALL_NOT_IN_CARBON
EXTERN_API_C( OSStatus )
IAPluginInit (IAPluginInitBlockPtr initBlock,
IAPluginRef * outPluginRef);
/*
IAPluginTerm - plug-in's method that is called when closed by a client. The
client passes back the IAPluginRef that was returned from IAPluginInit. At
this time the plug-in can perform any needed cleanup.
*/
EXTERN_API_C( OSStatus )
IAPluginTerm (IAPluginRef inPluginRef);
/*
IAGetExtractorVersion - returns the version of the Text Extractor interface that the
plug-in was built with.
*/
EXTERN_API_C( OSStatus )
IAGetExtractorVersion (IAPluginRef inPluginRef,
UInt32 * outPluginVersion);
/*
IACountSupportedDocTypes - returns number of document types the plug-in supports
*/
EXTERN_API_C( OSStatus )
IACountSupportedDocTypes (IAPluginRef inPluginRef,
UInt32 * outCount);
/*
IAGetIndSupportedDocType - returns the nth document type the plug-in supports.
First item is one not zero. Returns the MIME type of supported document
*/
EXTERN_API_C( OSStatus )
IAGetIndSupportedDocType (IAPluginRef inPluginRef,
UInt32 inIndex,
char ** outMIMEType);
/*
IAOpenDocument - returns a reference to the text of a document. Client passes in an
IADocAccessorRecord* that the plug-in can use to to access a document. Plug-in
returns IADocRef which an opaque type defined by plug-in to reference the text of
a document.
*/
EXTERN_API_C( OSStatus )
IAOpenDocument (IAPluginRef inPluginRef,
IADocAccessorRecord * inDoc,
IADocRef * outDoc);
/*
IACloseDocument - perform any cleanup for IADocRef that was returned from IAOpenDocument.
*/
EXTERN_API_C( OSStatus )
IACloseDocument (IADocRef inDoc);
/*
IAGetNextTextRun - get next run of text. On input, ioSize is the length of buffer argument.
On output, ioSize contains the number of bytes written to buffer argument
*/
EXTERN_API_C( OSStatus )
IAGetNextTextRun (IADocRef inDoc,
void * buffer,
UInt32 * ioSize);
/*
IAGetTextRunInfo - get information about the text returned from the last call to IAGetNextTextRun.
Arguments outEncoding ane outLanguage are options an NULL can be passed in. If arguments are
non-null, plug-in will return pointer to internet encoding and language of last run of text.
If encoding or language are unknown, plug-in will set *outEncoding and/or *outLanguage to NULL.
*/
EXTERN_API_C( OSStatus )
IAGetTextRunInfo (IADocRef inDoc,
char ** outEncoding,
char ** outLanguage);
if BUILDING_IAEXTRACTOR
if PRAGMA_IMPORT
#pragma export off
endif
endif
endif /* CALL_NOT_IN_CARBON */
if PRAGMA_STRUCT_ALIGN
#pragma options align=reset
#elif PRAGMA_STRUCT_PACKPUSH
#pragma pack(pop)
#elif PRAGMA_STRUCT_PACK
#pragma pack()
endif
ifdef PRAGMA_IMPORT_OFF
#pragma import off
#elif PRAGMA_IMPORT
#pragma import reset
endif
ifdef __cplusplus
}
endif
endif /* __IAEXTRACTOR__ */
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.