diff options
| author | Dennis Brentjes <d.brentjes@gmail.com> | 2016-09-11 22:56:42 +0200 |
|---|---|---|
| committer | Dennis Brentjes <d.brentjes@gmail.com> | 2016-09-11 22:56:42 +0200 |
| commit | c6465bd8c6aca006bc7e980d5db08518659bae3c (patch) | |
| tree | d25a4b697640fd5cb38f000e8b2369525b7ef92b /le/le_pages.cpp | |
| parent | 0828d0bf368d7e0bdc835062aad62bc336047350 (diff) | |
| download | openwar-c6465bd8c6aca006bc7e980d5db08518659bae3c.tar.gz openwar-c6465bd8c6aca006bc7e980d5db08518659bae3c.tar.bz2 openwar-c6465bd8c6aca006bc7e980d5db08518659bae3c.zip | |
Adds a Pages struct to the le::File which contains all pages.
Diffstat (limited to 'le/le_pages.cpp')
| -rw-r--r-- | le/le_pages.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/le/le_pages.cpp b/le/le_pages.cpp new file mode 100644 index 0000000..ed8de86 --- /dev/null +++ b/le/le_pages.cpp @@ -0,0 +1,33 @@ +#include "le_pages.hpp" + +#include "output.hpp" + +#include <algorithm> + +namespace le { + +Pages parse_pages(std::istream& is, binparse::Offset32 offset, binparse::Value32 nr_pages, binparse::Value32 page_size) +{ + Pages pages; + + is.seekg(0, std::ios::beg); + is.ignore(offset); + + for(unsigned int i = 0; i < nr_pages; ++i) { + std::vector<uint8_t> page; + page.reserve(page_size); + + std::copy_n(std::istream_iterator<char>(is), page_size, std::back_inserter(page)); + + pages.map.emplace(i+1, page); + } + + return pages; +} + +std::ostream&operator<<(std::ostream& os, const Pages& table) +{ + return binparse::operator<<(os, table.map); +} + +}
\ No newline at end of file |
