#pragma once struct __declspec(novtable) IFile { virtual ~IFile() {}; virtual char* get_Buffer() = 0; virtual unsigned int get_BufferLength() = 0; virtual void SaveAs(string16 argFileName) = 0; virtual std::string ReadString() = 0; virtual float ReadFloat() = 0; virtual int ReadInt() = 0; virtual void* ReadDataArray(unsigned int argBytes) = 0; virtual void RewindFilePointer() = 0; virtual char* get_FilePointer() const = 0; virtual void set_FilePointer(char* ac_Position_) = 0; virtual bool IsEof() const = 0; virtual string16 get_FileName() const = 0; }; struct __declspec(novtable) IFileSystem { virtual ~IFileSystem() {}; virtual void InitializeFromDirectory(string16 argDirectory = L"data") = 0; virtual void InitializeFromZipFile(string16 argZipFile = L"data.pak") = 0; virtual IFile* Open(string16 argFileName) = 0; };