muParser API -
1.35
|
Bytecode implementation of the Math Parser. More...
#include <muParserBytecode.h>
Public Member Functions | |
ParserByteCode () | |
Bytecode default constructor. | |
ParserByteCode (const ParserByteCode &a_ByteCode) | |
Copy constructor. More... | |
ParserByteCode & | operator= (const ParserByteCode &a_ByteCode) |
Assignment operator. More... | |
void | Assign (const ParserByteCode &a_ByteCode) |
Copy state of another object to this. More... | |
void | AddVar (value_type *a_pVar) |
Add a Variable pointer to bytecode. More... | |
void | AddVal (value_type a_fVal) |
Add a Variable pointer to bytecode. More... | |
void | AddOp (ECmdCode a_Oprt) |
Add an operator identifier to bytecode. More... | |
void | AddIfElse (ECmdCode a_Oprt) |
void | AddAssignOp (value_type *a_pVar) |
Add an assignment operator. More... | |
void | AddFun (generic_callable_type a_pFun, int a_iArgc, bool isOptimizable) |
Add function to bytecode. More... | |
void | AddBulkFun (generic_callable_type a_pFun, int a_iArgc) |
Add a bulk function to bytecode. More... | |
void | AddStrFun (generic_callable_type a_pFun, int a_iArgc, int a_iIdx) |
Add Strung function entry to the parser bytecode. More... | |
void | EnableOptimizer (bool bStat) |
void | Finalize () |
Add end marker to bytecode. More... | |
void | clear () |
Delete the bytecode. More... | |
std::size_t | GetMaxStackSize () const |
std::size_t | GetSize () const |
const SToken * | GetBase () const |
void | StoreEnvironment (string_type expr, stringbuf_type const &strBuf) |
std::tuple< string_type, stringbuf_type > | RestoreEnvironment () const |
void | AsciiDump () const |
Dump bytecode (for debugging only!). | |
Bytecode implementation of the Math Parser.
The bytecode contains the formula converted to revers polish notation stored in a continious memory area. Associated with this data are operator codes, variable pointers, constant values and function pointers. Those are necessary in order to calculate the result. All those data items will be casted to the underlying datatype of the bytecode.
Definition at line 87 of file muParserBytecode.h.
mu::ParserByteCode::ParserByteCode | ( | const ParserByteCode & | a_ByteCode | ) |
Copy constructor.
Implemented in Terms of Assign(const ParserByteCode &a_ByteCode)
Definition at line 67 of file muParserBytecode.cpp.
void mu::ParserByteCode::AddAssignOp | ( | value_type * | a_pVar | ) |
Add an assignment operator.
Operator entries in byte code consist of:
Definition at line 363 of file muParserBytecode.cpp.
void mu::ParserByteCode::AddBulkFun | ( | generic_callable_type | a_pFun, |
int | a_iArgc | ||
) |
Add a bulk function to bytecode.
a_iArgc | Number of arguments, negative numbers indicate multiarg functions. |
a_pFun | Pointer to function callback. |
Definition at line 453 of file muParserBytecode.cpp.
void mu::ParserByteCode::AddFun | ( | generic_callable_type | a_pFun, |
int | a_iArgc, | ||
bool | isFunctionOptimizable | ||
) |
Add function to bytecode.
a_iArgc | Number of arguments, negative numbers indicate multiarg functions. |
a_pFun | Pointer to function callback. |
Definition at line 379 of file muParserBytecode.cpp.
void mu::ParserByteCode::AddOp | ( | ECmdCode | a_Oprt | ) |
Add an operator identifier to bytecode.
Operator entries in byte code consist of:
Definition at line 199 of file muParserBytecode.cpp.
void mu::ParserByteCode::AddStrFun | ( | generic_callable_type | a_pFun, |
int | a_iArgc, | ||
int | a_iIdx | ||
) |
Add Strung function entry to the parser bytecode.
nothrow | A string function entry consists of the stack position of the return value, followed by a cmSTRFUNC code, the function pointer and an index into the string buffer maintained by the parser. |
Definition at line 473 of file muParserBytecode.cpp.
void mu::ParserByteCode::AddVal | ( | value_type | a_fVal | ) |
Add a Variable pointer to bytecode.
Value entries in byte code consist of:
a_pVal | Value to be added. |
nothrow |
Definition at line 140 of file muParserBytecode.cpp.
void mu::ParserByteCode::AddVar | ( | value_type * | a_pVar | ) |
Add a Variable pointer to bytecode.
a_pVar | Pointer to be added. |
nothrow |
Definition at line 113 of file muParserBytecode.cpp.
void mu::ParserByteCode::Assign | ( | const ParserByteCode & | a_ByteCode | ) |
Copy state of another object to this.
nowthrow |
Definition at line 94 of file muParserBytecode.cpp.
Referenced by operator=(), and ParserByteCode().
void mu::ParserByteCode::clear | ( | ) |
Delete the bytecode.
nothrow | The name of this function is a violation of my own coding guidelines but this way it's more in line with the STL functions thus more intuitive. |
Definition at line 544 of file muParserBytecode.cpp.
void mu::ParserByteCode::Finalize | ( | ) |
ParserByteCode & mu::ParserByteCode::operator= | ( | const ParserByteCode & | a_ByteCode | ) |
Assignment operator.
Implemented in Terms of Assign(const ParserByteCode &a_ByteCode)
Definition at line 77 of file muParserBytecode.cpp.