Package com.singularsys.jep.functions
Class PostfixMathCommand
- java.lang.Object
-
- com.singularsys.jep.functions.PostfixMathCommand
-
- All Implemented Interfaces:
PostfixMathCommandI
,java.io.Serializable
- Direct Known Subclasses:
AbstractInc
,ArrayFunctionBase
,Assign
,BinaryFunction
,BugsTest.StackMessingFunc
,Case
,Clean
,Coeffs
,Compare
,Count
,Diff
,ElementMinMax
,ElementProduct
,ElementSum
,Eval
,Expand
,ExtractEqn
,If
,JepTest.AddFractionsStack
,JepTest.Diff
,JepTest.PiFun
,JepTest.Product
,JepTest.Square
,LambdaFunGenerator
,LazyLogical
,List
,MacroFunction
,Mean
,Median
,Mode
,NaryBinaryFunction
,NaryFunction
,NullaryFunction
,NullWrappedLazyLogical
,NullWrappedPfmc
,OpEquals
,Percentile
,Preprocess
,Simplify
,Subst
,Sum
,Switch
,SwitchDefault
,SymbolicEquals
,TernaryConditional
,UnaryFunction
,Variance
,XAssign
public abstract class PostfixMathCommand extends java.lang.Object implements PostfixMathCommandI
Function classes extend this class. It is an implementation of the PostfixMathCommandI interface.It includes a numberOfParameters member, that is checked when parsing the expression. This member should be initialized to an appropriate value for all classes extending this class. If an arbitrary number of parameters should be allowed, initialize this member to -1.
The
asString(int, java.lang.Object)
and similar method are convenience methods for use by subclasses to ease conversion of arguments to particular types.- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected int
curNumberOfParameters
Number of parameters to be used for the next run() invocation.java.lang.String
name
static java.lang.Double
NaN
Double.valueOf(Double.NaN)protected int
numberOfParameters
Number of parameters a the function requires.
-
Constructor Summary
Constructors Constructor Description PostfixMathCommand()
Creates a new PostfixMathCommand class.PostfixMathCommand(int nParam)
Creates a new PostfixMathCommand class.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.lang.Object[]
asArray(java.util.Stack<java.lang.Object> stack)
Pop the arguments off the stack and put them in an arrayprotected boolean
asBool(int pos, java.lang.Object value, boolean allowNumbers)
Attempt to convert argument to a booleanprotected double
asDouble(int position, java.lang.Object value)
Converts an argument to a double, with error checking, floating point values will be rounded.protected int
asInt(int position, java.lang.Object value)
Converts an argument to a int, floating point values will be rounded.protected long
asLong(int position, java.lang.Object value)
Converts an argument to a long, with error checking, floating point values will be rounded.protected int
asStrictInt(int position, java.lang.Object value)
Converts an argument to a int, floating point values must represent integers.protected java.lang.String
asString(int position, java.lang.Object value)
Converts an argument to a string, with error checking.boolean
checkNumberOfParameters(int n)
Checks the number of parameters of the function.java.lang.String
getName()
The name of the function used in error messagesint
getNumberOfParameters()
Return the required number of parameters.void
run(java.util.Stack<java.lang.Object> s)
Throws an exception because this method should never be called under normal circumstances.void
setCurNumberOfParameters(int n)
Sets the number of current number of parameters used in the next call of run().void
setName(java.lang.String name)
Sets the name of the function used for error messagesjava.lang.String
toString()
protected java.lang.String
toString(java.lang.Object... args)
Return a string representation of the function with its arguments.
-
-
-
Field Detail
-
NaN
public static final java.lang.Double NaN
Double.valueOf(Double.NaN)
-
numberOfParameters
protected int numberOfParameters
Number of parameters a the function requires. Initialize this value to -1 if any number of parameters should be allowed.
-
curNumberOfParameters
protected transient int curNumberOfParameters
Number of parameters to be used for the next run() invocation. Applies only if the required number of parameters is variable (numberOfParameters = -1).
-
name
public java.lang.String name
-
-
Method Detail
-
getName
public java.lang.String getName()
Description copied from interface:PostfixMathCommandI
The name of the function used in error messages- Specified by:
getName
in interfacePostfixMathCommandI
- Returns:
- the function name
-
setName
public void setName(java.lang.String name)
Description copied from interface:PostfixMathCommandI
Sets the name of the function used for error messages- Specified by:
setName
in interfacePostfixMathCommandI
- Parameters:
name
- the function name
-
getNumberOfParameters
public int getNumberOfParameters()
Return the required number of parameters.- Specified by:
getNumberOfParameters
in interfacePostfixMathCommandI
- Returns:
- allowable number of parameters, -1 if a variable number is allowed
-
setCurNumberOfParameters
public void setCurNumberOfParameters(int n)
Sets the number of current number of parameters used in the next call of run(). This method is only called when the reqNumberOfParameters is -1.- Specified by:
setCurNumberOfParameters
in interfacePostfixMathCommandI
- Parameters:
n
- number of parameter for next call of function
-
checkNumberOfParameters
public boolean checkNumberOfParameters(int n)
Checks the number of parameters of the function. Functions which set numberOfParameter=-1 should overload this method- Specified by:
checkNumberOfParameters
in interfacePostfixMathCommandI
- Parameters:
n
- number of parameters function will be called with.- Returns:
- false if an illegal number of parameters is supplied, true otherwise.
-
run
public void run(java.util.Stack<java.lang.Object> s) throws EvaluationException
Throws an exception because this method should never be called under normal circumstances. Each function should use it's own run() method for evaluating the function. This includes popping off the parameters from the stack, and pushing the result back on the stack.- Specified by:
run
in interfacePostfixMathCommandI
- Parameters:
s
- arguments for function- Throws:
EvaluationException
- if function cannot be evaluated
-
asString
protected java.lang.String asString(int position, java.lang.Object value) throws IllegalParameterException
Converts an argument to a string, with error checking.- Parameters:
position
- argument number (starting from 0) used in error reportingvalue
- the argument to convert- Returns:
- value cast as a String
- Throws:
IllegalParameterException
- if the argument cannot be cast to a String
-
asInt
protected int asInt(int position, java.lang.Object value) throws IllegalParameterException
Converts an argument to a int, floating point values will be rounded.- Parameters:
position
- argument number (starting from 0) used in error reportingvalue
- the argument to convert- Returns:
- value as a int
- Throws:
IllegalParameterException
- if the argument cannot be cast to a Number
-
asStrictInt
protected int asStrictInt(int position, java.lang.Object value) throws IllegalParameterException
Converts an argument to a int, floating point values must represent integers.- Parameters:
position
- argument number (starting from 0) used in error reportingvalue
- the argument to convert- Returns:
- value as a int
- Throws:
IllegalParameterException
- if the argument cannot be cast to a Number or intValue() != doubleValue()
-
asLong
protected long asLong(int position, java.lang.Object value) throws EvaluationException
Converts an argument to a long, with error checking, floating point values will be rounded.- Parameters:
position
- argument number (starting from 0) used in error reportingvalue
- the argument to convert- Returns:
- value as a long
- Throws:
IllegalParameterException
- if the argument cannot be cast to a NumberEvaluationException
-
asDouble
protected double asDouble(int position, java.lang.Object value) throws EvaluationException
Converts an argument to a double, with error checking, floating point values will be rounded.- Parameters:
position
- argument number (starting from 0) used in error reportingvalue
- the argument to convert- Returns:
- value as a long
- Throws:
IllegalParameterException
- if the argument cannot be cast to a NumberEvaluationException
-
asBool
protected boolean asBool(int pos, java.lang.Object value, boolean allowNumbers) throws EvaluationException
Attempt to convert argument to a boolean- Parameters:
pos
- position in argument listvalue
- actual value of objectallowNumbers
- if true non zero numbers are true and zero numbers are false- Returns:
- value as a boolean
- Throws:
EvaluationException
- if value cannot be converted to a boolean, strings, fractional numbers
-
asArray
protected java.lang.Object[] asArray(java.util.Stack<java.lang.Object> stack)
Pop the arguments off the stack and put them in an array- Parameters:
stack
- input- Returns:
- an array of the arguments of the function in correct order
-
toString
protected java.lang.String toString(java.lang.Object... args)
Return a string representation of the function with its arguments.- Parameters:
args
- the arguments to the function- Returns:
- string representation of the function with its arguments
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-