// license:BSD-3-Clause // copyright-holders:Olivier Galibert #include "emu.h" #include "emumem_hep.h" #include "emumem_het.h" template emu::detail::handler_entry_size_t handler_entry_read_tap::read(offs_t offset, uX mem_mask) const { this->ref(); uX data = this->m_next->read(offset, mem_mask); m_tap(offset, data, mem_mask); this->unref(); return data; } template emu::detail::handler_entry_size_t handler_entry_read_tap::read_interruptible(offs_t offset, uX mem_mask) const { this->ref(); uX data = this->m_next->read_interruptible(offset, mem_mask); m_tap(offset, data, mem_mask); this->unref(); return data; } template std::pair, u16> handler_entry_read_tap::read_flags(offs_t offset, uX mem_mask) const { this->ref(); auto pack = this->m_next->read_flags(offset, mem_mask); m_tap(offset, pack.first, mem_mask); this->unref(); return pack; } template u16 handler_entry_read_tap::lookup_flags(offs_t offset, uX mem_mask) const { return this->m_next->lookup_flags(offset, mem_mask); } template std::string handler_entry_read_tap::name() const { return '(' + m_name + ") " + this->m_next->name(); } template handler_entry_read_tap *handler_entry_read_tap::instantiate(handler_entry_read *next) const { return new handler_entry_read_tap(this->m_space, this->m_mph, next, m_name, m_tap); } template void handler_entry_write_tap::write(offs_t offset, uX data, uX mem_mask) const { this->ref(); m_tap(offset, data, mem_mask); this->m_next->write(offset, data, mem_mask); this->unref(); } template void handler_entry_write_tap::write_interruptible(offs_t offset, uX data, uX mem_mask) const { this->ref(); m_tap(offset, data, mem_mask); this->m_next->write_interruptible(offset, data, mem_mask); this->unref(); } template u16 handler_entry_write_tap::write_flags(offs_t offset, uX data, uX mem_mask) const { this->ref(); m_tap(offset, data, mem_mask); u16 flags = this->m_next->write_flags(offset, data, mem_mask); this->unref(); return flags; } template u16 handler_entry_write_tap::lookup_flags(offs_t offset, uX mem_mask) const { return this->m_next->lookup_flags(offset, mem_mask); } template std::string handler_entry_write_tap::name() const { return '(' + m_name + ") " + this->m_next->name(); } template handler_entry_write_tap *handler_entry_write_tap::instantiate(handler_entry_write *next) const { return new handler_entry_write_tap(this->m_space, this->m_mph, next, m_name, m_tap); } template class handler_entry_read_tap<0, 1>; template class handler_entry_read_tap<0, 0>; template class handler_entry_read_tap<1, 3>; template class handler_entry_read_tap<1, 0>; template class handler_entry_read_tap<1, -1>; template class handler_entry_read_tap<2, 3>; template class handler_entry_read_tap<2, 0>; template class handler_entry_read_tap<2, -1>; template class handler_entry_read_tap<2, -2>; template class handler_entry_read_tap<3, 0>; template class handler_entry_read_tap<3, -1>; template class handler_entry_read_tap<3, -2>; template class handler_entry_read_tap<3, -3>; template class handler_entry_write_tap<0, 1>; template class handler_entry_write_tap<0, 0>; template class handler_entry_write_tap<1, 3>; template class handler_entry_write_tap<1, 0>; template class handler_entry_write_tap<1, -1>; template class handler_entry_write_tap<2, 3>; template class handler_entry_write_tap<2, 0>; template class handler_entry_write_tap<2, -1>; template class handler_entry_write_tap<2, -2>; template class handler_entry_write_tap<3, 0>; template class handler_entry_write_tap<3, -1>; template class handler_entry_write_tap<3, -2>; template class handler_entry_write_tap<3, -3>;