#pragma once #include "le_fixup_page_table.hpp" #include "types.hpp" #include "variant_output_helper.hpp" //include this before #include #include #include #include #include namespace le { using namespace binparse; struct FixupRecordTable { struct Entry { struct Internal { boost::variant object_number; boost::variant target_offset; }; struct ImportedOrdinal { boost::variant ordinal_number; }; struct ImportedName { boost::variant ordinal_number; boost::variant procedure_name_offset; }; struct InternalEntry { boost::variant entry_number; }; Value8 source_flags; Value8 target_flags; boost::variant source_offset_or_source_list_count; boost::variant data; boost::optional, std::vector>>> additive; boost::optional> sources; }; std::map> entries; }; FixupRecordTable::Entry parse(std::istream& is); FixupRecordTable parse_fixup_record_table(std::istream& is, Offset32 offset, FixupPageTable fixups); std::ostream& operator<<(std::ostream& os, FixupRecordTable const& table); }