File failed to load: https://isis.astrogeology.usgs.gov/6.0.0/Object/assets/jax/output/NativeMML/config.js
 |
Isis Developer Reference
|
Go to the documentation of this file. 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;
126 virtual bool exists(
const QString &variable)
const;
128 const int &index = 0)
const;
145 QString
name()
const;
154 virtual QVariant
args();
virtual QVariant args()
Accesses the arguments for this function.
Definition: InlineCalculator.cpp:768
void Push(double scalar)
Push a scalar onto the stack.
Definition: Calculator.cpp:893
void Arcsine()
Pops one element and push the arcsine.
Definition: Calculator.cpp:767
void Cosine()
Pops one element and push the cosine.
Definition: Calculator.cpp:717
void Tangent()
Pops one element and push the tangent.
Definition: Calculator.cpp:727
virtual ~FxBinder()
Destroys the FxBinder object.
Definition: InlineCalculator.cpp:730
void Add()
Pops two elements, adds them, then pushes the sum on the stack.
Definition: Calculator.cpp:330
This is free and unencumbered software released into the public domain.
Definition: BoxcarCachingAlgorithm.h:13
void Cosecant()
Pops one element and push the cosecant.
Definition: Calculator.cpp:737
void Or()
Pop two elements, OR them, then push the result on the stack.
Definition: Calculator.cpp:693
FxBinder(const QString &name)
Constructs a function binder given a name.
Definition: InlineCalculator.cpp:723
void(InlineCalculator::* calcOp)(const QVariant &arg)
Defines an InlineCalculator function that takes arguments.
Definition: InlineCalculator.h:196
void Multiply()
Pops two elements, multiplies them, then pushes the product on the stack.
Definition: Calculator.cpp:317
@ Unknown
A type of error that cannot be classified as any of the other error types.
Definition: IException.h:118
void Modulus()
Pops two elements, mods them, then pushes the result on the stack.
Definition: Calculator.cpp:366
void Equal()
Pop two elements off the stack and compare them to see where one is equal to the other,...
Definition: Calculator.cpp:617
QString convert(const QString &infix)
This method converts infix to postfix.
Definition: InfixToPostfix.cpp:139
virtual ~ParameterFx()
Destroys the ParameterFx object.
Definition: InlineCalculator.cpp:825
void(InlineCalculator::* calcOp)()
Defines an InlineCalculator function that takes no arguments.
Definition: InlineCalculator.h:172
Calculator for arrays.
Definition: Calculator.h:55
void(Calculator::* calcOp)()
Defines a Calculator function that takes no arguments.
Definition: InlineCalculator.h:220
void Arctangent()
Pops one element and push the arctangent.
Definition: Calculator.cpp:787
void logicalOr()
Pops the top two vectors off the current stack and performs a logical or on each pair.
Definition: InlineCalculator.cpp:393
virtual ~InlineCalculator()
Destroys the InlineCalculator object.
Definition: InlineCalculator.cpp:61
QString equation() const
Accesses the string representation of the current equation, in postfix format.
Definition: InlineCalculator.cpp:85
void variable(const QVariant &variable)
Pushes the given value onto the stack as a variable.
Definition: InlineCalculator.cpp:309
virtual bool orphanTokenHandler(const QString &token)
Default token handler if it is undefined during parsing/compilation.
Definition: InlineCalculator.cpp:512
void eConstant()
Pushes the Euler constant (e) onto the current stack.
Definition: InlineCalculator.cpp:446
This class is used to bind function names with corresponding Calculator functions that take a paramet...
Definition: InlineCalculator.h:193
FxBinder * FxTypePtr
Defintion for a FxTypePtr, a pointer to a function binder (FxBinder)
Definition: InlineCalculator.h:67
void Sine()
Pops one element and push the sine.
Definition: Calculator.cpp:707
void Divide()
Pops two, divides them, then pushes the quotient on the stack.
Definition: Calculator.cpp:354
ParameterFx(const QString &name, calcOp function, InlineCalculator *calculator)
Constructs a Parameter function from the given name (containing the appropriate parameters),...
Definition: InlineCalculator.cpp:815
~CalculatorVariablePool()
Destroys the CalculatorVariablePool object.
Definition: InlineCalculator.cpp:666
virtual void dispatch()=0
This method defines how to execute this function.
void floatModulus()
Pops the top two vectors off the current stack and performs the floatModulusOperator() on the corresp...
Definition: InlineCalculator.cpp:345
void Subtract()
Pops two elements, subtracts them, then pushes the difference on the stack.
Definition: Calculator.cpp:342
void append(const IException &exceptionSource)
Appends the given exception (and its list of previous exceptions) to this exception's causational exc...
Definition: IException.cpp:409
void radians()
Pops the top vector off the current stack and converts from degrees to radians.
Definition: InlineCalculator.cpp:360
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
virtual ~InlineVoidFx()
Destroys the InlineVoidFx object.
Definition: InlineCalculator.cpp:791
void AbsoluteValue()
Pop an element, compute its absolute value, then push the result on the stack.
Definition: Calculator.cpp:407
QVector< double > evaluate()
Evaluate compiled equation with existing variable pool.
Definition: InlineCalculator.cpp:218
CalculatorVariablePool()
Constructs a CalculatorVariablePool object.
Definition: InlineCalculator.cpp:659
#define _FILEINFO_
Macro for the filename and line number.
Definition: IException.h:24
void dispatch()
Calls the function corresponding to this object using its stored InlineCalculator and InlineCalculato...
Definition: InlineCalculator.cpp:799
A parser for converting equation strings to postfix.
Definition: InlineInfixToPostfix.h:34
void Cotangent()
Pops one element and push the cotangent.
Definition: Calculator.cpp:757
void Log10()
Pop an element, compute its base 10 log, then push the result on the stack.
Definition: Calculator.cpp:429
Provides a calculator for inline equations.
Definition: InlineCalculator.h:49
#define CALL_MEMBER_FN(object, ptrToMember)
Macro for calling member functions.
Definition: InlineCalculator.h:31
int size() const
Accesses the number of functions, operators, variables, and scalars to be executed.
Definition: InlineCalculator.cpp:73
virtual void add(const QString &key, QVector< double > &values)
Add a parameter to the variable pool.
Definition: InlineCalculator.cpp:711
void degrees()
Pops the top vector off the current stack and converts from radians to degrees.
Definition: InlineCalculator.cpp:375
virtual QVector< double > value(const QString &variable, const int &index=0) const
Return vector of doubles for Calculator functions.
Definition: InlineCalculator.cpp:691
void SquareRoot()
Pop an element, compute its square root, then push the root on the stack.
Definition: Calculator.cpp:397
void dispatch()
Calls the function corresponding to this object using its stored Calculator and Calculator operator.
Definition: InlineCalculator.cpp:865
void RightShift()
Pop the top element, then perform a right shift with zero fill.
Definition: Calculator.cpp:480
Isis exception class.
Definition: IException.h:91
bool isVariable(const QString &str)
Determines whether the given string is a variable.
Definition: InlineCalculator.cpp:275
bool fxExists(const QString &fxname) const
Determines whether the given function name exists in the current function pool.
Definition: InlineCalculator.cpp:461
void Arccosine()
Pops one element and push the arccosine.
Definition: Calculator.cpp:777
void LeftShift()
Pop the top element, then perform a left shift with zero fill.
Definition: Calculator.cpp:441
This is a simple class to model a Calculator Variable Pool.
Definition: InlineCalculator.h:121
void GreaterThanOrEqual()
Pop two elements off the stack and compare them to see where one is greater than or equal to the othe...
Definition: Calculator.cpp:632
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 LessThan()
Pop two elements off the stack and compare them to see where one is less than the other,...
Definition: Calculator.cpp:602
double toDouble(const QString &string)
Global function to convert from a string to a double.
Definition: IString.cpp:149
@ Programmer
This error is for when a programmer made an API call that was illegal.
Definition: IException.h:146
Namespace for the standard library.
QVector< double > Pop(bool keepSpecials=false)
Pop an element off the stack.
Definition: Calculator.cpp:949
FxTypePtr addFunction(FxTypePtr function)
Adds a function to the function pool.
Definition: InlineCalculator.cpp:478
void GreaterThan()
Pop two elements off the stack and compare them to see where one is greater than the other,...
Definition: Calculator.cpp:587
This class is used to bind function names with corresponding InlineCalculator functions that do not t...
Definition: InlineCalculator.h:169
void dispatch()
Calls the function corresponding to this object using its stored InlineCalculator,...
Definition: InlineCalculator.cpp:834
void PerformOperation(QVector< double > &results, QVector< double >::iterator arg1Start, QVector< double >::iterator arg1End, double operation(double))
Performs the mathematical operations on each argument.
Definition: Calculator.cpp:1037
void LessThanOrEqual()
Pop two elements off the stack and compare them to see where one is less than or equal to the other,...
Definition: Calculator.cpp:647
virtual bool exists(const QString &variable) const
Returns true so the real error can be reported.
Definition: InlineCalculator.cpp:676
const double E
Sets some basic constants for use in ISIS programming.
Definition: Constants.h:39
bool isScalar(const QString &scalar)
Determines whether the given string contains a scalar value (i.e.
Definition: InlineCalculator.cpp:255
void Arctangent2()
Pops two elements and push the arctangent.
Definition: Calculator.cpp:827
virtual QString toPostfix(const QString &equation) const
Converts the given string from infix to postfix format.
Definition: InlineCalculator.cpp:241
virtual ~VoidFx()
Destroys the VoidFx object.
Definition: InlineCalculator.cpp:857
void execute()
Executes the function.
Definition: InlineCalculator.cpp:748
void operator()()
Executes the function.
Definition: InlineCalculator.cpp:757
void Exponent()
Pops two elements, computes the power then pushes the result on the stack The exponent has to be a sc...
Definition: Calculator.cpp:382
int StackSize()
Returns the current stack size.
Definition: Calculator.cpp:874
virtual void Clear()
Clear out the stack.
Definition: Calculator.cpp:1021
void Log()
Pop an element, compute its log, then push the result on the stack.
Definition: Calculator.cpp:419
void Secant()
Pops one element and push the secant.
Definition: Calculator.cpp:747
This class is used to bind function names with corresponding Calculator functions that do not take pa...
Definition: InlineCalculator.h:217
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
void MaximumPixel()
Pop two elements, then push the maximum on a pixel by pixel basis back on the stack.
Definition: Calculator.cpp:572
QString name() const
The name assigned to this function binder.
Definition: InlineCalculator.cpp:739
VoidFx(const QString &name, calcOp function, InlineCalculator *calculator)
Constructs a Void function from the given name, Calculator operator, and Calculator.
Definition: InlineCalculator.cpp:847
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
This is free and unencumbered software released into the public domain.
Definition: Apollo.h:16
void NotEqual()
Pop two elements off the stack and compare them to see where one is not equal to the other,...
Definition: Calculator.cpp:662
void MinimumPixel()
Pop two elements, then push the minimum on a pixel by pixel basis back on the stack.
Definition: Calculator.cpp:557
@ User
A type of error that could only have occurred due to a mistake on the user's part (e....
Definition: IException.h:126
void Negative()
Pops an element, negates it, then pushes the result.
Definition: Calculator.cpp:307
void scalar(const QVariant &scalar)
Pushes the given value onto the stack as a scalar.
Definition: InlineCalculator.cpp:294
void And()
Pop two elements, AND them, then push the result on the stack.
Definition: Calculator.cpp:679
This is the parent class to the various function classes.
Definition: InlineCalculator.h:140