#include "le_resource_table.hpp" #include "parse.hpp" #include "output.hpp" #include BOOST_FUSION_ADAPT_STRUCT( le::ResourceTable::Entry, (binparse::Value16, type_id) (binparse::Value16, name_id) (binparse::Value32, resource_size) (binparse::Value16, object_index) (binparse::Offset32, offset) ) BOOST_FUSION_ADAPT_STRUCT( le::ResourceTable, (std::vector, entries) ) namespace le { ResourceTable::Entry parse_resource_table_entry(std::istream& is) { return binparse::parse(is); } ResourceTable parse_resource_table(std::istream& is, binparse::Offset32 offset, binparse::Value32 nr_entries) { is.seekg(offset, std::ios::beg); ResourceTable table; for(binparse::Value32 i = binparse::Value32(0); i < nr_entries; i++) { table.entries.push_back(parse_resource_table_entry(is)); } return table; } std::ostream&operator<<(std::ostream& os, const ResourceTable::Entry& entry) { return binparse::operator<<(os, entry); } std::ostream&operator<<(std::ostream& os, const ResourceTable& table) { return binparse::operator<<(os, table.entries); } }