gnu.kawa.reflect

Class ClassMethods

public class ClassMethods extends Procedure2

Field Summary
static ClassMethodsclassMethods
Method Summary
static MethodProcapply(Procedure thisProc, Object arg0, Object arg1)
static MethodProcapply(ObjectType dtype, String mname, char mode, Language language)
Find methods.
Objectapply2(Object arg0, Object arg1)
Create a method or generic of the matching methods.
static PrimProcedure[]getMethods(ObjectType dtype, String mname, char mode, ClassType caller, Language language)
Return the methods of a class with the specified name and flag.
static longselectApplicable(PrimProcedure[] methods, Type[] atypes)
Re-order the methods such that the ones that are definite applicable (all argtypes is subset of parameter type) are first; those possibly applicable next (argtype overlaps parameter types); and ending with those definitely not applicable (some argtype does overlap its parameter type).

Field Detail

classMethods

public static final ClassMethods classMethods

Method Detail

apply

public static MethodProc apply(Procedure thisProc, Object arg0, Object arg1)

apply

public static MethodProc apply(ObjectType dtype, String mname, char mode, Language language)
Find methods.

Parameters: dtype class to search mname method name (already mangled, if need be). mode one of 'P' (use invokespecial). 'V' (require this argument even if method is static), or '\0' (otherwise).

apply2

public Object apply2(Object arg0, Object arg1)
Create a method or generic of the matching methods.

Parameters: arg0 a Class, ClassType, or a String, FString or Symbol that names a class. arg1 a method name (a String, FString, or Symbol) Loosely the same as GetNamedPart.make(arg0, arg1), but with some extra conversions and checks.

getMethods

public static PrimProcedure[] getMethods(ObjectType dtype, String mname, char mode, ClassType caller, Language language)
Return the methods of a class with the specified name and flag.

Parameters: caller if non-null, check that methods are accessible in it.

Returns: an array containing the methods.

selectApplicable

public static long selectApplicable(PrimProcedure[] methods, Type[] atypes)
Re-order the methods such that the ones that are definite applicable (all argtypes is subset of parameter type) are first; those possibly applicable next (argtype overlaps parameter types); and ending with those definitely not applicable (some argtype does overlap its parameter type).

Returns: ((number of definitely applicable methods) << 32 + (number of possibly applicable methods.