aboutsummaryrefslogtreecommitdiff
path: root/src/archive.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/archive.cc')
-rw-r--r--src/archive.cc26
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);
+}
+
+}