diff options
author | 2016-05-29 19:30:05 +0200 | |
---|---|---|
committer | 2016-06-07 21:41:54 +0200 | |
commit | 3d3f5761f0b0419581762f72ea0984e047d3e55c (patch) | |
tree | 9330381da7fef4e9c9013809bba28f2a272da505 /src/lib/netlist/nl_setup.cpp | |
parent | b27790890530b658e178846e7da01045185f0fce (diff) |
- Added constructors to prepare to move terminal setup into constructor.
- Reworked twoterm setup. Fixed some timebombs along the way.
- Fix r2r dac. Remove dead code.
- analog_outputs now created in constructor.
- moved analog_input creation into constructor.
- moved logic output creation to constructor.
- moved all logic inputs into constructor.
- Completely removed init_object. Finally.
[Couriersud]
Diffstat (limited to 'src/lib/netlist/nl_setup.cpp')
-rw-r--r-- | src/lib/netlist/nl_setup.cpp | 33 |
1 files changed, 7 insertions, 26 deletions
diff --git a/src/lib/netlist/nl_setup.cpp b/src/lib/netlist/nl_setup.cpp index 8fda3d2f8f4..c072e917240 100644 --- a/src/lib/netlist/nl_setup.cpp +++ b/src/lib/netlist/nl_setup.cpp @@ -105,7 +105,6 @@ void setup_t::register_dev(plib::owned_ptr<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(std::move(dev)); } @@ -245,7 +244,7 @@ void setup_t::register_and_set_param(pstring name, param_t ¶m) log().fatal("Error adding parameter {1} to parameter list\n", name); } -void setup_t::register_object(device_t &dev, const pstring &name, object_t &obj) +void setup_t::register_object(object_t &obj) { switch (obj.type()) { @@ -256,36 +255,18 @@ void setup_t::register_object(device_t &dev, const pstring &name, object_t &obj) core_terminal_t &term = dynamic_cast<core_terminal_t &>(obj); if (term.isType(terminal_t::OUTPUT)) { - if (term.is_logic()) - { - logic_output_t &port = dynamic_cast<logic_output_t &>(term); - port.set_logic_family(dev.logic_family()); - dynamic_cast<logic_output_t &>(term).init_object(dev, dev.name() + "." + name); - } - else if (term.is_analog()) - dynamic_cast<analog_output_t &>(term).init_object(dev, dev.name() + "." + name); - else - log().fatal("Error adding {1} {2} to terminal list, neither LOGIC nor ANALOG\n", objtype_as_astr(term), term.name()); } else if (term.isType(terminal_t::INPUT)) { - if (term.is_logic()) - { - logic_input_t &port = dynamic_cast<logic_input_t &>(term); - port.set_logic_family(dev.logic_family()); - } - term.init_object(dev, dev.name() + "." + name); - dev.m_terminals.push_back(obj.name()); + static_cast<device_t &>(term.device()).m_terminals.push_back(obj.name()); } else { - term.init_object(dev, dev.name() + "." + name); - dev.m_terminals.push_back(obj.name()); + static_cast<device_t &>(term.device()).m_terminals.push_back(obj.name()); } - if (!m_terminals.add(term.name(), &term)) - log().fatal("Error adding {1} {2} to terminal list\n", objtype_as_astr(term), term.name()); - log().debug("{1} {2}\n", objtype_as_astr(term), name); + log().fatal("Error adding {1} {2} to terminal list\n", objtype_as_astr(obj), obj.name()); + log().debug("{1} {2}\n", objtype_as_astr(obj), obj.name()); } break; case terminal_t::NET: @@ -297,10 +278,10 @@ void setup_t::register_object(device_t &dev, const pstring &name, object_t &obj) } break; case terminal_t::DEVICE: - log().fatal("Device registration not yet supported - {1}\n", name); + log().fatal("Device registration not yet supported - {1}\n", obj.name()); break; case terminal_t::QUEUE: - log().fatal("QUEUE registration not yet supported - {1}\n", name); + log().fatal("QUEUE registration not yet supported - {1}\n", obj.name()); break; } } |