//#define ENTRYY(n, m, s) case (n * 100 + m): \ // { using xtype = netlist_factory_truthtable_t<n, m>; \ // ret = plib::palloc<xtype>(desc.name, desc.classname, desc.def_param, s); } break //#define ENTRY(n, s) ENTRYY(n, 1, s); ENTRYY(n, 2, s); ENTRYY(n, 3, s); \ // ENTRYY(n, 4, s); ENTRYY(n, 5, s); ENTRYY(n, 6, s); \ // ENTRYY(n, 7, s); ENTRYY(n, 8, s) public static void tt_factory_create(setup_t setup, tt_desc desc, string sourcefile) { netlist_base_factory_truthtable_t ret; //switch (desc.ni * 100 + desc.no) //{ // ENTRY(1, sourcefile); // ENTRY(2, sourcefile); // ENTRY(3, sourcefile); // ENTRY(4, sourcefile); // ENTRY(5, sourcefile); // ENTRY(6, sourcefile); // ENTRY(7, sourcefile); // ENTRY(8, sourcefile); // ENTRY(9, sourcefile); // ENTRY(10, sourcefile); // ENTRY(11, sourcefile); // ENTRY(12, sourcefile); // default: // pstring msg = plib::pfmt("unable to create truthtable<{1},{2}>")(desc.ni)(desc.no); // nl_assert_always(false, msg); //} // re-write of the above case statement if (desc.ni >= 1 && desc.ni <= 12 && desc.no >= 1 && desc.no <= 8) { ret = new netlist_factory_truthtable_t(desc.ni, desc.no, desc.name, desc.classname, desc.def_param, sourcefile); } else { string msg = new plib.pfmt("unable to create truthtable<{0},{1}>").op(desc.ni, desc.no); nl_base_global.nl_assert_always(false, msg); ret = new netlist_factory_truthtable_t(0, 0, null, null, null, null); } ret.desc = desc.desc; if (desc.family != "") { ret.family = setup.family_from_model(desc.family); } setup.factory().register_device(ret); //std::unique_ptr<netlist_base_factory_truthtable_t>(ret)); }
//#define ENTRYY(n, m, s) case (n * 100 + m): \ // { using xtype = devices::netlist_factory_truthtable_t<n, m>; \ // auto cs=s; \ // ret = plib::make_unique<xtype, host_arena>(desc.name, std::move(cs)); } \ // break //#define ENTRY(n, s) ENTRYY(n, 1, s); ENTRYY(n, 2, s); ENTRYY(n, 3, s); \ // ENTRYY(n, 4, s); ENTRYY(n, 5, s); ENTRYY(n, 6, s); \ // ENTRYY(n, 7, s); ENTRYY(n, 8, s); ENTRYY(n, 9, s); \ // ENTRYY(n, 10, s) public static truthtable_base_element_t truthtable_create(tt_desc desc, properties props) { truthtable_base_element_t ret = null; switch (desc.ni * 100 + desc.no) { //ENTRY(1, props); case (1 * 100 + 1): ret = new devices.netlist_factory_truthtable_t <u32_const_1, u32_const_1>(desc.name, props); break; case (1 * 100 + 2): ret = new devices.netlist_factory_truthtable_t <u32_const_1, u32_const_2>(desc.name, props); break; case (1 * 100 + 3): ret = new devices.netlist_factory_truthtable_t <u32_const_1, u32_const_3>(desc.name, props); break; case (1 * 100 + 4): ret = new devices.netlist_factory_truthtable_t <u32_const_1, u32_const_4>(desc.name, props); break; case (1 * 100 + 5): ret = new devices.netlist_factory_truthtable_t <u32_const_1, u32_const_5>(desc.name, props); break; case (1 * 100 + 6): ret = new devices.netlist_factory_truthtable_t <u32_const_1, u32_const_6>(desc.name, props); break; case (1 * 100 + 7): ret = new devices.netlist_factory_truthtable_t <u32_const_1, u32_const_7>(desc.name, props); break; case (1 * 100 + 8): ret = new devices.netlist_factory_truthtable_t <u32_const_1, u32_const_8>(desc.name, props); break; case (1 * 100 + 9): ret = new devices.netlist_factory_truthtable_t <u32_const_1, u32_const_9>(desc.name, props); break; case (1 * 100 + 10): ret = new devices.netlist_factory_truthtable_t <u32_const_1, u32_const_10>(desc.name, props); break; //ENTRY(2, props); case (2 * 100 + 1): ret = new devices.netlist_factory_truthtable_t <u32_const_2, u32_const_1>(desc.name, props); break; case (2 * 100 + 2): ret = new devices.netlist_factory_truthtable_t <u32_const_2, u32_const_2>(desc.name, props); break; case (2 * 100 + 3): ret = new devices.netlist_factory_truthtable_t <u32_const_2, u32_const_3>(desc.name, props); break; case (2 * 100 + 4): ret = new devices.netlist_factory_truthtable_t <u32_const_2, u32_const_4>(desc.name, props); break; case (2 * 100 + 5): ret = new devices.netlist_factory_truthtable_t <u32_const_2, u32_const_5>(desc.name, props); break; case (2 * 100 + 6): ret = new devices.netlist_factory_truthtable_t <u32_const_2, u32_const_6>(desc.name, props); break; case (2 * 100 + 7): ret = new devices.netlist_factory_truthtable_t <u32_const_2, u32_const_7>(desc.name, props); break; case (2 * 100 + 8): ret = new devices.netlist_factory_truthtable_t <u32_const_2, u32_const_8>(desc.name, props); break; case (2 * 100 + 9): ret = new devices.netlist_factory_truthtable_t <u32_const_2, u32_const_9>(desc.name, props); break; case (2 * 100 + 10): ret = new devices.netlist_factory_truthtable_t <u32_const_2, u32_const_10>(desc.name, props); break; //ENTRY(3, props); case (3 * 100 + 1): ret = new devices.netlist_factory_truthtable_t <u32_const_3, u32_const_1>(desc.name, props); break; case (3 * 100 + 2): ret = new devices.netlist_factory_truthtable_t <u32_const_3, u32_const_2>(desc.name, props); break; case (3 * 100 + 3): ret = new devices.netlist_factory_truthtable_t <u32_const_3, u32_const_3>(desc.name, props); break; case (3 * 100 + 4): ret = new devices.netlist_factory_truthtable_t <u32_const_3, u32_const_4>(desc.name, props); break; case (3 * 100 + 5): ret = new devices.netlist_factory_truthtable_t <u32_const_3, u32_const_5>(desc.name, props); break; case (3 * 100 + 6): ret = new devices.netlist_factory_truthtable_t <u32_const_3, u32_const_6>(desc.name, props); break; case (3 * 100 + 7): ret = new devices.netlist_factory_truthtable_t <u32_const_3, u32_const_7>(desc.name, props); break; case (3 * 100 + 8): ret = new devices.netlist_factory_truthtable_t <u32_const_3, u32_const_8>(desc.name, props); break; case (3 * 100 + 9): ret = new devices.netlist_factory_truthtable_t <u32_const_3, u32_const_9>(desc.name, props); break; case (3 * 100 + 10): ret = new devices.netlist_factory_truthtable_t <u32_const_3, u32_const_10>(desc.name, props); break; //ENTRY(4, props); case (4 * 100 + 1): ret = new devices.netlist_factory_truthtable_t <u32_const_4, u32_const_1>(desc.name, props); break; case (4 * 100 + 2): ret = new devices.netlist_factory_truthtable_t <u32_const_4, u32_const_2>(desc.name, props); break; case (4 * 100 + 3): ret = new devices.netlist_factory_truthtable_t <u32_const_4, u32_const_3>(desc.name, props); break; case (4 * 100 + 4): ret = new devices.netlist_factory_truthtable_t <u32_const_4, u32_const_4>(desc.name, props); break; case (4 * 100 + 5): ret = new devices.netlist_factory_truthtable_t <u32_const_4, u32_const_5>(desc.name, props); break; case (4 * 100 + 6): ret = new devices.netlist_factory_truthtable_t <u32_const_4, u32_const_6>(desc.name, props); break; case (4 * 100 + 7): ret = new devices.netlist_factory_truthtable_t <u32_const_4, u32_const_7>(desc.name, props); break; case (4 * 100 + 8): ret = new devices.netlist_factory_truthtable_t <u32_const_4, u32_const_8>(desc.name, props); break; case (4 * 100 + 9): ret = new devices.netlist_factory_truthtable_t <u32_const_4, u32_const_9>(desc.name, props); break; case (4 * 100 + 10): ret = new devices.netlist_factory_truthtable_t <u32_const_4, u32_const_10>(desc.name, props); break; //ENTRY(5, props); case (5 * 100 + 1): ret = new devices.netlist_factory_truthtable_t <u32_const_5, u32_const_1>(desc.name, props); break; case (5 * 100 + 2): ret = new devices.netlist_factory_truthtable_t <u32_const_5, u32_const_2>(desc.name, props); break; case (5 * 100 + 3): ret = new devices.netlist_factory_truthtable_t <u32_const_5, u32_const_3>(desc.name, props); break; case (5 * 100 + 4): ret = new devices.netlist_factory_truthtable_t <u32_const_5, u32_const_4>(desc.name, props); break; case (5 * 100 + 5): ret = new devices.netlist_factory_truthtable_t <u32_const_5, u32_const_5>(desc.name, props); break; case (5 * 100 + 6): ret = new devices.netlist_factory_truthtable_t <u32_const_5, u32_const_6>(desc.name, props); break; case (5 * 100 + 7): ret = new devices.netlist_factory_truthtable_t <u32_const_5, u32_const_7>(desc.name, props); break; case (5 * 100 + 8): ret = new devices.netlist_factory_truthtable_t <u32_const_5, u32_const_8>(desc.name, props); break; case (5 * 100 + 9): ret = new devices.netlist_factory_truthtable_t <u32_const_5, u32_const_9>(desc.name, props); break; case (5 * 100 + 10): ret = new devices.netlist_factory_truthtable_t <u32_const_5, u32_const_10>(desc.name, props); break; //ENTRY(6, props); case (6 * 100 + 1): ret = new devices.netlist_factory_truthtable_t <u32_const_6, u32_const_1>(desc.name, props); break; case (6 * 100 + 2): ret = new devices.netlist_factory_truthtable_t <u32_const_6, u32_const_2>(desc.name, props); break; case (6 * 100 + 3): ret = new devices.netlist_factory_truthtable_t <u32_const_6, u32_const_3>(desc.name, props); break; case (6 * 100 + 4): ret = new devices.netlist_factory_truthtable_t <u32_const_6, u32_const_4>(desc.name, props); break; case (6 * 100 + 5): ret = new devices.netlist_factory_truthtable_t <u32_const_6, u32_const_5>(desc.name, props); break; case (6 * 100 + 6): ret = new devices.netlist_factory_truthtable_t <u32_const_6, u32_const_6>(desc.name, props); break; case (6 * 100 + 7): ret = new devices.netlist_factory_truthtable_t <u32_const_6, u32_const_7>(desc.name, props); break; case (6 * 100 + 8): ret = new devices.netlist_factory_truthtable_t <u32_const_6, u32_const_8>(desc.name, props); break; case (6 * 100 + 9): ret = new devices.netlist_factory_truthtable_t <u32_const_6, u32_const_9>(desc.name, props); break; case (6 * 100 + 10): ret = new devices.netlist_factory_truthtable_t <u32_const_6, u32_const_10>(desc.name, props); break; //ENTRY(7, props); case (7 * 100 + 1): ret = new devices.netlist_factory_truthtable_t <u32_const_7, u32_const_1>(desc.name, props); break; case (7 * 100 + 2): ret = new devices.netlist_factory_truthtable_t <u32_const_7, u32_const_2>(desc.name, props); break; case (7 * 100 + 3): ret = new devices.netlist_factory_truthtable_t <u32_const_7, u32_const_3>(desc.name, props); break; case (7 * 100 + 4): ret = new devices.netlist_factory_truthtable_t <u32_const_7, u32_const_4>(desc.name, props); break; case (7 * 100 + 5): ret = new devices.netlist_factory_truthtable_t <u32_const_7, u32_const_5>(desc.name, props); break; case (7 * 100 + 6): ret = new devices.netlist_factory_truthtable_t <u32_const_7, u32_const_6>(desc.name, props); break; case (7 * 100 + 7): ret = new devices.netlist_factory_truthtable_t <u32_const_7, u32_const_7>(desc.name, props); break; case (7 * 100 + 8): ret = new devices.netlist_factory_truthtable_t <u32_const_7, u32_const_8>(desc.name, props); break; case (7 * 100 + 9): ret = new devices.netlist_factory_truthtable_t <u32_const_7, u32_const_9>(desc.name, props); break; case (7 * 100 + 10): ret = new devices.netlist_factory_truthtable_t <u32_const_7, u32_const_10>(desc.name, props); break; //ENTRY(8, props); case (8 * 100 + 1): ret = new devices.netlist_factory_truthtable_t <u32_const_8, u32_const_1>(desc.name, props); break; case (8 * 100 + 2): ret = new devices.netlist_factory_truthtable_t <u32_const_8, u32_const_2>(desc.name, props); break; case (8 * 100 + 3): ret = new devices.netlist_factory_truthtable_t <u32_const_8, u32_const_3>(desc.name, props); break; case (8 * 100 + 4): ret = new devices.netlist_factory_truthtable_t <u32_const_8, u32_const_4>(desc.name, props); break; case (8 * 100 + 5): ret = new devices.netlist_factory_truthtable_t <u32_const_8, u32_const_5>(desc.name, props); break; case (8 * 100 + 6): ret = new devices.netlist_factory_truthtable_t <u32_const_8, u32_const_6>(desc.name, props); break; case (8 * 100 + 7): ret = new devices.netlist_factory_truthtable_t <u32_const_8, u32_const_7>(desc.name, props); break; case (8 * 100 + 8): ret = new devices.netlist_factory_truthtable_t <u32_const_8, u32_const_8>(desc.name, props); break; case (8 * 100 + 9): ret = new devices.netlist_factory_truthtable_t <u32_const_8, u32_const_9>(desc.name, props); break; case (8 * 100 + 10): ret = new devices.netlist_factory_truthtable_t <u32_const_8, u32_const_10>(desc.name, props); break; //ENTRY(9, props); case (9 * 100 + 1): ret = new devices.netlist_factory_truthtable_t <u32_const_9, u32_const_1>(desc.name, props); break; case (9 * 100 + 2): ret = new devices.netlist_factory_truthtable_t <u32_const_9, u32_const_2>(desc.name, props); break; case (9 * 100 + 3): ret = new devices.netlist_factory_truthtable_t <u32_const_9, u32_const_3>(desc.name, props); break; case (9 * 100 + 4): ret = new devices.netlist_factory_truthtable_t <u32_const_9, u32_const_4>(desc.name, props); break; case (9 * 100 + 5): ret = new devices.netlist_factory_truthtable_t <u32_const_9, u32_const_5>(desc.name, props); break; case (9 * 100 + 6): ret = new devices.netlist_factory_truthtable_t <u32_const_9, u32_const_6>(desc.name, props); break; case (9 * 100 + 7): ret = new devices.netlist_factory_truthtable_t <u32_const_9, u32_const_7>(desc.name, props); break; case (9 * 100 + 8): ret = new devices.netlist_factory_truthtable_t <u32_const_9, u32_const_8>(desc.name, props); break; case (9 * 100 + 9): ret = new devices.netlist_factory_truthtable_t <u32_const_9, u32_const_9>(desc.name, props); break; case (9 * 100 + 10): ret = new devices.netlist_factory_truthtable_t <u32_const_9, u32_const_10>(desc.name, props); break; //ENTRY(10, props); case (10 * 100 + 1): ret = new devices.netlist_factory_truthtable_t <u32_const_10, u32_const_1>(desc.name, props); break; case (10 * 100 + 2): ret = new devices.netlist_factory_truthtable_t <u32_const_10, u32_const_2>(desc.name, props); break; case (10 * 100 + 3): ret = new devices.netlist_factory_truthtable_t <u32_const_10, u32_const_3>(desc.name, props); break; case (10 * 100 + 4): ret = new devices.netlist_factory_truthtable_t <u32_const_10, u32_const_4>(desc.name, props); break; case (10 * 100 + 5): ret = new devices.netlist_factory_truthtable_t <u32_const_10, u32_const_5>(desc.name, props); break; case (10 * 100 + 6): ret = new devices.netlist_factory_truthtable_t <u32_const_10, u32_const_6>(desc.name, props); break; case (10 * 100 + 7): ret = new devices.netlist_factory_truthtable_t <u32_const_10, u32_const_7>(desc.name, props); break; case (10 * 100 + 8): ret = new devices.netlist_factory_truthtable_t <u32_const_10, u32_const_8>(desc.name, props); break; case (10 * 100 + 9): ret = new devices.netlist_factory_truthtable_t <u32_const_10, u32_const_9>(desc.name, props); break; case (10 * 100 + 10): ret = new devices.netlist_factory_truthtable_t <u32_const_10, u32_const_10>(desc.name, props); break; //ENTRY(11, props); case (11 * 100 + 1): ret = new devices.netlist_factory_truthtable_t <u32_const_11, u32_const_1>(desc.name, props); break; case (11 * 100 + 2): ret = new devices.netlist_factory_truthtable_t <u32_const_11, u32_const_2>(desc.name, props); break; case (11 * 100 + 3): ret = new devices.netlist_factory_truthtable_t <u32_const_11, u32_const_3>(desc.name, props); break; case (11 * 100 + 4): ret = new devices.netlist_factory_truthtable_t <u32_const_11, u32_const_4>(desc.name, props); break; case (11 * 100 + 5): ret = new devices.netlist_factory_truthtable_t <u32_const_11, u32_const_5>(desc.name, props); break; case (11 * 100 + 6): ret = new devices.netlist_factory_truthtable_t <u32_const_11, u32_const_6>(desc.name, props); break; case (11 * 100 + 7): ret = new devices.netlist_factory_truthtable_t <u32_const_11, u32_const_7>(desc.name, props); break; case (11 * 100 + 8): ret = new devices.netlist_factory_truthtable_t <u32_const_11, u32_const_8>(desc.name, props); break; case (11 * 100 + 9): ret = new devices.netlist_factory_truthtable_t <u32_const_11, u32_const_9>(desc.name, props); break; case (11 * 100 + 10): ret = new devices.netlist_factory_truthtable_t <u32_const_11, u32_const_10>(desc.name, props); break; //ENTRY(12, props); case (12 * 100 + 1): ret = new devices.netlist_factory_truthtable_t <u32_const_12, u32_const_1>(desc.name, props); break; case (12 * 100 + 2): ret = new devices.netlist_factory_truthtable_t <u32_const_12, u32_const_2>(desc.name, props); break; case (12 * 100 + 3): ret = new devices.netlist_factory_truthtable_t <u32_const_12, u32_const_3>(desc.name, props); break; case (12 * 100 + 4): ret = new devices.netlist_factory_truthtable_t <u32_const_12, u32_const_4>(desc.name, props); break; case (12 * 100 + 5): ret = new devices.netlist_factory_truthtable_t <u32_const_12, u32_const_5>(desc.name, props); break; case (12 * 100 + 6): ret = new devices.netlist_factory_truthtable_t <u32_const_12, u32_const_6>(desc.name, props); break; case (12 * 100 + 7): ret = new devices.netlist_factory_truthtable_t <u32_const_12, u32_const_7>(desc.name, props); break; case (12 * 100 + 8): ret = new devices.netlist_factory_truthtable_t <u32_const_12, u32_const_8>(desc.name, props); break; case (12 * 100 + 9): ret = new devices.netlist_factory_truthtable_t <u32_const_12, u32_const_9>(desc.name, props); break; case (12 * 100 + 10): ret = new devices.netlist_factory_truthtable_t <u32_const_12, u32_const_10>(desc.name, props); break; default: string msg = new plib.pfmt("unable to create truthtable<{0},{2}>").op(desc.ni, desc.no); nl_assert_always(false, msg); break; } ret.m_desc = desc.desc; ret.m_family_name = !desc.family.empty() ? desc.family : config.DEFAULT_LOGIC_FAMILY(); return(ret); }