diff options
author | couriersud <couriersud@arcor.de> | 2016-05-09 21:24:05 +0200 |
---|---|---|
committer | couriersud <couriersud@arcor.de> | 2016-05-10 00:47:32 +0200 |
commit | b7a29d4575cb0a46cf155771defb584aeb8d26e6 (patch) | |
tree | 66bb86aeb68a02453e0a7e1d8724b5f3ec1f6094 /src/lib/netlist | |
parent | ccf66bee16c7b19b921c0f25a28a946f7b587780 (diff) |
A step towards late creation of devices. (nw)
Diffstat (limited to 'src/lib/netlist')
-rw-r--r-- | src/lib/netlist/nl_setup.cpp | 15 | ||||
-rw-r--r-- | src/lib/netlist/nl_setup.h | 4 |
2 files changed, 9 insertions, 10 deletions
diff --git a/src/lib/netlist/nl_setup.cpp b/src/lib/netlist/nl_setup.cpp index 76b5ed2a906..33a169d6a6c 100644 --- a/src/lib/netlist/nl_setup.cpp +++ b/src/lib/netlist/nl_setup.cpp @@ -103,14 +103,13 @@ void setup_t::namespace_pop() } -device_t *setup_t::register_dev(device_t *dev) +void setup_t::register_dev(device_t *dev) { for (auto & d : netlist().m_devices) if (d->name() == dev->name()) log().fatal("Error adding {1} to device list. Duplicate name \n", d->name()); netlist().m_devices.push_back(dev); - return dev; } void setup_t::register_lib_entry(const pstring &name) @@ -121,14 +120,13 @@ void setup_t::register_lib_entry(const pstring &name) m_lib.push_back(name); } -device_t *setup_t::register_dev(const pstring &classname, const pstring &name) +void setup_t::register_dev(const pstring &classname, const pstring &name) { if (m_lib.contains(classname)) { namespace_push(name); include(classname); namespace_pop(); - return nullptr; } else { @@ -136,7 +134,7 @@ device_t *setup_t::register_dev(const pstring &classname, const pstring &name) //device_t *dev = factory().new_device_by_classname(classname); if (dev == nullptr) log().fatal("Class {1} not found!\n", classname); - return register_dev(dev); + register_dev(dev); } } @@ -348,22 +346,23 @@ void setup_t::register_frontier(const pstring attach, const double r_IN, const d { pstring frontier_name = pfmt("frontier_{1}")(m_frontier_cnt); m_frontier_cnt++; - device_t *front = register_dev("FRONTIER_DEV", frontier_name); + register_dev("FRONTIER_DEV", frontier_name); register_param(frontier_name + ".RIN", r_IN); register_param(frontier_name + ".ROUT", r_OUT); register_link(frontier_name + ".G", "GND"); pstring attfn = build_fqn(attach); + pstring front_fqn = build_fqn(frontier_name); bool found = false; for (auto & link : m_links) { if (link.e1 == attfn) { - link.e1 = front->name() + ".I"; + link.e1 = front_fqn + ".I"; found = true; } else if (link.e2 == attfn) { - link.e2 = front->name() + ".I"; + link.e2 = front_fqn + ".I"; found = true; } } diff --git a/src/lib/netlist/nl_setup.h b/src/lib/netlist/nl_setup.h index 08de91daf62..8a41e6d77be 100644 --- a/src/lib/netlist/nl_setup.h +++ b/src/lib/netlist/nl_setup.h @@ -137,8 +137,8 @@ namespace netlist pstring build_fqn(const pstring &obj_name) const; - device_t *register_dev(device_t *dev); - device_t *register_dev(const pstring &classname, const pstring &name); + void register_dev(device_t *dev); + void register_dev(const pstring &classname, const pstring &name); void remove_dev(const pstring &name); void register_lib_entry(const pstring &name); |