// license:BSD-3-Clause // copyright-holders:Aaron Giles /*************************************************************************** didisasm.h Device disassembly interfaces. ***************************************************************************/ #ifndef MAME_EMU_DIDISASM_H #define MAME_EMU_DIDISASM_H #pragma once #include "disasmintf.h" #include #include //************************************************************************** // TYPE DEFINITIONS //************************************************************************** typedef device_delegate dasm_override_delegate; // ======================> device_disasm_interface // class representing interface-specific live disasm class device_disasm_interface : public device_interface { public: // construction/destruction device_disasm_interface(const machine_config &mconfig, device_t &device); virtual ~device_disasm_interface() = default; // Override template void set_dasm_override(T &&... args) { m_dasm_override.set(std::forward(args)...); } // disassembler request util::disasm_interface &get_disassembler(); protected: // disassembler creation virtual std::unique_ptr create_disassembler() = 0; // delegate resolving virtual void interface_pre_start() override; private: std::unique_ptr m_disasm; dasm_override_delegate m_dasm_override; bool m_started; }; // iterator typedef device_interface_enumerator disasm_interface_enumerator; #endif // MAME_EMU_DIDISASM_H