00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef VFILE__H
00023 #define VFILE__H
00024
00025 #include "basetype.h"
00026 #include "vfile.h"
00027
00028 typedef void * (GENESISCC *geVFile_FinderCreateFN)(geVFile *FileSystem, void *Handle, const char *FileSpec);
00029 typedef geBoolean (GENESISCC *geVFile_FinderGetNextFileFN)(void *Handle);
00030 typedef geBoolean (GENESISCC *geVFile_FinderGetPropertiesFN)(void *Handle, geVFile_Properties *Properties);
00031 typedef void (GENESISCC *geVFile_FinderDestroyFN)(void *Handle);
00032
00033 typedef void * (GENESISCC *geVFile_OpenNewSystemFN)(geVFile *FS,
00034 const char *Name,
00035 void * Context,
00036 unsigned int OpenModeFlags);
00037
00038 typedef geBoolean (GENESISCC *geVFile_UpdateContextFN)(geVFile *FS, void *Handle, void *Context, int ContextSize);
00039
00040 typedef void * (GENESISCC *geVFile_OpenFN)(geVFile *FS,
00041 void *Handle,
00042 const char *Name,
00043 void * Context,
00044 unsigned int OpenModeFlags);
00045
00046 typedef geBoolean (GENESISCC *geVFile_DeleteFileFN)(geVFile *FS, void *Handle, const char *FileName);
00047 typedef geBoolean (GENESISCC *geVFile_RenameFileFN)(geVFile *FS, void *Handle, const char *FileName, const char *NewFileName);
00048 typedef geBoolean (GENESISCC *geVFile_FileExistsFN)(geVFile *FS, void *Handle, const char *FileName);
00049 typedef geBoolean (GENESISCC *geVFile_DisperseFN)(geVFile *FS, void *Handle, const char *Directory, geBoolean Recursive);
00050 typedef void (GENESISCC *geVFile_CloseFN)(void *Handle);
00051
00052 typedef geBoolean (GENESISCC *geVFile_GetSFN)(void *Handle, void *Buff, int MaxSize);
00053 typedef geBoolean (GENESISCC *geVFile_ReadFN)(void *Handle, void *Buff, int Count);
00054 typedef geBoolean (GENESISCC *geVFile_WriteFN)(void *Handle, const void *Buff, int Count);
00055 typedef geBoolean (GENESISCC *geVFile_SeekFN)(void *Handle, int Where, geVFile_Whence Whence);
00056 typedef geBoolean (GENESISCC *geVFile_EOFFN)(const void *Handle);
00057 typedef geBoolean (GENESISCC *geVFile_TellFN)(const void *Handle, long *Position);
00058 typedef geBoolean (GENESISCC *geVFile_GetPropertiesFN)(const void *Handle, geVFile_Properties *Properties);
00059
00060 typedef geBoolean (GENESISCC *geVFile_SizeFN)(const void *Handle, long *Size);
00061 typedef geBoolean (GENESISCC *geVFile_SetSizeFN)(void *Handle, long Size);
00062 typedef geBoolean (GENESISCC *geVFile_SetAttributesFN)(void *Handle, geVFile_Attributes Attributes);
00063 typedef geBoolean (GENESISCC *geVFile_SetTimeFN)(void *Handle, const geVFile_Time *Time);
00064 typedef geBoolean (GENESISCC *geVFile_SetHintsFN)(void *Handle, const geVFile_Hints *Hints);
00065
00066 typedef struct geVFile_SystemAPIs
00067 {
00068 geVFile_FinderCreateFN FinderCreate;
00069 geVFile_FinderGetNextFileFN FinderGetNextFile;
00070 geVFile_FinderGetPropertiesFN FinderGetProperties;
00071 geVFile_FinderDestroyFN FinderDestroy;
00072
00073 geVFile_OpenNewSystemFN OpenNewSystem;
00074 geVFile_UpdateContextFN UpdateContext;
00075 geVFile_OpenFN Open;
00076 geVFile_DeleteFileFN DeleteFile;
00077 geVFile_RenameFileFN RenameFile;
00078 geVFile_FileExistsFN FileExists;
00079 geVFile_DisperseFN Disperse;
00080 geVFile_CloseFN Close;
00081
00082 geVFile_GetSFN GetS;
00083 geVFile_ReadFN Read;
00084 geVFile_WriteFN Write;
00085 geVFile_SeekFN Seek;
00086 geVFile_EOFFN Eof;
00087 geVFile_TellFN Tell;
00088 geVFile_SizeFN Size;
00089
00090 geVFile_GetPropertiesFN GetProperties;
00091
00092 geVFile_SetSizeFN SetSize;
00093 geVFile_SetAttributesFN SetAttributes;
00094 geVFile_SetTimeFN SetTime;
00095 geVFile_SetHintsFN SetHints;
00096 } geVFile_SystemAPIs;
00097
00098 geBoolean GENESISCC VFile_RegisterFileSystem(
00099 const geVFile_SystemAPIs * APIs,
00100 geVFile_TypeIdentifier * Type);
00101
00102 #endif
00103