gnu.expr
Class ModuleMethod

java.lang.Object
  |
  +--gnu.mapping.Procedure
        |
        +--gnu.mapping.ProcedureN
              |
              +--gnu.expr.ModuleMethod

public class ModuleMethod
extends ProcedureN

Call a specified method in in a ModuleBody. We use an extra level of indirection, but we save by having to create fewer classes than in the one-class-per-procedure scheme, without having to use (slow) reflection. ModuleMethod is redundant, since it could be replaced by ApplyMethodProc. However, ModuleMethod uses virtual method calls, while ApplyMethodProc uses the possibly much slower interface method calls.


Field Summary
 int selector
           
 
Fields inherited from class gnu.mapping.Procedure
noArgs, sym_name
 
Constructor Summary
ModuleMethod(ModuleBody module, int selector, java.lang.String name, int numArgs)
           
 
Method Summary
 java.lang.Object apply0()
           
 java.lang.Object apply1(java.lang.Object arg1)
           
 java.lang.Object apply2(java.lang.Object arg1, java.lang.Object arg2)
           
 java.lang.Object apply3(java.lang.Object arg1, java.lang.Object arg2, java.lang.Object arg3)
           
 java.lang.Object apply4(java.lang.Object arg1, java.lang.Object arg2, java.lang.Object arg3, java.lang.Object arg4)
           
 java.lang.Object applyN(java.lang.Object[] args)
           
 int numArgs()
          Return minArgs()|(maxArgs<<12).
 
Methods inherited from class gnu.mapping.Procedure
apply, checkArgCount, getName, getSetter, maxArgs, minArgs, name, print, set0, set1, setN, setName
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

selector

public final int selector
Constructor Detail

ModuleMethod

public ModuleMethod(ModuleBody module,
                    int selector,
                    java.lang.String name,
                    int numArgs)
Method Detail

numArgs

public int numArgs()
Description copied from class: Procedure
Return minArgs()|(maxArgs<<12).
Overrides:
numArgs in class Procedure

apply0

public java.lang.Object apply0()
Overrides:
apply0 in class ProcedureN

apply1

public java.lang.Object apply1(java.lang.Object arg1)
Overrides:
apply1 in class ProcedureN

apply2

public java.lang.Object apply2(java.lang.Object arg1,
                               java.lang.Object arg2)
Overrides:
apply2 in class ProcedureN

apply3

public java.lang.Object apply3(java.lang.Object arg1,
                               java.lang.Object arg2,
                               java.lang.Object arg3)
Overrides:
apply3 in class ProcedureN

apply4

public java.lang.Object apply4(java.lang.Object arg1,
                               java.lang.Object arg2,
                               java.lang.Object arg3,
                               java.lang.Object arg4)
Overrides:
apply4 in class ProcedureN

applyN

public java.lang.Object applyN(java.lang.Object[] args)
Overrides:
applyN in class ProcedureN