00001 #pragma once
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef __AITypes__
00029 #include "AITypes.h"
00030 #endif
00031
00032 #include "AIFilePath.h"
00033
00034 #include "AIHeaderBegin.h"
00035
00038
00039
00040
00041
00042
00043
00045 #define kAIDataFilterSuite "AI Data Filter Suite"
00046
00047 #define kAIDataFilterSuiteVersion9 AIAPI_VERSION(9)
00048
00050 #define kAIDataFilterSuiteVersion kAIDataFilterSuiteVersion9
00051 #define kAIDataFilterVersion kAIDataFilterSuiteVersion
00052
00053
00055 #define kDataFilterErr 'DFER'
00056
00057
00058
00059
00060
00061
00062
00064 typedef struct DataFilter AIDataFilter;
00065
00069 typedef struct _t_AIPluginStream {
00077 AIAPI AIErr (*ReadProc) ( struct _t_AIPluginStream* stream, char* buffer, size_t* count );
00083 AIAPI AIErr (*WriteProc) ( struct _t_AIPluginStream* stream, const char* buffer, size_t count );
00088 AIAPI AIErr (*SeekProc) ( struct _t_AIPluginStream* stream, ai::sizediff_t count );
00093 AIAPI AIErr (*MarkProc) ( struct _t_AIPluginStream* stream, ai::sizediff_t *count );
00097 AIAPI AIErr (*TerminateProc) ( struct _t_AIPluginStream* stream );
00098 } AIPluginStream;
00099
00100
00101
00102
00103
00104
00105
00106
00156 struct AIDataFilterSuite {
00157
00165 AIAPI AIErr (*LinkDataFilter) ( AIDataFilter *prev, AIDataFilter *next );
00166
00173 AIAPI AIErr (*UnlinkDataFilter) ( AIDataFilter *next, AIDataFilter **prev );
00174
00182 AIAPI AIErr (*ReadDataFilter) ( AIDataFilter *filter, char *store, size_t *count );
00183
00189 AIAPI AIErr (*WriteDataFilter) ( AIDataFilter *filter, const char *store, size_t *count );
00190
00196 AIAPI AIErr (*SeekDataFilter) ( AIDataFilter *filter, ai::sizediff_t *count );
00197
00203 AIAPI AIErr (*MarkDataFilter) ( AIDataFilter *filter, ai::sizediff_t *count );
00204
00213 AIAPI AIErr (*NewFileDataFilter) ( const ai::FilePath &spec, const char *mode, size_t creator, ai::int32 type, AIDataFilter **filter );
00214
00220 AIAPI AIErr (*NewBufferDataFilter) ( size_t size, AIDataFilter **filter );
00221
00234 AIAPI AIErr (*NewHexdecDataFilter) ( const char *state, ai::int32 shift, AIDataFilter **filter );
00235
00242 AIAPI AIErr (*NewBlockDataFilter) ( void *address, size_t size, AIDataFilter **filter );
00243
00251 AIAPI AIErr (*NewVMDataFilter) (size_t initialsize, AIDataFilter **filter );
00252
00264 AIAPI AIErr (*NewA85DataFilter) ( const char *statestr, const char* prefix, AIDataFilter **filter );
00265
00273 AIAPI AIErr (*NewZDataFilter) ( const char *statestr, AIDataFilter **filter );
00274
00282 AIAPI AIErr (*NewZStdDataFilter) ( const char *statestr, AIDataFilter **filter );
00283
00291 AIAPI AIErr (*NewPluginStream) ( AIPluginStream* stream, AIDataFilter **filter );
00292
00303 AIAPI AIErr (*NewResourceDataFilter) ( SPPluginRef plugin, ai::int32 type, ai::int32 id, const char *name, AIDataFilter **filter);
00304
00317 AIAPI AIErr (*NewAsyncDataFilter) (const char *statestr, AIDataFilter *asyncFilter, const ai::uint32 prefetchSize, const ai::uint32 outputSize, AIDataFilter **filter);
00318 };
00319
00320
00321 #include "AIHeaderEnd.h"
00322