00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __IUTIL_VFS_H__
00021 #define __IUTIL_VFS_H__
00022
00023 #include "csutil/scf.h"
00024 #include "iutil/databuff.h"
00025
00026
00027 struct iStrVector;
00028
00033 struct csFileTime
00034 {
00035 int sec;
00036 int min;
00037 int hour;
00038 int day;
00039 int mon;
00040 int year;
00041 };
00042
00044 #define ASSIGN_FILETIME(ft,tm) \
00045 (ft).sec = (tm).tm_sec; \
00046 (ft).min = (tm).tm_min; \
00047 (ft).hour = (tm).tm_hour; \
00048 (ft).day = (tm).tm_mday; \
00049 (ft).mon = (tm).tm_mon; \
00050 (ft).year = (tm).tm_year + 1900;
00051
00053 #define VFS_PATH_DIVIDER ','
00054
00055 #define VFS_PATH_SEPARATOR '/'
00056
00057 #define VFS_MAX_PATH_LEN 256
00058
00060 #define VFS_FILE_MODE 0x0000000f
00061
00062 #define VFS_FILE_READ 0x00000000
00063
00064 #define VFS_FILE_WRITE 0x00000001
00065
00066 #define VFS_FILE_UNCOMPRESSED 0x80000000
00067
00069 #define VFS_STATUS_OK 0
00070
00071 #define VFS_STATUS_OTHER 1
00072
00073 #define VFS_STATUS_NOSPACE 2
00074
00075 #define VFS_STATUS_RESOURCES 3
00076
00077 #define VFS_STATUS_ACCESSDENIED 4
00078
00079 #define VFS_STATUS_IOERROR 5
00080
00081 SCF_VERSION (iFile, 0, 0, 1);
00082
00084 struct iFile : public iBase
00085 {
00087 virtual const char *GetName () = 0;
00089 virtual size_t GetSize () = 0;
00091 virtual int GetStatus () = 0;
00092
00094 virtual size_t Read (char *Data, size_t DataSize) = 0;
00096 virtual size_t Write (const char *Data, size_t DataSize) = 0;
00098 virtual bool AtEOF () = 0;
00100 virtual size_t GetPos () = 0;
00101
00106 virtual iDataBuffer *GetAllData () = 0;
00107 };
00108
00109
00110 SCF_VERSION (iVFS, 0, 0, 4);
00111
00136 struct iVFS : public iBase
00137 {
00139 virtual bool ChDir (const char *Path) = 0;
00141 virtual const char *GetCwd () const = 0;
00142
00144 virtual void PushDir () = 0;
00146 virtual bool PopDir () = 0;
00147
00153 virtual iDataBuffer *ExpandPath (
00154 const char *Path, bool IsDir = false) const = 0;
00155
00157 virtual bool Exists (const char *Path) const = 0;
00158
00163 virtual iStrVector *FindFiles (const char *Path) const = 0;
00165 virtual iFile *Open (const char *FileName, int Mode) = 0;
00173 virtual iDataBuffer *ReadFile (const char *FileName) = 0;
00175 virtual bool WriteFile (const char *Name, const char *Data, size_t Size) = 0;
00176
00178 virtual bool DeleteFile (const char *FileName) = 0;
00179
00181 virtual bool Sync () = 0;
00182
00184 virtual bool Mount (const char *VirtualPath, const char *RealPath) = 0;
00186 virtual bool Unmount (const char *VirtualPath, const char *RealPath) = 0;
00187
00189 virtual bool SaveMounts (const char *FileName) = 0;
00190
00192 virtual bool GetFileTime (const char *FileName, csFileTime &oTime) const = 0;
00194 virtual bool SetFileTime (const char *FileName, const csFileTime &iTime) = 0;
00195
00197 virtual bool GetFileSize (const char *FileName, size_t &oSize) = 0;
00198
00205 virtual iDataBuffer *GetRealPath (const char *FileName) = 0;
00206 };
00207
00208 #endif // __IUTIL_VFS_H__
00209