mirror of
https://github.com/holub/mame
synced 2025-06-03 03:16:30 +03:00
netlist: All devices now specify parameters in factory constructor. (nw)
This previously was part of net_lib.cpp and repeatedly caused bugs.
This commit is contained in:
parent
14c8de2cb2
commit
75146fd159
@ -430,8 +430,8 @@ NETLIB_UPDATE_PARAM(QBJT_EB)
|
||||
} //namespace analog
|
||||
|
||||
namespace devices {
|
||||
NETLIB_DEVICE_IMPL_NS(analog, QBJT_EB)
|
||||
NETLIB_DEVICE_IMPL_NS(analog, QBJT_switch)
|
||||
NETLIB_DEVICE_IMPL_NS(analog, QBJT_EB, "QBJT_EB", "MODEL")
|
||||
NETLIB_DEVICE_IMPL_NS(analog, QBJT_switch, "QBJT_SW", "MODEL")
|
||||
}
|
||||
|
||||
} // namespace netlist
|
||||
|
@ -239,6 +239,6 @@ namespace netlist
|
||||
} //namespace analog
|
||||
|
||||
namespace devices {
|
||||
NETLIB_DEVICE_IMPL_NS(analog, opamp)
|
||||
NETLIB_DEVICE_IMPL_NS(analog, opamp, "OPAMP", "MODEL")
|
||||
}
|
||||
} // namespace netlist
|
||||
|
@ -136,7 +136,7 @@ namespace netlist
|
||||
} //namespace analog
|
||||
|
||||
namespace devices {
|
||||
NETLIB_DEVICE_IMPL_NS(analog, switch1)
|
||||
NETLIB_DEVICE_IMPL_NS(analog, switch2)
|
||||
NETLIB_DEVICE_IMPL_NS(analog, switch1, "SWITCH", "")
|
||||
NETLIB_DEVICE_IMPL_NS(analog, switch2, "SWITCH2", "")
|
||||
}
|
||||
} // namespace netlist
|
||||
|
@ -116,9 +116,9 @@ NETLIB_RESET(VCVS)
|
||||
} //namespace analog
|
||||
|
||||
namespace devices {
|
||||
NETLIB_DEVICE_IMPL_NS(analog, VCVS)
|
||||
NETLIB_DEVICE_IMPL_NS(analog, VCCS)
|
||||
NETLIB_DEVICE_IMPL_NS(analog, CCCS)
|
||||
NETLIB_DEVICE_IMPL_NS(analog, LVCCS)
|
||||
NETLIB_DEVICE_IMPL_NS(analog, VCVS, "VCVS", "")
|
||||
NETLIB_DEVICE_IMPL_NS(analog, VCCS, "VCCS", "")
|
||||
NETLIB_DEVICE_IMPL_NS(analog, CCCS, "CCCS", "")
|
||||
NETLIB_DEVICE_IMPL_NS(analog, LVCCS, "LVCCS", "")
|
||||
}
|
||||
} // namespace netlist
|
||||
|
@ -271,14 +271,14 @@ NETLIB_UPDATE_TERMINALS(D)
|
||||
} //namespace analog
|
||||
|
||||
namespace devices {
|
||||
NETLIB_DEVICE_IMPL_NS(analog, R)
|
||||
NETLIB_DEVICE_IMPL_NS(analog, POT)
|
||||
NETLIB_DEVICE_IMPL_NS(analog, POT2)
|
||||
NETLIB_DEVICE_IMPL_NS(analog, C)
|
||||
NETLIB_DEVICE_IMPL_NS(analog, L)
|
||||
NETLIB_DEVICE_IMPL_NS(analog, D)
|
||||
NETLIB_DEVICE_IMPL_NS(analog, VS)
|
||||
NETLIB_DEVICE_IMPL_NS(analog, CS)
|
||||
NETLIB_DEVICE_IMPL_NS(analog, R, "RES", "R")
|
||||
NETLIB_DEVICE_IMPL_NS(analog, POT, "POT", "R")
|
||||
NETLIB_DEVICE_IMPL_NS(analog, POT2, "POT2", "R")
|
||||
NETLIB_DEVICE_IMPL_NS(analog, C, "CAP", "C")
|
||||
NETLIB_DEVICE_IMPL_NS(analog, L, "IND", "L")
|
||||
NETLIB_DEVICE_IMPL_NS(analog, D, "DIODE", "MODEL")
|
||||
NETLIB_DEVICE_IMPL_NS(analog, VS, "VS", "V")
|
||||
NETLIB_DEVICE_IMPL_NS(analog, CS, "CS", "I")
|
||||
}
|
||||
|
||||
} // namespace netlist
|
||||
|
@ -17,149 +17,148 @@
|
||||
|
||||
#define NETLIB_DEVICE_DECL(chip) extern factory::constructor_ptr_t decl_ ## chip
|
||||
|
||||
#define ENTRYX1(nic, name, defparam, decl) factory.register_device( decl (pstring(# name), pstring(xstr(nic)), pstring(defparam)) );
|
||||
#define ENTRYX(nic, name, defparam) { NETLIB_DEVICE_DECL(nic); ENTRYX1(NETLIB_NAME(nic), name, defparam, decl_ ## nic) }
|
||||
|
||||
#define ENTRYX1_N(nic, decl) factory.register_device( decl (pstring(""), pstring(xstr(nic)), pstring("")) );
|
||||
#define ENTRYX_N(nic) { NETLIB_DEVICE_DECL(nic); ENTRYX1_N(NETLIB_NAME(nic), decl_ ## nic) }
|
||||
#define LIB_DECL(nic, decl) factory.register_device( decl ( pstring(xstr(nic))) );
|
||||
#define LIB_ENTRY(nic) { NETLIB_DEVICE_DECL(nic); LIB_DECL(NETLIB_NAME(nic), decl_ ## nic) }
|
||||
|
||||
namespace netlist
|
||||
{
|
||||
namespace devices
|
||||
{
|
||||
void initialize_factory(factory::list_t &factory)
|
||||
namespace devices
|
||||
{
|
||||
ENTRYX(R, RES, "R")
|
||||
ENTRYX(POT, POT, "R")
|
||||
ENTRYX(POT2, POT2, "R")
|
||||
ENTRYX(C, CAP, "C")
|
||||
ENTRYX(L, IND, "L")
|
||||
ENTRYX(D, DIODE, "MODEL")
|
||||
ENTRYX(VS, VS, "V")
|
||||
ENTRYX(CS, CS, "I")
|
||||
ENTRYX(VCVS, VCVS, "")
|
||||
ENTRYX(VCCS, VCCS, "")
|
||||
ENTRYX(CCCS, CCCS, "")
|
||||
ENTRYX(LVCCS, LVCCS, "")
|
||||
ENTRYX(opamp, OPAMP, "MODEL")
|
||||
ENTRYX(dummy_input, DUMMY_INPUT, "")
|
||||
ENTRYX(frontier, FRONTIER_DEV, "+I,+G,+Q") // not intended to be used directly
|
||||
ENTRYX(function, AFUNC, "N,FUNC") // only for macro devices - NO FEEDBACK loops
|
||||
ENTRYX(QBJT_EB, QBJT_EB, "MODEL")
|
||||
ENTRYX(QBJT_switch, QBJT_SW, "MODEL")
|
||||
ENTRYX(logic_input, TTL_INPUT, "IN")
|
||||
ENTRYX(logic_input, LOGIC_INPUT, "IN,FAMILY")
|
||||
ENTRYX(analog_input, ANALOG_INPUT, "IN")
|
||||
ENTRYX(log, LOG, "+I")
|
||||
ENTRYX(logD, LOGD, "+I,+I2")
|
||||
ENTRYX(clock, CLOCK, "FREQ")
|
||||
ENTRYX(extclock, EXTCLOCK, "FREQ,PATTERN")
|
||||
ENTRYX(mainclock, MAINCLOCK, "FREQ")
|
||||
ENTRYX(gnd, GND, "")
|
||||
ENTRYX(netlistparams, PARAMETER, "")
|
||||
ENTRYX(solver, SOLVER, "FREQ")
|
||||
ENTRYX(res_sw, RES_SWITCH, "+IN,+P1,+P2")
|
||||
ENTRYX(switch1, SWITCH, "")
|
||||
ENTRYX(switch2, SWITCH2, "")
|
||||
ENTRYX(nicRSFF, NETDEV_RSFF, "")
|
||||
ENTRYX(nicDelay, NETDEV_DELAY, "")
|
||||
ENTRYX(2102A, RAM_2102A, "+CEQ,+A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+RWQ,+DI")
|
||||
ENTRYX(2102A_dip, RAM_2102A_DIP, "")
|
||||
ENTRYX(2716, EPROM_2716, "+GQ,+EPQ,+A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10")
|
||||
ENTRYX(2716_dip, EPROM_2716_DIP, "")
|
||||
ENTRYX_N(7448)
|
||||
ENTRYX_N(7448_dip)
|
||||
ENTRYX_N(7450)
|
||||
ENTRYX_N(7450_dip)
|
||||
ENTRYX_N(7473)
|
||||
ENTRYX_N(7473_dip)
|
||||
ENTRYX_N(7473A)
|
||||
ENTRYX_N(7473A_dip)
|
||||
ENTRYX_N(7474)
|
||||
ENTRYX_N(7474_dip)
|
||||
ENTRYX(7475, TTL_7475, "")
|
||||
ENTRYX(7475_dip, TTL_7475_DIP, "")
|
||||
ENTRYX(7477, TTL_7477, "")
|
||||
ENTRYX(7477_dip, TTL_7477_DIP, "")
|
||||
ENTRYX_N(7483)
|
||||
ENTRYX_N(7483_dip)
|
||||
ENTRYX_N(7485)
|
||||
ENTRYX_N(7485_dip)
|
||||
ENTRYX_N(7490)
|
||||
ENTRYX_N(7490_dip)
|
||||
ENTRYX_N(7493)
|
||||
ENTRYX_N(7493_dip)
|
||||
ENTRYX_N(7497)
|
||||
ENTRYX_N(7497_dip)
|
||||
ENTRYX_N(74107)
|
||||
ENTRYX_N(74107_dip)
|
||||
ENTRYX_N(74107A) // FIXME: implement missing DIP
|
||||
ENTRYX(74123, TTL_74123, "")
|
||||
ENTRYX(74123_dip, TTL_74123_DIP, "")
|
||||
ENTRYX_N(74153)
|
||||
ENTRYX_N(74153_dip)
|
||||
ENTRYX_N(74161)
|
||||
ENTRYX_N(74161_dip)
|
||||
ENTRYX(74164, TTL_74164, "+A,+B,+CLRQ,+CLK")
|
||||
ENTRYX(74164_dip, TTL_74164_DIP, "")
|
||||
ENTRYX(74165, TTL_74165, "+CLK,+CLKINH,+SH_LDQ,+SER,+A,+B,+C,+D,+E,+F,+G,+H")
|
||||
ENTRYX(74165_dip, TTL_74165_DIP, "")
|
||||
ENTRYX(74166, TTL_74166, "+CLK,+CLKINH,+SH_LDQ,+SER,+A,+B,+C,+D,+E,+F,+G,+H,+CLRQ")
|
||||
ENTRYX(74166_dip, TTL_74166_DIP, "")
|
||||
ENTRYX(74174, TTL_74174, "+CLK,+D1,+D2,+D3,+D4,+D5,+D6,+CLRQ")
|
||||
ENTRYX(74175, TTL_74175, "+CLK,+D1,+D2,+D3,+D4,+CLRQ")
|
||||
ENTRYX(74192, TTL_74192, "+A,+B,+C,+D,+CLEAR,+LOADQ,+CU,+CD")
|
||||
ENTRYX(74193, TTL_74193, "+A,+B,+C,+D,+CLEAR,+LOADQ,+CU,+CD")
|
||||
ENTRYX(74194, TTL_74194, "+CLK,+S0,+S1,+SRIN,+A,+B,+C,+D,+SLIN,+CLRQ")
|
||||
ENTRYX(74365, TTL_74365, "+G1Q,+G2Q,+A1,+A2,+A3,+A4,+A5,+A6")
|
||||
//ENTRY(74279, TTL_74279, "") // only dip available
|
||||
ENTRYX(SN74LS629, SN74LS629, "CAP")
|
||||
ENTRYX(82S16, TTL_82S16, "")
|
||||
ENTRYX(82S115, PROM_82S115, "+CE1Q,+CE2,+A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+STROBE")
|
||||
ENTRYX(82S123, PROM_82S123, "+CEQ,+A0,+A1,+A2,+A3,+A4")
|
||||
ENTRYX(82S126, PROM_82S126, "+CE1Q,+CE2Q,+A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7")
|
||||
ENTRYX(9310, TTL_9310, "")
|
||||
ENTRYX(9314, TTL_9314, "+EQ,+MRQ,+S0Q,+S1Q,+S2Q,+S3Q,+D0,+D1,+D2,+D3")
|
||||
ENTRYX(9316, TTL_9316, "+CLK,+ENP,+ENT,+CLRQ,+LOADQ,+A,+B,+C,+D")
|
||||
ENTRYX(9322, TTL_9322, "+SELECT,+A1,+B1,+A2,+B2,+A3,+B3,+A4,+B4,+STROBE")
|
||||
ENTRYX(9334, TTL_9334, "+CQ,+EQ,+D,+A0,+A1,+A2")
|
||||
ENTRYX(AM2847, TTL_AM2847, "+CP,+INA,+INB,+INC,+IND,+RCA,+RCB,+RCC,+RCD")
|
||||
ENTRYX(CD4020, CD4020_WI, "+IP,+RESET,+VDD,+VSS")
|
||||
ENTRYX(CD4020, CD4020, "")
|
||||
ENTRYX(CD4066_GATE, CD4066_GATE, "")
|
||||
ENTRYX(CD4316_GATE, CD4316_GATE, "")
|
||||
ENTRYX(4538_dip, CD4538_DIP, "")
|
||||
ENTRYX(schmitt_trigger, SCHMITT_TRIGGER, "MODEL")
|
||||
/* entries with suffix WI are legacy only */
|
||||
//ENTRY(4066, CD_4066, "+A,B")
|
||||
ENTRYX(NE555, NE555, "")
|
||||
ENTRYX(TMS4800, ROM_TMS4800, "+AR,+OE1,+OE2,+A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10")
|
||||
ENTRYX(TMS4800_dip, ROM_TMS4800_DIP, "")
|
||||
ENTRYX(r2r_dac, R2R_DAC, "VIN,R,N")
|
||||
ENTRYX(tristate, TTL_TRISTATE, "+CEQ1,+D1,+CEQ2,+D2")
|
||||
ENTRYX(tristate3, TTL_TRISTATE3, "")
|
||||
ENTRYX(74174_dip, TTL_74174_DIP, "")
|
||||
ENTRYX(74175_dip, TTL_74175_DIP, "")
|
||||
ENTRYX(74192_dip, TTL_74192_DIP, "")
|
||||
ENTRYX(74193_dip, TTL_74193_DIP, "")
|
||||
ENTRYX(74194_dip, TTL_74194_DIP, "")
|
||||
ENTRYX(74365_dip, TTL_74365_DIP, "")
|
||||
ENTRYX(82S16_dip, TTL_82S16_DIP, "")
|
||||
ENTRYX(82S115_dip, PROM_82S115_DIP, "")
|
||||
ENTRYX(82S123_dip, PROM_82S123_DIP, "")
|
||||
ENTRYX(82S126_dip, PROM_82S126_DIP, "")
|
||||
ENTRYX(9602_dip, TTL_9602_DIP, "")
|
||||
ENTRYX(9310_dip, TTL_9310_DIP, "")
|
||||
ENTRYX(9314_dip, TTL_9314_DIP, "")
|
||||
ENTRYX(9316_dip, TTL_9316_DIP, "")
|
||||
ENTRYX(9322_dip, TTL_9322_DIP, "")
|
||||
ENTRYX(9334_dip, TTL_9334_DIP, "")
|
||||
ENTRYX(AM2847_dip, TTL_AM2847_DIP, "")
|
||||
ENTRYX(SN74LS629_dip, SN74LS629_DIP, "1.CAP1,2.CAP2")
|
||||
ENTRYX(NE555_dip, NE555_DIP, "")
|
||||
ENTRYX(MM5837_dip, MM5837_DIP, "")
|
||||
}
|
||||
|
||||
} //namespace devices
|
||||
void initialize_factory(factory::list_t &factory)
|
||||
{
|
||||
LIB_ENTRY(R)
|
||||
LIB_ENTRY(POT)
|
||||
LIB_ENTRY(POT2)
|
||||
LIB_ENTRY(C)
|
||||
LIB_ENTRY(L)
|
||||
LIB_ENTRY(D)
|
||||
LIB_ENTRY(VS)
|
||||
LIB_ENTRY(CS)
|
||||
LIB_ENTRY(VCVS)
|
||||
LIB_ENTRY(VCCS)
|
||||
LIB_ENTRY(CCCS)
|
||||
LIB_ENTRY(LVCCS)
|
||||
LIB_ENTRY(opamp)
|
||||
LIB_ENTRY(dummy_input)
|
||||
LIB_ENTRY(frontier) // not intended to be used directly
|
||||
LIB_ENTRY(function) // only for macro devices - NO FEEDBACK loops
|
||||
LIB_ENTRY(QBJT_EB)
|
||||
LIB_ENTRY(QBJT_switch)
|
||||
LIB_ENTRY(logic_input_ttl)
|
||||
LIB_ENTRY(logic_input)
|
||||
LIB_ENTRY(analog_input)
|
||||
LIB_ENTRY(log)
|
||||
LIB_ENTRY(logD)
|
||||
LIB_ENTRY(clock)
|
||||
LIB_ENTRY(extclock)
|
||||
LIB_ENTRY(mainclock)
|
||||
LIB_ENTRY(gnd)
|
||||
LIB_ENTRY(netlistparams)
|
||||
LIB_ENTRY(solver)
|
||||
LIB_ENTRY(res_sw)
|
||||
LIB_ENTRY(switch1)
|
||||
LIB_ENTRY(switch2)
|
||||
LIB_ENTRY(nicRSFF)
|
||||
LIB_ENTRY(nicDelay)
|
||||
LIB_ENTRY(2102A)
|
||||
LIB_ENTRY(2102A_dip)
|
||||
LIB_ENTRY(2716)
|
||||
LIB_ENTRY(2716_dip)
|
||||
LIB_ENTRY(7448)
|
||||
LIB_ENTRY(7448_dip)
|
||||
LIB_ENTRY(7450)
|
||||
LIB_ENTRY(7450_dip)
|
||||
LIB_ENTRY(7473)
|
||||
LIB_ENTRY(7473_dip)
|
||||
LIB_ENTRY(7473A)
|
||||
LIB_ENTRY(7473A_dip)
|
||||
LIB_ENTRY(7474)
|
||||
LIB_ENTRY(7474_dip)
|
||||
LIB_ENTRY(7475)
|
||||
LIB_ENTRY(7475_dip)
|
||||
LIB_ENTRY(7477)
|
||||
LIB_ENTRY(7477_dip)
|
||||
LIB_ENTRY(7483)
|
||||
LIB_ENTRY(7483_dip)
|
||||
LIB_ENTRY(7485)
|
||||
LIB_ENTRY(7485_dip)
|
||||
LIB_ENTRY(7490)
|
||||
LIB_ENTRY(7490_dip)
|
||||
LIB_ENTRY(7493)
|
||||
LIB_ENTRY(7493_dip)
|
||||
LIB_ENTRY(7497)
|
||||
LIB_ENTRY(7497_dip)
|
||||
LIB_ENTRY(74107)
|
||||
LIB_ENTRY(74107_dip)
|
||||
LIB_ENTRY(74107A) // FIXME: implement missing DIP
|
||||
LIB_ENTRY(74123)
|
||||
LIB_ENTRY(74123_dip)
|
||||
LIB_ENTRY(74153)
|
||||
LIB_ENTRY(74153_dip)
|
||||
LIB_ENTRY(74161)
|
||||
LIB_ENTRY(74161_dip)
|
||||
LIB_ENTRY(74164)
|
||||
LIB_ENTRY(74164_dip)
|
||||
LIB_ENTRY(74165)
|
||||
LIB_ENTRY(74165_dip)
|
||||
LIB_ENTRY(74166)
|
||||
LIB_ENTRY(74166_dip)
|
||||
LIB_ENTRY(74174)
|
||||
LIB_ENTRY(74175)
|
||||
LIB_ENTRY(74192)
|
||||
LIB_ENTRY(74193)
|
||||
LIB_ENTRY(74194)
|
||||
LIB_ENTRY(74365)
|
||||
//ENTRY(74279, TTL_74279, "") // only dip available
|
||||
LIB_ENTRY(SN74LS629)
|
||||
LIB_ENTRY(82S16)
|
||||
LIB_ENTRY(82S115)
|
||||
LIB_ENTRY(82S123)
|
||||
LIB_ENTRY(82S126)
|
||||
LIB_ENTRY(9310)
|
||||
LIB_ENTRY(9314)
|
||||
LIB_ENTRY(9316)
|
||||
LIB_ENTRY(9322)
|
||||
LIB_ENTRY(9334)
|
||||
LIB_ENTRY(AM2847)
|
||||
// FIXME: duplicate?
|
||||
LIB_ENTRY(CD4020_WI)
|
||||
LIB_ENTRY(CD4020)
|
||||
LIB_ENTRY(CD4066_GATE)
|
||||
LIB_ENTRY(CD4316_GATE)
|
||||
LIB_ENTRY(4538_dip)
|
||||
LIB_ENTRY(schmitt_trigger)
|
||||
/* entries with suffix WI are legacy only */
|
||||
//ENTRY(4066, CD_4066, "+A,B")
|
||||
LIB_ENTRY(NE555)
|
||||
LIB_ENTRY(TMS4800)
|
||||
LIB_ENTRY(TMS4800_dip)
|
||||
LIB_ENTRY(r2r_dac)
|
||||
LIB_ENTRY(tristate)
|
||||
LIB_ENTRY(tristate3)
|
||||
LIB_ENTRY(74174_dip)
|
||||
LIB_ENTRY(74175_dip)
|
||||
LIB_ENTRY(74192_dip)
|
||||
LIB_ENTRY(74193_dip)
|
||||
LIB_ENTRY(74194_dip)
|
||||
LIB_ENTRY(74365_dip)
|
||||
LIB_ENTRY(82S16_dip)
|
||||
LIB_ENTRY(82S115_dip)
|
||||
LIB_ENTRY(82S123_dip)
|
||||
LIB_ENTRY(82S126_dip)
|
||||
LIB_ENTRY(9602_dip)
|
||||
LIB_ENTRY(9310_dip)
|
||||
LIB_ENTRY(9314_dip)
|
||||
LIB_ENTRY(9316_dip)
|
||||
LIB_ENTRY(9322_dip)
|
||||
LIB_ENTRY(9334_dip)
|
||||
LIB_ENTRY(AM2847_dip)
|
||||
LIB_ENTRY(SN74LS629_dip)
|
||||
LIB_ENTRY(NE555_dip)
|
||||
LIB_ENTRY(MM5837_dip)
|
||||
}
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
||||
|
@ -97,8 +97,8 @@ namespace netlist
|
||||
m_ram[i] = 0;
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(2102A)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(2102A_dip)
|
||||
NETLIB_DEVICE_IMPL(2102A, "RAM_2102A", "+CEQ,+A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+RWQ,+DI")
|
||||
NETLIB_DEVICE_IMPL(2102A_dip,"RAM_2102A_DIP","")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -92,8 +92,8 @@ namespace netlist
|
||||
m_D[i].push((d >> i) & 1, delay);
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(2716)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(2716_dip)
|
||||
NETLIB_DEVICE_IMPL(2716, "EPROM_2716", "+GQ,+EPQ,+A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10")
|
||||
NETLIB_DEVICE_IMPL(2716_dip, "EPROM_2716_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -113,7 +113,8 @@ namespace netlist
|
||||
m_Q[i].push((cnt >> i) & 1, out_delayQn[i]);
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(CD4020)
|
||||
NETLIB_DEVICE_IMPL(CD4020, "CD4020", "")
|
||||
NETLIB_DEVICE_IMPL_ALIAS(CD4020_WI, CD4020, "CD4020_WI", "+IP,+RESET,+VDD,+VSS")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -79,7 +79,7 @@ namespace netlist
|
||||
}
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(CD4066_GATE)
|
||||
NETLIB_DEVICE_IMPL(CD4066_GATE, "CD4066_GATE", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -51,6 +51,6 @@ namespace netlist { namespace devices {
|
||||
m_R.m_P.schedule_solve_after(NLTIME_FROM_NS(1));
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(CD4316_GATE)
|
||||
NETLIB_DEVICE_IMPL(CD4316_GATE, "CD4316_GATE", "")
|
||||
|
||||
} } // namesapce netlist::devices
|
||||
|
@ -306,10 +306,10 @@ namespace netlist
|
||||
m_2.reset();
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(74123)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(74123_dip)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(4538_dip)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(9602_dip)
|
||||
NETLIB_DEVICE_IMPL(74123, "TTL_74123", "")
|
||||
NETLIB_DEVICE_IMPL(74123_dip, "TTL_74123_DIP", "")
|
||||
NETLIB_DEVICE_IMPL(4538_dip, "CD4538_DIP", "")
|
||||
NETLIB_DEVICE_IMPL(9602_dip, "TTL_9602_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -97,8 +97,8 @@ namespace netlist
|
||||
}
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(74164)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(74164_dip)
|
||||
NETLIB_DEVICE_IMPL(74164, "TTL_74164", "+A,+B,+CLRQ,+CLK")
|
||||
NETLIB_DEVICE_IMPL(74164_dip, "TTL_74164_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -101,8 +101,8 @@ namespace netlist
|
||||
m_QH.push(qh, NLTIME_FROM_NS(20)); // FIXME: Timing
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(74165)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(74165_dip)
|
||||
NETLIB_DEVICE_IMPL(74165, "TTL_74165", "+CLK,+CLKINH,+SH_LDQ,+SER,+A,+B,+C,+D,+E,+F,+G,+H")
|
||||
NETLIB_DEVICE_IMPL(74165_dip, "TTL_74165_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -121,8 +121,8 @@ namespace netlist
|
||||
m_QH.push(qh, delay); //FIXME
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(74166)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(74166_dip)
|
||||
NETLIB_DEVICE_IMPL(74166, "TTL_74166", "+CLK,+CLKINH,+SH_LDQ,+SER,+A,+B,+C,+D,+E,+F,+G,+H,+CLRQ")
|
||||
NETLIB_DEVICE_IMPL(74166_dip,"TTL_74166_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -134,8 +134,8 @@ namespace netlist
|
||||
//m_sub.do_reset();
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(74174)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(74174_dip)
|
||||
NETLIB_DEVICE_IMPL(74174, "TTL_74174", "+CLK,+D1,+D2,+D3,+D4,+D5,+D6,+CLRQ")
|
||||
NETLIB_DEVICE_IMPL(74174_dip,"TTL_74174_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -111,8 +111,8 @@ namespace netlist
|
||||
m_data = 0xFF;
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(74175)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(74175_dip)
|
||||
NETLIB_DEVICE_IMPL(74175, "TTL_74175", "+CLK,+D1,+D2,+D3,+D4,+CLRQ")
|
||||
NETLIB_DEVICE_IMPL(74175_dip,"TTL_74175_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -162,8 +162,8 @@ namespace netlist
|
||||
m_CARRYQ.push(tCarry, NLTIME_FROM_NS(20)); //FIXME
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(74192)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(74192_dip)
|
||||
NETLIB_DEVICE_IMPL(74192, "TTL_74192", "+A,+B,+C,+D,+CLEAR,+LOADQ,+CU,+CD")
|
||||
NETLIB_DEVICE_IMPL(74192_dip,"TTL_74192_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -139,8 +139,8 @@ namespace netlist
|
||||
m_CARRYQ.push(tCarry, NLTIME_FROM_NS(20)); //FIXME timing
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(74193)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(74193_dip)
|
||||
NETLIB_DEVICE_IMPL(74193, "TTL_74193", "+A,+B,+C,+D,+CLEAR,+LOADQ,+CU,+CD")
|
||||
NETLIB_DEVICE_IMPL(74193_dip, "TTL_74193_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -116,8 +116,8 @@ namespace netlist
|
||||
m_Q[i].push((q >> i) & 1, NLTIME_FROM_NS(26)); // FIXME: Timing
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(74194)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(74194_dip)
|
||||
NETLIB_DEVICE_IMPL(74194, "TTL_74194", "+CLK,+S0,+S1,+SRIN,+A,+B,+C,+D,+SLIN,+CLRQ")
|
||||
NETLIB_DEVICE_IMPL(74194_dip, "TTL_74194_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -76,8 +76,8 @@ namespace netlist
|
||||
}
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(74365)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(74365_dip)
|
||||
NETLIB_DEVICE_IMPL(74365, "TTL_74365", "+G1Q,+G2Q,+A1,+A2,+A3,+A4,+A5,+A6")
|
||||
NETLIB_DEVICE_IMPL(74365_dip, "TTL_74365_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -148,10 +148,10 @@ namespace netlist
|
||||
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(7475)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(7475_dip)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(7477)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(7477_dip)
|
||||
NETLIB_DEVICE_IMPL(7475, "TTL_7475", "")
|
||||
NETLIB_DEVICE_IMPL(7475_dip, "TTL_7475_DIP", "")
|
||||
NETLIB_DEVICE_IMPL(7477, "TTL_7477", "")
|
||||
NETLIB_DEVICE_IMPL(7477_dip, "TTL_7477_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -234,8 +234,8 @@ namespace netlist
|
||||
}
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(SN74LS629)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(SN74LS629_dip)
|
||||
NETLIB_DEVICE_IMPL(SN74LS629, "SN74LS629", "CAP")
|
||||
NETLIB_DEVICE_IMPL(SN74LS629_dip, "SN74LS629_DIP", "1.CAP1,2.CAP2")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -106,8 +106,8 @@ namespace netlist
|
||||
m_O[i].push((o >> i) & 1, NLTIME_FROM_NS(40)); // FIXME: Timing
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(82S115)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(82S115_dip)
|
||||
NETLIB_DEVICE_IMPL(82S115, "PROM_82S115", "+CE1Q,+CE2,+A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+STROBE")
|
||||
NETLIB_DEVICE_IMPL(82S115_dip, "PROM_82S115_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -77,8 +77,8 @@ namespace netlist
|
||||
m_O[i].push((o >> i) & 1, delay);
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(82S123)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(82S123_dip)
|
||||
NETLIB_DEVICE_IMPL(82S123, "PROM_82S123", "+CEQ,+A0,+A1,+A2,+A3,+A4")
|
||||
NETLIB_DEVICE_IMPL(82S123_dip, "PROM_82S123_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -79,8 +79,8 @@ namespace netlist
|
||||
m_O[i].push((o >> i) & 1, delay);
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(82S126)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(82S126_dip)
|
||||
NETLIB_DEVICE_IMPL(82S126, "PROM_82S126", "+CE1Q,+CE2Q,+A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7")
|
||||
NETLIB_DEVICE_IMPL(82S126_dip, "PROM_82S126_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -130,8 +130,8 @@ namespace netlist
|
||||
m_enq = 0;
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(82S16)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(82S16_dip)
|
||||
NETLIB_DEVICE_IMPL(82S16, "TTL_82S16", "")
|
||||
NETLIB_DEVICE_IMPL(82S16_dip, "TTL_82S16_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -263,8 +263,8 @@ namespace netlist
|
||||
#endif
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(9310)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(9310_dip)
|
||||
NETLIB_DEVICE_IMPL(9310, "TTL_9310", "")
|
||||
NETLIB_DEVICE_IMPL(9310_dip, "TTL_9310_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -167,8 +167,8 @@ namespace netlist
|
||||
}
|
||||
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(9316)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(9316_dip)
|
||||
NETLIB_DEVICE_IMPL(9316, "TTL_9316", "+CLK,+ENP,+ENT,+CLRQ,+LOADQ,+A,+B,+C,+D")
|
||||
NETLIB_DEVICE_IMPL(9316_dip, "TTL_9316_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -111,8 +111,8 @@ namespace netlist
|
||||
m_4.update();
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(9322)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(9322_dip)
|
||||
NETLIB_DEVICE_IMPL(9322, "TTL_9322", "+SELECT,+A1,+B1,+A2,+B2,+A3,+B3,+A4,+B4,+STROBE")
|
||||
NETLIB_DEVICE_IMPL(9322_dip, "TTL_9322_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -130,8 +130,8 @@ namespace netlist
|
||||
m_OUT.push(out, NLTIME_FROM_NS(200));
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(AM2847)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(AM2847_dip)
|
||||
NETLIB_DEVICE_IMPL(AM2847, "TTL_AM2847", "+CP,+INA,+INB,+INC,+IND,+RCA,+RCB,+RCC,+RCD")
|
||||
NETLIB_DEVICE_IMPL(AM2847_dip, "TTL_AM2847_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -107,8 +107,8 @@ namespace netlist
|
||||
}
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(9314)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(9314_dip)
|
||||
NETLIB_DEVICE_IMPL(9314, "TTL_9314", "+EQ,+MRQ,+S0Q,+S1Q,+S2Q,+S3Q,+D0,+D1,+D2,+D3")
|
||||
NETLIB_DEVICE_IMPL(9314_dip, "TTL_9314_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -143,8 +143,8 @@ namespace netlist
|
||||
m_Q[i].push((q >> i) & 1, delay);
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(9334)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(9334_dip)
|
||||
NETLIB_DEVICE_IMPL(9334, "TTL_9334", "+CQ,+EQ,+D,+A0,+A1,+A2")
|
||||
NETLIB_DEVICE_IMPL(9334_dip, "TTL_9334_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -100,8 +100,8 @@ namespace netlist
|
||||
m_last = nval;
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(nicRSFF)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(nicDelay)
|
||||
NETLIB_DEVICE_IMPL(nicRSFF, "NETDEV_RSFF", "")
|
||||
NETLIB_DEVICE_IMPL(nicDelay, "NETDEV_DELAY", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -89,8 +89,8 @@ namespace netlist
|
||||
#endif
|
||||
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(log)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(logD)
|
||||
NETLIB_DEVICE_IMPL(log, "LOG", "+I")
|
||||
NETLIB_DEVICE_IMPL(logD, "LOGD", "+I,+I2")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -114,7 +114,7 @@ namespace netlist
|
||||
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(MM5837_dip)
|
||||
NETLIB_DEVICE_IMPL(MM5837_dip, "MM5837_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -177,8 +177,8 @@ namespace netlist
|
||||
m_last_out = out;
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(NE555)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(NE555_dip)
|
||||
NETLIB_DEVICE_IMPL(NE555, "NE555", "")
|
||||
NETLIB_DEVICE_IMPL(NE555_dip, "NE555_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -49,7 +49,7 @@ namespace netlist
|
||||
} //namespace analog
|
||||
|
||||
namespace devices {
|
||||
NETLIB_DEVICE_IMPL_NS(analog, r2r_dac)
|
||||
NETLIB_DEVICE_IMPL_NS(analog, r2r_dac, "R2R_DAC", "VIN,R,N")
|
||||
}
|
||||
|
||||
} // namespace netlist
|
||||
|
@ -125,7 +125,7 @@ namespace netlist
|
||||
bool m_is_timestep;
|
||||
};
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(schmitt_trigger)
|
||||
NETLIB_DEVICE_IMPL(schmitt_trigger, "SCHMITT_TRIGGER", "MODEL")
|
||||
|
||||
} // namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -104,17 +104,19 @@ namespace netlist
|
||||
}
|
||||
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(dummy_input)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(frontier)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(function)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(logic_input)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(analog_input)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(clock)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(extclock)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(res_sw)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(mainclock)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(gnd)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(netlistparams)
|
||||
NETLIB_DEVICE_IMPL(dummy_input, "DUMMY_INPUT", "")
|
||||
NETLIB_DEVICE_IMPL(frontier, "FRONTIER_DEV", "+I,+G,+Q")
|
||||
NETLIB_DEVICE_IMPL(function, "AFUNC", "N,FUNC")
|
||||
NETLIB_DEVICE_IMPL(analog_input, "ANALOG_INPUT", "IN")
|
||||
NETLIB_DEVICE_IMPL(clock, "CLOCK", "FREQ")
|
||||
NETLIB_DEVICE_IMPL(extclock, "EXTCLOCK", "FREQ,PATTERN")
|
||||
NETLIB_DEVICE_IMPL(res_sw, "RES_SWITCH", "+IN,+P1,+P2")
|
||||
NETLIB_DEVICE_IMPL(mainclock, "MAINCLOCK", "FREQ")
|
||||
NETLIB_DEVICE_IMPL(gnd, "GND", "")
|
||||
NETLIB_DEVICE_IMPL(netlistparams, "PARAMETER", "")
|
||||
|
||||
NETLIB_DEVICE_IMPL(logic_input, "LOGIC_INPUT", "IN,FAMILY")
|
||||
NETLIB_DEVICE_IMPL_ALIAS(logic_input_ttl, logic_input, "TTL_INPUT", "IN")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -97,8 +97,8 @@ namespace netlist
|
||||
}
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(TMS4800)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(TMS4800_dip)
|
||||
NETLIB_DEVICE_IMPL(TMS4800, "ROM_TMS4800", "+AR,+OE1,+OE2,+A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10")
|
||||
NETLIB_DEVICE_IMPL(TMS4800_dip, "ROM_TMS4800_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -70,8 +70,8 @@ namespace netlist
|
||||
m_Q.push(q, NLTIME_FROM_NS(1));
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(tristate)
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(tristate3)
|
||||
NETLIB_DEVICE_IMPL(tristate, "TTL_TRISTATE", "+CEQ1,+D1,+CEQ2,+D2")
|
||||
NETLIB_DEVICE_IMPL(tristate3, "TTL_TRISTATE3", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -17,95 +17,85 @@
|
||||
namespace netlist { namespace factory
|
||||
{
|
||||
|
||||
class NETLIB_NAME(wrapper) : public device_t
|
||||
{
|
||||
public:
|
||||
NETLIB_NAME(wrapper)(netlist_base_t &anetlist, const pstring &name)
|
||||
: device_t(anetlist, name)
|
||||
class NETLIB_NAME(wrapper) : public device_t
|
||||
{
|
||||
public:
|
||||
NETLIB_NAME(wrapper)(netlist_base_t &anetlist, const pstring &name)
|
||||
: device_t(anetlist, name)
|
||||
{
|
||||
}
|
||||
protected:
|
||||
NETLIB_RESETI() { }
|
||||
NETLIB_UPDATEI() { };
|
||||
};
|
||||
|
||||
element_t::element_t(const pstring &name, const pstring &classname,
|
||||
const pstring &def_param, const pstring &sourcefile)
|
||||
: m_name(name), m_classname(classname), m_def_param(def_param),
|
||||
m_sourcefile(sourcefile)
|
||||
{
|
||||
}
|
||||
protected:
|
||||
NETLIB_RESETI();
|
||||
NETLIB_UPDATEI();
|
||||
};
|
||||
|
||||
|
||||
|
||||
element_t::element_t(const pstring &name, const pstring &classname,
|
||||
const pstring &def_param, const pstring &sourcefile)
|
||||
: m_name(name), m_classname(classname), m_def_param(def_param),
|
||||
m_sourcefile(sourcefile)
|
||||
{
|
||||
}
|
||||
|
||||
element_t::element_t(const pstring &name, const pstring &classname,
|
||||
const pstring &def_param)
|
||||
: m_name(name), m_classname(classname), m_def_param(def_param),
|
||||
m_sourcefile("<unknown>")
|
||||
{
|
||||
}
|
||||
|
||||
element_t::~element_t()
|
||||
{
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------------------
|
||||
// net_device_t_base_factory
|
||||
// ----------------------------------------------------------------------------------------
|
||||
|
||||
list_t::list_t( setup_t &setup)
|
||||
: m_setup(setup)
|
||||
{
|
||||
}
|
||||
|
||||
list_t::~list_t()
|
||||
{
|
||||
clear();
|
||||
}
|
||||
|
||||
void list_t::register_device(std::unique_ptr<element_t> &&factory)
|
||||
{
|
||||
for (auto & e : *this)
|
||||
if (e->name() == factory->name())
|
||||
m_setup.log().fatal(MF_1_FACTORY_ALREADY_CONTAINS_1, factory->name());
|
||||
push_back(std::move(factory));
|
||||
}
|
||||
|
||||
factory::element_t * list_t::factory_by_name(const pstring &devname)
|
||||
{
|
||||
for (auto & e : *this)
|
||||
element_t::element_t(const pstring &name, const pstring &classname,
|
||||
const pstring &def_param)
|
||||
: m_name(name), m_classname(classname), m_def_param(def_param),
|
||||
m_sourcefile("<unknown>")
|
||||
{
|
||||
if (e->name() == devname)
|
||||
return e.get();
|
||||
}
|
||||
|
||||
m_setup.log().fatal(MF_1_CLASS_1_NOT_FOUND, devname);
|
||||
return nullptr; // appease code analysis
|
||||
}
|
||||
element_t::~element_t()
|
||||
{
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// factory_lib_entry_t: factory class to wrap macro based chips/elements
|
||||
// -----------------------------------------------------------------------------
|
||||
// ----------------------------------------------------------------------------------------
|
||||
// net_device_t_base_factory
|
||||
// ----------------------------------------------------------------------------------------
|
||||
|
||||
plib::owned_ptr<device_t> library_element_t::Create(netlist_base_t &anetlist, const pstring &name)
|
||||
{
|
||||
return plib::owned_ptr<device_t>::Create<NETLIB_NAME(wrapper)>(anetlist, name);
|
||||
}
|
||||
list_t::list_t( setup_t &setup)
|
||||
: m_setup(setup)
|
||||
{
|
||||
}
|
||||
|
||||
void library_element_t::macro_actions(netlist_base_t &anetlist, const pstring &name)
|
||||
{
|
||||
anetlist.setup().namespace_push(name);
|
||||
anetlist.setup().include(this->name());
|
||||
anetlist.setup().namespace_pop();
|
||||
}
|
||||
list_t::~list_t()
|
||||
{
|
||||
clear();
|
||||
}
|
||||
|
||||
NETLIB_RESET(wrapper)
|
||||
{
|
||||
}
|
||||
void list_t::register_device(std::unique_ptr<element_t> &&factory)
|
||||
{
|
||||
for (auto & e : *this)
|
||||
if (e->name() == factory->name())
|
||||
m_setup.log().fatal(MF_1_FACTORY_ALREADY_CONTAINS_1, factory->name());
|
||||
push_back(std::move(factory));
|
||||
}
|
||||
|
||||
NETLIB_UPDATE(wrapper)
|
||||
{
|
||||
}
|
||||
factory::element_t * list_t::factory_by_name(const pstring &devname)
|
||||
{
|
||||
for (auto & e : *this)
|
||||
{
|
||||
if (e->name() == devname)
|
||||
return e.get();
|
||||
}
|
||||
|
||||
m_setup.log().fatal(MF_1_CLASS_1_NOT_FOUND, devname);
|
||||
return nullptr; // appease code analysis
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// factory_lib_entry_t: factory class to wrap macro based chips/elements
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
plib::owned_ptr<device_t> library_element_t::Create(netlist_base_t &anetlist, const pstring &name)
|
||||
{
|
||||
return plib::owned_ptr<device_t>::Create<NETLIB_NAME(wrapper)>(anetlist, name);
|
||||
}
|
||||
|
||||
void library_element_t::macro_actions(netlist_base_t &anetlist, const pstring &name)
|
||||
{
|
||||
anetlist.setup().namespace_push(name);
|
||||
anetlist.setup().include(this->name());
|
||||
anetlist.setup().namespace_pop();
|
||||
}
|
||||
|
||||
|
||||
} }
|
||||
|
@ -9,35 +9,28 @@
|
||||
#ifndef NLFACTORY_H_
|
||||
#define NLFACTORY_H_
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "plib/palloc.h"
|
||||
#include "plib/ptypes.h"
|
||||
|
||||
// deprecated!
|
||||
#define NETLIB_DEVICE_IMPL_DEPRECATED(chip) \
|
||||
static std::unique_ptr<factory::element_t> NETLIB_NAME(chip ## _c)( \
|
||||
const pstring &name, const pstring &classname, const pstring &def_param) \
|
||||
{ \
|
||||
return std::unique_ptr<factory::element_t>(plib::palloc<factory::device_element_t<NETLIB_NAME(chip)>>(name, classname, def_param, pstring(__FILE__))); \
|
||||
} \
|
||||
factory::constructor_ptr_t decl_ ## chip = NETLIB_NAME(chip ## _c);
|
||||
#define NETLIB_DEVICE_IMPL_ALIAS(p_alias, chip, p_name, p_def_param) \
|
||||
NETLIB_DEVICE_IMPL_BASE(devices, p_alias, chip, p_name, p_def_param) \
|
||||
|
||||
// the new way ...
|
||||
#define NETLIB_DEVICE_IMPL(chip, p_name, p_def_param) \
|
||||
static std::unique_ptr<factory::element_t> NETLIB_NAME(chip ## _c)( \
|
||||
const pstring &name, const pstring &classname, const pstring &def_param) \
|
||||
{ \
|
||||
return std::unique_ptr<factory::element_t>(plib::palloc<factory::device_element_t<NETLIB_NAME(chip)>>(p_name, classname, p_def_param, pstring(__FILE__))); \
|
||||
} \
|
||||
factory::constructor_ptr_t decl_ ## chip = NETLIB_NAME(chip ## _c);
|
||||
NETLIB_DEVICE_IMPL_NS(devices, chip, p_name, p_def_param)
|
||||
|
||||
#define NETLIB_DEVICE_IMPL_NS(ns, chip) \
|
||||
static std::unique_ptr<factory::element_t> NETLIB_NAME(chip ## _c)( \
|
||||
const pstring &name, const pstring &classname, const pstring &def_param) \
|
||||
#define NETLIB_DEVICE_IMPL_NS(ns, chip, p_name, p_def_param) \
|
||||
NETLIB_DEVICE_IMPL_BASE(ns, chip, chip, p_name, p_def_param) \
|
||||
|
||||
#define NETLIB_DEVICE_IMPL_BASE(ns, p_alias, chip, p_name, p_def_param) \
|
||||
static std::unique_ptr<factory::element_t> NETLIB_NAME(p_alias ## _c) \
|
||||
(const pstring &classname) \
|
||||
{ \
|
||||
return std::unique_ptr<factory::element_t>(plib::palloc<factory::device_element_t<ns :: NETLIB_NAME(chip)>>(name, classname, def_param, pstring(__FILE__))); \
|
||||
return std::unique_ptr<factory::element_t>(plib::palloc<factory::device_element_t<ns :: NETLIB_NAME(chip)>>(p_name, classname, p_def_param, pstring(__FILE__))); \
|
||||
} \
|
||||
\
|
||||
factory::constructor_ptr_t decl_ ## chip = NETLIB_NAME(chip ## _c);
|
||||
factory::constructor_ptr_t decl_ ## p_alias = NETLIB_NAME(p_alias ## _c);
|
||||
|
||||
namespace netlist {
|
||||
class device_t;
|
||||
@ -121,8 +114,7 @@ namespace factory {
|
||||
// factory_creator_ptr_t
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using constructor_ptr_t = std::unique_ptr<element_t> (*)(const pstring &name, const pstring &classname,
|
||||
const pstring &def_param);
|
||||
using constructor_ptr_t = std::unique_ptr<element_t> (*)(const pstring &classname);
|
||||
|
||||
template <typename T>
|
||||
std::unique_ptr<element_t> constructor_t(const pstring &name, const pstring &classname,
|
||||
|
@ -418,7 +418,7 @@ void NETLIB_NAME(solver)::create_solver_code(std::map<pstring, pstring> &mp)
|
||||
}
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(solver)
|
||||
NETLIB_DEVICE_IMPL(solver, "SOLVER", "FREQ")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
Loading…
Reference in New Issue
Block a user