diff options
Diffstat (limited to 'src/lib/netlist/analog/nld_switches.cpp')
-rw-r--r-- | src/lib/netlist/analog/nld_switches.cpp | 52 |
1 files changed, 28 insertions, 24 deletions
diff --git a/src/lib/netlist/analog/nld_switches.cpp b/src/lib/netlist/analog/nld_switches.cpp index 169d6465969..6b87279e398 100644 --- a/src/lib/netlist/analog/nld_switches.cpp +++ b/src/lib/netlist/analog/nld_switches.cpp @@ -19,65 +19,69 @@ namespace netlist // SWITCH // ---------------------------------------------------------------------------------------- - NETLIB_BASE_OBJECT(switch1) + class nld_switch1 : public base_device_t { - NETLIB_CONSTRUCTOR(switch1) + public: + nld_switch1(constructor_param_t data) + : base_device_t(data) , m_R(*this, "R") , m_POS(*this, "POS", false) { - register_sub_alias("1", m_R.P()); - register_sub_alias("2", m_R.N()); + register_sub_alias("1", m_R().P()); + register_sub_alias("2", m_R().N()); } NETLIB_RESETI() { - m_R.set_R(R_OFF); + m_R().set_R(R_OFF); } NETLIB_UPDATE_PARAMI() { - m_R.change_state([this]() + m_R().change_state([this]() { - m_R.set_R(m_POS() ? R_ON : R_OFF); + m_R().set_R(m_POS() ? R_ON : R_OFF); }); } private: - analog::NETLIB_SUB(R_base) m_R; - param_logic_t m_POS; + NETLIB_SUB_NS(analog, R_base) m_R; + param_logic_t m_POS; }; // ---------------------------------------------------------------------------------------- // SWITCH2 // ---------------------------------------------------------------------------------------- - NETLIB_BASE_OBJECT(switch2) + class nld_switch2 : public base_device_t { - NETLIB_CONSTRUCTOR(switch2) + public: + nld_switch2(constructor_param_t data) + : base_device_t(data) , m_R1(*this, "R1") , m_R2(*this, "R2") , m_POS(*this, "POS", false) { - connect(m_R1.N(), m_R2.N()); + connect(m_R1().N(), m_R2().N()); - register_sub_alias("1", m_R1.P()); - register_sub_alias("2", m_R2.P()); + register_sub_alias("1", m_R1().P()); + register_sub_alias("2", m_R2().P()); - register_sub_alias("Q", m_R1.N()); + register_sub_alias("Q", m_R1().N()); } NETLIB_RESETI(); NETLIB_UPDATE_PARAMI(); private: - analog::NETLIB_SUB(R_base) m_R1; - analog::NETLIB_SUB(R_base) m_R2; - param_logic_t m_POS; + NETLIB_SUB_NS(analog, R_base) m_R1; + NETLIB_SUB_NS(analog, R_base) m_R2; + param_logic_t m_POS; }; NETLIB_RESET(switch2) { - m_R1.set_R(R_ON); - m_R2.set_R(R_OFF); + m_R1().set_R(R_ON); + m_R2().set_R(R_OFF); } #ifdef FIXMELATER @@ -103,12 +107,12 @@ namespace netlist nl_fptype r1 = m_POS() ? R_OFF : R_ON; nl_fptype r2 = m_POS() ? R_ON : R_OFF; - if (m_R1.solver() == m_R2.solver()) - m_R1.change_state([this, &r1, &r2]() { m_R1.set_R(r1); m_R2.set_R(r2); }); + if (m_R1().solver() == m_R2().solver()) + m_R1().change_state([this, &r1, &r2]() { m_R1().set_R(r1); m_R2().set_R(r2); }); else { - m_R1.change_state([this, &r1]() { m_R1.set_R(r1); }); - m_R2.change_state([this, &r2]() { m_R2.set_R(r2); }); + m_R1().change_state([this, &r1]() { m_R1().set_R(r1); }); + m_R2().change_state([this, &r2]() { m_R2().set_R(r2); }); } } |