1
0
Fork 0
mirror of https://github.com/AquariaOSE/Aquaria.git synced 2024-11-15 22:19:07 +00:00
Aquaria/ExternalLibs/ttvfs_zip/VFSFileZip.h

39 lines
909 B
C++

#ifndef VFSFILE_ZIP_H
#define VFSFILE_ZIP_H
#include "VFSFile.h"
#include "VFSZipArchiveRef.h"
VFS_NAMESPACE_START
class ZipFile : public File
{
public:
ZipFile(const char *name, ZipArchiveRef *zref, unsigned int fileIdx);
virtual ~ZipFile();
virtual bool open(const char *mode = NULL);
virtual bool isopen() const;
virtual bool iseof() const;
virtual void close();
virtual bool seek(vfspos pos, int whence);
virtual bool flush();
virtual vfspos getpos() const;
virtual size_t read(void *dst, size_t bytes);
virtual size_t write(const void *src, size_t bytes);
virtual vfspos size();
virtual const char *getType() const { return "ZipFile"; }
protected:
bool unpack();
char *_buf;
vfspos _pos;
CountedPtr<ZipArchiveRef> _archiveHandle;
vfspos _bufSize;
unsigned int _fileIdx;
std::string _mode;
};
VFS_NAMESPACE_END
#endif