org.apache.poi.ss.formula.functions
Class MultiOperandNumericFunction

java.lang.Object
  extended by org.apache.poi.ss.formula.functions.MultiOperandNumericFunction
All Implemented Interfaces:
Function
Direct Known Subclasses:
AggregateFunction, MinaMaxa, Mirr

public abstract class MultiOperandNumericFunction
extends java.lang.Object
implements Function

This is the super class for all excel function evaluator classes that take variable number of operands, and where the order of operands does not matter


Constructor Summary
protected MultiOperandNumericFunction(boolean isReferenceBoolCounted, boolean isBlankCounted)
           
 
Method Summary
protected abstract  double evaluate(double[] values)
           
 ValueEval evaluate(ValueEval[] args, int srcCellRow, int srcCellCol)
           
protected  int getMaxNumOperands()
          Maximum number of operands accepted by this function.
protected  double[] getNumberArray(ValueEval[] operands)
          Returns a double array that contains values for the numeric cells from among the list of operands.
 boolean isSubtotalCounted()
          Whether to count nested subtotals.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MultiOperandNumericFunction

protected MultiOperandNumericFunction(boolean isReferenceBoolCounted,
                                      boolean isBlankCounted)
Method Detail

evaluate

public final ValueEval evaluate(ValueEval[] args,
                                int srcCellRow,
                                int srcCellCol)
Specified by:
evaluate in interface Function
Parameters:
args - the evaluated function arguments. Empty values are represented with BlankEval or MissingArgEval, never null.
srcCellRow - row index of the cell containing the formula under evaluation
srcCellCol - column index of the cell containing the formula under evaluation
Returns:
The evaluated result, possibly an ErrorEval, never null. Note - Excel uses the error code #NUM! instead of IEEE NaN, so when numeric functions evaluate to Double.NaN be sure to translate the result to ErrorEval.NUM_ERROR.

evaluate

protected abstract double evaluate(double[] values)
                            throws EvaluationException
Throws:
EvaluationException

getMaxNumOperands

protected int getMaxNumOperands()
Maximum number of operands accepted by this function. Subclasses may override to change default value.


getNumberArray

protected final double[] getNumberArray(ValueEval[] operands)
                                 throws EvaluationException
Returns a double array that contains values for the numeric cells from among the list of operands. Blanks and Blank equivalent cells are ignored. Error operands or cells containing operands of type that are considered invalid and would result in #VALUE! error in excel cause this function to return null.

Returns:
never null
Throws:
EvaluationException

isSubtotalCounted

public boolean isSubtotalCounted()
Whether to count nested subtotals.