Package com.singularsys.jep.functions
Class ArrayFunctionBase
java.lang.Object
com.singularsys.jep.functions.PostfixMathCommand
com.singularsys.jep.functions.ArrayFunctionBase
- All Implemented Interfaces:
ZeroLengthBehaviourI,PostfixMathCommandI,Serializable
- Direct Known Subclasses:
Average,BigDecVSum,ElementOf,MinMax,VSum
Base class for functions that operate on arrays such as Average, MinMax,
and VSum. The shared functionality such as array flattening is implemented
here. In the run() method, before calling calc(), Vectors and nested Vectors
are flattened so
1,[2,[3, 4]] becomes [1, 2, 3, 4]
which is passed in to the calc method as a List<Object>.- Since:
- 3.4.0
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface com.singularsys.jep.functions.ZeroLengthBehaviourI
ZeroLengthBehaviourI.DefaultZeroLengthBehaviourI, ZeroLengthBehaviourI.ZeroLengthErrorBehaviour, ZeroLengthBehaviourI.ZeroLengthHelper -
Field Summary
Fields inherited from class com.singularsys.jep.functions.PostfixMathCommand
curNumberOfParameters, description, name, NaN, numberOfParameters -
Constructor Summary
ConstructorsModifierConstructorDescriptionDefault the number of parameters to any number of params (-1).protectedArrayFunctionBase(ZeroLengthBehaviourI.ZeroLengthErrorBehaviour zeroLengthErrorBehaviour) Constructor with a specified zero length error behaviour.protectedArrayFunctionBase(Object zeroLengthValue) Constructor with a specified value to return for zero length arrays. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddToArray(List<Object> l, Object val) Adds a valuevalto the arrayl.protected abstract ObjectAbstract method for performing the array calculation.booleancheckNumberOfParameters(int n) Must have one or more parameterGets how to respond to arguments with zero length arrays.Gets the value to be returned when a zero length array is passed as an argument and the zero length error behaviour is set to VALUE.voidCalls the calc method after concatenating all elements into list.voidsetZeroLengthErrorBehaviour(ZeroLengthBehaviourI.ZeroLengthErrorBehaviour zeroLengthErrorBehaviour) Sets how to respond to arguments with zero length arrays.voidsetZeroLengthValue(Object zeroLengthValue) Sets the value to be returned when a zero length array is passed and the zero length error behaviour is set to VALUE.protected voidThrows an exception indicating that at least one argument is required.Methods inherited from class com.singularsys.jep.functions.PostfixMathCommand
asArray, asBool, asDouble, asInt, asLong, asStrictInt, asString, asType, getDescription, getDescription, getDescriptionWithType, getName, getNumberOfParameters, setCurNumberOfParameters, setDescription, setName, toString, toStringMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface com.singularsys.jep.functions.ZeroLengthBehaviourI
getErrorMessage, getValueOrException, zeroLengthResultOrException
-
Constructor Details
-
ArrayFunctionBase
public ArrayFunctionBase()Default the number of parameters to any number of params (-1). -
ArrayFunctionBase
Constructor with a specified zero length error behaviour.- Parameters:
zeroLengthErrorBehaviour-
-
ArrayFunctionBase
Constructor with a specified value to return for zero length arrays. Sets the zero length error behaviour to VALUE.- Parameters:
zeroLengthValue- the value to return when a zero length array is passed
-
-
Method Details
-
checkNumberOfParameters
public boolean checkNumberOfParameters(int n) Must have one or more parameter- Specified by:
checkNumberOfParametersin interfacePostfixMathCommandI- Overrides:
checkNumberOfParametersin classPostfixMathCommand- Parameters:
n- number of parameters function will be called with.- Returns:
- false if an illegal number of parameters is supplied, true otherwise.
-
run
Calls the calc method after concatenating all elements into list. Subclasses are responsible for implementing the calc method and handling the zero length array case.- Specified by:
runin interfacePostfixMathCommandI- Overrides:
runin classPostfixMathCommand- Parameters:
stack- arguments for function- Throws:
EvaluationException- if function cannot be evaluated
-
addToArray
Adds a valuevalto the arrayl. This method flattens Vectors and nested Vectors so1,[2,[3, 4]]becomes[1, 2, 3, 4].- Parameters:
l- The list to which to adda.val- The value to be added (can be a Vector).
-
calc
Abstract method for performing the array calculation.- Parameters:
l- The list to operate on. Note this is in reverse order of the arguments of the function.- Returns:
- The result of the calculation.
- Throws:
EvaluationException- if the calculation cannot be performed
-
throwAtLeastOneExcep
Throws an exception indicating that at least one argument is required.- Throws:
EvaluationException
-
getZeroLengthErrorBehaviour
Description copied from interface:ZeroLengthBehaviourIGets how to respond to arguments with zero length arrays.- Specified by:
getZeroLengthErrorBehaviourin interfaceZeroLengthBehaviourI- Returns:
- either EXCEPTION, NAN or VALUE
-
setZeroLengthErrorBehaviour
public void setZeroLengthErrorBehaviour(ZeroLengthBehaviourI.ZeroLengthErrorBehaviour zeroLengthErrorBehaviour) Description copied from interface:ZeroLengthBehaviourISets how to respond to arguments with zero length arrays. Either an Exception is thrown or NaN is returned.- Specified by:
setZeroLengthErrorBehaviourin interfaceZeroLengthBehaviourI- Parameters:
zeroLengthErrorBehaviour- either EXCEPTION, NAN or VALUE
-
getZeroLengthValue
Description copied from interface:ZeroLengthBehaviourIGets the value to be returned when a zero length array is passed as an argument and the zero length error behaviour is set to VALUE.- Specified by:
getZeroLengthValuein interfaceZeroLengthBehaviourI- Returns:
- the value, null by default
-
setZeroLengthValue
Description copied from interface:ZeroLengthBehaviourISets the value to be returned when a zero length array is passed and the zero length error behaviour is set to VALUE. TheZeroLengthBehaviourI.setZeroLengthErrorBehaviour(ZeroLengthErrorBehaviour)method should be used to set the zero length error behaviour to VALUE.- Specified by:
setZeroLengthValuein interfaceZeroLengthBehaviourI- Parameters:
zeroLengthValue- the value to return when a zero length array is passed
-