#pragma once #include "types.hpp" #include "mz_header.hpp" #include "le_header.hpp" #include "le_object_table.hpp" #include "le_object_page_table.hpp" #include "le_resident_name_table.hpp" #include "le_entry_table.hpp" #include #include #include #include #include namespace le { using binparse::Value16; using binparse::Offset32; struct File { mz::Header mz_header; std::array unused_1; Value16 OEM_id; std::array OEM_info; Offset32 le_offset; std::vector dos_exe; Header le_header; ObjectTable object_table; ObjectPageTable object_page_table; ResidentNameTable resident_name_table; EntryTable entry_table; }; File parse_file(std::istream& is); std::ostream& operator<<(std::ostream& os, File const& file); }