Package com.singularsys.jep.functions
Class PostfixMathCommand
java.lang.Object
com.singularsys.jep.functions.PostfixMathCommand
- All Implemented Interfaces:
PostfixMathCommandI,Serializable
- Direct Known Subclasses:
AbstractInc,AlternateFunctions,ArrayFunctionBase,Assign,BinaryFunction,Case,If,JepTest.AddFractionsStack,JepTest.Diff,JepTest.PiFun,JepTest.Product,JepTest.Square,LazyLogical,List,MacroFunction,NaryBinaryFunction,NaryFunction,NullaryFunction,NullWrappedLazyLogical,NullWrappedPfmc,NullWrapTest.MyPfmc,OpEquals,OverloadedFunctionByStructure,OverloadedNaryFunctionTest.StringSelect,Sum,Switch,SwitchDefault,TernaryConditional,UnaryFunction
Abstract base classes for most function classes.
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:
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionCreates a new PostfixMathCommand class.PostfixMathCommand(int nParam) Creates a new PostfixMathCommand class. -
Method Summary
Modifier and TypeMethodDescriptionprotected Object[]Pop the arguments off the stack and put them in an arrayprotected booleanAttempt to convert argument to a booleanprotected doubleConverts an argument to a double, with error checking, floating point values will be rounded.protected intConverts an argument to an int, floating point values will be rounded.protected longConverts an argument to a long, with error checking, floating point values will be rounded.protected intasStrictInt(int position, Object value) Converts an argument to an int, floating point values must represent integers.protected StringConverts an argument to a string, with error checking.protected <T> TConverts an argument to a particular type, with error checking.booleancheckNumberOfParameters(int n) Checks the number of parameters of the function.Return a description of the function from the properties file.protected StringgetDescription(String property) Return a description of the function from the resource bundle usingJepMessages.getStringFromAdditionalBundles(String)and a property name.getDescriptionWithType(String type) Get a descriptions from a property with the formatclass.name.type.descriptiongetName()The name of the function used in error messagesintReturn the required number of parameters.voidThrows an exception because this method should never be called under normal circumstances.voidsetCurNumberOfParameters(int n) Sets the number of current number of parameters used in the next call of run().voidsetDescription(String description) Set the description of the function.voidSets the name of the function used for error messagestoString()Return a string representation of the function.protected StringReturn a string representation of the function with its arguments.
-
Field Details
-
NaN
Double.valueOf(Double.NaN) -
numberOfParameters
protected int numberOfParametersNumber of parameters a function requires. Initialize this value to -1 if any number of parameters should be allowed. -
curNumberOfParameters
protected transient int curNumberOfParametersNumber of parameters to be used for the next run() invocation. Applies only if the required number of parameters is variable (numberOfParameters = -1). -
name
The name of the function. This is set in theFunctionTable#addFunction(String, PostfixMathCommandI)method. -
description
The description of the function. If set bysetDescription(String)overrides the default method.
-
-
Constructor Details
-
PostfixMathCommand
public PostfixMathCommand()Creates a new PostfixMathCommand class. -
PostfixMathCommand
public PostfixMathCommand(int nParam) Creates a new PostfixMathCommand class.- Parameters:
nParam- number of parameters for the function
-
-
Method Details
-
getName
Description copied from interface:PostfixMathCommandIThe name of the function used in error messages- Specified by:
getNamein interfacePostfixMathCommandI- Returns:
- the function name
-
setName
Description copied from interface:PostfixMathCommandISets the name of the function used for error messages- Specified by:
setNamein interfacePostfixMathCommandI- Parameters:
name- the function name
-
getNumberOfParameters
public int getNumberOfParameters()Return the required number of parameters.- Specified by:
getNumberOfParametersin 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:
setCurNumberOfParametersin 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:
checkNumberOfParametersin interfacePostfixMathCommandI- Parameters:
n- number of parameters function will be called with.- Returns:
- false if an illegal number of parameters is supplied, true otherwise.
-
run
Throws an exception because this method should never be called under normal circumstances. Each function should use its ownrun()method for evaluating the function. This includes popping off the parameters from the stack, and pushing the result back on the stack.- Specified by:
runin interfacePostfixMathCommandI- Parameters:
s- arguments for function- Throws:
EvaluationException- if function cannot be evaluated
-
asString
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
-
asType
Converts an argument to a particular type, with error checking. For example, to convert an argument to a String, useString s = asType(String.class, 0, arg);.- Type Parameters:
T- the type to cast to- Parameters:
type- the class of the typeposition- argument number (starting from 0) used in error reportingvalue- the argument to convert- Returns:
- value cast as the specified type
- Throws:
IllegalParameterException- if the argument cannot be cast to the specified type- Since:
- Jep 4.1
-
asInt
Converts an argument to an 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
Converts an argument to an 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
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
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
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
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
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
Return a string representation of the function. If the name is not null, return the name, otherwise return the class name. -
getDescription
Return a description of the function from the properties file. The property name is the class name followed by ".description". The property is found using theJepMessagesclass, which can be configured to add additional properties files. IfsetDescription(String)has been called, return the description set by that method instead.- Specified by:
getDescriptionin interfacePostfixMathCommandI- Returns:
- the description of the function
- Since:
- Jep 4.1
-
getDescription
Return a description of the function from the resource bundle usingJepMessages.getStringFromAdditionalBundles(String)and a property name.- Parameters:
property- the property to look up in the resource bundle- Returns:
- the description of the function
- Since:
- Jep 4.1
- See Also:
-
setDescription
Set the description of the function. This override the default description from the resource bundle.- Parameters:
description- the description of the function- Since:
- Jep 4.1
-
getDescriptionWithType
Get a descriptions from a property with the formatclass.name.type.description- Parameters:
type- sub type of the function to include.- Returns:
- the description of the function
- Since:
- Jep 4.1
-