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"
47 #ifdef GetDiskFreeSpace
48 #undef GetDiskFreeSpace
58 virtual int Seek(
vsi_l_offset nOffset,
int nWhence ) = 0;
60 virtual size_t Read(
void *pBuffer,
size_t nSize,
size_t nCount ) = 0;
61 virtual int ReadMultiRange(
int nRanges,
void ** ppData,
63 const size_t* panSizes );
64 virtual size_t Write(
const void *pBuffer,
size_t nSize,
size_t nCount)=0;
65 virtual int Eof() = 0;
67 virtual int Close() = 0;
90 const char *pszAccess );
93 const char *pszAccess,
95 virtual int Stat(
const char *pszFilename,
VSIStatBufL *pStatBuf,
int nFlags) = 0;
96 virtual int Unlink(
const char *pszFilename )
97 { (void) pszFilename; errno=ENOENT;
return -1; }
98 virtual int Mkdir(
const char *pszDirname,
long nMode )
99 {(void)pszDirname; (void)nMode; errno=ENOENT;
return -1;}
100 virtual int Rmdir(
const char *pszDirname )
101 { (void) pszDirname; errno=ENOENT;
return -1; }
102 virtual char **ReadDir(
const char *pszDirname )
103 { (void) pszDirname;
return NULL; }
104 virtual char **ReadDirEx(
const char *pszDirname,
int )
105 {
return ReadDir(pszDirname); }
106 virtual int Rename(
const char *oldpath,
const char *newpath )
107 { (void) oldpath; (void)newpath; errno=ENOENT;
return -1; }
108 virtual int IsCaseSensitive(
const char* pszFilename )
109 { (void) pszFilename;
return TRUE; }
110 virtual GIntBig GetDiskFreeSpace(
const char* ) {
return -1; }
111 virtual int SupportsSparseFiles(
const char* ) {
return FALSE; }
124 std::map<std::string, VSIFilesystemHandler *> oHandlers;
134 static void InstallHandler(
const std::string& osPrefix,
181 virtual int GotoFirstFile() = 0;
182 virtual int GotoNextFile() = 0;
185 virtual CPLString GetFileName() = 0;
186 virtual GIntBig GetModifiedTime() = 0;
197 std::map<CPLString,VSIArchiveContent*> oFileList;
199 virtual const char* GetPrefix() = 0;
200 virtual std::vector<CPLString> GetExtensions() = 0;
207 virtual int Stat(
const char *pszFilename,
VSIStatBufL *pStatBuf,
int nFlags ) CPL_OVERRIDE;
208 virtual int Unlink(
const char *pszFilename ) CPL_OVERRIDE;
209 virtual int Rename(
const char *oldpath,
const char *newpath ) CPL_OVERRIDE;
210 virtual int Mkdir(
const char *pszDirname,
long nMode ) CPL_OVERRIDE;
211 virtual int Rmdir(
const char *pszDirname ) CPL_OVERRIDE;
212 virtual char **ReadDirEx(
const char *pszDirname,
int nMaxFiles ) CPL_OVERRIDE;
215 virtual char* SplitFilename(
const char *pszFilename, CPLString &osFileInArchive,
int bCheckMainFileExists);
216 virtual VSIArchiveReader* OpenArchiveFile(
const char* archiveFilename,
const char* fileInArchiveName);
217 virtual int FindFileInArchive(
const char* archiveFilename,
const char* fileInArchiveName,
const VSIArchiveEntry** archiveEntry);
224 const GByte* pabyBeginningContent,
VSIRangeStatus
Definition: cpl_vsi.h:173
Definition: cpl_vsi_virtual.h:83
Definition: cpl_vsi_virtual.h:190
unsigned char GByte
Definition: cpl_port.h:207
Definition: cpl_vsi_virtual.h:56
virtual void * GetNativeFileDescriptor()
Returns the "native" file descriptor for the virtual handle.
Definition: cpl_vsi_virtual.h:70
Definition: cpl_vsi_virtual.h:164
struct VSI_STAT64_T VSIStatBufL
Definition: cpl_vsi.h:190
Definition: cpl_vsi.h:175
unsigned long long GUIntBig
Definition: cpl_port.h:253
Definition: cpl_vsi_virtual.h:155
Definition: cpl_vsi_virtual.h:176
#define CPL_UNUSED
Definition: cpl_port.h:1008
GUIntBig vsi_l_offset
Definition: cpl_vsi.h:138
Definition: cpl_vsi_virtual.h:120
long long GIntBig
Definition: cpl_port.h:250
Definition: cpl_vsi_virtual.h:149
virtual int Flush()
Flush pending writes to disk.
Definition: cpl_vsi_virtual.h:66
virtual VSIRangeStatus GetRangeStatus(CPL_UNUSED vsi_l_offset nOffset, CPL_UNUSED vsi_l_offset nLength)
Return if a given file range contains data or holes filled with zeroes.
Definition: cpl_vsi_virtual.h:71