diff options
Diffstat (limited to 'src/devices/bus/svi3x8/slot/slot.h')
-rw-r--r-- | src/devices/bus/svi3x8/slot/slot.h | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/src/devices/bus/svi3x8/slot/slot.h b/src/devices/bus/svi3x8/slot/slot.h index 756f17658fd..bba55731a88 100644 --- a/src/devices/bus/svi3x8/slot/slot.h +++ b/src/devices/bus/svi3x8/slot/slot.h @@ -40,12 +40,6 @@ #pragma once -//************************************************************************** -// CONSTANTS / MACROS -//************************************************************************** - -#define SVIBUS_TAG "slot_bux" - //************************************************************************** // TYPE DEFINITIONS @@ -67,7 +61,7 @@ public: auto romdis_handler() { return m_romdis_handler.bind(); } auto ramdis_handler() { return m_ramdis_handler.bind(); } - void add_card(device_svi_slot_interface *card); + void add_card(device_svi_slot_interface &card); // from slot DECLARE_WRITE_LINE_MEMBER( int_w ) { m_int_handler(state); }; @@ -88,7 +82,6 @@ public: private: // device-level overrides virtual void device_start() override; - virtual void device_reset() override; simple_list<device_svi_slot_interface> m_dev; @@ -102,29 +95,31 @@ DECLARE_DEVICE_TYPE(SVI_SLOT_BUS, svi_slot_bus_device) // ======================> svi_slot_device -class svi_slot_device : public device_t, public device_slot_interface +class svi_slot_device : public device_t, public device_single_card_slot_interface<device_svi_slot_interface> { public: // construction/destruction - template <typename T> - svi_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&opts, char const *dflt) + template <typename T, typename U> + svi_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&bus, U &&opts, char const *dflt) : svi_slot_device(mconfig, tag, owner, 0) { option_reset(); opts(*this); set_default_option(dflt); set_fixed(false); + set_bus(std::forward<T>(bus)); } svi_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + template <typename T> void set_bus(T &&tag) { m_bus.set_tag(std::forward<T>(tag)); } + protected: // device-level overrides virtual void device_start() override; - virtual void device_reset() override; // configuration - const char *m_bus_tag; + required_device<svi_slot_bus_device> m_bus; }; // device type definition @@ -132,14 +127,14 @@ DECLARE_DEVICE_TYPE(SVI_SLOT, svi_slot_device) // ======================> svi_slot_device -class device_svi_slot_interface : public device_slot_card_interface +class device_svi_slot_interface : public device_interface { template <class ElementType> friend class simple_list; public: // construction/destruction virtual ~device_svi_slot_interface(); - void set_bus_device(svi_slot_bus_device *bus); + void set_bus_device(svi_slot_bus_device &bus); device_svi_slot_interface *next() const { return m_next; } |