34 #ifndef CPL_VSI_VIRTUAL_H_INCLUDED
35 #define CPL_VSI_VIRTUAL_H_INCLUDED
38 #include "cpl_vsi_error.h"
40 #include "cpl_multiproc.h"
52 virtual int Seek( vsi_l_offset nOffset,
int nWhence ) = 0;
53 virtual vsi_l_offset Tell() = 0;
54 virtual size_t Read(
void *pBuffer,
size_t nSize,
size_t nMemb ) = 0;
55 virtual int ReadMultiRange(
int nRanges,
void ** ppData,
const vsi_l_offset* panOffsets,
const size_t* panSizes );
56 virtual size_t Write(
const void *pBuffer,
size_t nSize,
size_t nMemb)=0;
57 virtual int Eof() = 0;
58 virtual int Flush() {
return 0;}
59 virtual int Close() = 0;
60 virtual int Truncate( CPL_UNUSED vsi_l_offset nNewSize ) {
return -1; }
61 virtual void *GetNativeFileDescriptor() {
return NULL; }
76 const char *pszAccess );
79 const char *pszAccess,
81 virtual int Stat(
const char *pszFilename, VSIStatBufL *pStatBuf,
int nFlags) = 0;
82 virtual int Unlink(
const char *pszFilename )
83 { (void) pszFilename; errno=ENOENT;
return -1; }
84 virtual int Mkdir(
const char *pszDirname,
long nMode )
85 {(void)pszDirname; (void)nMode; errno=ENOENT;
return -1;}
86 virtual int Rmdir(
const char *pszDirname )
87 { (void) pszDirname; errno=ENOENT;
return -1; }
88 virtual char **ReadDir(
const char *pszDirname )
89 { (void) pszDirname;
return NULL; }
90 virtual char **ReadDirEx(
const char *pszDirname,
int )
91 {
return ReadDir(pszDirname); }
92 virtual int Rename(
const char *oldpath,
const char *newpath )
93 { (void) oldpath; (void)newpath; errno=ENOENT;
return -1; }
94 virtual int IsCaseSensitive(
const char* pszFilename )
95 { (void) pszFilename;
return TRUE; }
96 virtual GIntBig GetDiskFreeSpace(
const char* ) {
return -1; }
107 std::map<std::string, VSIFilesystemHandler *> oHandlers;
117 static void InstallHandler(
const std::string& osPrefix,
139 vsi_l_offset uncompressed_size;
142 GIntBig nModifiedTime;
149 vsi_l_offset nFileSize;
162 virtual int GotoFirstFile() = 0;
163 virtual int GotoNextFile() = 0;
165 virtual GUIntBig GetFileSize() = 0;
167 virtual GIntBig GetModifiedTime() = 0;
178 std::map<CPLString,VSIArchiveContent*> oFileList;
180 virtual const char* GetPrefix() = 0;
181 virtual std::vector<CPLString> GetExtensions() = 0;
188 virtual int Stat(
const char *pszFilename, VSIStatBufL *pStatBuf,
int nFlags );
189 virtual int Unlink(
const char *pszFilename );
190 virtual int Rename(
const char *oldpath,
const char *newpath );
191 virtual int Mkdir(
const char *pszDirname,
long nMode );
192 virtual int Rmdir(
const char *pszDirname );
193 virtual char **ReadDirEx(
const char *pszDirname,
int nMaxFiles );
196 virtual char* SplitFilename(
const char *pszFilename,
CPLString &osFileInArchive,
int bCheckMainFileExists);
197 virtual VSIArchiveReader* OpenArchiveFile(
const char* archiveFilename,
const char* fileInArchiveName);
198 virtual int FindFileInArchive(
const char* archiveFilename,
const char* fileInArchiveName,
const VSIArchiveEntry** archiveEntry);
203 const GByte* pabyBeginningContent,
204 vsi_l_offset nCheatFileSize);
Definition: cpl_vsi_virtual.h:69
Definition: cpl_vsi_virtual.h:171
Definition: cpl_vsi_virtual.h:50
Convenient string class based on std::string.
Definition: cpl_string.h:283
Definition: cpl_vsi_virtual.h:145
Various convenience functions for working with strings and string lists.
Definition: cpl_vsi_virtual.h:136
Definition: cpl_vsi_virtual.h:157
Definition: cpl_vsi_virtual.h:103
Definition: cpl_vsi_virtual.h:130