#ifndef _interface__disassembler__hpp__included__ #define _interface__disassembler__hpp__included__ #include #include #include #include class disassembler { public: disassembler(const std::string& name); virtual ~disassembler(); virtual std::string disassemble(uint64_t base, std::function fetchpc) = 0; static disassembler& byname(const std::string& name); static std::set list(); template static T fetch_le(std::function fetchpc); template static T fetch_be(std::function fetchpc); private: std::string name; static std::map& disasms(); }; #endif