mame/src/lib/netlist/devices/net_lib.cpp
couriersud 75146fd159 netlist: All devices now specify parameters in factory constructor. (nw)
This previously was part of net_lib.cpp and repeatedly caused bugs.
2019-02-01 22:46:43 +01:00

165 lines
3.6 KiB
C++

// license:GPL-2.0+
// copyright-holders:Couriersud
/***************************************************************************
netlib.c
Discrete netlist implementation.
****************************************************************************/
#include "net_lib.h"
#include "../nl_factory.h"
#include "../solver/nld_solver.h"
#define xstr(s) # s
#define NETLIB_DEVICE_DECL(chip) extern factory::constructor_ptr_t decl_ ## chip
#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)
{
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