diff options
Diffstat (limited to 'src/lib/netlist/devices/nlid_proxy.h')
-rw-r--r-- | src/lib/netlist/devices/nlid_proxy.h | 55 |
1 files changed, 28 insertions, 27 deletions
diff --git a/src/lib/netlist/devices/nlid_proxy.h b/src/lib/netlist/devices/nlid_proxy.h index eb2f2dd5ade..0e1b51c9ca7 100644 --- a/src/lib/netlist/devices/nlid_proxy.h +++ b/src/lib/netlist/devices/nlid_proxy.h @@ -27,10 +27,10 @@ namespace devices { public: nld_base_proxy(netlist_state_t &anetlist, const pstring &name, - logic_t *inout_proxied, detail::core_terminal_t *proxy_inout); + logic_t *inout_proxied); - logic_t &term_proxied() const { return *m_term_proxied; } - detail::core_terminal_t &proxy_term() const { return *m_proxy_term; } + // only used during setup + virtual detail::core_terminal_t &proxy_term() noexcept = 0; protected: // FIXME: these should be core_terminal_t and only used for connecting @@ -38,14 +38,6 @@ namespace devices analog_t *m_tp; analog_t *m_tn; - plib::unique_ptr<analog_output_t> m_GNDHack; // FIXME: Long term, we need to connect proxy gnd to device gnd - plib::unique_ptr<analog_output_t> m_VCCHack; // FIXME: Long term, we need to connect proxy gnd to device gnd - - bool need_hack() const noexcept { return m_need_hack; } - private: - logic_t *m_term_proxied; - detail::core_terminal_t *m_proxy_term; - bool m_need_hack; }; // ----------------------------------------------------------------------------- @@ -55,33 +47,34 @@ namespace devices NETLIB_OBJECT_DERIVED(base_a_to_d_proxy, base_proxy) { public: - - virtual logic_output_t &out() { return m_Q; } + virtual logic_output_t &out() noexcept = 0; protected: - nld_base_a_to_d_proxy(netlist_state_t &anetlist, const pstring &name, - logic_input_t *in_proxied, detail::core_terminal_t *in_proxy); - - private: - - logic_output_t m_Q; + logic_input_t *in_proxied); }; NETLIB_OBJECT_DERIVED(a_to_d_proxy, base_a_to_d_proxy) { public: - nld_a_to_d_proxy(netlist_state_t &anetlist, const pstring &name, logic_input_t *in_proxied); + nld_a_to_d_proxy(netlist_state_t &anetlist, const pstring &name, + logic_input_t *in_proxied); - analog_input_t m_I; + virtual logic_output_t &out() noexcept override { return m_Q; } - protected: + virtual detail::core_terminal_t &proxy_term() noexcept override + { + return m_I; + } + protected: NETLIB_RESETI(); NETLIB_UPDATEI(); private: + logic_output_t m_Q; + analog_input_t m_I; }; // ----------------------------------------------------------------------------- @@ -91,20 +84,27 @@ namespace devices NETLIB_OBJECT_DERIVED(base_d_to_a_proxy, base_proxy) { public: - - virtual logic_input_t &in() { return m_I; } + // only used in setup + virtual logic_input_t &in() noexcept = 0; protected: nld_base_d_to_a_proxy(netlist_state_t &anetlist, const pstring &name, - logic_output_t *out_proxied, detail::core_terminal_t &proxy_out); + logic_output_t *out_proxied); - logic_input_t m_I; }; NETLIB_OBJECT_DERIVED(d_to_a_proxy, base_d_to_a_proxy) { public: - nld_d_to_a_proxy(netlist_state_t &anetlist, const pstring &name, logic_output_t *out_proxied); + nld_d_to_a_proxy(netlist_state_t &anetlist, const pstring &name, + logic_output_t *out_proxied); + + virtual logic_input_t &in() noexcept override { return m_I; } + + virtual detail::core_terminal_t &proxy_term() noexcept override + { + return m_RN.m_P; + } protected: @@ -115,6 +115,7 @@ namespace devices static constexpr const nl_fptype G_OFF = nlconst::magic(1e-9); + logic_input_t m_I; analog::NETLIB_NAME(twoterm) m_RP; analog::NETLIB_NAME(twoterm) m_RN; state_var<int> m_last_state; |