summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/nvram.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/nvram.h')
-rw-r--r--src/devices/machine/nvram.h28
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)