#pragma once #include "stdafx.h" #include class VirtualFile { private: string _path = ""; string _innerFile = ""; int32_t _innerFileIndex = -1; vector _data; void FromStream(std::istream &input, vector &output); void LoadFile(); public: static const std::initializer_list RomExtensions; VirtualFile(); VirtualFile(const string &archivePath, const string innerFile); VirtualFile(const string &file); VirtualFile(const void *buffer, size_t bufferSize, string fileName = "noname"); VirtualFile(std::istream &input, string filePath); operator std::string() const; bool IsValid(); string GetFilePath(); string GetFolderPath(); string GetFileName(); string GetSha1Hash(); bool ReadFile(vector &out); bool ReadFile(std::stringstream &out); bool ApplyPatch(VirtualFile &patch); };