#pragma once #include #include #include #include #include #include class GSLArchive { public: GSLArchive(std::shared_ptr data, bool big_endian); ~GSLArchive() = default; struct Entry { uint64_t offset; uint32_t size; }; const std::unordered_map all_entries() const; std::pair get(const std::string& name) const; std::string get_copy(const std::string& name) const; StringReader get_reader(const std::string& name) const; static std::string generate(const std::unordered_map& files, bool big_endian); private: template void load_t(); template static std::string generate_t(const std::unordered_map& files); std::shared_ptr data; std::unordered_map entries; };