From c7a82e67007aecb46315780b53a691a519d90513 Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Sat, 7 Oct 2017 16:57:15 +0200 Subject: Introduce ArchiveFile class --- src/archive.cc | 26 ++++++++++++++++++++++++++ src/archive.h | 19 +++++++++++++++++++ src/index.cc | 4 +++- 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 src/archive.cc create mode 100644 src/archive.h (limited to 'src') 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); +} + +} diff --git a/src/archive.h b/src/archive.h new file mode 100644 index 0000000..fcf19b7 --- /dev/null +++ b/src/archive.h @@ -0,0 +1,19 @@ +#pragma once + +#include "index.h" + +namespace dictzip { + +class ArchiveFile { +public: + ArchiveFile(const std::string& path); + + std::string get(std::size_t offset, std::size_t length) const; + std::string get(const IndexFile::Entry& entry) const; + +private: + const std::string path_; + +}; + +} diff --git a/src/index.cc b/src/index.cc index c8dc6de..b22ae05 100644 --- a/src/index.cc +++ b/src/index.cc @@ -5,7 +5,6 @@ #include - namespace dictzip { IndexFile::Entry parse_from_line(const std::string& line) { @@ -13,8 +12,11 @@ IndexFile::Entry parse_from_line(const std::string& line) { const std::size_t end = line.find_last_of('\t'); return IndexFile::Entry( + // word line.substr(0, start), + // offset base64_decode(line.substr(start + 1, end - (start + 1))), + // length base64_decode(line.substr(end + 1))); } -- cgit v1.2.3