org.apache.poi.ss.formula.functions

## Class IfFunc

- java.lang.Object
- - org.apache.poi.ss.formula.functions.IfFunc

- All Implemented Interfaces:
    ArrayFunction, Function, Function2Arg, Function3Arg

      public final class IfFunc
      extends java.lang.Object
      implements ArrayFunction

  Implementation for the Excel function IF

  Note that Excel is a bit picky about the arguments to this function, when serialised into `Ptg`s in a HSSF file. While most cases are pretty chilled about the R vs V state of `RefPtg` arguments, for IF special care is needed to avoid Excel showing #VALUE. See bug numbers #55324 and #55747 for the full details on this. TODO Fix this...

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `IfFunc()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `ValueEval` | `evaluate(int srcRowIndex, int srcColumnIndex, ValueEval arg0, ValueEval arg1)` see `Function.evaluate(ValueEval[], int, int)`
    `ValueEval` | `evaluate(int srcRowIndex, int srcColumnIndex, ValueEval arg0, ValueEval arg1, ValueEval arg2)` see `Function.evaluate(ValueEval[], int, int)`
    `ValueEval` | `evaluate(ValueEval[] args, int srcRowIndex, int srcColumnIndex)`
    `ValueEval` | `evaluateArray(ValueEval[] args, int srcRowIndex, int srcColumnIndex)`
    `static boolean` | `evaluateFirstArg(ValueEval arg, int srcCellRow, int srcCellCol)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.apache.poi.ss.formula.functions.ArrayFunction

      `evaluateOneArrayArg, evaluateTwoArrayArgs`

- - ### Constructor Detail

    - #### IfFunc

          public IfFunc()

  - ### Method Detail

    - #### evaluate

          public ValueEval evaluate(int srcRowIndex,
                                    int srcColumnIndex,
                                    ValueEval arg0,
                                    ValueEval arg1)

      Description copied from interface: `Function2Arg`
      see `Function.evaluate(ValueEval[], int, int)`
      Specified by:
        `evaluate` in interface `Function2Arg`

    - #### evaluate

          public ValueEval evaluate(int srcRowIndex,
                                    int srcColumnIndex,
                                    ValueEval arg0,
                                    ValueEval arg1,
                                    ValueEval arg2)

      Description copied from interface: `Function3Arg`
      see `Function.evaluate(ValueEval[], int, int)`
      Specified by:
        `evaluate` in interface `Function3Arg`

    - #### evaluateFirstArg

          public static boolean evaluateFirstArg(ValueEval arg,
                                                 int srcCellRow,
                                                 int srcCellCol)
                                          throws EvaluationException

      Throws:
        `EvaluationException`

    - #### evaluateArray

          public ValueEval evaluateArray(ValueEval[] args,
                                         int srcRowIndex,
                                         int srcColumnIndex)

      Specified by:
        `evaluateArray` in interface `ArrayFunction`
      Parameters:
        `args` - the evaluated function arguments. Empty values are represented with `BlankEval` or `MissingArgEval`, never `null`.
        `srcRowIndex` - row index of the cell containing the formula under evaluation
        `srcColumnIndex` - 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

          public final ValueEval evaluate(ValueEval[] args,
                                          int srcRowIndex,
                                          int srcColumnIndex)

      Specified by:
        `evaluate` in interface `Function`
      Parameters:
        `args` - the evaluated function arguments. Empty values are represented with `BlankEval` or `MissingArgEval`, never `null`.
        `srcRowIndex` - row index of the cell containing the formula under evaluation
        `srcColumnIndex` - 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`.

Copyright 2020 The Apache Software Foundation or its licensors, as applicable.