summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/netlist/nl_setup.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/netlist/nl_setup.c')
-rw-r--r--src/emu/netlist/nl_setup.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/emu/netlist/nl_setup.c b/src/emu/netlist/nl_setup.c
index 95f62470944..4ed1d2ae9ba 100644
--- a/src/emu/netlist/nl_setup.c
+++ b/src/emu/netlist/nl_setup.c
@@ -9,6 +9,7 @@
#include "nl_setup.h"
#include "nl_parser.h"
#include "nl_util.h"
+#include "nl_factory.h"
#include "devices/net_lib.h"
#include "devices/nld_system.h"
#include "analog/nld_solver.h"
@@ -37,6 +38,7 @@ netlist_setup_t::netlist_setup_t(netlist_base_t &netlist)
, m_proxy_cnt(0)
{
netlist.set_setup(this);
+ m_factory = nl_alloc(netlist_factory_t);
}
void netlist_setup_t::init()
@@ -55,6 +57,7 @@ netlist_setup_t::~netlist_setup_t()
m_params_temp.clear();
netlist().set_setup(NULL);
+ nl_free(m_factory);
pstring::resetmem();
}
@@ -92,6 +95,14 @@ netlist_device_t *netlist_setup_t::register_dev(netlist_device_t *dev, const pst
return dev;
}
+netlist_device_t *netlist_setup_t::register_dev(const pstring &classname, const pstring &name)
+{
+ netlist_device_t *dev = factory().new_device_by_classname(classname);
+ if (dev == NULL)
+ netlist().error("Class %s not found!\n", classname.cstr());
+ return register_dev(dev, name);
+}
+
template <class T>
static void remove_start_with(T &hm, pstring &sw)
{
@@ -695,7 +706,7 @@ void netlist_setup_t::start_devices()
{
NL_VERBOSE_OUT(("%d: <%s>\n",i, ll[i].cstr()));
NL_VERBOSE_OUT(("%d: <%s>\n",i, ll[i].cstr()));
- netlist_device_t *nc = factory().new_device_by_classname("nld_log", *this);
+ netlist_device_t *nc = factory().new_device_by_classname("nld_log");
pstring name = "log_" + ll[i];
register_dev(nc, name);
register_link(name + ".I", ll[i]);