summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/devices/nlid_proxy.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/netlist/devices/nlid_proxy.h')
-rw-r--r--src/lib/netlist/devices/nlid_proxy.h55
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;