Mesen-SX/Utilities/VirtualFile.h

41 lines
921 B
C
Raw Normal View History

2019-02-13 14:10:36 -05:00
#pragma once
#include "stdafx.h"
#include <sstream>
class VirtualFile
{
private:
string _path = "";
string _innerFile = "";
int32_t _innerFileIndex = -1;
vector<uint8_t> _data;
void FromStream(std::istream &input, vector<uint8_t> &output);
2019-02-13 14:10:36 -05:00
void LoadFile();
public:
static const std::initializer_list<string> 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);
2019-02-13 14:10:36 -05:00
operator std::string() const;
2019-02-13 14:10:36 -05:00
bool IsValid();
string GetFilePath();
string GetFolderPath();
string GetFileName();
string GetSha1Hash();
size_t GetSize();
bool ReadFile(vector<uint8_t> &out);
bool ReadFile(std::stringstream &out);
2019-07-16 00:11:23 -04:00
bool ReadFile(uint8_t* out, uint32_t expectedSize);
2019-02-13 14:10:36 -05:00
bool ApplyPatch(VirtualFile &patch);
};