#pragma once #include #include namespace theo::comp { using resolve_t = std::function; using copy_t = std::function; using alloc_t = std::function; class comp_t { public: explicit comp_t(decomp::decomp_t& dcmp, comp::symbol_table_t syms); explicit comp_t(decomp::decomp_t& dcmp, comp::symbol_table_t syms, alloc_t alloc, copy_t copy, resolve_t resolve); void allocator(alloc_t alloc); void copier(copy_t copy); void resolver(resolve_t resolve); std::uintptr_t resolve(std::string&& sym); private: resolve_t m_resolver; copy_t m_copier; alloc_t m_allocator; }; } // namespace theo::comp