iw4x-client/src/Components/Modules/FileSystem.hpp
/dev/root 124e86387b [General] Fixed line endings
- converted all line endings in cpp/hpp files to dos
2016-11-25 13:00:48 +01:00

86 lines
1.9 KiB
C++

namespace Components
{
class FileSystem : public Component
{
public:
class File
{
public:
File() {};
File(std::string file) : filePath(file) { this->read(); };
bool exists() { return !this->buffer.empty(); };
std::string getName() { return this->filePath; };
std::string& getBuffer() { return this->buffer; };
private:
std::string filePath;
std::string buffer;
void read();
};
class FileReader
{
public:
FileReader() : size(-1), name(), handle(0) {};
FileReader(std::string file);
~FileReader();
bool exists();
std::string getName();
std::string getBuffer();
int getSize();
bool read(void* buffer, size_t size);
void seek(int offset, int origin);
private:
int handle;
int size;
std::string name;
};
class FileWriter
{
public:
FileWriter(std::string file) : filePath(file), handle(0) { this->open(); };
~FileWriter() { this->close(); };
void write(std::string data);
private:
int handle;
std::string filePath;
void open();
void close();
};
FileSystem();
~FileSystem();
#if defined(DEBUG) || defined(FORCE_UNIT_TESTS)
const char* getName() { return "FileSystem"; };
#endif
static std::vector<std::string> GetFileList(std::string path, std::string extension);
static std::vector<std::string> GetSysFileList(std::string path, std::string extension, bool folders = false);
static void DeleteFile(std::string folder, std::string file);
private:
static std::mutex Mutex;
static Utils::Memory::Allocator MemAllocator;
static int ReadFile(const char* path, char** buffer);
static char* AllocateFile(int size);
static void FreeFile(void* buffer);
static void RegisterFolder(const char* folder);
static void RegisterFolders();
static void StartupStub();
static int ExecIsFSStub(const char* execFilename);
};
}