diff --git a/src/lib/netlist/devices/nld_4013.cpp b/src/lib/netlist/devices/nld_4013.cpp index 85f39753470..63330cf24d3 100644 --- a/src/lib/netlist/devices/nld_4013.cpp +++ b/src/lib/netlist/devices/nld_4013.cpp @@ -19,7 +19,7 @@ namespace netlist , m_D(*this, "DATA") , m_RESET(*this, "RESET") , m_SET(*this, "SET") - , m_CLK(*this, "CLOCK", NETLIB_DELEGATE(CD4013, clk)) + , m_CLK(*this, "CLOCK", NETLIB_DELEGATE(clk)) , m_Q(*this, "Q") , m_QQ(*this, "QQ") , m_nextD(*this, "m_nextD", 0) diff --git a/src/lib/netlist/devices/nld_74107.cpp b/src/lib/netlist/devices/nld_74107.cpp index 362489d07cc..08a69600456 100644 --- a/src/lib/netlist/devices/nld_74107.cpp +++ b/src/lib/netlist/devices/nld_74107.cpp @@ -19,7 +19,7 @@ namespace netlist NETLIB_OBJECT(74107A) { NETLIB_CONSTRUCTOR(74107A) - , m_clk(*this, "CLK", NETLIB_DELEGATE(74107A, clk)) + , m_clk(*this, "CLK", NETLIB_DELEGATE(clk)) , m_Q(*this, "Q") , m_QQ(*this, "QQ") , m_J(*this, "J") diff --git a/src/lib/netlist/devices/nld_74125.cpp b/src/lib/netlist/devices/nld_74125.cpp index 244ff1d1fc1..ed0bcc5fd4d 100644 --- a/src/lib/netlist/devices/nld_74125.cpp +++ b/src/lib/netlist/devices/nld_74125.cpp @@ -36,8 +36,8 @@ namespace netlist { NETLIB_CONSTRUCTOR(74125_base) , m_TE(*this, "FORCE_TRISTATE_LOGIC", 0) - , m_A(*this, "A", NETLIB_DELEGATE(74125_base, A)) - , m_G(*this, pstring(D::invert_g::value ? "GQ" : "G"), NETLIB_DELEGATE(74125_base, G)) + , m_A(*this, "A", NETLIB_DELEGATE(A)) + , m_G(*this, pstring(D::invert_g::value ? "GQ" : "G"), NETLIB_DELEGATE(G)) , m_Y(*this, "Y", m_TE()) //, m_Y(*this, "Y") , m_power_pins(*this) diff --git a/src/lib/netlist/devices/nld_74153.cpp b/src/lib/netlist/devices/nld_74153.cpp index 6fa8fad4cb7..ce6f6536364 100644 --- a/src/lib/netlist/devices/nld_74153.cpp +++ b/src/lib/netlist/devices/nld_74153.cpp @@ -21,8 +21,8 @@ namespace devices NETLIB_OBJECT(74153) { NETLIB_CONSTRUCTOR(74153) - , m_C(*this, {"C0", "C1", "C2", "C3"}, NETLIB_DELEGATE(74153, sub)) - , m_G(*this, "G", NETLIB_DELEGATE(74153, sub)) + , m_C(*this, {"C0", "C1", "C2", "C3"}, NETLIB_DELEGATE(sub)) + , m_G(*this, "G", NETLIB_DELEGATE(sub)) , m_Y(*this, "AY") //FIXME: Change netlists , m_chan(*this, "m_chan", 0) , m_A(*this, "A") diff --git a/src/lib/netlist/devices/nld_74174.cpp b/src/lib/netlist/devices/nld_74174.cpp index a95b5ca967c..3775eb54a76 100644 --- a/src/lib/netlist/devices/nld_74174.cpp +++ b/src/lib/netlist/devices/nld_74174.cpp @@ -15,7 +15,7 @@ namespace devices NETLIB_OBJECT(74174) { NETLIB_CONSTRUCTOR(74174) - , m_CLK(*this, "CLK", NETLIB_DELEGATE(74174, sub)) + , m_CLK(*this, "CLK", NETLIB_DELEGATE(sub)) , m_Q(*this, {"Q1", "Q2", "Q3", "Q4", "Q5", "Q6"}) , m_clrq(*this, "m_clr", 0) , m_data(*this, "m_data", 0) diff --git a/src/lib/netlist/devices/nld_74175.cpp b/src/lib/netlist/devices/nld_74175.cpp index 9d84128fc31..736fab7f5cb 100644 --- a/src/lib/netlist/devices/nld_74175.cpp +++ b/src/lib/netlist/devices/nld_74175.cpp @@ -18,7 +18,7 @@ namespace netlist NETLIB_CONSTRUCTOR(74175) , m_D(*this, {"D1", "D2", "D3", "D4"}) , m_CLRQ(*this, "CLRQ") - , m_CLK(*this, "CLK", NETLIB_DELEGATE(74175, clk)) + , m_CLK(*this, "CLK", NETLIB_DELEGATE(clk)) , m_Q(*this, {"Q1", "Q2", "Q3", "Q4"}) , m_QQ(*this, {"Q1Q", "Q2Q", "Q3Q", "Q4Q"}) , m_data(*this, "m_data", 0) diff --git a/src/lib/netlist/devices/nld_74192.cpp b/src/lib/netlist/devices/nld_74192.cpp index 36c1426ee37..464312b3ff0 100644 --- a/src/lib/netlist/devices/nld_74192.cpp +++ b/src/lib/netlist/devices/nld_74192.cpp @@ -28,10 +28,10 @@ namespace netlist , m_Q(*this, {"QA", "QB", "QC", "QD"}) , m_BORROWQ(*this, "BORROWQ") , m_CARRYQ(*this, "CARRYQ") - , m_A(*this, "A", NETLIB_DELEGATE(74192, sub)) - , m_B(*this, "B", NETLIB_DELEGATE(74192, sub)) - , m_C(*this, "C", NETLIB_DELEGATE(74192, sub)) - , m_D(*this, "D", NETLIB_DELEGATE(74192, sub)) + , m_A(*this, "A", NETLIB_DELEGATE(sub)) + , m_B(*this, "B", NETLIB_DELEGATE(sub)) + , m_C(*this, "C", NETLIB_DELEGATE(sub)) + , m_D(*this, "D", NETLIB_DELEGATE(sub)) , m_power_pins(*this) { } diff --git a/src/lib/netlist/devices/nld_7474.cpp b/src/lib/netlist/devices/nld_7474.cpp index 5d56d1708d4..abbe0c467c6 100644 --- a/src/lib/netlist/devices/nld_7474.cpp +++ b/src/lib/netlist/devices/nld_7474.cpp @@ -22,7 +22,7 @@ namespace netlist , m_D(*this, "D") , m_CLRQ(*this, "CLRQ") , m_PREQ(*this, "PREQ") - , m_CLK(*this, "CLK", NETLIB_DELEGATE(7474, clk)) + , m_CLK(*this, "CLK", NETLIB_DELEGATE(clk)) , m_Q(*this, "Q") , m_QQ(*this, "QQ") , m_nextD(*this, "m_nextD", 0) diff --git a/src/lib/netlist/devices/nld_7483.cpp b/src/lib/netlist/devices/nld_7483.cpp index 265b9a9cc16..2822fc0c656 100644 --- a/src/lib/netlist/devices/nld_7483.cpp +++ b/src/lib/netlist/devices/nld_7483.cpp @@ -16,14 +16,14 @@ namespace netlist { NETLIB_CONSTRUCTOR(7483) , m_C0(*this, "C0") - , m_A1(*this, "A1", NETLIB_DELEGATE(7483, upd_a)) - , m_A2(*this, "A2", NETLIB_DELEGATE(7483, upd_a)) - , m_A3(*this, "A3", NETLIB_DELEGATE(7483, upd_a)) - , m_A4(*this, "A4", NETLIB_DELEGATE(7483, upd_a)) - , m_B1(*this, "B1", NETLIB_DELEGATE(7483, upd_b)) - , m_B2(*this, "B2", NETLIB_DELEGATE(7483, upd_b)) - , m_B3(*this, "B3", NETLIB_DELEGATE(7483, upd_b)) - , m_B4(*this, "B4", NETLIB_DELEGATE(7483, upd_b)) + , m_A1(*this, "A1", NETLIB_DELEGATE(upd_a)) + , m_A2(*this, "A2", NETLIB_DELEGATE(upd_a)) + , m_A3(*this, "A3", NETLIB_DELEGATE(upd_a)) + , m_A4(*this, "A4", NETLIB_DELEGATE(upd_a)) + , m_B1(*this, "B1", NETLIB_DELEGATE(upd_b)) + , m_B2(*this, "B2", NETLIB_DELEGATE(upd_b)) + , m_B3(*this, "B3", NETLIB_DELEGATE(upd_b)) + , m_B4(*this, "B4", NETLIB_DELEGATE(upd_b)) , m_a(*this, "m_a", 0) , m_b(*this, "m_b", 0) , m_lastr(*this, "m_lastr", 0) diff --git a/src/lib/netlist/devices/nld_7493.cpp b/src/lib/netlist/devices/nld_7493.cpp index 87fe2b2bdc7..a2315dc6a8a 100644 --- a/src/lib/netlist/devices/nld_7493.cpp +++ b/src/lib/netlist/devices/nld_7493.cpp @@ -86,8 +86,8 @@ namespace netlist , m_a(*this, "_m_a", 0) , m_bcd(*this, "_m_b", 0) , m_r(*this, "_m_r", 0) - , m_CLKA(*this, "CLKA", NETLIB_DELEGATE(7493, updA)) - , m_CLKB(*this, "CLKB", NETLIB_DELEGATE(7493, updB)) + , m_CLKA(*this, "CLKA", NETLIB_DELEGATE(updA)) + , m_CLKB(*this, "CLKB", NETLIB_DELEGATE(updB)) , m_QA(*this, "QA") , m_QB(*this, {"QB", "QC", "QD"}) , m_power_pins(*this) diff --git a/src/lib/netlist/devices/nld_7497.cpp b/src/lib/netlist/devices/nld_7497.cpp index bbc4502aa9e..5c81af09850 100644 --- a/src/lib/netlist/devices/nld_7497.cpp +++ b/src/lib/netlist/devices/nld_7497.cpp @@ -24,11 +24,11 @@ namespace netlist { NETLIB_CONSTRUCTOR(7497) , m_B(*this, {"B5", "B4", "B3", "B2", "B1", "B0"}) - , m_CLK(*this, "CLK", NETLIB_DELEGATE(7497, clk_strb)) - , m_STRBQ(*this, "STRBQ", NETLIB_DELEGATE(7497, clk_strb)) + , m_CLK(*this, "CLK", NETLIB_DELEGATE(clk_strb)) + , m_STRBQ(*this, "STRBQ", NETLIB_DELEGATE(clk_strb)) , m_ENQ(*this, "ENQ") - , m_UNITYQ(*this, "UNITYQ", NETLIB_DELEGATE(7497, unity)) - , m_CLR(*this, "CLR", NETLIB_DELEGATE(7497, clr)) + , m_UNITYQ(*this, "UNITYQ", NETLIB_DELEGATE(unity)) + , m_CLR(*this, "CLR", NETLIB_DELEGATE(clr)) , m_Y(*this, "Y") , m_ZQ(*this, "ZQ") , m_ENOUTQ(*this, "ENOUTQ") diff --git a/src/lib/netlist/devices/nld_82S16.cpp b/src/lib/netlist/devices/nld_82S16.cpp index afe0b557203..8e9f858edec 100644 --- a/src/lib/netlist/devices/nld_82S16.cpp +++ b/src/lib/netlist/devices/nld_82S16.cpp @@ -15,10 +15,10 @@ namespace netlist NETLIB_OBJECT(82S16) { NETLIB_CONSTRUCTOR(82S16) - , m_A(*this, {"A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7"}, NETLIB_DELEGATE(82S16, addr)) - , m_CE1Q(*this, "CE1Q", NETLIB_DELEGATE(82S16, enq)) - , m_CE2Q(*this, "CE2Q", NETLIB_DELEGATE(82S16, enq)) - , m_CE3Q(*this, "CE3Q", NETLIB_DELEGATE(82S16, enq)) + , m_A(*this, {"A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7"}, NETLIB_DELEGATE(addr)) + , m_CE1Q(*this, "CE1Q", NETLIB_DELEGATE(enq)) + , m_CE2Q(*this, "CE2Q", NETLIB_DELEGATE(enq)) + , m_CE3Q(*this, "CE3Q", NETLIB_DELEGATE(enq)) , m_WEQ(*this, "WEQ") , m_DIN(*this, "DIN") , m_DOUTQ(*this, "DOUTQ") diff --git a/src/lib/netlist/devices/nld_9316_base.hxx b/src/lib/netlist/devices/nld_9316_base.hxx index 0f6d22dd79b..e87c1dbf1ce 100644 --- a/src/lib/netlist/devices/nld_9316_base.hxx +++ b/src/lib/netlist/devices/nld_9316_base.hxx @@ -23,13 +23,13 @@ namespace netlist NETLIB_OBJECT(9316_base) { NETLIB_CONSTRUCTOR(9316_base) - , m_CLK(*this, "CLK", NETLIB_DELEGATE(9316_base, clk)) + , m_CLK(*this, "CLK", NETLIB_DELEGATE(clk)) , m_ENT(*this, "ENT") , m_RC(*this, "RC") , m_LOADQ(*this, "LOADQ") , m_ENP(*this, "ENP") , m_CLRQ(*this, "CLRQ") - , m_ABCD(*this, {"A", "B", "C", "D"}, NETLIB_DELEGATE(9316_base, abcd)) + , m_ABCD(*this, {"A", "B", "C", "D"}, NETLIB_DELEGATE(abcd)) , m_Q(*this, { "QA", "QB", "QC", "QD" }) , m_cnt(*this, "m_cnt", 0) , m_abcd(*this, "m_abcd", 0) diff --git a/src/lib/netlist/devices/nld_roms.cpp b/src/lib/netlist/devices/nld_roms.cpp index f82480e91e2..a921c932aa2 100644 --- a/src/lib/netlist/devices/nld_roms.cpp +++ b/src/lib/netlist/devices/nld_roms.cpp @@ -31,12 +31,12 @@ namespace netlist NETLIB_CONSTRUCTOR(generic_prom) , m_enabled(*this, "m_enabled", true) , m_TE(*this, "FORCE_TRISTATE_LOGIC", 0) - , m_A(*this, 0, "A{}", NETLIB_DELEGATE(generic_prom, addr)) + , m_A(*this, 0, "A{}", NETLIB_DELEGATE(addr)) , m_CEQ(*this, 1, D::chip_enable_mask::value ^ static_cast(0xffff), pstring("CE{}"), - std::array{ NETLIB_DELEGATE(generic_prom, ce<0>), - NETLIB_DELEGATE(generic_prom, ce<1>), - NETLIB_DELEGATE(generic_prom, ce<2>)}) + std::array{ NETLIB_DELEGATE(ce<0>), + NETLIB_DELEGATE(ce<1>), + NETLIB_DELEGATE(ce<2>)}) , m_O(*this, D::data_name_offset::value, "O{}", m_TE()) , m_ROM(*this, "ROM") , m_power_pins(*this) diff --git a/src/lib/netlist/devices/nld_system.cpp b/src/lib/netlist/devices/nld_system.cpp index 20592f9f46d..547581ec590 100644 --- a/src/lib/netlist/devices/nld_system.cpp +++ b/src/lib/netlist/devices/nld_system.cpp @@ -26,10 +26,7 @@ namespace devices { m_cnt = 0; m_off = netlist_time::from_fp(m_offset()); - m_feedback.set_delegate(NETLIB_DELEGATE(extclock, update)); - - //m_feedback.m_delegate .set(&NETLIB_NAME(extclock)::update, this); - //m_Q.initial(0); + m_feedback.set_delegate(NETLIB_DELEGATE(update)); } NETLIB_HANDLER(extclock, clk2) diff --git a/src/lib/netlist/nl_base.h b/src/lib/netlist/nl_base.h index 857f1be10e3..ffb1b564f69 100644 --- a/src/lib/netlist/nl_base.h +++ b/src/lib/netlist/nl_base.h @@ -79,7 +79,8 @@ class NETLIB_NAME(name) : public delegator_t #define NETLIB_BASE_OBJECT(name) \ class NETLIB_NAME(name) : public delegator_t -#define NETLIB_CONSTRUCTOR_PASS(cname, ...) \ +#define NETLIB_CONSTRUCTOR_PASS(cname, ...) \ + using this_type = NETLIB_NAME(cname); \ public: template NETLIB_NAME(cname)(CLASS &owner, const pstring &name) \ : base_type(owner, name, __VA_ARGS__) @@ -88,6 +89,7 @@ class NETLIB_NAME(name) : public delegator_t /// Use this to define the constructor of a netlist device. Please refer to /// #NETLIB_OBJECT for an example. #define NETLIB_CONSTRUCTOR(cname) \ + using this_type = NETLIB_NAME(cname); \ public: template NETLIB_NAME(cname)(CLASS &owner, const pstring &name) \ : base_type(owner, name) @@ -101,6 +103,7 @@ class NETLIB_NAME(name) : public delegator_t /// }; /// #define NETLIB_CONSTRUCTOR_MODEL(cname, cmodel) \ + using this_type = NETLIB_NAME(cname); \ public: template NETLIB_NAME(cname)(CLASS &owner, const pstring &name) \ : base_type(owner, name, cmodel) @@ -108,6 +111,7 @@ class NETLIB_NAME(name) : public delegator_t /// The macro allows to add further parameters to a device constructor. This is /// normally used for sub-devices and system devices only. #define NETLIB_CONSTRUCTOR_EX(cname, ...) \ + using this_type = NETLIB_NAME(cname); \ public: template NETLIB_NAME(cname)(CLASS &owner, const pstring &name, __VA_ARGS__) \ : base_type(owner, name) @@ -173,7 +177,7 @@ class NETLIB_NAME(name) : public delegator_t #define NETLIB_TIMESTEP(cname) \ void NETLIB_NAME(cname) :: timestep(nl_fptype step) noexcept -#define NETLIB_DELEGATE(chip, name) nldelegate(&NETLIB_NAME(chip) :: name, this) +#define NETLIB_DELEGATE(name) nldelegate(&this_type :: name, this) #define NETLIB_UPDATE_TERMINALSI() virtual void update_terminals() noexcept override #define NETLIB_HANDLERI(name) void name() noexcept @@ -2169,10 +2173,12 @@ namespace netlist class nld_power_pins { public: + using this_type = nld_power_pins; + 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)) + : m_VCC(owner, sVCC, NETLIB_DELEGATE(noop)) + , m_GND(owner, sGND, NETLIB_DELEGATE(noop)) { }