com.singularsys.jep.functions

## Class PostfixMathCommand

- java.lang.Object
- - com.singularsys.jep.functions.PostfixMathCommand

- All Implemented Interfaces:
    PostfixMathCommandI, java.io.Serializable
  Direct Known Subclasses:
    AbstractInc, ArrayFunctionBase, Assign, BinaryFunction, BugsTest.StackMessingFunc, Case, If, LazyLogical, List, MacroFunction, NaryBinaryFunction, NaryFunction, NullaryFunction, NullWrappedLazyLogical, NullWrappedPfmc, OpEquals, Sum, Switch, SwitchDefault, TernaryConditional, UnaryFunction

      public abstract class PostfixMathCommand
      extends java.lang.Object
      implements PostfixMathCommandI

  Function classes extend this class. 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:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected int` | `curNumberOfParameters` Number of parameters to be used for the next run() invocation.
    `java.lang.String` | `name`
    `static java.lang.Double` | `NaN` Double.valueOf(Double.NaN)
    `protected int` | `numberOfParameters` Number of parameters a the function requires.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `PostfixMathCommand()` Creates a new PostfixMathCommand class.
    `PostfixMathCommand(int nParam)` Creates a new PostfixMathCommand class.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected java.lang.Object[]` | `asArray(java.util.Stack<java.lang.Object> stack)` Pop the arguments off the stack and put them in an array
    `protected boolean` | `asBool(int pos, java.lang.Object value, boolean allowNumbers)` Attempt to convert argument to a boolean
    `protected double` | `asDouble(int position, java.lang.Object value)` Converts an argument to a double, with error checking, floating point values will be rounded.
    `protected int` | `asInt(int position, java.lang.Object value)` Converts an argument to a int, floating point values will be rounded.
    `protected long` | `asLong(int position, java.lang.Object value)` Converts an argument to a long, with error checking, floating point values will be rounded.
    `protected int` | `asStrictInt(int position, java.lang.Object value)` Converts an argument to a int, floating point values must represent integers.
    `protected java.lang.String` | `asString(int position, java.lang.Object value)` Converts an argument to a string, with error checking.
    `boolean` | `checkNumberOfParameters(int n)` Checks the number of parameters of the function.
    `java.lang.String` | `getName()` The name of the function used in error messages
    `int` | `getNumberOfParameters()` Return the required number of parameters.
    `void` | `run(java.util.Stack<java.lang.Object> s)` Throws an exception because this method should never be called under normal circumstances.
    `void` | `setCurNumberOfParameters(int n)` Sets the number of current number of parameters used in the next call of run().
    `void` | `setName(java.lang.String name)` Sets the name of the function used for error messages
    `java.lang.String` | `toString()`
    `protected java.lang.String` | `toString(java.lang.Object... args)` Return a string representation of the function with its arguments.

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

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

- - ### Field Detail

    - #### NaN

          public static final java.lang.Double NaN

      Double.valueOf(Double.NaN)

    - #### numberOfParameters

          protected int numberOfParameters

      Number of parameters a the function requires. Initialize this value to -1 if any number of parameters should be allowed.

    - #### curNumberOfParameters

          protected transient int curNumberOfParameters

      Number of parameters to be used for the next run() invocation. Applies only if the required number of parameters is variable (numberOfParameters = -1).

    - #### name

          public java.lang.String name

  - ### Constructor Detail

    - #### 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 Detail

    - #### getName

          public java.lang.String getName()

      Description copied from interface: `PostfixMathCommandI`
      The name of the function used in error messages
      Specified by:
        `getName` in interface `PostfixMathCommandI`
      Returns:
        the function name

    - #### setName

          public void setName(java.lang.String name)

      Description copied from interface: `PostfixMathCommandI`
      Sets the name of the function used for error messages
      Specified by:
        `setName` in interface `PostfixMathCommandI`
      Parameters:
        `name` - the function name

    - #### getNumberOfParameters

          public int getNumberOfParameters()

      Return the required number of parameters.
      Specified by:
        `getNumberOfParameters` in interface `PostfixMathCommandI`
      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:
        `setCurNumberOfParameters` in interface `PostfixMathCommandI`
      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:
        `checkNumberOfParameters` in interface `PostfixMathCommandI`
      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(java.util.Stack<java.lang.Object> s)
                   throws EvaluationException

      Throws an exception because this method should never be called under normal circumstances. Each function should use it's own run() method for evaluating the function. This includes popping off the parameters from the stack, and pushing the result back on the stack.
      Specified by:
        `run` in interface `PostfixMathCommandI`
      Parameters:
        `s` - arguments for function
      Throws:
        `EvaluationException` - if function cannot be evaluated

    - #### asString

          protected java.lang.String asString(int position,
                                              java.lang.Object value)
                                       throws IllegalParameterException

      Converts an argument to a string, with error checking.
      Parameters:
        `position` - argument number (starting from 0) used in error reporting
        `value` - the argument to convert
      Returns:
        value cast as a String
      Throws:
        `IllegalParameterException` - if the argument cannot be cast to a String

    - #### asInt

          protected int asInt(int position,
                              java.lang.Object value)
                       throws IllegalParameterException

      Converts an argument to a int, floating point values will be rounded.
      Parameters:
        `position` - argument number (starting from 0) used in error reporting
        `value` - the argument to convert
      Returns:
        value as a int
      Throws:
        `IllegalParameterException` - if the argument cannot be cast to a Number

    - #### asStrictInt

          protected int asStrictInt(int position,
                                    java.lang.Object value)
                             throws IllegalParameterException

      Converts an argument to a int, floating point values must represent integers.
      Parameters:
        `position` - argument number (starting from 0) used in error reporting
        `value` - the argument to convert
      Returns:
        value as a int
      Throws:
        `IllegalParameterException` - if the argument cannot be cast to a Number or intValue() != doubleValue()

    - #### asLong

          protected long asLong(int position,
                                java.lang.Object value)
                         throws EvaluationException

      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 reporting
        `value` - the argument to convert
      Returns:
        value as a long
      Throws:
        `IllegalParameterException` - if the argument cannot be cast to a Number
        `EvaluationException`

    - #### asDouble

          protected double asDouble(int position,
                                    java.lang.Object value)
                             throws EvaluationException

      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 reporting
        `value` - the argument to convert
      Returns:
        value as a long
      Throws:
        `IllegalParameterException` - if the argument cannot be cast to a Number
        `EvaluationException`

    - #### asBool

          protected boolean asBool(int pos,
                                   java.lang.Object value,
                                   boolean allowNumbers)
                            throws EvaluationException

      Attempt to convert argument to a boolean
      Parameters:
        `pos` - position in argument list
        `value` - actual value of object
        `allowNumbers` - 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

          protected java.lang.Object[] asArray(java.util.Stack<java.lang.Object> stack)

      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

          protected java.lang.String toString(java.lang.Object... args)

      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

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

Copyright © 2018 Singular Systems http://www.singularsys.com/jep