From 00af096b9f4d3675dd8f52744d1e321432b80ab8 Mon Sep 17 00:00:00 2001 From: couriersud Date: Sat, 9 May 2015 02:08:05 +0200 Subject: [PATCH] Aligned logic_family usage across objects. (nw) --- src/emu/netlist/nl_base.c | 7 +++++-- src/emu/netlist/nl_base.h | 34 +++++++++++++++++++--------------- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/src/emu/netlist/nl_base.c b/src/emu/netlist/nl_base.c index 82c3f627cde..ac876f72023 100644 --- a/src/emu/netlist/nl_base.c +++ b/src/emu/netlist/nl_base.c @@ -362,7 +362,7 @@ ATTR_COLD void netlist_base_t::log(const char *format, ...) const // ---------------------------------------------------------------------------------------- ATTR_COLD netlist_core_device_t::netlist_core_device_t(const family_t afamily) -: netlist_object_t(DEVICE, afamily) +: netlist_object_t(DEVICE, afamily), netlist_logic_family_t() #if (NL_KEEP_STATISTICS) , stat_total_time(0) , stat_update_count(0) @@ -373,6 +373,7 @@ ATTR_COLD netlist_core_device_t::netlist_core_device_t(const family_t afamily) ATTR_COLD void netlist_core_device_t::init(netlist_base_t &anetlist, const pstring &name) { + set_logic_family(this->default_logic_family()); init_object(anetlist, name); #if USE_PMFDELEGATES @@ -443,6 +444,8 @@ ATTR_COLD void netlist_device_t::init(netlist_base_t &anetlist, const pstring &n ATTR_COLD void netlist_device_t::register_sub(const pstring &name, netlist_device_t &dev) { dev.init(netlist(), this->name() + "." + name); + // FIXME: subdevices always first inherit the logic family of the parent + dev.set_logic_family(this->logic_family()); dev.start_dev(); } @@ -898,7 +901,7 @@ ATTR_COLD void netlist_output_t::init_object(netlist_core_device_t &dev, const p // ---------------------------------------------------------------------------------------- ATTR_COLD netlist_logic_output_t::netlist_logic_output_t() - : netlist_output_t(OUTPUT, LOGIC), m_proxy(NULL), m_logic_family(NULL) + : netlist_output_t(OUTPUT, LOGIC), netlist_logic_family_t(), m_proxy(NULL) { this->set_net(m_my_net); } diff --git a/src/emu/netlist/nl_base.h b/src/emu/netlist/nl_base.h index 3affb6543ab..809097956f6 100644 --- a/src/emu/netlist/nl_base.h +++ b/src/emu/netlist/nl_base.h @@ -245,7 +245,7 @@ typedef void (*net_update_delegate)(netlist_core_device_t *); , _priv) #define NETLIB_LOGIC_FAMILY(_fam) \ -ATTR_COLD virtual const netlist_logic_family_desc_t *logic_family() \ +ATTR_COLD virtual const netlist_logic_family_desc_t *default_logic_family() \ { \ return &netlist_family_ ## _fam; \ } @@ -290,6 +290,19 @@ public: nl_double m_R_high; }; +class netlist_logic_family_t +{ +public: + + netlist_logic_family_t() : m_logic_family(NULL) {} + + ATTR_HOT inline const netlist_logic_family_desc_t *logic_family() const { return m_logic_family; } + ATTR_COLD void set_logic_family(const netlist_logic_family_desc_t *fam) { m_logic_family = fam; } + +private: + const netlist_logic_family_desc_t *m_logic_family; +}; + /* Terminals inherit the family description from the netlist_device * The default is the ttl family, but any device can override the family. * For individual terminals, these can be overwritten as well. @@ -537,11 +550,11 @@ private: // netlist_logic_input_t // ----------------------------------------------------------------------------- -class netlist_logic_input_t : public netlist_input_t +class netlist_logic_input_t : public netlist_input_t, public netlist_logic_family_t { public: ATTR_COLD netlist_logic_input_t() - : netlist_input_t(INPUT, LOGIC), m_logic_family(NULL) + : netlist_input_t(INPUT, LOGIC), netlist_logic_family_t() { } @@ -551,11 +564,6 @@ public: ATTR_HOT inline void activate_hl(); ATTR_HOT inline void activate_lh(); - ATTR_HOT inline const netlist_logic_family_desc_t *logic_family() { return m_logic_family; } - ATTR_COLD void set_logic_family(const netlist_logic_family_desc_t *fam) { m_logic_family = fam; } - -private: - const netlist_logic_family_desc_t *m_logic_family; }; // ----------------------------------------------------------------------------- @@ -786,7 +794,7 @@ private: }; -class netlist_logic_output_t : public netlist_output_t +class netlist_logic_output_t : public netlist_output_t, public netlist_logic_family_t { NETLIST_PREVENT_COPYING(netlist_logic_output_t) public: @@ -804,13 +812,9 @@ public: ATTR_COLD nld_base_d_to_a_proxy *get_proxy() const { return m_proxy; } ATTR_COLD void set_proxy(nld_base_d_to_a_proxy *proxy) { m_proxy = proxy; } - ATTR_HOT inline const netlist_logic_family_desc_t *logic_family() { return m_logic_family; } - ATTR_COLD void set_logic_family(const netlist_logic_family_desc_t *fam) { m_logic_family = fam; } - private: netlist_logic_net_t m_my_net; nld_base_d_to_a_proxy *m_proxy; - const netlist_logic_family_desc_t *m_logic_family; }; class netlist_ttl_output_t : public netlist_logic_output_t @@ -954,7 +958,7 @@ private: // net_device_t // ----------------------------------------------------------------------------- -class netlist_core_device_t : public netlist_object_t +class netlist_core_device_t : public netlist_object_t, public netlist_logic_family_t { NETLIST_PREVENT_COPYING(netlist_core_device_t) public: @@ -1024,7 +1028,7 @@ protected: ATTR_HOT virtual void update() { } ATTR_COLD virtual void start() { } - ATTR_COLD virtual const netlist_logic_family_desc_t *logic_family() + ATTR_COLD virtual const netlist_logic_family_desc_t *default_logic_family() { return &netlist_family_TTL; }