1#ifndef InlineCalculator_h
2#define InlineCalculator_h
22 class CalculatorVariablePool;
31 #define CALL_MEMBER_FN(object, ptrToMember) ((object).*(ptrToMember))
87 bool fxExists(
const QString &fxname)
const;
109 QList<CalculatorVariablePool *> m_variablePoolList;
126 virtual bool exists(
const QString &variable)
const;
127 virtual QVector<double>
value(
const QString &variable,
128 const int &index = 0)
const;
129 virtual void add(
const QString &key, QVector<double> &values);
145 QString
name()
const;
154 virtual QVariant
args();
Calculator for arrays.
Definition Calculator.h:55
This is a simple class to model a Calculator Variable Pool.
Definition InlineCalculator.h:121
CalculatorVariablePool()
Constructs a CalculatorVariablePool object.
Definition InlineCalculator.cpp:659
virtual void add(const QString &key, QVector< double > &values)
Add a parameter to the variable pool.
Definition InlineCalculator.cpp:711
virtual QVector< double > value(const QString &variable, const int &index=0) const
Return vector of doubles for Calculator functions.
Definition InlineCalculator.cpp:691
virtual bool exists(const QString &variable) const
Returns true so the real error can be reported.
Definition InlineCalculator.cpp:676
~CalculatorVariablePool()
Destroys the CalculatorVariablePool object.
Definition InlineCalculator.cpp:666
This is the parent class to the various function classes.
Definition InlineCalculator.h:140
void operator()()
Executes the function.
Definition InlineCalculator.cpp:757
virtual ~FxBinder()
Destroys the FxBinder object.
Definition InlineCalculator.cpp:730
void execute()
Executes the function.
Definition InlineCalculator.cpp:748
FxBinder(const QString &name)
Constructs a function binder given a name.
Definition InlineCalculator.cpp:723
virtual void dispatch()=0
This method defines how to execute this function.
virtual QVariant args()
Accesses the arguments for this function.
Definition InlineCalculator.cpp:768
QString name() const
The name assigned to this function binder.
Definition InlineCalculator.cpp:739
Provides a calculator for inline equations.
Definition InlineCalculator.h:49
virtual QString toPostfix(const QString &equation) const
Converts the given string from infix to postfix format.
Definition InlineCalculator.cpp:241
void degrees()
Pops the top vector off the current stack and converts from radians to degrees.
Definition InlineCalculator.cpp:375
QVector< double > evaluate()
Evaluate compiled equation with existing variable pool.
Definition InlineCalculator.cpp:218
bool isVariable(const QString &str)
Determines whether the given string is a variable.
Definition InlineCalculator.cpp:275
void logicalOr()
Pops the top two vectors off the current stack and performs a logical or on each pair.
Definition InlineCalculator.cpp:393
void scalar(const QVariant &scalar)
Pushes the given value onto the stack as a scalar.
Definition InlineCalculator.cpp:294
virtual bool orphanTokenHandler(const QString &token)
Default token handler if it is undefined during parsing/compilation.
Definition InlineCalculator.cpp:512
void floatModulus()
Pops the top two vectors off the current stack and performs the floatModulusOperator() on the corresp...
Definition InlineCalculator.cpp:345
void pi()
Pushes the PI constant onto the current stack.
Definition InlineCalculator.cpp:437
void logicalAnd()
Pops the top two vectors off the current stack and performs a logical and on each pair.
Definition InlineCalculator.cpp:417
void eConstant()
Pushes the Euler constant (e) onto the current stack.
Definition InlineCalculator.cpp:446
virtual ~InlineCalculator()
Destroys the InlineCalculator object.
Definition InlineCalculator.cpp:61
void variable(const QVariant &variable)
Pushes the given value onto the stack as a variable.
Definition InlineCalculator.cpp:309
FxBinder * FxTypePtr
Defintion for a FxTypePtr, a pointer to a function binder (FxBinder)
Definition InlineCalculator.h:67
int size() const
Accesses the number of functions, operators, variables, and scalars to be executed.
Definition InlineCalculator.cpp:73
void radians()
Pops the top vector off the current stack and converts from degrees to radians.
Definition InlineCalculator.cpp:360
InlineCalculator()
Constructs an InlineCalculator object by initializing the operator lookup list.
Definition InlineCalculator.cpp:41
bool compile(const QString &equation)
Compiles the given equation for evaluation.
Definition InlineCalculator.cpp:106
bool fxExists(const QString &fxname) const
Determines whether the given function name exists in the current function pool.
Definition InlineCalculator.cpp:461
QString equation() const
Accesses the string representation of the current equation, in postfix format.
Definition InlineCalculator.cpp:85
FxTypePtr addFunction(FxTypePtr function)
Adds a function to the function pool.
Definition InlineCalculator.cpp:478
bool isScalar(const QString &scalar)
Determines whether the given string contains a scalar value (i.e.
Definition InlineCalculator.cpp:255
This class is used to bind function names with corresponding InlineCalculator functions that do not t...
Definition InlineCalculator.h:169
void(InlineCalculator::* calcOp)()
Defines an InlineCalculator function that takes no arguments.
Definition InlineCalculator.h:172
InlineVoidFx(const QString &name, calcOp function, InlineCalculator *calculator)
Constructs an InlineVoid function from the given name, InlineCalculator operator, and InlineCalculato...
Definition InlineCalculator.cpp:781
void dispatch()
Calls the function corresponding to this object using its stored InlineCalculator and InlineCalculato...
Definition InlineCalculator.cpp:799
virtual ~InlineVoidFx()
Destroys the InlineVoidFx object.
Definition InlineCalculator.cpp:791
This class is used to bind function names with corresponding Calculator functions that take a paramet...
Definition InlineCalculator.h:193
virtual ~ParameterFx()
Destroys the ParameterFx object.
Definition InlineCalculator.cpp:825
void dispatch()
Calls the function corresponding to this object using its stored InlineCalculator,...
Definition InlineCalculator.cpp:834
void(InlineCalculator::* calcOp)(const QVariant &arg)
Defines an InlineCalculator function that takes arguments.
Definition InlineCalculator.h:196
ParameterFx(const QString &name, calcOp function, InlineCalculator *calculator)
Constructs a Parameter function from the given name (containing the appropriate parameters),...
Definition InlineCalculator.cpp:815
This class is used to bind function names with corresponding Calculator functions that do not take pa...
Definition InlineCalculator.h:217
void(Calculator::* calcOp)()
Defines a Calculator function that takes no arguments.
Definition InlineCalculator.h:220
virtual ~VoidFx()
Destroys the VoidFx object.
Definition InlineCalculator.cpp:857
void dispatch()
Calls the function corresponding to this object using its stored Calculator and Calculator operator.
Definition InlineCalculator.cpp:865
VoidFx(const QString &name, calcOp function, InlineCalculator *calculator)
Constructs a Void function from the given name, Calculator operator, and Calculator.
Definition InlineCalculator.cpp:847
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16
double floatModulusOperator(double a, double b)
Determines the remainder of the quotient a/b whose sign is the same as that of a.
Definition InlineCalculator.cpp:335