#pragma once #include #include #include #include #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); std::optional decompose(); std::uintptr_t compose(const std::string&& entry_sym); std::uintptr_t resolve(const std::string&& sym); private: decomp::decomp_t m_dcmp; comp::comp_t m_cmp; comp::symbol_table_t m_sym_tbl; }; } // namespace theo