1 #ifndef InlineCalculator_h 2 #define InlineCalculator_h 40 class CalculatorVariablePool;
49 #define CALL_MEMBER_FN(object, ptrToMember) ((object).*(ptrToMember)) 105 bool fxExists(
const QString &fxname)
const;
144 virtual bool exists(
const QString &variable)
const;
146 const int &index = 0)
const;
163 QString
name()
const;
172 virtual QVariant
args();
QList< CalculatorVariablePool * > m_variablePoolList
The list of variable pool pointers.
bool fxExists(const QString &fxname) const
Determines whether the given function name exists in the current function pool.
void floatModulus()
Pops the top two vectors off the current stack and performs the floatModulusOperator() on the corresp...
virtual QVector< double > value(const QString &variable, const int &index=0) const
Return vector of doubles for Calculator functions.
CalculatorVariablePool()
Constructs a CalculatorVariablePool object.
void variable(const QVariant &variable)
Pushes the given value onto the stack as a variable.
void(InlineCalculator::* calcOp)()
Defines an InlineCalculator function that takes no arguments.
virtual void add(const QString &key, QVector< double > &values)
Add a parameter to the variable pool.
void(Calculator::* calcOp)()
Defines a Calculator function that takes no arguments.
void logicalOr()
Pops the top two vectors off the current stack and performs a logical or on each pair.
QString m_name
Name of function.
void dispatch()
Calls the function corresponding to this object using its stored InlineCalculator, InlineCalculator operator, and arguments.
This is a simple class to model a Calculator Variable Pool.
virtual ~FxBinder()
Destroys the FxBinder object.
FxBinder(const QString &name)
Constructs a function binder given a name.
void degrees()
Pops the top vector off the current stack and converts from radians to degrees.
int size() const
Accesses the number of functions, operators, variables, and scalars to be executed.
void logicalAnd()
Pops the top two vectors off the current stack and performs a logical and on each pair...
InlineCalculator * m_calc
The Calculator used to evaluate this function.
virtual ~InlineCalculator()
Destroys the InlineCalculator object.
Provides a calculator for inline equations.
virtual bool exists(const QString &variable) const
Returns true so the real error can be reported.
virtual bool orphanTokenHandler(const QString &token)
Default token handler if it is undefined during parsing/compilation.
FxPoolType m_fxPool
The map between function names and equation lists.
FxBinder * FxTypePtr
Defintion for a FxTypePtr, a pointer to a function binder (FxBinder)
bool isScalar(const QString &scalar)
Determines whether the given string contains a scalar value (i.e.
InlineVoidFx(const QString &name, calcOp function, InlineCalculator *calculator)
Constructs an InlineVoid function from the given name, InlineCalculator operator, and InlineCalculato...
InlineCalculator * m_calc
The InlineCalculator used to evaluate this function.
virtual ~InlineVoidFx()
Destroys the InlineVoidFx object.
QVector< double > evaluate()
Evaluate compiled equation with existing variable pool.
bool compile(const QString &equation)
Compiles the given equation for evaluation.
QVector< FxTypePtr > FxEqList
Definition for a FxEqList, a vector of function type pointers.
QMap< QString, FxTypePtr > FxPoolType
Definition for a FxPoolType, a map between a string and function type pointer.
double floatModulusOperator(double a, double b)
Determines the remainder of the quotient a/b whose sign is the same as that of a. ...
QString equation() const
Accesses the string representation of the current equation, in postfix format.
QString name() const
The name assigned to this function binder.
virtual QString toPostfix(const QString &equation) const
Converts the given string from infix to postfix format.
InlineCalculator * m_calc
The InlineCalculator used to evaluate this function.
bool isVariable(const QString &str)
Determines whether the given string is a variable.
void popVariables()
Removes the last variable pool in the current variable pool list.
void(InlineCalculator::* calcOp)(const QVariant &arg)
Defines an InlineCalculator function that takes arguments.
This is the parent class to the various function classes.
FxEqList m_functions
The list of pointers to function equations for the calculator.
virtual ~ParameterFx()
Destroys the ParameterFx object.
This class is used to bind function names with corresponding Calculator functions that do not take pa...
calcOp m_func
The InlineCalculator operator that takes parameters.
void destruct()
Discard of all the function pool and class resources.
void operator()()
Executes the function.
void initialize()
Adds the recognized functions to the function pool.
calcOp m_func
The Calculator operator that takes no parameters.
void pushVariables(CalculatorVariablePool *variablePool)
Push the given variable pool onto the current variable pool list.
void pi()
Pushes the PI constant onto the current stack.
void radians()
Pops the top vector off the current stack and converts from degrees to radians.
FxTypePtr find(const QString &fxname)
Gets a pointer to the function from the current pool that corresponds to the given function name...
ParameterFx(const QString &name, calcOp function, InlineCalculator *calculator)
Constructs a Parameter function from the given name (containing the appropriate parameters), InlineCalculator operator, and InlineCalculator.
calcOp m_func
The InlineCalculator operator that takes no parameters.
This class is used to bind function names with corresponding InlineCalculator functions that do not t...
virtual QVariant args()
Accesses the arguments for this function.
virtual ~VoidFx()
Destroys the VoidFx object.
void execute()
Executes the function.
void dispatch()
Calls the function corresponding to this object using its stored Calculator and Calculator operator...
VoidFx(const QString &name, calcOp function, InlineCalculator *calculator)
Constructs a Void function from the given name, Calculator operator, and Calculator.
Namespace for ISIS/Bullet specific routines.
InlineCalculator()
Constructs an InlineCalculator object by initializing the operator lookup list.
QString m_equation
The equation to be evaluated.
void eConstant()
Pushes the Euler constant (e) onto the current stack.
virtual void dispatch()=0
This method defines how to execute this function.
FxTypePtr addFunction(FxTypePtr function)
Adds a function to the function pool.
~CalculatorVariablePool()
Destroys the CalculatorVariablePool object.
void scalar(const QVariant &scalar)
Pushes the given value onto the stack as a scalar.
void dispatch()
Calls the function corresponding to this object using its stored InlineCalculator and InlineCalculato...
This class is used to bind function names with corresponding Calculator functions that take a paramet...
CalculatorVariablePool * variables()
Accesses the last variable pool in the current pool list.