#include <Formula.h>
Public Types | |
typedef std::stack< double > | ResultStack |
Result stack. | |
typedef double(* | UnaryFunctionPtr )(double) |
pointer to a unary function | |
typedef std::vector< BytecodeToken * > | Bytecode |
The Bytecode is a vector of tokens. | |
typedef std::map< std::string, const double * > | VariableMap |
The VariableMap is a map of string to pointers to double. | |
typedef std::map< std::string, UnaryFunctionPtr > | FunctionMap |
The FunctionMap is a map of string to pointers to function. | |
Public Member Functions | |
Formula (const std::string &formula, bool useStandardFunctions=true) | |
Constructor, take a text in input. | |
virtual | ~Formula () |
Destructor, free tokens. | |
void | setVariable (const std::string &name, const double &value) |
Set a variable from the formula to an external value. | |
void | addUnaryFunction (const std::string &name, UnaryFunctionPtr funcPtr) |
Add an unary function. | |
ParseResult | parse (void) |
Parse, return a ParseResult struct indicating if the parsing was successfull, and if not, the error. All formula variables must be bound to C++ ones by calls to setVariable before this calling this method. | |
double | eval (void) |
Evaluate the formula. | |
Static Protected Member Functions | |
static double | sqr (double v) |
f(x) = x*x | |
static double | sgn (double v) |
f(x) = 1 if x > 0; -1 if x < 0; 0 otherwise | |
Protected Attributes | |
std::string | formulaText |
text of formula | |
VariableMap | variableMap |
map of variable name to variable values | |
FunctionMap | functionMap |
map of function name to functions | |
Bytecode | bytecode |
bytecode of the formula | |
bool | parsed |
has the formula been parsed? | |
Classes | |
struct | BytecodeToken |
An token from the bytecode, can be a variable or an operation. More... | |
struct | ParseResult |
Result returned by Formula::parse, including error description. More... |