diff --git a/src/lib/netlist/devices/nld_2102A.cpp b/src/lib/netlist/devices/nld_2102A.cpp index 8aea0e398ca..c6bce049579 100644 --- a/src/lib/netlist/devices/nld_2102A.cpp +++ b/src/lib/netlist/devices/nld_2102A.cpp @@ -7,7 +7,6 @@ #include "nld_2102A.h" #include "netlist/nl_base.h" -#include "nlid_system.h" #define ADDR2BYTE(a) ((a) >> 3) #define ADDR2BIT(a) ((a) & 0x7) diff --git a/src/lib/netlist/devices/nld_2716.cpp b/src/lib/netlist/devices/nld_2716.cpp index 73ce2c41dc4..63d9b24e108 100644 --- a/src/lib/netlist/devices/nld_2716.cpp +++ b/src/lib/netlist/devices/nld_2716.cpp @@ -7,7 +7,6 @@ #include "nld_2716.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_4006.cpp b/src/lib/netlist/devices/nld_4006.cpp index 70b5e8456c0..e70678b2367 100644 --- a/src/lib/netlist/devices/nld_4006.cpp +++ b/src/lib/netlist/devices/nld_4006.cpp @@ -6,7 +6,7 @@ */ #include "nld_4006.h" -#include "nlid_system.h" +#include "nl_base.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_4020.cpp b/src/lib/netlist/devices/nld_4020.cpp index 96051322fa8..4fbe3486b4f 100644 --- a/src/lib/netlist/devices/nld_4020.cpp +++ b/src/lib/netlist/devices/nld_4020.cpp @@ -6,7 +6,8 @@ */ #include "nld_4020.h" -#include "nlid_system.h" +#include "nl_base.h" +#include "nl_factory.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_4066.cpp b/src/lib/netlist/devices/nld_4066.cpp index b6215ea89e3..30536b2009d 100644 --- a/src/lib/netlist/devices/nld_4066.cpp +++ b/src/lib/netlist/devices/nld_4066.cpp @@ -9,7 +9,6 @@ #include "netlist/analog/nlid_twoterm.h" #include "netlist/solver/nld_solver.h" -#include "nlid_system.h" // This is an experimental approach to implement the analog switch. // This will make the switch a 3 terminal element which is completely diff --git a/src/lib/netlist/devices/nld_4316.cpp b/src/lib/netlist/devices/nld_4316.cpp index 84668be5221..8d807b79bbd 100644 --- a/src/lib/netlist/devices/nld_4316.cpp +++ b/src/lib/netlist/devices/nld_4316.cpp @@ -8,7 +8,6 @@ #include "nld_4316.h" #include "netlist/analog/nlid_twoterm.h" #include "netlist/solver/nld_solver.h" -#include "nlid_system.h" namespace netlist { namespace devices { diff --git a/src/lib/netlist/devices/nld_74107.cpp b/src/lib/netlist/devices/nld_74107.cpp index 53279f7df3a..38da321d75e 100644 --- a/src/lib/netlist/devices/nld_74107.cpp +++ b/src/lib/netlist/devices/nld_74107.cpp @@ -7,7 +7,6 @@ #include "nld_74107.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_74123.cpp b/src/lib/netlist/devices/nld_74123.cpp index ba1eb4ff54d..023a162db8c 100644 --- a/src/lib/netlist/devices/nld_74123.cpp +++ b/src/lib/netlist/devices/nld_74123.cpp @@ -5,8 +5,8 @@ * */ -#include "nlid_system.h" #include "netlist/analog/nlid_twoterm.h" +#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_74153.cpp b/src/lib/netlist/devices/nld_74153.cpp index 729055767cc..6fa8fad4cb7 100644 --- a/src/lib/netlist/devices/nld_74153.cpp +++ b/src/lib/netlist/devices/nld_74153.cpp @@ -7,7 +7,6 @@ #include "nld_74153.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_74161.cpp b/src/lib/netlist/devices/nld_74161.cpp index 76a41d00e16..c9eb1e22af6 100644 --- a/src/lib/netlist/devices/nld_74161.cpp +++ b/src/lib/netlist/devices/nld_74161.cpp @@ -7,7 +7,6 @@ #include "nld_74161.h" #include "netlist/nl_base.h" -#include "nlid_system.h" #include diff --git a/src/lib/netlist/devices/nld_74164.cpp b/src/lib/netlist/devices/nld_74164.cpp index cb6b1c6972a..34325e10d4d 100644 --- a/src/lib/netlist/devices/nld_74164.cpp +++ b/src/lib/netlist/devices/nld_74164.cpp @@ -10,7 +10,6 @@ #include "nld_74164.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_74165.cpp b/src/lib/netlist/devices/nld_74165.cpp index bf266f2d0dc..9f11e9d6193 100644 --- a/src/lib/netlist/devices/nld_74165.cpp +++ b/src/lib/netlist/devices/nld_74165.cpp @@ -7,7 +7,6 @@ #include "nld_74165.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_74166.cpp b/src/lib/netlist/devices/nld_74166.cpp index 4c598aa3156..54e32a313ff 100644 --- a/src/lib/netlist/devices/nld_74166.cpp +++ b/src/lib/netlist/devices/nld_74166.cpp @@ -7,7 +7,6 @@ #include "nld_74166.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_74174.cpp b/src/lib/netlist/devices/nld_74174.cpp index f957547f223..7c7748bd26e 100644 --- a/src/lib/netlist/devices/nld_74174.cpp +++ b/src/lib/netlist/devices/nld_74174.cpp @@ -7,7 +7,6 @@ #include "nld_74174.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_74175.cpp b/src/lib/netlist/devices/nld_74175.cpp index c7ad69d65b3..65fd62a038d 100644 --- a/src/lib/netlist/devices/nld_74175.cpp +++ b/src/lib/netlist/devices/nld_74175.cpp @@ -7,7 +7,6 @@ #include "nld_74175.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_74192.cpp b/src/lib/netlist/devices/nld_74192.cpp index d2931bfc87c..2b4a8f212b5 100644 --- a/src/lib/netlist/devices/nld_74192.cpp +++ b/src/lib/netlist/devices/nld_74192.cpp @@ -7,7 +7,6 @@ #include "nld_74192.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_74193.cpp b/src/lib/netlist/devices/nld_74193.cpp index e159c49426a..a458f82b7a7 100644 --- a/src/lib/netlist/devices/nld_74193.cpp +++ b/src/lib/netlist/devices/nld_74193.cpp @@ -7,7 +7,6 @@ #include "nld_74193.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_74194.cpp b/src/lib/netlist/devices/nld_74194.cpp index fbffd650433..8bc7e1e6cda 100644 --- a/src/lib/netlist/devices/nld_74194.cpp +++ b/src/lib/netlist/devices/nld_74194.cpp @@ -7,7 +7,6 @@ #include "nld_74194.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_74365.cpp b/src/lib/netlist/devices/nld_74365.cpp index 92ef393e017..01ceb167ff5 100644 --- a/src/lib/netlist/devices/nld_74365.cpp +++ b/src/lib/netlist/devices/nld_74365.cpp @@ -7,7 +7,6 @@ #include "nld_74365.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_74393.cpp b/src/lib/netlist/devices/nld_74393.cpp index 2cd84c32380..b63605dafca 100644 --- a/src/lib/netlist/devices/nld_74393.cpp +++ b/src/lib/netlist/devices/nld_74393.cpp @@ -7,7 +7,6 @@ #include "nld_74393.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_7442.cpp b/src/lib/netlist/devices/nld_7442.cpp index 49356d7c6f7..a5a059398fc 100644 --- a/src/lib/netlist/devices/nld_7442.cpp +++ b/src/lib/netlist/devices/nld_7442.cpp @@ -7,7 +7,6 @@ #include "nld_7442.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_7448.cpp b/src/lib/netlist/devices/nld_7448.cpp index df3e6d60b32..6b7ed83c44c 100644 --- a/src/lib/netlist/devices/nld_7448.cpp +++ b/src/lib/netlist/devices/nld_7448.cpp @@ -6,7 +6,6 @@ */ #include "nld_7448.h" -#include "nlid_system.h" #include "nlid_truthtable.h" #include diff --git a/src/lib/netlist/devices/nld_7450.cpp b/src/lib/netlist/devices/nld_7450.cpp index 8187af87122..2adad87ffc1 100644 --- a/src/lib/netlist/devices/nld_7450.cpp +++ b/src/lib/netlist/devices/nld_7450.cpp @@ -7,7 +7,6 @@ #include "nld_7450.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_7473.cpp b/src/lib/netlist/devices/nld_7473.cpp index 5c75115c970..199fbb931f1 100644 --- a/src/lib/netlist/devices/nld_7473.cpp +++ b/src/lib/netlist/devices/nld_7473.cpp @@ -7,7 +7,6 @@ #include "nld_7473.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_7474.cpp b/src/lib/netlist/devices/nld_7474.cpp index 42d4d06b429..5d56d1708d4 100644 --- a/src/lib/netlist/devices/nld_7474.cpp +++ b/src/lib/netlist/devices/nld_7474.cpp @@ -8,7 +8,6 @@ #include "nld_7474.h" #include "netlist/nl_base.h" -#include "nlid_system.h" #include diff --git a/src/lib/netlist/devices/nld_7475.cpp b/src/lib/netlist/devices/nld_7475.cpp index 7e8c82b122e..4a582fbe603 100644 --- a/src/lib/netlist/devices/nld_7475.cpp +++ b/src/lib/netlist/devices/nld_7475.cpp @@ -8,7 +8,6 @@ #include "nld_7475.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_7483.cpp b/src/lib/netlist/devices/nld_7483.cpp index a2c479a5488..af934843537 100644 --- a/src/lib/netlist/devices/nld_7483.cpp +++ b/src/lib/netlist/devices/nld_7483.cpp @@ -7,7 +7,6 @@ #include "nld_7483.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_7485.cpp b/src/lib/netlist/devices/nld_7485.cpp index eaf952e4fe4..6211c8dbc7f 100644 --- a/src/lib/netlist/devices/nld_7485.cpp +++ b/src/lib/netlist/devices/nld_7485.cpp @@ -7,7 +7,6 @@ #include "nld_7485.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_7490.cpp b/src/lib/netlist/devices/nld_7490.cpp index 518d52dd87d..8533c7e3153 100644 --- a/src/lib/netlist/devices/nld_7490.cpp +++ b/src/lib/netlist/devices/nld_7490.cpp @@ -7,7 +7,6 @@ #include "nld_7490.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_7492.cpp b/src/lib/netlist/devices/nld_7492.cpp index acee92a5ee7..2ee24824c4e 100644 --- a/src/lib/netlist/devices/nld_7492.cpp +++ b/src/lib/netlist/devices/nld_7492.cpp @@ -7,7 +7,6 @@ #include "nld_7492.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_7493.cpp b/src/lib/netlist/devices/nld_7493.cpp index 48c2b179073..57d9a543f06 100644 --- a/src/lib/netlist/devices/nld_7493.cpp +++ b/src/lib/netlist/devices/nld_7493.cpp @@ -7,7 +7,6 @@ #include "nld_7493.h" #include "netlist/nl_base.h" -#include "nlid_system.h" //- Identifier: TTL_7493_DIP //- Title: 7493 Binary Counters diff --git a/src/lib/netlist/devices/nld_7497.cpp b/src/lib/netlist/devices/nld_7497.cpp index 6429e33e8b6..c0f83db6346 100644 --- a/src/lib/netlist/devices/nld_7497.cpp +++ b/src/lib/netlist/devices/nld_7497.cpp @@ -11,7 +11,6 @@ #include "nld_7497.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_82S115.cpp b/src/lib/netlist/devices/nld_82S115.cpp index d0ee2490a05..041795a73cd 100644 --- a/src/lib/netlist/devices/nld_82S115.cpp +++ b/src/lib/netlist/devices/nld_82S115.cpp @@ -7,7 +7,6 @@ #include "nld_82S115.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_82S123.cpp b/src/lib/netlist/devices/nld_82S123.cpp index 1dedc8989ea..c7da3389884 100644 --- a/src/lib/netlist/devices/nld_82S123.cpp +++ b/src/lib/netlist/devices/nld_82S123.cpp @@ -7,7 +7,6 @@ #include "nld_82S123.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_82S126.cpp b/src/lib/netlist/devices/nld_82S126.cpp index 9655ba67fb9..ff0ae1729fc 100644 --- a/src/lib/netlist/devices/nld_82S126.cpp +++ b/src/lib/netlist/devices/nld_82S126.cpp @@ -7,7 +7,6 @@ #include "nld_82S126.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_82S16.cpp b/src/lib/netlist/devices/nld_82S16.cpp index b02fbcc08e5..9fc9815a540 100644 --- a/src/lib/netlist/devices/nld_82S16.cpp +++ b/src/lib/netlist/devices/nld_82S16.cpp @@ -7,7 +7,6 @@ #include "nld_82S16.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_9310.cpp b/src/lib/netlist/devices/nld_9310.cpp index 81c26928be3..1278a65f5ab 100644 --- a/src/lib/netlist/devices/nld_9310.cpp +++ b/src/lib/netlist/devices/nld_9310.cpp @@ -7,7 +7,6 @@ #include "nld_9310.h" #include "netlist/nl_base.h" -#include "nlid_system.h" #define MAXCNT 9 diff --git a/src/lib/netlist/devices/nld_9316.cpp b/src/lib/netlist/devices/nld_9316.cpp index 988de6eedc4..824cadb659b 100644 --- a/src/lib/netlist/devices/nld_9316.cpp +++ b/src/lib/netlist/devices/nld_9316.cpp @@ -7,7 +7,6 @@ #include "nld_9316.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_9322.cpp b/src/lib/netlist/devices/nld_9322.cpp index 14b0a846053..ef0657d78cb 100644 --- a/src/lib/netlist/devices/nld_9322.cpp +++ b/src/lib/netlist/devices/nld_9322.cpp @@ -7,7 +7,6 @@ #include "nld_9322.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_am2847.cpp b/src/lib/netlist/devices/nld_am2847.cpp index 670477c6e06..2b03e1d9846 100644 --- a/src/lib/netlist/devices/nld_am2847.cpp +++ b/src/lib/netlist/devices/nld_am2847.cpp @@ -7,7 +7,6 @@ #include "nld_am2847.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_dm9314.cpp b/src/lib/netlist/devices/nld_dm9314.cpp index 22936f0bb05..edf250c91ba 100644 --- a/src/lib/netlist/devices/nld_dm9314.cpp +++ b/src/lib/netlist/devices/nld_dm9314.cpp @@ -7,7 +7,6 @@ #include "nld_dm9314.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nld_dm9334.cpp b/src/lib/netlist/devices/nld_dm9334.cpp index 35aaebb258e..9ebadfedb2e 100644 --- a/src/lib/netlist/devices/nld_dm9334.cpp +++ b/src/lib/netlist/devices/nld_dm9334.cpp @@ -7,7 +7,6 @@ #include "nld_dm9334.h" #include "netlist/nl_base.h" -#include "nlid_system.h" namespace netlist { diff --git a/src/lib/netlist/devices/nlid_system.h b/src/lib/netlist/devices/nlid_system.h index 9df9839aa8a..b2c2b078083 100644 --- a/src/lib/netlist/devices/nlid_system.h +++ b/src/lib/netlist/devices/nlid_system.h @@ -43,40 +43,6 @@ namespace devices param_num_t m_max_link_loops; }; - // ----------------------------------------------------------------------------- - // power pins - not a device, but a helper - // ----------------------------------------------------------------------------- - - /// \brief Power pins class. - /// - /// Power Pins are passive inputs. Delegate noop will silently ignore any - /// updates. - - class nld_power_pins - { - public: - explicit nld_power_pins(device_t &owner, const pstring &sVCC = sPowerVCC, - const pstring &sGND = sPowerGND) - : m_VCC(owner, sVCC, NETLIB_DELEGATE(power_pins, noop)) - , m_GND(owner, sGND, NETLIB_DELEGATE(power_pins, noop)) - { - } - - const analog_input_t &VCC() const noexcept - { - return m_VCC; - } - const analog_input_t &GND() const noexcept - { - return m_GND; - } - - private: - void noop() { } - analog_input_t m_VCC; - analog_input_t m_GND; - }; - // ----------------------------------------------------------------------------- // clock // ----------------------------------------------------------------------------- diff --git a/src/lib/netlist/nl_base.h b/src/lib/netlist/nl_base.h index 088efacae4d..8b0b5ecd5ee 100644 --- a/src/lib/netlist/nl_base.h +++ b/src/lib/netlist/nl_base.h @@ -333,13 +333,19 @@ namespace netlist struct state_var { public: - template + template //! Constructor. state_var(O &owner, //!< owner must have a netlist() method. const pstring &name, //!< identifier/name for this state variable - Args&&... args //!< Initial values for construction of O + const T &value //!< Initial value after construction ); + template + //! Constructor. + state_var(O &owner, //!< owner must have a netlist() method. + const pstring &name //!< identifier/name for this state variable + ); + //! Destructor. ~state_var() noexcept = default; //! Copy Constructor. @@ -1776,6 +1782,40 @@ namespace netlist }; + // ----------------------------------------------------------------------------- + // power pins - not a device, but a helper + // ----------------------------------------------------------------------------- + + /// \brief Power pins class. + /// + /// Power Pins are passive inputs. Delegate noop will silently ignore any + /// updates. + + class nld_power_pins + { + public: + explicit nld_power_pins(device_t &owner, const pstring &sVCC = sPowerVCC, + const pstring &sGND = sPowerGND) + : m_VCC(owner, sVCC, NETLIB_DELEGATE(power_pins, noop)) + , m_GND(owner, sGND, NETLIB_DELEGATE(power_pins, noop)) + { + } + + const analog_input_t &VCC() const noexcept + { + return m_VCC; + } + const analog_input_t &GND() const noexcept + { + return m_GND; + } + + private: + void noop() { } + analog_input_t m_VCC; + analog_input_t m_GND; + }; + // ----------------------------------------------------------------------------- // inline implementations // ----------------------------------------------------------------------------- @@ -2038,9 +2078,16 @@ namespace netlist } template - template - state_var::state_var(O &owner, const pstring &name, Args&&... args) - : m_value(std::forward(args)...) + template + state_var::state_var(O &owner, const pstring &name, const T &value) + : m_value(value) + { + owner.state().save(owner, m_value, owner.name(), name); + } + + template + template + state_var::state_var(O &owner, const pstring &name) { owner.state().save(owner, m_value, owner.name(), name); }