diff options
Diffstat (limited to 'src/emu/device.ipp')
-rw-r--r-- | src/emu/device.ipp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/emu/device.ipp b/src/emu/device.ipp index e90f6bd4e6c..e2641dd3c1e 100644 --- a/src/emu/device.ipp +++ b/src/emu/device.ipp @@ -90,4 +90,18 @@ inline void device_t::logerror(Format &&fmt, Params &&... args) const } } +template <typename T, typename Ret, typename... Params> +std::enable_if_t<device_memory_interface::is_related_class<device_t, T>::value> device_memory_interface::set_addrmap(int spacenum, Ret (T::*func)(Params... args)) +{ + device_t &dev(device().mconfig().current_device()); + set_addrmap(spacenum, address_map_constructor(func, dev.tag(), &downcast<T &>(dev))); +} + +template <typename T, typename Ret, typename... Params> +std::enable_if_t<!device_memory_interface::is_related_class<device_t, T>::value> device_memory_interface::set_addrmap(int spacenum, Ret (T::*func)(Params... args)) +{ + device_t &dev(device().mconfig().current_device()); + set_addrmap(spacenum, address_map_constructor(func, dev.tag(), &dynamic_cast<T &>(dev))); +} + #endif // MAME_EMU_DEVICE_IPP |