#pragma once #include #include #include #include #include #include #include #include #include #include #include #define XED_ENCODER extern "C" { #include #include } namespace theo { using lnk_fns_t = std::tuple; class theo_t { public: explicit theo_t(std::vector& lib, lnk_fns_t lnkr_fns, const std::string&& entry_sym); std::optional decompose(); std::uintptr_t compose(); std::uintptr_t resolve(const std::string&& sym); private: std::string m_entry_sym; decomp::decomp_t m_dcmp; recomp::recomp_t m_recmp; recomp::symbol_table_t m_sym_tbl; }; } // namespace theo