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
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#ifndef _DIR_ARCHIVE_H
#define _DIR_ARCHIVE_H
#include <map>
#include "ArchiveFactory.h"
#include "IArchive.h"
/**
* Creates file-system/dir oriented archives.
* @see CDirArchive
*/
class CDirArchiveFactory : public IArchiveFactory {
public:
CDirArchiveFactory();
private:
IArchive* DoCreateArchive(const std::string& filePath) const;
};
/**
* Archive implementation which falls back to the regular file-system.
* ie. a directory and all its contents are treated as an archive by this
* class.
*/
class CDirArchive : public IArchive
{
public:
CDirArchive(const std::string& archiveName);
virtual ~CDirArchive();
virtual bool IsOpen();
virtual unsigned int NumFiles() const;
virtual bool GetFile(unsigned int fid, std::vector<std::uint8_t>& buffer);
virtual void FileInfo(unsigned int fid, std::string& name, int& size) const;
private:
/// "ExampleArchive.sdd/"
std::string dirName;
std::vector<std::string> searchFiles;
};
#endif // _DIR_ARCHIVE_H
|