summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/plib/pfunction.cpp
diff options
context:
space:
mode:
author couriersud <couriersud@users.noreply.github.com>2022-05-05 17:37:22 +0200
committer GitHub <noreply@github.com>2022-05-06 01:37:22 +1000
commitd20a1982da6a87642dd96973ea7f94d3ca37a5c4 (patch)
tree8a0959779fec66197a4b1edd1510715dd9e2fad1 /src/lib/netlist/plib/pfunction.cpp
parent0818eafc2fe968900a973471a59b2ab3a945f13c (diff)
Netlist lint, first version of a FAQ and small code changes. (#9684)
- Added a first version of a FAQ. - Use better error messages in pfunction. - Made member functions static where appropriate in nld_solver.
Diffstat (limited to 'src/lib/netlist/plib/pfunction.cpp')
-rw-r--r--src/lib/netlist/plib/pfunction.cpp19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/lib/netlist/plib/pfunction.cpp b/src/lib/netlist/plib/pfunction.cpp
index 362615468e5..6d295f48a73 100644
--- a/src/lib/netlist/plib/pfunction.cpp
+++ b/src/lib/netlist/plib/pfunction.cpp
@@ -17,6 +17,13 @@
namespace plib {
+ PERRMSGV(MF_FUNCTION_UNKNOWN_TOKEN, 2, "pfunction: unknown/misformatted token <{1}> in <{2}>")
+ PERRMSGV(MF_FUNCTION_STACK_UNDERFLOW, 2, "pfunction: stack underflow on token <{1}> in <{2}>")
+ PERRMSGV(MF_FUNCTION_STACK_OVERFLOW, 2, "pfunction: stack overflow on token <{1}> in <{2}>")
+ PERRMSGV(MF_FUNCTION_PARENTHESIS_INEQUALITY, 2, "pfunction: parenthesis inequality on token <{1}> in <{2}>")
+ PERRMSGV(MF_FUNCTION_STACK_UNEQUAL_ONE, 2, "pfunction: stack count {1} different to one on <{2}>")
+ PERRMSGV(MF_FUNCTION_STACK_UNDERFLOW_INFIX, 1, "pfunction: stack underflow during infix parsing of: <{1}>")
+
static constexpr const std::size_t MAX_STACK = 32;
struct pcmd_t
@@ -141,20 +148,20 @@ namespace plib {
else
rc = rpn_inst(plib::pstonum_ne<NT>(plib::left(cmd, cmd.length()-1), err) * r->second);
if (err)
- throw pexception(plib::pfmt("pfunction: unknown/misformatted token <{1}> in <{2}>")(cmd)(expr));
+ throw pexception(MF_FUNCTION_UNKNOWN_TOKEN(cmd, expr));
stk += 1;
}
}
if (stk < 1)
- throw pexception(plib::pfmt("pfunction: stack underflow on token <{1}> in <{2}>")(cmd)(expr));
+ throw pexception(MF_FUNCTION_STACK_UNDERFLOW(cmd, expr));
if (stk >= narrow_cast<int>(MAX_STACK))
- throw pexception(plib::pfmt("pfunction: stack overflow on token <{1}> in <{2}>")(cmd)(expr));
+ throw pexception(MF_FUNCTION_STACK_OVERFLOW(cmd, expr));
if (rc.cmd() == LP || rc.cmd() == RP)
- throw pexception(plib::pfmt("pfunction: parenthesis inequality on token <{1}> in <{2}>")(cmd)(expr));
+ throw pexception(MF_FUNCTION_PARENTHESIS_INEQUALITY(cmd, expr));
m_precompiled.push_back(rc);
}
if (stk != 1)
- throw pexception(plib::pfmt("pfunction: stack count {1} different to one on <{2}>")(stk, expr));
+ throw pexception(MF_FUNCTION_STACK_UNEQUAL_ONE(stk, expr));
compress();
}
@@ -187,7 +194,7 @@ namespace plib {
static pstring pop_check(std::stack<pstring> &stk, const pstring &expr) noexcept(false)
{
if (stk.empty())
- throw pexception(plib::pfmt("pfunction: stack underflow during infix parsing of: <{1}>")(expr));
+ throw pexception(MF_FUNCTION_STACK_UNDERFLOW_INFIX(expr));
pstring res = stk.top();
stk.pop();
return res;