#include "le_object_page_table.hpp" #include "parse.hpp" #include "output.hpp" #include #include BOOST_FUSION_ADAPT_STRUCT( le::ObjectPageTable::Entry, (binparse::Value16, high) (binparse::Value8, low) (binparse::Value8, flags) ) namespace le { ObjectPageTable::Entry parse_object_page_table_entry(std::istream& is) { return binparse::parse(is); } std::ostream& operator<<(std::ostream& os, ObjectPageTable::Entry const& entry) { return binparse::operator<<(os, entry); } ObjectPageTable parse_object_page_table(std::istream& is, binparse::Offset32 offset, binparse::Value32 nr_pages) { is.seekg(0, std::ios::beg); is.ignore(offset); ObjectPageTable table; for(binparse::Value32 i = binparse::Value32(0); i < nr_pages; i++) { table.entries.emplace(i+1, parse_object_page_table_entry(is)); } return table; } std::ostream&operator<<(std::ostream& os, const ObjectPageTable& table) { return binparse::operator<<(os, table.entries); } }