1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
#ifndef __VFS_HANDLER_H
#define __VFS_HANDLER_H
#include <map>
#include <string>
#include <vector>
class CArchiveBase;
class CVFSHandler
{
public:
CVFSHandler();
virtual ~CVFSHandler();
int LoadFile(const std::string& name, void* buffer);
int GetFileSize(const std::string& name);
std::vector<std::string> GetFilesInDir(const std::string& dir);
std::vector<std::string> GetDirsInDir(const std::string& dir);
/**
* Override determines whether if conflicts overwrites
* an existing entry in the virtual filesystem or not
*/
bool AddArchive(const std::string& arName, bool override,
const std::string& type = "");
bool AddMapArchiveWithDeps(const std::string& mapName, bool override, const std::string& type = "");
/**
* Returns true if the archive is not loaded,
* so it may was not loaded in the first place or was unloaded
* successfully.
*/
bool RemoveArchive(const std::string& arName);
protected:
struct FileData {
CArchiveBase *ar;
int size;
bool dynamic;
};
std::map<std::string, FileData> files;
std::map<std::string, CArchiveBase*> archives;
};
extern CVFSHandler* vfsHandler;
#endif // __VFS_HANDLER_H
|