#include "le_object_table.hpp" #include "output.hpp" #include "parse.hpp" #include #include BOOST_FUSION_ADAPT_STRUCT( le::ObjectTable::Entry, (binparse::Value32, virtual_size) (binparse::Offset32, reloc_base_address) (binparse::Value32, object_flags) (binparse::Value32, page_table_index) (binparse::Value32, nr_page_table_entries) (binparse::Value32, reserved) ) namespace le { ObjectTable::Entry parse_object_table_entry(std::istream& is) { return parse(is); } std::ostream& operator<<(std::ostream& os, ObjectTable::Entry const& entry) { return binparse::operator<<(os, entry); } ObjectTable parse_object_table(std::istream& is, Offset32 offset, Value32 nr_objects) { is.seekg(0, std::ios::beg); is.ignore(offset); ObjectTable table; for(Value32 i = Value32(0); i < nr_objects; i++) { table.entries.emplace(i+1, parse_object_table_entry(is)); } return table; } std::ostream& operator<<(std::ostream& os, const ObjectTable& table) { return binparse::operator<<(os, table.entries); } }