// license:BSD-3-Clause // copyright-holders:Vas Crabb /*************************************************************************** devcb.cpp Device callback interface helpers. ***************************************************************************/ #include "emu.h" #include "devcb.h" template class devcb_read; template class devcb_read; template class devcb_read; template class devcb_read; template class devcb_read; template class devcb_read8::delegate_builder; template class devcb_read8::delegate_builder; template class devcb_read8::delegate_builder; template class devcb_read8::delegate_builder; template class devcb_read8::delegate_builder; template class devcb_read8::delegate_builder; template class devcb_read8::delegate_builder; template class devcb_read8::delegate_builder; template class devcb_read8::delegate_builder; template class devcb_read8::delegate_builder; template class devcb_read8::delegate_builder; template class devcb_read8::delegate_builder; template class devcb_read8::delegate_builder; template class devcb_read8::delegate_builder; template class devcb_read8::delegate_builder; template class devcb_read8::delegate_builder; template class devcb_read8::delegate_builder; template class devcb_read16::delegate_builder; template class devcb_read16::delegate_builder; template class devcb_read16::delegate_builder; template class devcb_read16::delegate_builder; template class devcb_read16::delegate_builder; template class devcb_read16::delegate_builder; template class devcb_read16::delegate_builder; template class devcb_read16::delegate_builder; template class devcb_read16::delegate_builder; template class devcb_read16::delegate_builder; template class devcb_read16::delegate_builder; template class devcb_read16::delegate_builder; template class devcb_read16::delegate_builder; template class devcb_read16::delegate_builder; template class devcb_read16::delegate_builder; template class devcb_read16::delegate_builder; template class devcb_read16::delegate_builder; template class devcb_read32::delegate_builder; template class devcb_read32::delegate_builder; template class devcb_read32::delegate_builder; template class devcb_read32::delegate_builder; template class devcb_read32::delegate_builder; template class devcb_read32::delegate_builder; template class devcb_read32::delegate_builder; template class devcb_read32::delegate_builder; template class devcb_read32::delegate_builder; template class devcb_read32::delegate_builder; template class devcb_read32::delegate_builder; template class devcb_read32::delegate_builder; template class devcb_read32::delegate_builder; template class devcb_read32::delegate_builder; template class devcb_read32::delegate_builder; template class devcb_read32::delegate_builder; template class devcb_read32::delegate_builder; template class devcb_read64::delegate_builder; template class devcb_read64::delegate_builder; template class devcb_read64::delegate_builder; template class devcb_read64::delegate_builder; template class devcb_read64::delegate_builder; template class devcb_read64::delegate_builder; template class devcb_read64::delegate_builder; template class devcb_read64::delegate_builder; template class devcb_read64::delegate_builder; template class devcb_read64::delegate_builder; template class devcb_read64::delegate_builder; template class devcb_read64::delegate_builder; template class devcb_read64::delegate_builder; template class devcb_read64::delegate_builder; template class devcb_read64::delegate_builder; template class devcb_read64::delegate_builder; template class devcb_read64::delegate_builder; template class devcb_read_line::delegate_builder; template class devcb_read_line::delegate_builder; template class devcb_read_line::delegate_builder; template class devcb_read_line::delegate_builder; template class devcb_read_line::delegate_builder; template class devcb_read_line::delegate_builder; template class devcb_read_line::delegate_builder; template class devcb_read_line::delegate_builder; template class devcb_read_line::delegate_builder; template class devcb_read_line::delegate_builder; template class devcb_read_line::delegate_builder; template class devcb_read_line::delegate_builder; template class devcb_read_line::delegate_builder; template class devcb_read_line::delegate_builder; template class devcb_read_line::delegate_builder; template class devcb_read_line::delegate_builder; template class devcb_read_line::delegate_builder; template class devcb_read8::creator_impl >; template class devcb_read8::creator_impl >; template class devcb_read8::creator_impl >; template class devcb_read8::creator_impl >; template class devcb_read8::creator_impl >; template class devcb_read8::creator_impl >; template class devcb_read8::creator_impl >; template class devcb_read8::creator_impl >; template class devcb_read8::creator_impl >; template class devcb_read8::creator_impl >; template class devcb_read8::creator_impl >; template class devcb_read8::creator_impl >; template class devcb_read8::creator_impl >; template class devcb_read8::creator_impl >; template class devcb_read8::creator_impl >; template class devcb_read8::creator_impl >; template class devcb_read8::creator_impl >; template class devcb_read8::creator_impl; template class devcb_read16::creator_impl >; template class devcb_read16::creator_impl >; template class devcb_read16::creator_impl >; template class devcb_read16::creator_impl >; template class devcb_read16::creator_impl >; template class devcb_read16::creator_impl >; template class devcb_read16::creator_impl >; template class devcb_read16::creator_impl >; template class devcb_read16::creator_impl >; template class devcb_read16::creator_impl >; template class devcb_read16::creator_impl >; template class devcb_read16::creator_impl >; template class devcb_read16::creator_impl >; template class devcb_read16::creator_impl >; template class devcb_read16::creator_impl >; template class devcb_read16::creator_impl >; template class devcb_read16::creator_impl >; template class devcb_read16::creator_impl; template class devcb_read32::creator_impl >; template class devcb_read32::creator_impl >; template class devcb_read32::creator_impl >; template class devcb_read32::creator_impl >; template class devcb_read32::creator_impl >; template class devcb_read32::creator_impl >; template class devcb_read32::creator_impl >; template class devcb_read32::creator_impl >; template class devcb_read32::creator_impl >; template class devcb_read32::creator_impl >; template class devcb_read32::creator_impl >; template class devcb_read32::creator_impl >; template class devcb_read32::creator_impl >; template class devcb_read32::creator_impl >; template class devcb_read32::creator_impl >; template class devcb_read32::creator_impl >; template class devcb_read32::creator_impl >; template class devcb_read32::creator_impl; template class devcb_read64::creator_impl >; template class devcb_read64::creator_impl >; template class devcb_read64::creator_impl >; template class devcb_read64::creator_impl >; template class devcb_read64::creator_impl >; template class devcb_read64::creator_impl >; template class devcb_read64::creator_impl >; template class devcb_read64::creator_impl >; template class devcb_read64::creator_impl >; template class devcb_read64::creator_impl >; template class devcb_read64::creator_impl >; template class devcb_read64::creator_impl >; template class devcb_read64::creator_impl >; template class devcb_read64::creator_impl >; template class devcb_read64::creator_impl >; template class devcb_read64::creator_impl >; template class devcb_read64::creator_impl >; template class devcb_read64::creator_impl; template class devcb_read_line::creator_impl >; template class devcb_read_line::creator_impl >; template class devcb_read_line::creator_impl >; template class devcb_read_line::creator_impl >; template class devcb_read_line::creator_impl >; template class devcb_read_line::creator_impl >; template class devcb_read_line::creator_impl >; template class devcb_read_line::creator_impl >; template class devcb_read_line::creator_impl >; template class devcb_read_line::creator_impl >; template class devcb_read_line::creator_impl >; template class devcb_read_line::creator_impl >; template class devcb_read_line::creator_impl >; template class devcb_read_line::creator_impl >; template class devcb_read_line::creator_impl >; template class devcb_read_line::creator_impl >; template class devcb_read_line::creator_impl >; template class devcb_read_line::creator_impl; template class devcb_write; template class devcb_write; template class devcb_write; template class devcb_write; template class devcb_write; template class devcb_write8::delegate_builder; template class devcb_write8::delegate_builder; template class devcb_write8::delegate_builder; template class devcb_write8::delegate_builder; template class devcb_write8::delegate_builder; template class devcb_write8::delegate_builder; template class devcb_write8::delegate_builder; template class devcb_write8::delegate_builder; template class devcb_write8::delegate_builder; template class devcb_write8::delegate_builder; template class devcb_write8::delegate_builder; template class devcb_write8::delegate_builder; template class devcb_write8::delegate_builder; template class devcb_write8::delegate_builder; template class devcb_write8::delegate_builder; template class devcb_write8::delegate_builder; template class devcb_write8::delegate_builder; template class devcb_write16::delegate_builder; template class devcb_write16::delegate_builder; template class devcb_write16::delegate_builder; template class devcb_write16::delegate_builder; template class devcb_write16::delegate_builder; template class devcb_write16::delegate_builder; template class devcb_write16::delegate_builder; template class devcb_write16::delegate_builder; template class devcb_write16::delegate_builder; template class devcb_write16::delegate_builder; template class devcb_write16::delegate_builder; template class devcb_write16::delegate_builder; template class devcb_write16::delegate_builder; template class devcb_write16::delegate_builder; template class devcb_write16::delegate_builder; template class devcb_write16::delegate_builder; template class devcb_write16::delegate_builder; template class devcb_write32::delegate_builder; template class devcb_write32::delegate_builder; template class devcb_write32::delegate_builder; template class devcb_write32::delegate_builder; template class devcb_write32::delegate_builder; template class devcb_write32::delegate_builder; template class devcb_write32::delegate_builder; template class devcb_write32::delegate_builder; template class devcb_write32::delegate_builder; template class devcb_write32::delegate_builder; template class devcb_write32::delegate_builder; template class devcb_write32::delegate_builder; template class devcb_write32::delegate_builder; template class devcb_write32::delegate_builder; template class devcb_write32::delegate_builder; template class devcb_write32::delegate_builder; template class devcb_write32::delegate_builder; template class devcb_write64::delegate_builder; template class devcb_write64::delegate_builder; template class devcb_write64::delegate_builder; template class devcb_write64::delegate_builder; template class devcb_write64::delegate_builder; template class devcb_write64::delegate_builder; template class devcb_write64::delegate_builder; template class devcb_write64::delegate_builder; template class devcb_write64::delegate_builder; template class devcb_write64::delegate_builder; template class devcb_write64::delegate_builder; template class devcb_write64::delegate_builder; template class devcb_write64::delegate_builder; template class devcb_write64::delegate_builder; template class devcb_write64::delegate_builder; template class devcb_write64::delegate_builder; template class devcb_write64::delegate_builder; template class devcb_write_line::delegate_builder; template class devcb_write_line::delegate_builder; template class devcb_write_line::delegate_builder; template class devcb_write_line::delegate_builder; template class devcb_write_line::delegate_builder; template class devcb_write_line::delegate_builder; template class devcb_write_line::delegate_builder; template class devcb_write_line::delegate_builder; template class devcb_write_line::delegate_builder; template class devcb_write_line::delegate_builder; template class devcb_write_line::delegate_builder; template class devcb_write_line::delegate_builder; template class devcb_write_line::delegate_builder; template class devcb_write_line::delegate_builder; template class devcb_write_line::delegate_builder; template class devcb_write_line::delegate_builder; template class devcb_write_line::delegate_builder; template class devcb_write8::creator_impl >; template class devcb_write8::creator_impl >; template class devcb_write8::creator_impl >; template class devcb_write8::creator_impl >; template class devcb_write8::creator_impl >; template class devcb_write8::creator_impl >; template class devcb_write8::creator_impl >; template class devcb_write8::creator_impl >; template class devcb_write8::creator_impl >; template class devcb_write8::creator_impl >; template class devcb_write8::creator_impl >; template class devcb_write8::creator_impl >; template class devcb_write8::creator_impl >; template class devcb_write8::creator_impl >; template class devcb_write8::creator_impl >; template class devcb_write8::creator_impl >; template class devcb_write8::creator_impl >; template class devcb_write8::creator_impl; template class devcb_write8::creator_impl; template class devcb_write8::creator_impl; template class devcb_write8::creator_impl; template class devcb_write8::creator_impl; template class devcb_write8::creator_impl; template class devcb_write16::creator_impl >; template class devcb_write16::creator_impl >; template class devcb_write16::creator_impl >; template class devcb_write16::creator_impl >; template class devcb_write16::creator_impl >; template class devcb_write16::creator_impl >; template class devcb_write16::creator_impl >; template class devcb_write16::creator_impl >; template class devcb_write16::creator_impl >; template class devcb_write16::creator_impl >; template class devcb_write16::creator_impl >; template class devcb_write16::creator_impl >; template class devcb_write16::creator_impl >; template class devcb_write16::creator_impl >; template class devcb_write16::creator_impl >; template class devcb_write16::creator_impl >; template class devcb_write16::creator_impl >; template class devcb_write16::creator_impl; template class devcb_write16::creator_impl; template class devcb_write16::creator_impl; template class devcb_write16::creator_impl; template class devcb_write16::creator_impl; template class devcb_write16::creator_impl; template class devcb_write32::creator_impl >; template class devcb_write32::creator_impl >; template class devcb_write32::creator_impl >; template class devcb_write32::creator_impl >; template class devcb_write32::creator_impl >; template class devcb_write32::creator_impl >; template class devcb_write32::creator_impl >; template class devcb_write32::creator_impl >; template class devcb_write32::creator_impl >; template class devcb_write32::creator_impl >; template class devcb_write32::creator_impl >; template class devcb_write32::creator_impl >; template class devcb_write32::creator_impl >; template class devcb_write32::creator_impl >; template class devcb_write32::creator_impl >; template class devcb_write32::creator_impl >; template class devcb_write32::creator_impl >; template class devcb_write32::creator_impl; template class devcb_write32::creator_impl; template class devcb_write32::creator_impl; template class devcb_write32::creator_impl; template class devcb_write32::creator_impl; template class devcb_write32::creator_impl; template class devcb_write64::creator_impl >; template class devcb_write64::creator_impl >; template class devcb_write64::creator_impl >; template class devcb_write64::creator_impl >; template class devcb_write64::creator_impl >; template class devcb_write64::creator_impl >; template class devcb_write64::creator_impl >; template class devcb_write64::creator_impl >; template class devcb_write64::creator_impl >; template class devcb_write64::creator_impl >; template class devcb_write64::creator_impl >; template class devcb_write64::creator_impl >; template class devcb_write64::creator_impl >; template class devcb_write64::creator_impl >; template class devcb_write64::creator_impl >; template class devcb_write64::creator_impl >; template class devcb_write64::creator_impl >; template class devcb_write64::creator_impl; template class devcb_write64::creator_impl; template class devcb_write64::creator_impl; template class devcb_write64::creator_impl; template class devcb_write64::creator_impl; template class devcb_write64::creator_impl; template class devcb_write_line::creator_impl >; template class devcb_write_line::creator_impl >; template class devcb_write_line::creator_impl >; template class devcb_write_line::creator_impl >; template class devcb_write_line::creator_impl >; template class devcb_write_line::creator_impl >; template class devcb_write_line::creator_impl >; template class devcb_write_line::creator_impl >; template class devcb_write_line::creator_impl >; template class devcb_write_line::creator_impl >; template class devcb_write_line::creator_impl >; template class devcb_write_line::creator_impl >; template class devcb_write_line::creator_impl >; template class devcb_write_line::creator_impl >; template class devcb_write_line::creator_impl >; template class devcb_write_line::creator_impl >; template class devcb_write_line::creator_impl >; template class devcb_write_line::creator_impl; template class devcb_write_line::creator_impl; template class devcb_write_line::creator_impl; template class devcb_write_line::creator_impl; template class devcb_write_line::creator_impl; template class devcb_write_line::creator_impl; devcb_base::devcb_base(device_t &owner) : m_owner(owner) , m_dflt_space_finder(owner, finder_base::DUMMY_TAG) , m_dflt_space_index(-1) , m_dflt_space(nullptr) { owner.register_callback(*this); } devcb_base::~devcb_base() { } void devcb_base::validity_check(validity_checker &valid) const { // if a default address space is configured, ensure it exists if (m_dflt_space_finder) { if (!m_dflt_space_finder->has_space(m_dflt_space_index)) osd_printf_error("Callback references non-existent memory space %d of device %s (%s)\n", m_dflt_space_index, m_dflt_space_finder->device().tag(), m_dflt_space_finder->device().name()); } else if (m_dflt_space_finder.finder_tag() != finder_base::DUMMY_TAG) { osd_printf_error("Callback references non-existent memory space device tag %s\n", m_dflt_space_finder.finder_tag()); } } void devcb_base::resolve() { if (m_dflt_space_finder && m_dflt_space_finder->has_space(m_dflt_space_index)) m_dflt_space = &m_dflt_space_finder->space(m_dflt_space_index); else m_dflt_space = &m_owner.machine().dummy_space(); } devcb_read_base::~devcb_read_base() { } devcb_write_base::~devcb_write_base() { }