summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/devices/nlid_system.h
diff options
context:
space:
mode:
author couriersud <couriersud@gmx.org>2017-01-10 23:57:51 +0100
committer couriersud <couriersud@gmx.org>2017-01-12 23:20:23 +0100
commitb1c358678964630c1282953c1a80407997eae203 (patch)
treea5532543425133c88ddadb6a077afda6d09be5d2 /src/lib/netlist/devices/nlid_system.h
parentc8c7e9a770a525a63a0f40bccdf0489966cfdc25 (diff)
Improve readability and remove some trampolines. (nw)
Diffstat (limited to 'src/lib/netlist/devices/nlid_system.h')
-rw-r--r--src/lib/netlist/devices/nlid_system.h40
1 files changed, 4 insertions, 36 deletions
diff --git a/src/lib/netlist/devices/nlid_system.h b/src/lib/netlist/devices/nlid_system.h
index 929394651d8..f42f58a7ff9 100644
--- a/src/lib/netlist/devices/nlid_system.h
+++ b/src/lib/netlist/devices/nlid_system.h
@@ -175,7 +175,7 @@ namespace netlist
/* make sure we get the family first */
, m_FAMILY(*this, "FAMILY", "FAMILY(TYPE=TTL)")
{
- set_logic_family(netlist().setup().family_from_model(m_FAMILY()));
+ set_logic_family(netlist().family_from_model(m_FAMILY()));
}
NETLIB_UPDATE_AFTER_PARAM_CHANGE()
@@ -311,41 +311,7 @@ namespace netlist
{
for (int i=0; i < m_N(); i++)
m_I.push_back(plib::make_unique<analog_input_t>(*this, plib::pfmt("A{1}")(i)));
-
- plib::pstring_vector_t cmds(m_func(), " ");
- m_precompiled.clear();
-
- for (std::size_t i=0; i < cmds.size(); i++)
- {
- pstring cmd = cmds[i];
- rpn_inst rc;
- if (cmd == "+")
- rc.m_cmd = ADD;
- else if (cmd == "-")
- rc.m_cmd = SUB;
- else if (cmd == "*")
- rc.m_cmd = MULT;
- else if (cmd == "/")
- rc.m_cmd = DIV;
- else if (cmd == "pow")
- rc.m_cmd = POW;
- else if (cmd.startsWith("A"))
- {
- rc.m_cmd = PUSH_INPUT;
- rc.m_param = cmd.substr(1).as_long();
- }
- else
- {
- bool err = false;
- rc.m_cmd = PUSH_CONST;
- rc.m_param = cmd.as_double(&err);
- if (err)
- netlist().log().fatal("nld_function: unknown/misformatted token <{1}> in <{2}>", cmd, m_func());
- }
- m_precompiled.push_back(rc);
- }
-
-
+ compile();
}
protected:
@@ -373,6 +339,8 @@ namespace netlist
nl_double m_param;
};
+ void compile();
+
param_int_t m_N;
param_str_t m_func;
analog_output_t m_Q;