A wrapper of exprtk
runtime expression compiler: it takes a string representing an expression (from a simple mathematical formula to a complete program), compiles it and evaluates its result as many times as required.
The result will change as the "variables" appearing in the expression (hold and managed by the user of this object) change.
Refer to exprtk documentation for reference on supported formulas, control flow instructions, etc.
This wrapper is provided to reduce the (very large) compilation time and memory required by the original library, at the cost of only exposing the most commonly used part of its API:
double
are supported.std::map
container or pointers to user-stored variables.See examples of usage in the unit test file.
Definition at line 52 of file CRuntimeCompiledExpression.h.
#include <mrpt/expr/CRuntimeCompiledExpression.h>
Classes | |
struct | Impl |
Public Member Functions | |
CRuntimeCompiledExpression () | |
Default ctor. More... | |
~CRuntimeCompiledExpression () | |
void | compile (const std::string &expression, const std::map< std::string, double > &variables=std::map< std::string, double >(), const std::string &expr_name_for_error_reporting=std::string()) |
Initializes the object by compiling an expression. More... | |
void | register_symbol_table (const std::map< std::string, double * > &variables) |
Can be used before calling compile() to register additional variables by means of pointers instead of a std::map More... | |
double | eval () const |
Evaluates the current value of the precompiled formula. More... | |
bool | is_compiled () const |
Returns true if compile() was called and ended without errors. More... | |
const std::string & | get_original_expression () const |
Returns the original formula passed to compile(), or an empty string if still not compiled. More... | |
exprtk::expression< double > & | get_raw_exprtk_expr () |
Access raw exprtk expression object. More... | |
const exprtk::expression< double > & | get_raw_exprtk_expr () const |
Access raw exprtk expression object. More... | |
Private Attributes | |
mrpt::pimpl< Impl > | m_impl |
CRuntimeCompiledExpression::CRuntimeCompiledExpression | ( | ) |
Default ctor.
Definition at line 40 of file CRuntimeCompiledExpression.cpp.
CRuntimeCompiledExpression::~CRuntimeCompiledExpression | ( | ) |
Definition at line 45 of file CRuntimeCompiledExpression.cpp.
void CRuntimeCompiledExpression::compile | ( | const std::string & | expression, |
const std::map< std::string, double > & | variables = std::map<std::string, double>() , |
||
const std::string & | expr_name_for_error_reporting = std::string() |
||
) |
Initializes the object by compiling an expression.
std::runtime_error | On any syntax error or undefined symbol while compiling the expression. The e.what() message describes what is exactly the problem. |
[in] | expression | [in] The expression to be compiled. |
[in] | variables | [in] Map of variables/constants by `name` -> `value`. The references to the values in this map **must** be ensured to be valid thoughout all the life of the compiled expression. |
expr_name_for_error_reporting | A descriptive name of this formula, to be used when generating error reports via an exception, if needed |
Definition at line 47 of file CRuntimeCompiledExpression.cpp.
References m_impl, M_PI, and THROW_EXCEPTION_FMT.
Referenced by mrpt::nav::CMultiObjMotionOpt_Scalarization::impl_decide(), mrpt::nav::CPTG_Holo_Blend::internal_initialize(), mrpt::config::simpleini::MRPT_IniFileParser::parse_process_var_eval(), and TEST().
double CRuntimeCompiledExpression::eval | ( | ) | const |
Evaluates the current value of the precompiled formula.
std::runtime_error | If the formula has not been compiled yet. |
Definition at line 82 of file CRuntimeCompiledExpression.cpp.
References ASSERT_, and m_impl.
Referenced by mrpt::nav::CMultiObjMotionOpt_Scalarization::impl_decide(), mrpt::nav::CPTG_Holo_Blend::internal_get_T_ramp(), mrpt::nav::CPTG_Holo_Blend::internal_get_v(), mrpt::nav::CPTG_Holo_Blend::internal_get_w(), mrpt::config::simpleini::MRPT_IniFileParser::parse_process_var_eval(), and TEST().
const std::string & CRuntimeCompiledExpression::get_original_expression | ( | ) | const |
Returns the original formula passed to compile(), or an empty string if still not compiled.
Definition at line 120 of file CRuntimeCompiledExpression.cpp.
References m_impl.
const exprtk::expression< double > & CRuntimeCompiledExpression::get_raw_exprtk_expr | ( | ) |
Access raw exprtk expression object.
Definition at line 103 of file CRuntimeCompiledExpression.cpp.
const exprtk::expression<double>& mrpt::expr::CRuntimeCompiledExpression::get_raw_exprtk_expr | ( | ) | const |
Access raw exprtk expression object.
bool CRuntimeCompiledExpression::is_compiled | ( | ) | const |
Returns true if compile() was called and ended without errors.
Definition at line 115 of file CRuntimeCompiledExpression.cpp.
void CRuntimeCompiledExpression::register_symbol_table | ( | const std::map< std::string, double * > & | variables | ) |
Can be used before calling compile() to register additional variables by means of pointers instead of a std::map
[in] | variables | [in] Map of variables/constants by `name` -> `value`. The references to the values in this map **must** be ensured to be valid thoughout all the life of the compiled expression. |
Definition at line 88 of file CRuntimeCompiledExpression.cpp.
References m_impl.
Referenced by mrpt::nav::CPTG_Holo_Blend::internal_construct_exprs().
|
private |
Definition at line 102 of file CRuntimeCompiledExpression.h.
Referenced by compile(), eval(), get_original_expression(), get_raw_exprtk_expr(), is_compiled(), and register_symbol_table().
Page generated by Doxygen 1.8.17 for MRPT 1.9.9 Git: ad3a9d8ae Tue May 1 23:10:22 2018 -0700 at miƩ 12 jul 2023 10:03:34 CEST |