diff options
author | 2016-06-07 15:15:37 -0400 | |
---|---|---|
committer | 2016-06-07 21:40:30 +0200 | |
commit | b27790890530b658e178846e7da01045185f0fce (patch) | |
tree | 95c027c901b343de6600a65d8d8f1beda51cbcdf /src/lib/netlist/devices/net_lib.cpp | |
parent | 9137ace16ae5bed3f7164409a8622f61a9db2b80 (diff) |
- Minor cosmetic refactoring. Added a "uninitialised array" template to
allow in-place creation (for increased locality) of netlist classes.
Main use is in truthtable class.
- Remove PLIB_NAMESPACE macros.
- Remove namespace macros. Use explicit namespace declarations.
- Moved device definitions into cpp files.
- Moved more device definitions into cpp files.
- New prefix "nlid" for include files flags purely internal include
files not to be leaked into userland.
- Fix factory code.
Diffstat (limited to 'src/lib/netlist/devices/net_lib.cpp')
-rw-r--r-- | src/lib/netlist/devices/net_lib.cpp | 135 |
1 files changed, 72 insertions, 63 deletions
diff --git a/src/lib/netlist/devices/net_lib.cpp b/src/lib/netlist/devices/net_lib.cpp index fe0a2d087ca..2a481daaf5d 100644 --- a/src/lib/netlist/devices/net_lib.cpp +++ b/src/lib/netlist/devices/net_lib.cpp @@ -61,7 +61,15 @@ NETLIST_END() #define ENTRY1(nic, name, defparam) factory.register_device<nic>( # name, xstr(nic), defparam ); #define ENTRY(nic, name, defparam) ENTRY1(NETLIB_NAME(nic), name, defparam) -NETLIB_NAMESPACE_DEVICES_START() +#define NETLIB_DEVICE_DECL(chip) extern factory_creator_ptr_t decl_ ## chip; + +#define ENTRYX1(nic, name, defparam, decl) factory.register_device( decl (# name, xstr(nic), defparam) ); +#define ENTRYX(nic, name, defparam) { NETLIB_DEVICE_DECL(nic) ENTRYX1(NETLIB_NAME(nic), name, defparam, decl_ ## nic) } + +namespace netlist +{ + namespace devices + { void initialize_factory(factory_list_t &factory) { @@ -77,78 +85,79 @@ void initialize_factory(factory_list_t &factory) ENTRY(VS, VS, "V") ENTRY(CS, CS, "I") ENTRY(OPAMP, OPAMP, "MODEL") - ENTRY(dummy_input, DUMMY_INPUT, "-") - ENTRY(frontier, FRONTIER_DEV, "+I,G,Q") // not intended to be used directly - ENTRY(function, AFUNC, "N,FUNC") // only for macro devices - NO FEEDBACK loops + 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 ENTRY(QBJT_EB, QBJT_EB, "MODEL") ENTRY(QBJT_switch, QBJT_SW, "MODEL") - ENTRY(logic_input, TTL_INPUT, "IN") - ENTRY(logic_input, LOGIC_INPUT, "IN,FAMILY") - ENTRY(analog_input, ANALOG_INPUT, "IN") - ENTRY(log, LOG, "+I") - ENTRY(logD, LOGD, "+I,I2") - ENTRY(clock, CLOCK, "FREQ") - ENTRY(extclock, EXTCLOCK, "FREQ") - ENTRY(mainclock, MAINCLOCK, "FREQ") - ENTRY(gnd, GND, "-") - ENTRY(netlistparams, PARAMETER, "-") + 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") + ENTRYX(mainclock, MAINCLOCK, "FREQ") + ENTRYX(gnd, GND, "-") + ENTRYX(netlistparams, PARAMETER, "-") ENTRY(solver, SOLVER, "FREQ") - ENTRY(res_sw, RES_SWITCH, "+IN,P1,P2") + ENTRYX(res_sw, RES_SWITCH, "+IN,P1,P2") ENTRY(switch1, SWITCH, "-") ENTRY(switch2, SWITCH2, "-") - ENTRY(nicRSFF, NETDEV_RSFF, "+S,R") - ENTRY(nicDelay, NETDEV_DELAY, "-") - ENTRY(7450, TTL_7450_ANDORINVERT, "+A,B,C,D") - ENTRY(7448, TTL_7448, "+A,B,C,D,LTQ,BIQ,RBIQ") - ENTRY(7474, TTL_7474, "+CLK,D,CLRQ,PREQ") - ENTRY(7483, TTL_7483, "+A1,A2,A3,A4,B1,B2,B3,B4,C0") - ENTRY(7490, TTL_7490, "+A,B,R1,R2,R91,R92") - ENTRY(7493, TTL_7493, "+CLKA,CLKB,R1,R2") - ENTRY(74107, TTL_74107, "+CLK,J,K,CLRQ") - ENTRY(74107A, TTL_74107A, "+CLK,J,K,CLRQ") - ENTRY(74123, TTL_74123, "-") - ENTRY(74153, TTL_74153, "+C0,C1,C2,C3,A,B,G") - ENTRY(74175, TTL_74175, "-") - ENTRY(74192, TTL_74192, "-") - ENTRY(74193, TTL_74193, "-") + ENTRYX(nicRSFF, NETDEV_RSFF, "+S,R") + ENTRYX(nicDelay, NETDEV_DELAY, "-") + ENTRYX(7450, TTL_7450_ANDORINVERT, "+A,B,C,D") + ENTRYX(7448, TTL_7448, "+A,B,C,D,LTQ,BIQ,RBIQ") + ENTRYX(7474, TTL_7474, "+CLK,D,CLRQ,PREQ") + ENTRYX(7483, TTL_7483, "+A1,A2,A3,A4,B1,B2,B3,B4,C0") + ENTRYX(7490, TTL_7490, "+A,B,R1,R2,R91,R92") + ENTRYX(7493, TTL_7493, "+CLKA,CLKB,R1,R2") + ENTRYX(74107, TTL_74107, "+CLK,J,K,CLRQ") + ENTRYX(74107A, TTL_74107A, "+CLK,J,K,CLRQ") + ENTRYX(74123, TTL_74123, "-") + ENTRYX(74153, TTL_74153, "+C0,C1,C2,C3,A,B,G") + ENTRYX(74175, TTL_74175, "-") + ENTRYX(74192, TTL_74192, "-") + ENTRYX(74193, TTL_74193, "-") //ENTRY(74279, TTL_74279, "-") // only dip available - ENTRY(SN74LS629, SN74LS629, "CAP") - ENTRY(82S16, TTL_82S16, "-") - ENTRY(9310, TTL_9310, "-") - ENTRY(9312, TTL_9312, "-") - ENTRY(9316, TTL_9316, "+CLK,ENP,ENT,CLRQ,LOADQ,A,B,C,D") - ENTRY(CD4020, CD4020, "") - ENTRY(CD4066_GATE, CD4066_GATE, "") + ENTRYX(SN74LS629, SN74LS629, "CAP") + ENTRYX(82S16, TTL_82S16, "-") + ENTRYX(9310, TTL_9310, "-") + ENTRYX(9312, TTL_9312, "-") + ENTRYX(9316, TTL_9316, "+CLK,ENP,ENT,CLRQ,LOADQ,A,B,C,D") + ENTRYX(CD4020, CD4020, "") + ENTRYX(CD4066_GATE, CD4066_GATE, "") /* entries with suffix WI are legacy only */ - ENTRY(CD4020, CD4020_WI, "+IP,RESET,VDD,VSS") + ENTRYX(CD4020, CD4020_WI, "+IP,RESET,VDD,VSS") //ENTRY(4066, CD_4066, "+A,B") - ENTRY(NE555, NE555, "-") - ENTRY(r2r_dac, R2R_DAC, "+VIN,R,N") - ENTRY(4538_dip, CD4538_DIP, "-") - ENTRY(7448_dip, TTL_7448_DIP, "-") - ENTRY(7450_dip, TTL_7450_DIP, "-") - ENTRY(7474_dip, TTL_7474_DIP, "-") - ENTRY(7483_dip, TTL_7483_DIP, "-") - ENTRY(7490_dip, TTL_7490_DIP, "-") - ENTRY(7493_dip, TTL_7493_DIP, "-") - ENTRY(74107_dip, TTL_74107_DIP, "-") - ENTRY(74123_dip, TTL_74123_DIP, "-") - ENTRY(74153_dip, TTL_74153_DIP, "-") - ENTRY(74175_dip, TTL_74175_DIP, "-") - ENTRY(74192_dip, TTL_74192_DIP, "-") - ENTRY(74193_dip, TTL_74193_DIP, "-") - ENTRY(74279_dip, TTL_74279_DIP, "-") - ENTRY(82S16_dip, TTL_82S16_DIP, "-") - ENTRY(9602_dip, TTL_9602_DIP, "-") - ENTRY(9310_dip, TTL_9310_DIP, "-") - ENTRY(9312_dip, TTL_9312_DIP, "-") - ENTRY(9316_dip, TTL_9316_DIP, "-") - ENTRY(SN74LS629_dip, SN74LS629_DIP, "1.CAP1,2.CAP2") - ENTRY(NE555_dip, NE555_DIP, "-") - ENTRY(MM5837_dip, MM5837_DIP, "-") + ENTRYX(NE555, NE555, "-") + ENTRYX(r2r_dac, R2R_DAC, "+VIN,R,N") + ENTRYX(4538_dip, CD4538_DIP, "-") + ENTRYX(7448_dip, TTL_7448_DIP, "-") + ENTRYX(7450_dip, TTL_7450_DIP, "-") + ENTRYX(7474_dip, TTL_7474_DIP, "-") + ENTRYX(7483_dip, TTL_7483_DIP, "-") + ENTRYX(7490_dip, TTL_7490_DIP, "-") + ENTRYX(7493_dip, TTL_7493_DIP, "-") + ENTRYX(74107_dip, TTL_74107_DIP, "-") + ENTRYX(74123_dip, TTL_74123_DIP, "-") + ENTRYX(74153_dip, TTL_74153_DIP, "-") + ENTRYX(74175_dip, TTL_74175_DIP, "-") + ENTRYX(74192_dip, TTL_74192_DIP, "-") + ENTRYX(74193_dip, TTL_74193_DIP, "-") + ENTRYX(74279_dip, TTL_74279_DIP, "-") + ENTRYX(82S16_dip, TTL_82S16_DIP, "-") + ENTRYX(9602_dip, TTL_9602_DIP, "-") + ENTRYX(9310_dip, TTL_9310_DIP, "-") + ENTRYX(9312_dip, TTL_9312_DIP, "-") + ENTRYX(9316_dip, TTL_9316_DIP, "-") + ENTRYX(SN74LS629_dip, SN74LS629_DIP, "1.CAP1,2.CAP2") + ENTRYX(NE555_dip, NE555_DIP, "-") + ENTRYX(MM5837_dip, MM5837_DIP, "-") } -NETLIB_NAMESPACE_DEVICES_END() + } //namespace devices +} // namespace netlist namespace netlist { |