From d20a1982da6a87642dd96973ea7f94d3ca37a5c4 Mon Sep 17 00:00:00 2001 From: couriersud Date: Thu, 5 May 2022 17:37:22 +0200 Subject: 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. --- src/lib/netlist/plib/pfunction.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'src/lib/netlist/plib/pfunction.cpp') 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(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(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 &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; -- cgit v1.2.3-70-g09d2