#pragma once #include "stdafx.h" class ArchiveReader { protected: bool _initialized = false; uint8_t* _buffer = nullptr; virtual bool InternalLoadArchive(void* buffer, size_t size) = 0; virtual vector InternalGetFileList() = 0; public: ~ArchiveReader(); bool LoadArchive(void* buffer, size_t size); bool LoadArchive(vector& data); bool LoadArchive(string filename); bool LoadArchive(std::istream &in); bool GetStream(string filename, std::stringstream &stream); vector GetFileList(std::initializer_list extensions = {}); bool CheckFile(string filename); virtual bool ExtractFile(string filename, vector &output) = 0; static shared_ptr GetReader(std::istream &in); static shared_ptr GetReader(string filepath); };