JML

org.multijava.util.classfile
Class MultimethodInfo

java.lang.Object
  extended byorg.multijava.util.classfile.Member
      extended byorg.multijava.util.classfile.MethodInfo
          extended byorg.multijava.util.classfile.MultimethodInfo
All Implemented Interfaces:
Comparable, Constants

public class MultimethodInfo
extends MethodInfo

An instance of this data structure describes each multimethod in a class.


Field Summary
private  short number
           
private  String topConcMethColl
           
 
Fields inherited from class org.multijava.util.classfile.MethodInfo
attributes
 
Fields inherited from class org.multijava.util.classfile.Member
 
Fields inherited from interface org.multijava.util.classfile.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VOLATILE, ACCESS_FLAG_ARRAY, ACCESS_FLAG_NAMES, ATT_ANCHOR, ATT_BRIDGE, ATT_CODE, ATT_CONSTANTVALUE, ATT_DEPRECATED, ATT_DISPATCHER, ATT_EXCEPTIONS, ATT_GENERIC, ATT_GENERIC_FUNCTIONS, ATT_INNERCLASSES, ATT_LINENUMBERTABLE, ATT_LOCALVARIABLETABLE, ATT_MM_BODY, ATT_REDIRECTOR, ATT_RMJ_GLUE, ATT_RMJ_SIGNATURE, ATT_RUNTIME_VISIBLE_ANNOTATIONS, ATT_RUNTIME_VISIBLE_PARAMETER_ANNOTATIONS, ATT_SIGNATURE, ATT_SOURCEFILE, ATT_SYNTHETIC, ATT_UNIVERSE_FIELD, ATT_UNIVERSE_METHOD, ATT_UNIVERSE_VERSION, CST_CLASS, CST_DOUBLE, CST_FIELD, CST_FLOAT, CST_INTEGER, CST_INTERFACEMETHOD, CST_LONG, CST_METHOD, CST_NAMEANDTYPE, CST_STRING, CST_UTF8, ENV_DEBUG_MODE, ENV_USE_CACHE, JAVA_MAGIC, JAVA_MAJOR, JAVA_MINOR, MAX_CODE_PER_METHOD, opc_aaload, opc_aastore, opc_aconst_null, opc_aload, opc_aload_0, opc_aload_1, opc_aload_2, opc_aload_3, opc_anewarray, opc_areturn, opc_arraylength, opc_astore, opc_astore_0, opc_astore_1, opc_astore_2, opc_astore_3, opc_athrow, opc_baload, opc_bastore, opc_bipush, opc_caload, opc_castore, opc_checkcast, opc_d2f, opc_d2i, opc_d2l, opc_dadd, opc_daload, opc_dastore, opc_dcmpg, opc_dcmpl, opc_dconst_0, opc_dconst_1, opc_ddiv, opc_dload, opc_dload_0, opc_dload_1, opc_dload_2, opc_dload_3, opc_dmul, opc_dneg, opc_drem, opc_dreturn, opc_dstore, opc_dstore_0, opc_dstore_1, opc_dstore_2, opc_dstore_3, opc_dsub, opc_dup, opc_dup2, opc_dup2_x1, opc_dup2_x2, opc_dup_x1, opc_dup_x2, opc_f2d, opc_f2i, opc_f2l, opc_fadd, opc_faload, opc_fastore, opc_fcmpg, opc_fcmpl, opc_fconst_0, opc_fconst_1, opc_fconst_2, opc_fdiv, opc_fload, opc_fload_0, opc_fload_1, opc_fload_2, opc_fload_3, opc_fmul, opc_fneg, opc_frem, opc_freturn, opc_fstore, opc_fstore_0, opc_fstore_1, opc_fstore_2, opc_fstore_3, opc_fsub, opc_getfield, opc_getstatic, opc_goto, opc_goto_w, opc_i2b, opc_i2c, opc_i2d, opc_i2f, opc_i2l, opc_i2s, opc_iadd, opc_iaload, opc_iand, opc_iastore, opc_iconst_0, opc_iconst_1, opc_iconst_2, opc_iconst_3, opc_iconst_4, opc_iconst_5, opc_iconst_m1, opc_idiv, opc_if_acmpeq, opc_if_acmpne, opc_if_icmpeq, opc_if_icmpge, opc_if_icmpgt, opc_if_icmple, opc_if_icmplt, opc_if_icmpne, opc_ifeq, opc_ifge, opc_ifgt, opc_ifle, opc_iflt, opc_ifne, opc_ifnonnull, opc_ifnull, opc_iinc, opc_iload, opc_iload_0, opc_iload_1, opc_iload_2, opc_iload_3, opc_imul, opc_ineg, opc_instanceof, opc_invokeinterface, opc_invokespecial, opc_invokestatic, opc_invokevirtual, opc_ior, opc_irem, opc_ireturn, opc_ishl, opc_ishr, opc_istore, opc_istore_0, opc_istore_1, opc_istore_2, opc_istore_3, opc_isub, opc_iushr, opc_ixor, opc_jsr, opc_jsr_w, opc_l2d, opc_l2f, opc_l2i, opc_ladd, opc_laload, opc_land, opc_lastore, opc_lcmp, opc_lconst_0, opc_lconst_1, opc_ldc, opc_ldc2_w, opc_ldc_w, opc_ldiv, opc_lload, opc_lload_0, opc_lload_1, opc_lload_2, opc_lload_3, opc_lmul, opc_lneg, opc_lookupswitch, opc_lor, opc_lrem, opc_lreturn, opc_lshl, opc_lshr, opc_lstore, opc_lstore_0, opc_lstore_1, opc_lstore_2, opc_lstore_3, opc_lsub, opc_lushr, opc_lxor, opc_monitorenter, opc_monitorexit, opc_multianewarray, opc_new, opc_newarray, opc_nop, opc_pop, opc_pop2, opc_putfield, opc_putstatic, opc_ret, opc_return, opc_saload, opc_sastore, opc_sipush, opc_swap, opc_tableswitch, opc_wide, opc_xxxunusedxxx, POO_ASCII_CONSTANT, POO_CLASS_CONSTANT, POO_DOUBLE_CONSTANT, POO_FLOAT_CONSTANT, POO_INTEGER_CONSTANT, POO_LONG_CONSTANT, POO_NAT_CONSTANT, POO_REF_CONSTANT, POO_STRING_CONSTANT, TYP_ADDRESS, TYP_DOUBLE, TYP_FLOAT, TYP_INT, TYP_LONG, TYP_REFERENCE, TYP_VOID
 
Constructor Summary
MultimethodInfo(DataInput in, ConstantPool cp, short number, String topConcMethColl)
          Constructs a multimethod info data structure from a class file stream
MultimethodInfo(short modifiers, String name, String type, String genericsignature, short number, String topConcMethColl, String[] exceptions, boolean deprecated)
          Constructs a multimethod info data structure from source.
 
Method Summary
 int functionNumber()
           
protected  int getSize()
           
 boolean hasSyntheticReceiver()
          Returns true if the method represented by this has a synthetic receiver parameter (in the first parameter position).
 String topConcreteMethodCollection()
           
 
Methods inherited from class org.multijava.util.classfile.MethodInfo
addAttribute, getCodeInfo, getExceptions, getGenericSignature, getName, getParameterCount, getSignature, getUniverseAnnotation, isDeprecated, isDispatcher, isMultimethodBody, isRedirector, isSynthetic, resolveConstants, setCodeInfo, setDeprecated, setExceptions, setGenericSignature, setName, setSignature, setSynthetic, write
 
Methods inherited from class org.multijava.util.classfile.Member
compareTo, equals, getModifiers, hashCode, setModifiers, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

number

private final short number

topConcMethColl

private final String topConcMethColl
Constructor Detail

MultimethodInfo

public MultimethodInfo(short modifiers,
                       String name,
                       String type,
                       String genericsignature,
                       short number,
                       String topConcMethColl,
                       String[] exceptions,
                       boolean deprecated)
Constructs a multimethod info data structure from source.

Parameters:
modifiers - access permission to and properties of the method
name - the simple name of the method
type - the multimethod signature
number - the generic function number, not part of the bytecode representation of this (it is stored in the parent gf_info), but convenient to have here
topConcMethColl - if this is an internal method of an external generic function, then topConcMethColl is the fully qualified name of the external generic function to which this belongs, otherwise topConcMethColl is null. This is not part of the bytecode representation of this (it is stored in the parent gf_info), but convenient to have here.
exceptions - the checked exceptions the method may throw
deprecated - is this method deprecated ? NOTE: There must be exactly one Exceptions attribute in each method_info structure.

MultimethodInfo

public MultimethodInfo(DataInput in,
                       ConstantPool cp,
                       short number,
                       String topConcMethColl)
                throws IOException,
                       ClassFileFormatException
Constructs a multimethod info data structure from a class file stream

Parameters:
in - the stream to read from
cp - the constant pool
number - the generic function number, not part of the bytecode representation of this (it is stored in the parent gf_info), but convenient to have here
topConcMethColl - if this is an internal method of an external generic function, then topConcMethColl is the fully qualified name of the external generic function to which this belongs, otherwise topConcMethColl is null. This is not part of the bytecode representation of this (it is stored in the parent gf_info), but convenient to have here.
Throws:
IOException - an io problem has occured
ClassFileFormatException - attempt to write a bad classfile info
Method Detail

getSize

protected int getSize()

functionNumber

public int functionNumber()

topConcreteMethodCollection

public String topConcreteMethodCollection()

hasSyntheticReceiver

public boolean hasSyntheticReceiver()
Returns true if the method represented by this has a synthetic receiver parameter (in the first parameter position).

Overrides:
hasSyntheticReceiver in class MethodInfo

JML

JML is Copyright (C) 1998-2002 by Iowa State University and is distributed under the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This release depends on code from the MultiJava project and is based in part on the Kopi project Copyright (C) 1990-99 DMS Decision Management Systems Ges.m.b.H.