diff options
Diffstat (limited to 'src/devices/bus/nubus/nubus.h')
-rw-r--r-- | src/devices/bus/nubus/nubus.h | 50 |
1 files changed, 28 insertions, 22 deletions
diff --git a/src/devices/bus/nubus/nubus.h b/src/devices/bus/nubus/nubus.h index 4697432e16e..8cc1a3bbbf2 100644 --- a/src/devices/bus/nubus/nubus.h +++ b/src/devices/bus/nubus/nubus.h @@ -8,10 +8,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_BUS_NUBUS_NUBUS_H +#define MAME_BUS_NUBUS_NUBUS_H -#ifndef __NUBUS_H__ -#define __NUBUS_H__ +#pragma once @@ -58,26 +58,26 @@ class nubus_device; -class nubus_slot_device : public device_t, - public device_slot_interface +class nubus_slot_device : public device_t, public device_slot_interface { public: // construction/destruction nubus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - nubus_slot_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - - // device-level overrides - virtual void device_start() override; // inline configuration static void static_set_nubus_slot(device_t &device, const char *tag, const char *slottag); protected: + nubus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + + // device-level overrides + virtual void device_start() override; + // configuration const char *m_nubus_tag, *m_nubus_slottag; }; // device type definition -extern const device_type NUBUS_SLOT; +DECLARE_DEVICE_TYPE(NUBUS_SLOT, nubus_slot_device) class device_nubus_card_interface; @@ -87,17 +87,16 @@ class nubus_device : public device_t public: // construction/destruction nubus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - nubus_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); ~nubus_device() { m_device_list.detach_all(); } // inline configuration static void static_set_cputag(device_t &device, const char *tag); - template<class _Object> static devcb_base &set_out_irq9_callback(device_t &device, _Object object) { return downcast<nubus_device &>(device).m_out_irq9_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_irqa_callback(device_t &device, _Object object) { return downcast<nubus_device &>(device).m_out_irqa_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_irqb_callback(device_t &device, _Object object) { return downcast<nubus_device &>(device).m_out_irqb_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_irqc_callback(device_t &device, _Object object) { return downcast<nubus_device &>(device).m_out_irqc_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_irqd_callback(device_t &device, _Object object) { return downcast<nubus_device &>(device).m_out_irqd_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_irqe_callback(device_t &device, _Object object) { return downcast<nubus_device &>(device).m_out_irqe_cb.set_callback(object); } + template <class Object> static devcb_base &set_out_irq9_callback(device_t &device, Object &&cb) { return downcast<nubus_device &>(device).m_out_irq9_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_out_irqa_callback(device_t &device, Object &&cb) { return downcast<nubus_device &>(device).m_out_irqa_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_out_irqb_callback(device_t &device, Object &&cb) { return downcast<nubus_device &>(device).m_out_irqb_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_out_irqc_callback(device_t &device, Object &&cb) { return downcast<nubus_device &>(device).m_out_irqc_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_out_irqd_callback(device_t &device, Object &&cb) { return downcast<nubus_device &>(device).m_out_irqd_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_out_irqe_callback(device_t &device, Object &&cb) { return downcast<nubus_device &>(device).m_out_irqe_cb.set_callback(std::forward<Object>(cb)); } void add_nubus_card(device_nubus_card_interface *card); void install_device(offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler, uint32_t mask=0xffffffff); @@ -116,6 +115,8 @@ public: DECLARE_WRITE_LINE_MEMBER( irqe_w ); protected: + nubus_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -136,7 +137,7 @@ protected: // device type definition -extern const device_type NUBUS; +DECLARE_DEVICE_TYPE(NUBUS, nubus_device) // ======================> device_nubus_card_interface @@ -144,9 +145,9 @@ extern const device_type NUBUS; class device_nubus_card_interface : public device_slot_card_interface { friend class nubus_device; + template <class ElementType> friend class simple_list; public: // construction/destruction - device_nubus_card_interface(const machine_config &mconfig, device_t &device); virtual ~device_nubus_card_interface(); device_nubus_card_interface *next() const { return m_next; } @@ -165,12 +166,17 @@ public: // inline configuration static void static_set_nubus_tag(device_t &device, const char *tag, const char *slottag); -public: + +protected: + device_nubus_card_interface(const machine_config &mconfig, device_t &device); + nubus_device *m_nubus; const char *m_nubus_tag, *m_nubus_slottag; int m_slot; - device_nubus_card_interface *m_next; std::vector<uint8_t> m_declaration_rom; + +private: + device_nubus_card_interface *m_next; }; -#endif /* __NUBUS_H__ */ +#endif // MAME_BUS_NUBUS_NUBUS_H |