Class PostfixMathCommand

    • Field Summary

      Fields 
      Modifier and Type Field 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 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 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