diff options
Diffstat (limited to 'ArchiveEx/Archive.h')
-rw-r--r-- | ArchiveEx/Archive.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/ArchiveEx/Archive.h b/ArchiveEx/Archive.h new file mode 100644 index 0000000..cc06dc4 --- /dev/null +++ b/ArchiveEx/Archive.h @@ -0,0 +1,51 @@ +#pragma once + +#include <cstddef> +#include <cstdint> +#include <vector> + + +namespace Archive +{ + + +static constexpr std::uint32_t VERSION {0x0010}; +static constexpr std::size_t BLOCK_SIZE {1024}; +static constexpr std::size_t NAMELEN {64}; + + +struct Header +{ + std::uint32_t version; + std::uint32_t total_entries; + struct { + std::uint32_t total_blocks; + std::uint32_t compressed_size; + std::uint32_t offset; + } directory; +}; + + +struct Entry +{ + char name[NAMELEN]; + std::uint32_t original_size; + std::uint32_t compressed_size; + std::uint32_t offset; +}; + + +class Archive +{ +public: + explicit Archive(const char* path); + void PrintNamesOfEntries() const; + std::size_t DirectoryBlocks() const; +private: + const char* path; + Header header; + std::vector<Entry> entries; +}; + + +} // namespace Archive |