mirror of
https://github.com/AquariaOSE/Aquaria.git
synced 2024-12-27 07:06:00 +00:00
41 lines
1.1 KiB
C++
41 lines
1.1 KiB
C++
#ifndef VFSFILE_ZIP_H
|
|
#define VFSFILE_ZIP_H
|
|
|
|
#include "VFSFile.h"
|
|
#include "miniz.h"
|
|
|
|
VFS_NAMESPACE_START
|
|
|
|
class VFSFileZip : public VFSFile
|
|
{
|
|
public:
|
|
VFSFileZip(mz_zip_archive *zip);
|
|
virtual ~VFSFileZip();
|
|
virtual bool open(const char *mode = NULL);
|
|
virtual bool isopen(void) const;
|
|
virtual bool iseof(void) const;
|
|
virtual bool close(void);
|
|
virtual bool seek(vfspos pos);
|
|
virtual bool flush(void);
|
|
virtual vfspos getpos(void) const;
|
|
virtual unsigned int read(void *dst, unsigned int bytes);
|
|
virtual unsigned int write(const void *src, unsigned int bytes);
|
|
virtual vfspos size(void);
|
|
virtual const void *getBuf(allocator_func alloc = NULL, delete_func del = NULL);
|
|
virtual void dropBuf(bool del);
|
|
virtual const char *getType(void) const { return "Zip"; }
|
|
|
|
inline mz_zip_archive_file_stat *getZipFileStat(void) { return &_zipstat; }
|
|
void _init();
|
|
|
|
protected:
|
|
unsigned int _pos;
|
|
std::string _mode;
|
|
mz_zip_archive_file_stat _zipstat;
|
|
mz_zip_archive *_zip;
|
|
char *_fixedStr; // for \n fixed string in text mode. cleared when mode is changed
|
|
};
|
|
|
|
VFS_NAMESPACE_END
|
|
|
|
#endif
|