Class ArrayFunctionBase

java.lang.Object
com.singularsys.jep.functions.PostfixMathCommand
com.singularsys.jep.functions.ArrayFunctionBase
All Implemented Interfaces:
PostfixMathCommandI, Serializable
Direct Known Subclasses:
Average, ElementOf, MinMax, VSum

public abstract class ArrayFunctionBase extends PostfixMathCommand
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:
  • Constructor Details

    • ArrayFunctionBase

      public ArrayFunctionBase()
      Default the number of parameters to any number of params (-1).
  • Method Details

    • checkNumberOfParameters

      public boolean checkNumberOfParameters(int n)
      Must have one or more parameter
      Specified by:
      checkNumberOfParameters in interface PostfixMathCommandI
      Overrides:
      checkNumberOfParameters in class PostfixMathCommand
      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(Stack<Object> stack) throws EvaluationException
      Calls the calc method after concatenating all elements into list.
      Specified by:
      run in interface PostfixMathCommandI
      Overrides:
      run in class PostfixMathCommand
      Parameters:
      stack - arguments for function
      Throws:
      EvaluationException - if function cannot be evaluated
    • addToArray

      protected void addToArray(List<Object> l, Object val)
      Adds a value val to the array l. This method flattens Vectors and nested Vectors so 1,[2,[3, 4]] becomes [1, 2, 3, 4].
      Parameters:
      l - The list to which to add a.
      val - The value to be added (can be a Vector).
    • calc

      protected abstract Object calc(List<Object> l) throws EvaluationException
      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

      protected void throwAtLeastOneExcep() throws EvaluationException
      Throws:
      EvaluationException
    • getZeroLengthErrorBehaviour

      public ArrayFunctionBase.ZeroLengthErrorBehaviour getZeroLengthErrorBehaviour()
    • setZeroLengthErrorBehaviour

      public void setZeroLengthErrorBehaviour(ArrayFunctionBase.ZeroLengthErrorBehaviour zeroLengthErrorBehaviour)
      Sets how to respond to arguments with zero length arrays. Either an Exception is thrown or NaN is returned.
      Parameters:
      zeroLengthErrorBehaviour - either EXCEPTION or NAN