summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/nl_setup.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/netlist/nl_setup.h')
-rw-r--r--src/lib/netlist/nl_setup.h31
1 files changed, 20 insertions, 11 deletions
diff --git a/src/lib/netlist/nl_setup.h b/src/lib/netlist/nl_setup.h
index d22b78c3703..dad4f894375 100644
--- a/src/lib/netlist/nl_setup.h
+++ b/src/lib/netlist/nl_setup.h
@@ -107,15 +107,26 @@ void NETLIST_NAME(name)([[maybe_unused]] netlist::nlparse_t &setup) \
// truth table defines
// -----------------------------------------------------------------------------
+#if 0
#define TRUTHTABLE_START(cname, in, out, pdef_params) \
- NETLIST_START(cname) \
- netlist::tt_desc desc; \
- desc.name = #cname ; \
- desc.ni = in; \
- desc.no = out; \
- desc.family = ""; \
+ void NETLIST_NAME(cname ## _impl)(netlist::tt_desc &desc); \
+ static NETLIST_START(cname) \
+ netlist::tt_desc xdesc{ #cname, in, out, "" }; \
auto sloc = PSOURCELOC(); \
- const pstring def_params = pdef_params;
+ const pstring def_params = pdef_params; \
+ NETLIST_NAME(cname ## _impl)(xdesc); \
+ setup.truth_table_create(xdesc, def_params, std::move(sloc)); \
+ NETLIST_END() \
+ static void NETLIST_NAME(cname ## _impl)(netlist::tt_desc &desc) \
+ {
+#else
+#define TRUTHTABLE_START(cname, in, out, pdef_params) \
+ NETLIST_START(cname) \
+ netlist::tt_desc desc{ #cname, in, out, "", {} }; \
+ auto sloc = PSOURCELOC(); \
+ const pstring def_params = pdef_params; \
+ plib::functor_guard lg([&](){ setup.truth_table_create(desc, def_params, std::move(sloc)); });
+#endif
#define TT_HEAD(x) \
desc.desc.emplace_back(x);
@@ -127,7 +138,6 @@ void NETLIST_NAME(name)([[maybe_unused]] netlist::nlparse_t &setup) \
desc.family = x;
#define TRUTHTABLE_END() \
- setup.truth_table_create(desc, def_params, std::move(sloc)); \
NETLIST_END()
#define TRUTHTABLE_ENTRY(name) \
@@ -143,12 +153,11 @@ namespace netlist
struct tt_desc
{
- tt_desc() : ni(0), no(0) { }
pstring name;
unsigned long ni;
unsigned long no;
- std::vector<pstring> desc;
pstring family;
+ std::vector<pstring> desc;
};
// ----------------------------------------------------------------------------------------
@@ -174,7 +183,7 @@ namespace netlist
// last argument only needed by nltool
void register_dev(const pstring &classname, const pstring &name,
const std::vector<pstring> &params_and_connections,
- factory::element_t **felem = nullptr);
+ factory::element_t **factory_element = nullptr);
void register_dev(const pstring &classname, std::initializer_list<const char *> more_parameters);
void register_dev(const pstring &classname, const pstring &name)
{