NumeRe v1.1.4
NumeRe: Framework für Numerische Rechnungen
|
Mathematical expressions parser. More...
#include <muParserInt.h>
Classes | |
class | change_dec_sep |
A facet class used to change decimal and thousands separator. More... | |
Public Member Functions | |
ParserInt () | |
Constructor. More... | |
virtual void | InitFun () |
Initialize the default functions. More... | |
virtual void | InitOprt () |
Initialize operators. More... | |
virtual void | InitConst () |
virtual void | InitCharSets () |
Public Member Functions inherited from mu::ParserBase | |
void | ActivateLoopMode (unsigned int _nLoopLength) |
Activates the loop mode and prepares the internal arrays for storing the necessary data. More... | |
void | DeactivateLoopMode () |
Deactivates the loop mode and resets the internal arrays. More... | |
void | SetIndex (unsigned int _nLoopElement) |
Activates the selected position in the internally stored bytecode. More... | |
void | SetCompiling (bool _bCompiling=true) |
Activate the compiling step for the parser. More... | |
bool | IsCompiling () |
Returns true, if the parser is currently in compiling step. More... | |
void | CacheCurrentAccess (const CachedDataAccess &_access) |
Store the passed data access for this position internally. More... | |
size_t | HasCachedAccess () |
Evaluate, whether there are any cached data accesses for this position. More... | |
void | DisableAccessCaching () |
Disable the data access caching for this position. More... | |
bool | CanCacheAccess () |
Check, whether the current position can cache any data accesses. More... | |
const CachedDataAccess & | GetCachedAccess (size_t nthAccess) |
Returns the cached data access for the passed position. More... | |
void | CacheCurrentEquation (const std::string &sEquation) |
Caches the passed equation for this position. More... | |
const std::string & | GetCachedEquation () const |
Returns the stored equation for this position. More... | |
void | CacheCurrentTarget (const std::string &sEquation) |
Caches the passed target equation for this position. More... | |
const std::string & | GetCachedTarget () const |
Returns the stored target equation for this position. More... | |
int | IsValidByteCode (unsigned int _nthLoopElement=-1, unsigned int _nthPartEquation=0) |
This member function returns, whether the current equation is already parsed and there's a valid bytecode for it. More... | |
bool | ActiveLoopMode () const |
Check, whether the loop mode is active. This function returns true even if the loop mode is paused. More... | |
bool | IsLockedPause () const |
Check, whether the pause mode is locked. More... | |
void | LockPause (bool _bLock=true) |
This member function locks the pause mode so that it cannot be accidentally activated. More... | |
void | PauseLoopMode (bool _bPause=true) |
This member function pauses the loop mode, so that the new assigned equation does not invalidate already parsed equations. More... | |
bool | IsAlreadyParsed (StringView sNewEquation) |
This member function checks, whether the passed expression is already parsed, so that the parsing step may be omitted. More... | |
bool | IsNotLastStackItem () const |
Check, whether there are more elements on the parsing stack remaining. More... | |
ParserBase () | |
Constructor. More... | |
ParserBase (const ParserBase &a_Parser) | |
Copy constructor. More... | |
ParserBase & | operator= (const ParserBase &a_Parser) |
Assignement operator. More... | |
virtual | ~ParserBase () |
value_type | Eval () |
Single-value wrapper around the vectorized overload of this member function. More... | |
value_type * | Eval (int &nStackSize) |
Evaluate an expression containing comma seperated subexpressions. More... | |
void | Eval (value_type *results, int nBulkSize) |
This member function evaluates the expression in parallel. Is not used at the moment. More... | |
void | SetExpr (StringView a_sExpr) |
Set the expression. Triggers first time calculation thus the creation of the bytecode and scanning of used variables. More... | |
void | SetVarFactory (facfun_type a_pFactory, void *pUserData=NULL) |
Set a function that can create variable pointer for unknown expression variables. More... | |
void | SetDecSep (char_type cDecSep) |
Set the decimal separator. More... | |
void | SetThousandsSep (char_type cThousandsSep=0) |
Sets the thousands operator. More... | |
void | ResetLocale () |
Resets the locale. More... | |
void | EnableOptimizer (bool a_bIsOn=true) |
Enable or disable the formula optimization feature. More... | |
void | EnableBuiltInOprt (bool a_bIsOn=true) |
Enable or disable the built in binary operators. More... | |
bool | HasBuiltInOprt () const |
Query status of built in variables. More... | |
void | AddValIdent (identfun_type a_pCallback) |
Add a value parsing function. More... | |
template<typename T > | |
void | DefineFun (const string_type &a_strName, T a_pFun, bool optimizeAway=true) |
Define a parser function without arguments. More... | |
void | DefineOprt (const string_type &a_strName, fun_type2 a_pFun, unsigned a_iPri=0, EOprtAssociativity a_eAssociativity=oaLEFT, bool optimizeAway=true) |
Define a binary operator. More... | |
void | DefineConst (const string_type &a_sName, value_type a_fVal) |
Add a user defined constant. More... | |
void | DefineStrConst (const string_type &a_sName, const string_type &a_strVal) |
Define a new string constant. More... | |
void | DefineVar (const string_type &a_sName, value_type *a_fVar) |
Add a user defined variable. More... | |
void | DefinePostfixOprt (const string_type &a_strFun, fun_type1 a_pOprt, bool optimizeAway=true) |
Add a user defined operator. More... | |
void | DefineInfixOprt (const string_type &a_strName, fun_type1 a_pOprt, int a_iPrec=prINFIX, bool optimizeAway=true) |
Add a user defined operator. More... | |
void | ClearVar () |
Clear all user defined variables. More... | |
void | ClearFun () |
Clear all functions. More... | |
void | ClearConst () |
Clear all user defined constants. More... | |
void | ClearInfixOprt () |
Clear the user defined Prefix operators. More... | |
void | ClearPostfixOprt () |
Clear all user defined postfix operators. More... | |
void | ClearOprt () |
Clear all user defined binary operators. More... | |
void | RemoveVar (const string_type &a_strVarName) |
Remove a variable from internal storage. More... | |
const varmap_type & | GetUsedVar () |
Return a map containing the used variables only. More... | |
const varmap_type & | GetVar () const |
Return a map containing the used variables only. More... | |
const valmap_type & | GetConst () const |
Return a map containing all parser constants. More... | |
const string_type & | GetExpr () const |
Retrieve the formula. More... | |
const funmap_type & | GetFunDef () const |
Return prototypes of all parser functions. More... | |
const std::map< std::string, std::vector< mu::value_type > > & | GetVectors () const |
string_type | GetVersion (EParserVersionInfo eInfo=pviFULL) const |
Returns the version of muparser. More... | |
const char_type ** | GetOprtDef () const |
Get the default symbols used for the built in operators. More... | |
void | DefineNameChars (const char_type *a_szCharset) |
Define the set of valid characters to be used in names of functions, variables, constants. More... | |
void | DefineOprtChars (const char_type *a_szCharset) |
Define the set of valid characters to be used in names of binary operators and postfix operators. More... | |
void | DefineInfixOprtChars (const char_type *a_szCharset) |
Define the set of valid characters to be used in names of infix operators. More... | |
const char_type * | ValidNameChars () const |
Virtual function that defines the characters allowed in name identifiers. More... | |
const char_type * | ValidOprtChars () const |
Virtual function that defines the characters allowed in operator definitions. More... | |
const char_type * | ValidInfixOprtChars () const |
Virtual function that defines the characters allowed in infix operator definitions. More... | |
void | SetArgSep (char_type cArgSep) |
Set argument separator. More... | |
char_type | GetArgSep () const |
Get the argument separator character. More... | |
void | Error (EErrorCodes a_iErrc, int a_iPos=(int) mu::string_type::npos, const string_type &a_strTok=string_type()) const |
Create an error containing the parse error position. More... | |
void | Error (EErrorCodes a_iErrc, const string_type &a_Expr, int a_iPos=(int) mu::string_type::npos, const string_type &a_strTok=string_type()) const |
Create an error containing the parse error position. More... | |
string_type | CreateTempVectorVar (const std::vector< mu::value_type > &vVar) |
This member function copies the passed vector into the internal storage referencing it with a auto-generated variable name. More... | |
void | SetVectorVar (const std::string &sVarName, const std::vector< mu::value_type > &vVar, bool bAddVectorType=false) |
This member function copies the passed vector into the internal storage referencing it with the passed name. More... | |
std::vector< mu::value_type > * | GetVectorVar (const std::string &sVarName) |
This member function returns a pointer to the vector stored internally. More... | |
void | UpdateVectorVar (const std::string &sVarName) |
This member function updates the corresponding variable of a vector with the previously newly assigned value. More... | |
void | ClearVectorVars (bool bIgnoreProcedureVects=false) |
This member function cleares the internal vector storage. More... | |
bool | ContainsVectorVars (StringView sExpr, bool ignoreSingletons) |
This member function checks, whether the passed expression contains a vector. More... | |
Additional Inherited Members | |
Public Types inherited from mu::ParserBase | |
typedef ParserError | exception_type |
Type of the error class. More... | |
Static Public Member Functions inherited from mu::ParserBase | |
static void | EnableDebugDump (bool bDumpCmd, bool bDumpStack) |
Enable the dumping of bytecode amd stack content on the console. More... | |
Public Attributes inherited from mu::ParserBase | |
std::map< std::string, std::string > * | mVarMapPntr |
std::list< mu::value_type * > | m_lDataStorage |
Protected Member Functions inherited from mu::ParserBase | |
void | Init () |
Initialize user defined functions. More... | |
virtual void | InitCharSets ()=0 |
virtual void | InitFun ()=0 |
virtual void | InitConst ()=0 |
virtual void | InitOprt ()=0 |
virtual void | OnDetectVar (string_type *pExpr, int &nStart, int &nEnd) |
Static Protected Attributes inherited from mu::ParserBase | |
static const char_type * | c_DefaultOprt [] |
Identifiers for built in binary operators. More... | |
static std::locale | s_locale = std::locale(std::locale::classic(), new change_dec_sep<char_type>('.')) |
The locale used by the parser. More... | |
static bool | g_DbgDumpCmdCode = false |
static bool | g_DbgDumpStack = false |
Mathematical expressions parser.
This version of the parser handles only integer numbers. It disables the built in operators thus it is slower than muParser. Integer values are stored in the double value_type and converted if needed.
Definition at line 46 of file muParserInt.h.
mu::ParserInt::ParserInt | ( | ) |
Constructor.
Call ParserBase class constructor and trigger Function, Operator and Constant initialization.
Definition at line 206 of file muParserInt.cpp.
References mu::ParserBase::AddValIdent(), InitCharSets(), InitFun(), InitOprt(), IsBinVal(), IsHexVal(), and IsVal().
|
staticprivate |
Definition at line 41 of file muParserInt.cpp.
References Round().
Referenced by InitFun().
|
staticprivate |
Definition at line 46 of file muParserInt.cpp.
References Round().
Referenced by InitOprt().
|
staticprivate |
Definition at line 55 of file muParserInt.cpp.
References Round().
Referenced by InitOprt().
|
staticprivate |
Definition at line 49 of file muParserInt.cpp.
References Round().
Referenced by InitOprt().
|
staticprivate |
Definition at line 61 of file muParserInt.cpp.
References Round().
Referenced by InitOprt().
|
staticprivate |
Definition at line 58 of file muParserInt.cpp.
References Round().
Referenced by InitOprt().
|
staticprivate |
Definition at line 60 of file muParserInt.cpp.
References Round().
Referenced by InitOprt().
|
virtual |
Implements mu::ParserBase.
Definition at line 224 of file muParserInt.cpp.
References _nrT, mu::ParserBase::DefineInfixOprtChars(), mu::ParserBase::DefineNameChars(), and mu::ParserBase::DefineOprtChars().
Referenced by ParserInt().
|
virtual |
Implements mu::ParserBase.
Definition at line 219 of file muParserInt.cpp.
|
virtual |
Initialize the default functions.
Implements mu::ParserBase.
Definition at line 233 of file muParserInt.cpp.
References _nrT, Abs(), mu::ParserBase::DefineFun(), Ite(), Max(), Min(), Sign(), and Sum().
Referenced by ParserInt().
|
virtual |
Initialize operators.
Implements mu::ParserBase.
Definition at line 245 of file muParserInt.cpp.
References _nrT, Add(), And(), mu::ParserBase::DefineInfixOprt(), mu::ParserBase::DefineOprt(), Div(), mu::ParserBase::EnableBuiltInOprt(), Equal(), Greater(), GreaterEq(), Less(), LessEq(), LogAnd(), LogOr(), Mod(), Mul(), Not(), NotEqual(), mu::oaRIGHT, Or(), Pow(), mu::prADD_SUB, mu::prCMP, mu::prLOGIC, mu::prMUL_DIV, mu::prPOW, Shl(), Shr(), Sub(), and UnaryMinus().
Referenced by ParserInt().
|
staticprivate |
|
staticprivate |
Check a given position in the expression for the presence of a hex value.
a_szExpr | Pointer to the expression string | |
[in/out] | a_iPos Pointer to an interger value holding the current parsing position in the expression. | |
[out] | a_fVal | Pointer to the position where the detected value shall be stored. |
Hey values must be prefixed with "0x" in order to be detected properly.
Definition at line 155 of file muParserInt.cpp.
References fast_float::hex.
Referenced by ParserInt().
|
staticprivate |
|
staticprivate |
Definition at line 43 of file muParserInt.cpp.
References Round().
Referenced by InitFun().
|
staticprivate |
Definition at line 57 of file muParserInt.cpp.
References Round().
Referenced by InitOprt().
|
staticprivate |
Definition at line 59 of file muParserInt.cpp.
References Round().
Referenced by InitOprt().
|
staticprivate |
Definition at line 53 of file muParserInt.cpp.
References Round().
Referenced by InitOprt().
|
staticprivate |
Definition at line 54 of file muParserInt.cpp.
References Round().
Referenced by InitOprt().
|
staticprivate |
|
staticprivate |
|
staticprivate |
Definition at line 50 of file muParserInt.cpp.
References Round().
Referenced by InitOprt().
|
staticprivate |
Definition at line 48 of file muParserInt.cpp.
References Round().
Referenced by InitOprt().
|
staticprivate |
Definition at line 63 of file muParserInt.cpp.
References Round().
Referenced by InitOprt().
|
staticprivate |
Definition at line 62 of file muParserInt.cpp.
References Round().
Referenced by InitOprt().
|
staticprivate |
Definition at line 56 of file muParserInt.cpp.
References Round().
Referenced by InitOprt().
|
staticprivate |
Definition at line 65 of file muParserInt.cpp.
References Round().
Referenced by InitOprt().
|
inlinestaticprivate |
|
staticprivate |
Definition at line 52 of file muParserInt.cpp.
References Round().
Referenced by InitOprt().
|
staticprivate |
Definition at line 51 of file muParserInt.cpp.
References Round().
Referenced by InitOprt().
|
staticprivate |
Definition at line 42 of file muParserInt.cpp.
References Round().
Referenced by InitFun().
|
staticprivate |
Definition at line 47 of file muParserInt.cpp.
References Round().
Referenced by InitOprt().
|
staticprivate |
|
staticprivate |
Definition at line 72 of file muParserInt.cpp.
References Round().
Referenced by InitOprt().
|
staticprivate |