Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

An::Formula Class Reference

#include <Formula.h>

List of all members.


Detailed Description

A Formula.


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...


The documentation for this class was generated from the following files:
Generated on Mon Oct 24 17:30:34 2005 for liban by  doxygen 1.4.2