summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist
diff options
context:
space:
mode:
author couriersud <couriersud@arcor.de>2016-05-09 21:24:05 +0200
committer couriersud <couriersud@arcor.de>2016-05-10 00:47:32 +0200
commitb7a29d4575cb0a46cf155771defb584aeb8d26e6 (patch)
tree66bb86aeb68a02453e0a7e1d8724b5f3ec1f6094 /src/lib/netlist
parentccf66bee16c7b19b921c0f25a28a946f7b587780 (diff)
A step towards late creation of devices. (nw)
Diffstat (limited to 'src/lib/netlist')
-rw-r--r--src/lib/netlist/nl_setup.cpp15
-rw-r--r--src/lib/netlist/nl_setup.h4
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);