diff options
Diffstat (limited to 'src/archive.cc')
-rw-r--r-- | src/archive.cc | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/archive.cc b/src/archive.cc new file mode 100644 index 0000000..6a97bdf --- /dev/null +++ b/src/archive.cc @@ -0,0 +1,26 @@ +#include "archive.h" + +#include "istream/stream.h" + +namespace dictzip { + +ArchiveFile::ArchiveFile(const std::string& path): + path_(path) { } + +std::string ArchiveFile::get(std::size_t offset, std::size_t length) const { + Istream stream(this->path_.c_str()); + + std::string result; + result.resize(length); + + stream.seekg(offset); + stream.read(&result[0], length); + + return result; +} + +std::string ArchiveFile::get(const IndexFile::Entry& entry) const { + return this->get(entry.offset, entry.length); +} + +} |