Isis 3 Programmer Reference
|
Provides a calculator for inline equations. More...
#include <InlineCalculator.h>
Public Member Functions | |
InlineCalculator () | |
Constructs an InlineCalculator object by initializing the operator lookup list. More... | |
InlineCalculator (const QString &equation) | |
Constructs an InlineCalculator object by initializing the operator lookup list and compiles the given equation to prepare for evaluation. More... | |
virtual | ~InlineCalculator () |
Destroys the InlineCalculator object. More... | |
int | size () const |
Accesses the number of functions, operators, variables, and scalars to be executed. More... | |
QString | equation () const |
Accesses the string representation of the current equation, in postfix format. More... | |
bool | compile (const QString &equation) |
Compiles the given equation for evaluation. More... | |
QVector< double > | evaluate (CalculatorVariablePool *variablePool) |
Evaluate with a variable pool. More... | |
QVector< double > | evaluate () |
Evaluate compiled equation with existing variable pool. More... | |
void | Negative () |
Pops an element, negates it, then pushes the result. More... | |
void | Multiply () |
Pops two elements, multiplies them, then pushes the product on the stack. More... | |
void | Add () |
Pops two elements, adds them, then pushes the sum on the stack. More... | |
void | Subtract () |
Pops two elements, subtracts them, then pushes the difference on the stack. More... | |
void | Divide () |
Pops two, divides them, then pushes the quotient on the stack. More... | |
void | Modulus () |
Pops two elements, mods them, then pushes the result on the stack. More... | |
void | Exponent () |
Pops two elements, computes the power then pushes the result on the stack The exponent has to be a scalar. More... | |
void | SquareRoot () |
Pop an element, compute its square root, then push the root on the stack. More... | |
void | AbsoluteValue () |
Pop an element, compute its absolute value, then push the result on the stack. More... | |
void | Log () |
Pop an element, compute its log, then push the result on the stack. More... | |
void | Log10 () |
Pop an element, compute its base 10 log, then push the result on the stack. More... | |
void | LeftShift () |
Pop the top element, then perform a left shift with zero fill. More... | |
void | RightShift () |
Pop the top element, then perform a right shift with zero fill. More... | |
void | MinimumPixel () |
Pop two elements, then push the minimum on a pixel by pixel basis back on the stack. More... | |
void | MaximumPixel () |
Pop two elements, then push the maximum on a pixel by pixel basis back on the stack. More... | |
void | MinimumLine () |
Pop one element, then push the minimum on the stack. More... | |
void | MaximumLine () |
Pop one element, then push the maximum on the stack. More... | |
void | Minimum2 () |
Not implemented in Calculator.cpp. More... | |
void | Maximum2 () |
Not implemented in Calculator.cpp. More... | |
void | GreaterThan () |
Pop two elements off the stack and compare them to see where one is greater than the other, then push the results on the stack. More... | |
void | LessThan () |
Pop two elements off the stack and compare them to see where one is less than the other, then push the results on the stack. More... | |
void | Equal () |
Pop two elements off the stack and compare them to see where one is equal to the other, then push the results on the stack. More... | |
void | LessThanOrEqual () |
Pop two elements off the stack and compare them to see where one is less than or equal to the other, then push the results on the stack. More... | |
void | GreaterThanOrEqual () |
Pop two elements off the stack and compare them to see where one is greater than or equal to the other, then push the results on the stack. More... | |
void | NotEqual () |
Pop two elements off the stack and compare them to see where one is not equal to the other, then push the results on the stack. More... | |
void | And () |
Pop two elements, AND them, then push the result on the stack. More... | |
void | Or () |
Pop two elements, OR them, then push the result on the stack. More... | |
void | Sine () |
Pops one element and push the sine. More... | |
void | Cosine () |
Pops one element and push the cosine. More... | |
void | Tangent () |
Pops one element and push the tangent. More... | |
void | Secant () |
Pops one element and push the secant. More... | |
void | Cosecant () |
Pops one element and push the cosecant. More... | |
void | Cotangent () |
Pops one element and push the cotangent. More... | |
void | Arcsine () |
Pops one element and push the arcsine. More... | |
void | Arccosine () |
Pops one element and push the arccosine. More... | |
void | Arctangent () |
Pops one element and push the arctangent. More... | |
void | Arctangent2 () |
Pops two elements and push the arctangent. More... | |
void | SineH () |
Pops one element and push the hyperbolic sine. More... | |
void | CosineH () |
Pops one element and push the hyperbolic cosine. More... | |
void | TangentH () |
Pops one element and push the hyperbolic tangent. More... | |
void | ArcsineH () |
Pops one element and push the inverse hyperbolic sine. More... | |
void | ArccosineH () |
Pops one element and push the inverse hyperbolic cosine. More... | |
void | ArctangentH () |
Pops one element and push the inverse hyperbolic tangent. More... | |
void | Push (double scalar) |
Push a scalar onto the stack. More... | |
void | Push (Buffer &buff) |
Push a buffer onto the stack. More... | |
void | Push (QVector< double > &vect) |
Push a vector onto the stack. More... | |
QVector< double > | Pop (bool keepSpecials=false) |
Pop an element off the stack. More... | |
void | PrintTop () |
Print the vector at the top of the stack. More... | |
bool | Empty () |
Check if the stack is empty. More... | |
virtual void | Clear () |
Clear out the stack. More... | |
Protected Types | |
typedef FxBinder * | FxTypePtr |
Defintion for a FxTypePtr, a pointer to a function binder (FxBinder) More... | |
Protected Member Functions | |
void | scalar (const QVariant &scalar) |
Pushes the given value onto the stack as a scalar. More... | |
void | variable (const QVariant &variable) |
Pushes the given value onto the stack as a variable. More... | |
void | floatModulus () |
Pops the top two vectors off the current stack and performs the floatModulusOperator() on the corresponding components of these vectors. More... | |
void | radians () |
Pops the top vector off the current stack and converts from degrees to radians. More... | |
void | degrees () |
Pops the top vector off the current stack and converts from radians to degrees. More... | |
void | logicalOr () |
Pops the top two vectors off the current stack and performs a logical or on each pair. More... | |
void | logicalAnd () |
Pops the top two vectors off the current stack and performs a logical and on each pair. More... | |
void | pi () |
Pushes the PI constant onto the current stack. More... | |
void | eConstant () |
Pushes the Euler constant (e) onto the current stack. More... | |
virtual QString | toPostfix (const QString &equation) const |
Converts the given string from infix to postfix format. More... | |
bool | isScalar (const QString &scalar) |
Determines whether the given string contains a scalar value (i.e. More... | |
bool | isVariable (const QString &str) |
Determines whether the given string is a variable. More... | |
bool | fxExists (const QString &fxname) const |
Determines whether the given function name exists in the current function pool. More... | |
FxTypePtr | addFunction (FxTypePtr function) |
Adds a function to the function pool. More... | |
virtual bool | orphanTokenHandler (const QString &token) |
Default token handler if it is undefined during parsing/compilation. More... | |
void | PerformOperation (QVector< double > &results, QVector< double >::iterator arg1Start, QVector< double >::iterator arg1End, double operation(double)) |
Performs the mathematical operations on each argument. More... | |
void | PerformOperation (QVector< double > &results, QVector< double >::iterator arg1Start, QVector< double >::iterator arg1End, QVector< double >::iterator arg2Start, QVector< double >::iterator arg2End, double operation(double, double)) |
Performs the mathematical operation on each pair of arguments, or a set of agruments against a single argument. More... | |
int | StackSize () |
Returns the current stack size. More... | |
Private Types | |
typedef QVector< FxTypePtr > | FxEqList |
Definition for a FxEqList, a vector of function type pointers. More... | |
typedef QMap< QString, FxTypePtr > | FxPoolType |
Definition for a FxPoolType, a map between a string and function type pointer. More... | |
Private Member Functions | |
void | pushVariables (CalculatorVariablePool *variablePool) |
Push the given variable pool onto the current variable pool list. More... | |
CalculatorVariablePool * | variables () |
Accesses the last variable pool in the current pool list. More... | |
void | popVariables () |
Removes the last variable pool in the current variable pool list. More... | |
FxTypePtr | find (const QString &fxname) |
Gets a pointer to the function from the current pool that corresponds to the given function name. More... | |
void | initialize () |
Adds the recognized functions to the function pool. More... | |
void | destruct () |
Discard of all the function pool and class resources. More... | |
Private Attributes | |
FxEqList | m_functions |
The list of pointers to function equations for the calculator. More... | |
FxPoolType | m_fxPool |
The map between function names and equation lists. More... | |
QString | m_equation |
The equation to be evaluated. More... | |
QList< CalculatorVariablePool * > | m_variablePoolList |
The list of variable pool pointers. More... | |
QStack< QVector< double > > * | p_valStack |
The current stack of arguments. More... | |
Provides a calculator for inline equations.
A calculator with the ability to parse infix equations with embedded variables and scalars, known as an inline equation.
Definition at line 49 of file InlineCalculator.h.
|
private |
Definition for a FxEqList, a vector of function type pointers.
Definition at line 94 of file InlineCalculator.h.
|
private |
Definition for a FxPoolType, a map between a string and function type pointer.
Definition at line 96 of file InlineCalculator.h.
|
protected |
Defintion for a FxTypePtr, a pointer to a function binder (FxBinder)
Definition at line 67 of file InlineCalculator.h.
Isis::InlineCalculator::InlineCalculator | ( | ) |
Constructs an InlineCalculator object by initializing the operator lookup list.
Definition at line 41 of file InlineCalculator.cpp.
References initialize().
Isis::InlineCalculator::InlineCalculator | ( | const QString & | equation | ) |
Constructs an InlineCalculator object by initializing the operator lookup list and compiles the given equation to prepare for evaluation.
equation | A string representing an equation in infix format. |
Definition at line 52 of file InlineCalculator.cpp.
References compile(), equation(), and initialize().
|
virtual |
Destroys the InlineCalculator object.
Definition at line 61 of file InlineCalculator.cpp.
References destruct().
|
inherited |
Pop an element, compute its absolute value, then push the result on the stack.
Definition at line 407 of file Calculator.cpp.
Referenced by initialize().
|
inherited |
Pops two elements, adds them, then pushes the sum on the stack.
Definition at line 330 of file Calculator.cpp.
References Isis::AddOperator().
Referenced by initialize().
|
protected |
Adds a function to the function pool.
Once in the pool, functions cannot be overwritten. This method will throw an exception if we attempt to add a function with the same name as one already in the pool.
function | The function type pointer to be added to the pool |
IException::Programmer | "Function operator exists! Cannot replace existing functions in the pool" |
Definition at line 478 of file InlineCalculator.cpp.
References find(), m_fxPool, and Isis::IException::Programmer.
Referenced by compile(), and initialize().
|
inherited |
Pop two elements, AND them, then push the result on the stack.
Definition at line 679 of file Calculator.cpp.
References Isis::BitwiseAndOperator().
Referenced by initialize().
|
inherited |
Pops one element and push the arccosine.
Definition at line 777 of file Calculator.cpp.
Referenced by initialize().
|
inherited |
Pops one element and push the inverse hyperbolic cosine.
Definition at line 807 of file Calculator.cpp.
|
inherited |
Pops one element and push the arcsine.
Definition at line 767 of file Calculator.cpp.
Referenced by initialize().
|
inherited |
Pops one element and push the inverse hyperbolic sine.
Definition at line 797 of file Calculator.cpp.
|
inherited |
Pops one element and push the arctangent.
Definition at line 787 of file Calculator.cpp.
Referenced by initialize().
|
inherited |
Pops two elements and push the arctangent.
Definition at line 827 of file Calculator.cpp.
Referenced by initialize().
|
inherited |
Pops one element and push the inverse hyperbolic tangent.
Definition at line 817 of file Calculator.cpp.
|
virtualinherited |
Clear out the stack.
Reimplemented in Isis::CubeCalculator.
Definition at line 1021 of file Calculator.cpp.
Referenced by compile(), and popVariables().
bool Isis::InlineCalculator::compile | ( | const QString & | equation | ) |
Compiles the given equation for evaluation.
This method first converts the given infix equation into a postfix equation for evaluation and saves the postfix formatted string. It then ensures that the equation is ready for evaluation by parsing and verifying that all tokens are recognized.
equation | A string representing an equation to be compiled, in infix format. |
IException::User | "Error parsing inline equation. Equation element invalid - token not recognized." |
Definition at line 106 of file InlineCalculator.cpp.
References addFunction(), Isis::IException::append(), Isis::Calculator::Clear(), equation(), find(), isScalar(), isVariable(), m_equation, m_functions, orphanTokenHandler(), scalar(), toPostfix(), Isis::IException::User, and variable().
Referenced by InlineCalculator().
|
inherited |
Pops one element and push the cosecant.
Definition at line 737 of file Calculator.cpp.
References Isis::CosecantOperator().
Referenced by initialize().
|
inherited |
Pops one element and push the cosine.
Definition at line 717 of file Calculator.cpp.
Referenced by initialize().
|
inherited |
Pops one element and push the hyperbolic cosine.
Definition at line 850 of file Calculator.cpp.
|
inherited |
Pops one element and push the cotangent.
Definition at line 757 of file Calculator.cpp.
References Isis::CotangentOperator().
Referenced by initialize().
|
protected |
Pops the top vector off the current stack and converts from radians to degrees.
The result is then pushed back onto the stack.
Definition at line 375 of file InlineCalculator.cpp.
References Isis::Calculator::Pop(), Isis::Calculator::Push(), and radians().
Referenced by initialize().
|
private |
Discard of all the function pool and class resources.
Definition at line 645 of file InlineCalculator.cpp.
References m_functions, and m_fxPool.
Referenced by ~InlineCalculator().
|
inherited |
Pops two, divides them, then pushes the quotient on the stack.
Definition at line 354 of file Calculator.cpp.
References Isis::DivideOperator().
Referenced by initialize().
|
protected |
Pushes the Euler constant (e) onto the current stack.
Definition at line 446 of file InlineCalculator.cpp.
References Isis::E, and Isis::Calculator::Push().
Referenced by initialize().
|
inherited |
Check if the stack is empty.
Definition at line 1013 of file Calculator.cpp.
|
inherited |
Pop two elements off the stack and compare them to see where one is equal to the other, then push the results on the stack.
Definition at line 617 of file Calculator.cpp.
References Isis::EqualOperator().
Referenced by initialize().
QString Isis::InlineCalculator::equation | ( | ) | const |
Accesses the string representation of the current equation, in postfix format.
This equation is most commonly entered using infix, but it is reformatted to postfix when set.
Definition at line 85 of file InlineCalculator.cpp.
References m_equation.
Referenced by compile(), InlineCalculator(), and toPostfix().
QVector< double > Isis::InlineCalculator::evaluate | ( | ) |
Evaluate compiled equation with existing variable pool.
This executes the operands to provide the result of the equation. The currently stored variable pool, refernenced via variables(), is used to provide the variables utilized in the equation.
This is reentrant and as long as the variable pool is unchanged between succesive calls, they all should return the same result.
IException::Unknown | "Too many operands in the equation." |
Definition at line 218 of file InlineCalculator.cpp.
References m_equation, m_functions, Isis::Calculator::Pop(), Isis::Calculator::StackSize(), and Isis::IException::Unknown.
Referenced by evaluate().
QVector< double > Isis::InlineCalculator::evaluate | ( | CalculatorVariablePool * | variablePool | ) |
Evaluate with a variable pool.
This method accepts a varible resource pool, stores it off for evaluation and then executes the operands to provide the result of the equation. It stores the variable pool for subsequent runs that should yield identical results when operator() is invoked.
variablePool | Keyword resource for variables substituted at run time of the equation |
IException::Programmer | "Calculation with variable pool failed." |
Definition at line 187 of file InlineCalculator.cpp.
References evaluate(), popVariables(), Isis::IException::Programmer, and pushVariables().
|
inherited |
Pops two elements, computes the power then pushes the result on the stack The exponent has to be a scalar.
Isis::iException::Math |
Definition at line 382 of file Calculator.cpp.
Referenced by initialize().
|
private |
Gets a pointer to the function from the current pool that corresponds to the given function name.
This method returns null if no function with the given name is found.
fxname | A string containing the name of the function to be found. |
Definition at line 568 of file InlineCalculator.cpp.
References m_fxPool.
Referenced by addFunction(), and compile().
|
protected |
Pops the top two vectors off the current stack and performs the floatModulusOperator() on the corresponding components of these vectors.
The result is then pushed back onto the stack.
Definition at line 345 of file InlineCalculator.cpp.
References Isis::floatModulusOperator(), Isis::Calculator::PerformOperation(), Isis::Calculator::Pop(), and Isis::Calculator::Push().
Referenced by initialize().
|
protected |
Determines whether the given function name exists in the current function pool.
fxname | A string containing the name of the function we are looking for in the pool. |
Definition at line 461 of file InlineCalculator.cpp.
References m_fxPool.
|
inherited |
Pop two elements off the stack and compare them to see where one is greater than the other, then push the results on the stack.
Definition at line 587 of file Calculator.cpp.
References Isis::GreaterThanOperator().
Referenced by initialize().
|
inherited |
Pop two elements off the stack and compare them to see where one is greater than or equal to the other, then push the results on the stack.
Definition at line 632 of file Calculator.cpp.
References Isis::GreaterThanOrEqualOperator().
Referenced by initialize().
|
private |
Adds the recognized functions to the function pool.
Definition at line 578 of file InlineCalculator.cpp.
References Isis::Calculator::AbsoluteValue(), Isis::Calculator::Add(), addFunction(), Isis::Calculator::And(), Isis::Calculator::Arccosine(), Isis::Calculator::Arcsine(), Isis::Calculator::Arctangent(), Isis::Calculator::Arctangent2(), Isis::Calculator::Cosecant(), Isis::Calculator::Cosine(), Isis::Calculator::Cotangent(), degrees(), Isis::Calculator::Divide(), eConstant(), Isis::Calculator::Equal(), Isis::Calculator::Exponent(), floatModulus(), Isis::Calculator::GreaterThan(), Isis::Calculator::GreaterThanOrEqual(), Isis::Calculator::LeftShift(), Isis::Calculator::LessThan(), Isis::Calculator::LessThanOrEqual(), Isis::Calculator::Log(), Isis::Calculator::Log10(), logicalAnd(), logicalOr(), Isis::Calculator::MaximumPixel(), Isis::Calculator::MinimumPixel(), Isis::Calculator::Modulus(), Isis::Calculator::Multiply(), Isis::Calculator::Negative(), Isis::Calculator::NotEqual(), Isis::Calculator::Or(), pi(), radians(), Isis::Calculator::RightShift(), Isis::Calculator::Secant(), Isis::Calculator::Sine(), Isis::Calculator::SquareRoot(), Isis::Calculator::Subtract(), and Isis::Calculator::Tangent().
Referenced by InlineCalculator().
|
protected |
Determines whether the given string contains a scalar value (i.e.
can be converted to a double precision value).
scalar | A string to be checked. |
Definition at line 255 of file InlineCalculator.cpp.
References scalar(), and Isis::toDouble().
Referenced by compile(), and isVariable().
|
protected |
Determines whether the given string is a variable.
If the string is empty or scalar, this method returns false. Otherwise, it is assumed to be a variable and this method returns true.
str | A string to be checked. |
Definition at line 275 of file InlineCalculator.cpp.
References isScalar().
Referenced by compile().
|
inherited |
Pop the top element, then perform a left shift with zero fill.
Isis::iException::Math |
Definition at line 441 of file Calculator.cpp.
Referenced by initialize().
|
inherited |
Pop two elements off the stack and compare them to see where one is less than the other, then push the results on the stack.
Definition at line 602 of file Calculator.cpp.
References Isis::LessThanOperator().
Referenced by initialize().
|
inherited |
Pop two elements off the stack and compare them to see where one is less than or equal to the other, then push the results on the stack.
Definition at line 647 of file Calculator.cpp.
References Isis::LessThanOrEqualOperator().
Referenced by initialize().
|
inherited |
Pop an element, compute its log, then push the result on the stack.
Isis::iException::Math |
Definition at line 419 of file Calculator.cpp.
Referenced by initialize().
|
inherited |
Pop an element, compute its base 10 log, then push the result on the stack.
Definition at line 429 of file Calculator.cpp.
Referenced by initialize().
|
protected |
Pops the top two vectors off the current stack and performs a logical and on each pair.
IException::Unknown | "Failed performing logical and operation, " "input vectors are of differnet lengths." |
Definition at line 417 of file InlineCalculator.cpp.
References Isis::Calculator::Pop(), Isis::Calculator::Push(), and Isis::IException::Unknown.
Referenced by initialize().
|
protected |
Pops the top two vectors off the current stack and performs a logical or on each pair.
IException::Unknown | "Failed performing logical or operation, " "input vectors are of differnet lengths." |
Definition at line 393 of file InlineCalculator.cpp.
References Isis::Calculator::Pop(), Isis::Calculator::Push(), and Isis::IException::Unknown.
Referenced by initialize().
|
inherited |
Not implemented in Calculator.cpp.
|
inherited |
Pop one element, then push the maximum on the stack.
Definition at line 537 of file Calculator.cpp.
References Isis::IsSpecial().
|
inherited |
Pop two elements, then push the maximum on a pixel by pixel basis back on the stack.
Definition at line 572 of file Calculator.cpp.
References Isis::MaximumOperator().
Referenced by initialize().
|
inherited |
Not implemented in Calculator.cpp.
|
inherited |
Pop one element, then push the minimum on the stack.
Definition at line 518 of file Calculator.cpp.
References Isis::IsSpecial().
|
inherited |
Pop two elements, then push the minimum on a pixel by pixel basis back on the stack.
Definition at line 557 of file Calculator.cpp.
References Isis::MinimumOperator().
Referenced by initialize().
|
inherited |
Pops two elements, mods them, then pushes the result on the stack.
Definition at line 366 of file Calculator.cpp.
References Isis::ModulusOperator().
Referenced by initialize().
|
inherited |
Pops two elements, multiplies them, then pushes the product on the stack.
Definition at line 317 of file Calculator.cpp.
References Isis::MultiplyOperator().
Referenced by initialize().
|
inherited |
Pops an element, negates it, then pushes the result.
Definition at line 307 of file Calculator.cpp.
References Isis::NegateOperator().
Referenced by initialize().
|
inherited |
Pop two elements off the stack and compare them to see where one is not equal to the other, then push the results on the stack.
Definition at line 662 of file Calculator.cpp.
References Isis::NotEqualOperator().
Referenced by initialize().
|
inherited |
Pop two elements, OR them, then push the result on the stack.
Definition at line 693 of file Calculator.cpp.
References Isis::BitwiseOrOperator().
Referenced by initialize().
|
protectedvirtual |
Default token handler if it is undefined during parsing/compilation.
This method provides the default handling of an undefined token found while compiling an equation. Users may code their own handler that, for example, could provide additional further functionality.
If the virtualized reimplementation is unable to process it, it can throw an exception which will be caught, recorded and compiling will continue until all tokens are processed. If the optional implementation cannot handle it, return false from your version and an exception will be thrown for you.
token | Character representation of the token. This could be an undefined constant, function or soemthing else that occurs in the equation that is not resolved when this is called. |
Definition at line 512 of file InlineCalculator.cpp.
Referenced by compile().
|
protectedinherited |
Performs the mathematical operations on each argument.
results | [out] The results of the performed operation |
arg1Start | The first argument to have the operation done on |
arg1End | One argument beyond the final argument to have the operation done upon |
operation | The operation to be done on all arguments |
Definition at line 1037 of file Calculator.cpp.
Referenced by floatModulus().
|
protectedinherited |
Performs the mathematical operation on each pair of arguments, or a set of agruments against a single argument.
results | [out] The results of the performed operation |
arg1Start | The first of the primary argument to have the operation done on |
arg1End | One arguement beyond the final primary argument to have the operation done upon |
arg2Start | The first of the secondaty argument to have the operation done on |
arg2End | One arguement beyond the final secondary argument to have the operation done upon |
operation | The operation to be done on all pairs of arguments |
Definition at line 1066 of file Calculator.cpp.
|
protected |
Pushes the PI constant onto the current stack.
Definition at line 437 of file InlineCalculator.cpp.
References Isis::Calculator::Push().
Referenced by initialize().
|
inherited |
Pop an element off the stack.
keepSpecials | If true, special pixels will be preserved; otherwise, they will be mapped to double values |
Definition at line 949 of file Calculator.cpp.
References Isis::Hrs, Isis::Lrs, and Isis::Null.
Referenced by degrees(), evaluate(), floatModulus(), logicalAnd(), logicalOr(), and radians().
|
private |
Removes the last variable pool in the current variable pool list.
Definition at line 549 of file InlineCalculator.cpp.
References Isis::Calculator::Clear(), and m_variablePoolList.
Referenced by evaluate().
|
inherited |
Print the vector at the top of the stack.
Definition at line 989 of file Calculator.cpp.
|
inherited |
Push a buffer onto the stack.
buff | The buffer that will be pushed on the stack |
Definition at line 905 of file Calculator.cpp.
References Isis::IsHisPixel(), Isis::IsHrsPixel(), Isis::IsLisPixel(), Isis::IsLrsPixel(), Isis::IsNullPixel(), Isis::IsSpecial(), and Isis::Buffer::size().
|
inherited |
Push a scalar onto the stack.
scalar | The scalar that will be pushed on the stack |
Definition at line 893 of file Calculator.cpp.
Referenced by degrees(), eConstant(), floatModulus(), logicalAnd(), logicalOr(), pi(), radians(), scalar(), and variable().
|
inherited |
Push a vector onto the stack.
vect | The vector that will be pushed on the stack |
Definition at line 883 of file Calculator.cpp.
|
private |
Push the given variable pool onto the current variable pool list.
variablePool | A pointer to the CalculatorVariablePool object to be pushed onto the current list. |
Definition at line 523 of file InlineCalculator.cpp.
References m_variablePoolList.
Referenced by evaluate().
|
protected |
Pops the top vector off the current stack and converts from degrees to radians.
The result is then pushed back onto the stack.
Definition at line 360 of file InlineCalculator.cpp.
References Isis::Calculator::Pop(), and Isis::Calculator::Push().
Referenced by degrees(), and initialize().
|
inherited |
Pop the top element, then perform a right shift with zero fill.
Isis::iException::Math |
Definition at line 480 of file Calculator.cpp.
Referenced by initialize().
|
protected |
Pushes the given value onto the stack as a scalar.
This method adds the given variant value to the stack as a scalar.
scalar | QVariant containing the scalar. Usually a QString. |
Definition at line 294 of file InlineCalculator.cpp.
References Isis::Calculator::Push(), and Isis::toDouble().
Referenced by compile(), and isScalar().
|
inherited |
Pops one element and push the secant.
Definition at line 747 of file Calculator.cpp.
References Isis::SecantOperator().
Referenced by initialize().
|
inherited |
Pops one element and push the sine.
Definition at line 707 of file Calculator.cpp.
Referenced by initialize().
|
inherited |
Pops one element and push the hyperbolic sine.
Definition at line 840 of file Calculator.cpp.
int Isis::InlineCalculator::size | ( | ) | const |
Accesses the number of functions, operators, variables, and scalars to be executed.
Definition at line 73 of file InlineCalculator.cpp.
References m_functions.
|
inherited |
Pop an element, compute its square root, then push the root on the stack.
Isis::iException::Math |
Definition at line 397 of file Calculator.cpp.
Referenced by initialize().
|
protectedinherited |
Returns the current stack size.
Get the current stack size.
Definition at line 874 of file Calculator.cpp.
Referenced by evaluate().
|
inherited |
Pops two elements, subtracts them, then pushes the difference on the stack.
Definition at line 342 of file Calculator.cpp.
References Isis::SubtractOperator().
Referenced by initialize().
|
inherited |
Pops one element and push the tangent.
Definition at line 727 of file Calculator.cpp.
Referenced by initialize().
|
inherited |
Pops one element and push the hyperbolic tangent.
Definition at line 860 of file Calculator.cpp.
|
protectedvirtual |
Converts the given string from infix to postfix format.
equation | A string representing an infix equation. |
Definition at line 241 of file InlineCalculator.cpp.
References Isis::InfixToPostfix::convert(), and equation().
Referenced by compile().
|
protected |
Pushes the given value onto the stack as a variable.
This method adds the given variant value to the stack as a variable.
variable | QVariant containing the name of the variable. Usually a QString. |
IException::User | "Could not find variable in variable pool." |
Definition at line 309 of file InlineCalculator.cpp.
References Isis::CalculatorVariablePool::exists(), Isis::Calculator::Push(), Isis::IException::User, Isis::CalculatorVariablePool::value(), and variables().
Referenced by compile().
|
private |
Accesses the last variable pool in the current pool list.
If the list is empty, an error will be thrown.
IException::Programmer | "Request for nonexistent variable pool.", |
Definition at line 536 of file InlineCalculator.cpp.
References m_variablePoolList, and Isis::IException::Programmer.
Referenced by variable().
|
private |
The equation to be evaluated.
Definition at line 108 of file InlineCalculator.h.
Referenced by compile(), equation(), and evaluate().
|
private |
The list of pointers to function equations for the calculator.
Definition at line 106 of file InlineCalculator.h.
Referenced by compile(), destruct(), evaluate(), and size().
|
private |
The map between function names and equation lists.
Definition at line 107 of file InlineCalculator.h.
Referenced by addFunction(), destruct(), find(), and fxExists().
|
private |
The list of variable pool pointers.
Definition at line 109 of file InlineCalculator.h.
Referenced by popVariables(), pushVariables(), and variables().
The current stack of arguments.
Definition at line 135 of file Calculator.h.