Made device startup cleaner.

This commit is contained in:
Couriersud 2014-02-09 13:19:43 +00:00
parent 2b2197e01f
commit 27c185a25c
3 changed files with 10 additions and 7 deletions

View File

@ -167,7 +167,7 @@ ATTR_COLD void netlist_base_t::start()
for (tagmap_devices_t::entry_t *entry = m_devices.first(); entry != NULL; entry = m_devices.next(entry))
{
netlist_device_t *dev = entry->object();
dev->init(*this, entry->tag().cstr());
dev->start_dev();
}
}
@ -373,13 +373,13 @@ ATTR_COLD netlist_setup_t &netlist_device_t::setup()
ATTR_COLD void netlist_device_t::init(netlist_base_t &anetlist, const pstring &name)
{
netlist_core_device_t::init(anetlist, name);
start();
}
ATTR_COLD void netlist_device_t::register_sub(netlist_device_t &dev, const pstring &name)
{
dev.init(netlist(), this->name() + "." + name);
dev.start_dev();
}
ATTR_COLD void netlist_device_t::register_subalias(const pstring &name, netlist_core_terminal_t &term)

View File

@ -899,8 +899,6 @@ public:
ATTR_COLD virtual ~netlist_core_device_t();
ATTR_COLD virtual void init(netlist_base_t &anetlist, const pstring &name);
ATTR_HOT virtual void update_param() {}
ATTR_HOT inline void update_dev()
@ -911,6 +909,10 @@ public:
update();
#endif
}
ATTR_HOT inline void start_dev()
{
start();
}
ATTR_HOT const netlist_sig_t INPLOGIC_PASSIVE(netlist_logic_input_t &inp);

View File

@ -59,6 +59,7 @@ netlist_setup_t::~netlist_setup_t()
// FIXME: Move to netlist ...
netlist_device_t *netlist_setup_t::register_dev(netlist_device_t *dev, const pstring &name)
{
dev->init(netlist(), name);
if (!(netlist().m_devices.add(name, dev, false)==TMERR_NONE))
netlist().error("Error adding %s to device list\n", name.cstr());
return dev;
@ -364,8 +365,8 @@ nld_base_d_to_a_proxy *netlist_setup_t::get_d_a_proxy(netlist_output_t &out)
pstring x = pstring::sprintf("proxy_da_%d", m_proxy_cnt);
m_proxy_cnt++;
proxy->init(netlist(), x);
register_dev(proxy, x);
proxy->start_dev();
#if 1
/* connect all existing terminals to new net */
@ -396,8 +397,8 @@ void netlist_setup_t::connect_input_output(netlist_input_t &in, netlist_output_t
pstring x = pstring::sprintf("proxy_ad_%d", m_proxy_cnt);
m_proxy_cnt++;
proxy->init(netlist(), x);
register_dev(proxy, x);
proxy->start_dev();
proxy->m_Q.net().register_con(in);
out.net().register_con(proxy->m_I);
@ -429,8 +430,8 @@ void netlist_setup_t::connect_terminal_input(netlist_terminal_t &term, netlist_i
pstring x = pstring::sprintf("proxy_da_%d", m_proxy_cnt);
m_proxy_cnt++;
proxy->init(netlist(), x);
register_dev(proxy, x);
proxy->start_dev();
connect_terminals(term, proxy->m_I);