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