diff options
Diffstat (limited to 'src/lib/netlist/nl_base.cpp')
-rw-r--r-- | src/lib/netlist/nl_base.cpp | 52 |
1 files changed, 40 insertions, 12 deletions
diff --git a/src/lib/netlist/nl_base.cpp b/src/lib/netlist/nl_base.cpp index 7afa0285ef8..eb83749c79b 100644 --- a/src/lib/netlist/nl_base.cpp +++ b/src/lib/netlist/nl_base.cpp @@ -74,13 +74,12 @@ logic_family_desc_t *family_CD4XXX = palloc(logic_family_cd4xxx_t); queue_t::queue_t(netlist_t &nl) : timed_queue<net_t *, netlist_time>(512) - , object_t(QUEUE, GENERIC) + , object_t(nl, "QUEUE", QUEUE, GENERIC) , pstate_callback_t() , m_qsize(0) , m_times(512) , m_names(512) { - this->init_object(nl, "QUEUE"); } void queue_t::register_state(pstate_manager_t &manager, const pstring &module) @@ -128,13 +127,33 @@ void queue_t::on_post_load() ATTR_COLD object_t::object_t(const type_t atype, const family_t afamily) : m_objtype(atype) , m_family(afamily) -, m_netlist(NULL) +, m_netlist(nullptr) {} +ATTR_COLD object_t::object_t(netlist_t &nl, const type_t atype, const family_t afamily) +: m_objtype(atype) +, m_family(afamily) +, m_netlist(&nl) +{} + +ATTR_COLD object_t::object_t(netlist_t &nl, const pstring &aname, const type_t atype, const family_t afamily) +: m_name(aname) +, m_objtype(atype) +, m_family(afamily) +, m_netlist(&nl) +{ +} + ATTR_COLD object_t::~object_t() { } +ATTR_COLD void object_t::init_object(const pstring &aname) +{ + m_name = aname; + save_register(); +} + ATTR_COLD void object_t::init_object(netlist_t &nl, const pstring &aname) { m_netlist = &nl; @@ -171,8 +190,8 @@ ATTR_COLD void device_object_t::init_object(core_device_t &dev, // netlist_t // ---------------------------------------------------------------------------------------- -netlist_t::netlist_t() - : object_t(NETLIST, GENERIC), pstate_manager_t(), +netlist_t::netlist_t(const pstring &aname) + : pstate_manager_t(), m_stop(netlist_time::zero), m_time(netlist_time::zero), m_use_deactivate(0), @@ -181,9 +200,12 @@ netlist_t::netlist_t() m_solver(NULL), m_gnd(NULL), m_params(NULL), + m_name(aname), m_setup(NULL), m_log(this) { + save_item(static_cast<pstate_callback_t &>(m_queue), this, "m_queue"); + save_item(m_time, this, "m_time"); } netlist_t::~netlist_t() @@ -202,13 +224,6 @@ netlist_t::~netlist_t() pstring::resetmem(); } -ATTR_COLD void netlist_t::save_register() -{ - save(static_cast<pstate_callback_t &>(m_queue), "m_queue"); - save(NLNAME(m_time)); - object_t::save_register(); -} - ATTR_HOT nl_double netlist_t::gmin() const { return solver()->gmin(); @@ -925,6 +940,19 @@ ATTR_COLD analog_output_t::analog_output_t() net().m_cur_Analog = NL_FCONST(0.99); } +ATTR_COLD analog_output_t::analog_output_t(core_device_t &dev, const pstring &aname) + : analog_t(OUTPUT), m_proxied_net(NULL) +{ + this->set_net(m_my_net); + set_state(STATE_OUT); + + net().m_cur_Analog = NL_FCONST(0.99); + + analog_t::init_object(dev, aname); + net().init_object(dev.netlist(), aname + ".net"); + net().register_railterminal(*this); +} + ATTR_COLD void analog_output_t::init_object(core_device_t &dev, const pstring &aname) { analog_t::init_object(dev, aname); |