diff options
Diffstat (limited to 'src/devices/machine/nvram.h')
-rw-r--r-- | src/devices/machine/nvram.h | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/src/devices/machine/nvram.h b/src/devices/machine/nvram.h index 45c01bad0c1..a2c75fa90a0 100644 --- a/src/devices/machine/nvram.h +++ b/src/devices/machine/nvram.h @@ -40,18 +40,10 @@ public: // inline configuration helpers void set_default_value(default_value value) { m_default_value = value; } - template <typename Object> void set_custom_handler(Object &&cb) + template <typename... T> void set_custom_handler(T &&... args) { m_default_value = DEFAULT_CUSTOM; - m_custom_handler = std::forward<Object>(cb); - } - template <class FunctionClass> void set_custom_handler(const char *devname, void (FunctionClass::*callback)(nvram_device &, void *, size_t), const char *name) - { - set_custom_handler(init_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_custom_handler(void (FunctionClass::*callback)(nvram_device &, void *, size_t), const char *name) - { - set_custom_handler(init_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); + m_custom_handler.set(std::forward<T>(args)...); } // controls @@ -59,24 +51,24 @@ public: protected: // device-level overrides - virtual void device_start() override; + virtual void device_start() override ATTR_COLD; // device_nvram_interface overrides virtual void nvram_default() override; - virtual void nvram_read(emu_file &file) override; - virtual void nvram_write(emu_file &file) override; + virtual bool nvram_read(util::read_stream &file) override; + virtual bool nvram_write(util::write_stream &file) override; // internal helpers void determine_final_base(); // configuration state - optional_memory_region m_region; - default_value m_default_value; - init_delegate m_custom_handler; + optional_memory_region m_region; + default_value m_default_value; + init_delegate m_custom_handler; // runtime state - void * m_base; - size_t m_length; + void * m_base; + size_t m_length; }; DECLARE_DEVICE_TYPE(NVRAM, nvram_device) |