com.singularsys.jep.misc
Class MacroFunction

java.lang.Object
  extended by com.singularsys.jep.functions.PostfixMathCommand
      extended by com.singularsys.jep.misc.MacroFunction
All Implemented Interfaces:
JepComponent, PostfixMathCommandI, java.io.Serializable

public class MacroFunction
extends PostfixMathCommand
implements JepComponent

A function specified by a string. For example

 MacroFunction fact = new MacroFunction(
            "fact",new String[]{"x"}, 
            "if(x>1,x*fact(x-1),1)");
 jep.addFunction("fact",fact);
 fact.init(jep);
 Node n = jep.parse("fact(5)");
 

Author:
R Morris.
See Also:
Serialized Form

Field Summary
protected  Node topNode
           
 
Fields inherited from class com.singularsys.jep.functions.PostfixMathCommand
curNumberOfParameters, name, NaN, numberOfParameters
 
Constructor Summary
MacroFunction(Jep jep, java.lang.String funName, java.lang.String[] parameters, java.lang.String expression)
          Create a macro function with two or more arguments defined by an expression.
MacroFunction(Jep jep, java.lang.String funName, java.lang.String parameter, java.lang.String expression)
          Create a macro function with a single arguments defined by an expression.
MacroFunction(java.lang.String funName, java.lang.String[] parameters, java.lang.String expression)
          Create a macro function with two or more arguments defined by an expression.
 
Method Summary
 JepComponent getLightWeightInstance()
          Gets a light-weight instance suitable for using in multiple threads.
 java.lang.String[] getParameterNames()
           
 Node getTopNode()
           
 void init(Jep j)
          The init method must be called after construction.
 void run(java.util.Stack<java.lang.Object> stack)
          Calculates the value of the expression.
 java.lang.String toString()
           
 
Methods inherited from class com.singularsys.jep.functions.PostfixMathCommand
asArray, asBool, asDouble, asInt, asLong, asStrictInt, asString, checkNumberOfParameters, checkStack, getName, getNumberOfParameters, setCurNumberOfParameters, setName, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

topNode

protected transient Node topNode
Constructor Detail

MacroFunction

public MacroFunction(Jep jep,
                     java.lang.String funName,
                     java.lang.String[] parameters,
                     java.lang.String expression)
Create a macro function with two or more arguments defined by an expression.

Parameters:
jep - The jep instance
funName - name of the function
parameters - an array of the formal parameter names used by the function
expression -
Since:
3.4.0

MacroFunction

public MacroFunction(Jep jep,
                     java.lang.String funName,
                     java.lang.String parameter,
                     java.lang.String expression)
Create a macro function with a single arguments defined by an expression.

Parameters:
jep - The jep instance
funName - name of the function
parameter - the name of the formal parameter.
expression -
Since:
3.4.0

MacroFunction

public MacroFunction(java.lang.String funName,
                     java.lang.String[] parameters,
                     java.lang.String expression)
Create a macro function with two or more arguments defined by an expression. Use this method for recursive functions like face. The init(Jep) method must be called after the function is added to the function table, which will recompile the function.

Parameters:
funName - name of the function
parameters - an array of the formal parameter names used by the function
expression -
Method Detail

init

public void init(Jep j)
The init method must be called after construction.

Specified by:
init in interface JepComponent
Parameters:
j - jep instance
Throws:
java.lang.RuntimeException - if errors compiling the expression.

run

public void run(java.util.Stack<java.lang.Object> stack)
         throws EvaluationException
Calculates the value of the expression.

Specified by:
run in interface PostfixMathCommandI
Throws:
EvaluationException

getTopNode

public Node getTopNode()

getParameterNames

public java.lang.String[] getParameterNames()

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

getLightWeightInstance

public JepComponent getLightWeightInstance()
Description copied from interface: JepComponent
Gets a light-weight instance suitable for using in multiple threads.

Specified by:
getLightWeightInstance in interface JepComponent
Returns:
either an new instance, or 'this'.


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