JML

org.multijava.mjc
Class CBinaryGFCollection

java.lang.Object
  extended byorg.multijava.util.Utils
      extended byorg.multijava.mjc.CMember
          extended byorg.multijava.mjc.CClass
              extended byorg.multijava.mjc.CBinaryClass
                  extended byorg.multijava.mjc.CBinaryGFCollection
All Implemented Interfaces:
CGenericFunctionCollection, Cloneable, CMemberHost, Comparable, Constants, Constants

public class CBinaryGFCollection
extends CBinaryClass
implements CGenericFunctionCollection

This class represents a single generic function collection as read from a .class file.


Nested Class Summary
 
Nested classes inherited from class org.multijava.mjc.CClass
CClass.NoDupStrategy, CClass.Observer
 
Field Summary
private  CGenericFunctionCollection.Impl collection
          Delegee for the storage of augmenting methods and the application thereof.
 
Fields inherited from class org.multijava.mjc.CBinaryClass
declContext
 
Fields inherited from class org.multijava.mjc.CClass
CLS_UNDEFINED, dispClassTypes, methods
 
Fields inherited from class org.multijava.mjc.CMember
 
Fields inherited from class org.multijava.util.Utils
DBG_LEVEL_HIGH, DBG_LEVEL_LOW, DBG_LEVEL_NO
 
Fields inherited from interface org.multijava.mjc.CGenericFunctionCollection
GF_UNDEFINED
 
Fields inherited from interface org.multijava.mjc.Constants
ACC_MODIFIER_FLAGS_MASK, ACC_NON_NULL, ACC_NON_NULL_BY_DEFAULT, ACC_NULLABLE, ACC_NULLABLE_BY_DEFAULT, ACC_PURE, ACCESS_FLAG_ARRAY, ACCESS_FLAG_NAMES, AMID_JAVA_MATH, AMID_MAX, AMID_SAFE_MATH, CMP_VERSION, IMPLICITLY_NON_NULL, JAV_ASSERTION_ERROR, JAV_CLASS, JAV_CLASSLOADER, JAV_CLASSNOTFOUND_EXCEPTION, JAV_CLONE, JAV_CLONEABLE, JAV_CONSTRUCTOR, JAV_ERROR, JAV_EXCEPTION, JAV_INIT, JAV_LENGTH, JAV_NAME_SEPARATOR, JAV_NOCLASSDEFFOUND_ERROR, JAV_OBJECT, JAV_OUTER_THIS, JAV_RMJ_RUNTIME_EXCEPTION, JAV_RUNTIME, JAV_RUNTIME_EXCEPTION, JAV_SERIALIZABLE, JAV_STATIC_INIT, JAV_STRING, JAV_STRINGBUFFER, JAV_SUPER, JAV_THIS, JAV_THROWABLE, MJ_ANCHOR, NULLITY_MODS, OPE_BAND, OPE_BNOT, OPE_BOR, OPE_BSR, OPE_BXOR, OPE_EQ, OPE_GE, OPE_GT, OPE_LAND, OPE_LE, OPE_LNOT, OPE_LOR, OPE_LT, OPE_MINUS, OPE_NE, OPE_PERCENT, OPE_PLUS, OPE_POSTDEC, OPE_POSTINC, OPE_PREDEC, OPE_PREINC, OPE_SIMPLE, OPE_SL, OPE_SLASH, OPE_SR, OPE_STAR, TID_ARRAY, TID_BOOLEAN, TID_BYTE, TID_CHAR, TID_CLASS, TID_DOUBLE, TID_FLOAT, TID_INT, TID_LONG, TID_MAX, TID_SHORT, TID_VOID, UNIV_ARRAY_TMP, UNIV_TMP
 
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, 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
CBinaryGFCollection(Main compiler, ClassInfo file)
          Constructs a new generic function collection from a ClassInfo object.
 
Method Summary
 void applyAugmentationFor(CContextType context)
          Augments the classes given by the receivers of methods in this collection for the given context.
protected  void registerInstanceWithCache()
          Adds this instance to the appropriate cache to prevent an infinite regress if the initialization of this results in another request to re-read the class file.
 String toString()
           
 
Methods inherited from class org.multijava.mjc.CBinaryClass
checkTypes, checkTypes, createExtendedClassContext, getUniverseVersion, hasUniverseRuntimeSupport, isAnonymous, isMember, loadInterfaces, processInnerClassesAttr
 
Methods inherited from class org.multijava.mjc.CClass
accumLocalExtAndInheritedMethods, accumLocalInternalMethods, accumMostSpecificMethods, addBridgeMethod, addField, addRedirector, appendCustomAttributes, augmentWithMethod, checkBridgeMethod, checkTypeVariables, close, collectAbstractMethods, collectInterfaceMethods, compareTo, createClassInfo, descendsFrom, descendsFrom, directlyVisibleTypes, equals, fields, fieldsForCodeGen, findGetterMethod, findOrCreateGetterMethod, findOrCreateSetterMethod, genClassFile, genConstructorArray, genCustomAttributes, genFields, genGenericFunctions, genInnerInfo, genInners, genInterfaces, genMethods, genSyntheticParams, genSyntheticParamsForExplicitThis, getAbstractMethods, getAllInheritableMethods, getAllInheritedMethods, getAllMethods, getCClass, getCompiler, getDeclaredField, getFieldCount, getGenericSignature, getIdentFrom, getInnerClasses, getInterfaceMethods, getInterfaces, getNextAccessName, getNextSyntheticIndex, getSubstitution, getSubstitution, getSuperClass, getSuperSubstitution, getSuperType, getSyntheticParamsForExplicitSuper, getterOrSetterMethodFor, getType, getTypeVariables, hashCode, hasProtectedVisibilityIn, hasSyntheticOuterThis, initSession, innerClassesForAttribute, isAbstract, isClass, isCompilationUnit, isDefinedInside, isFieldRedefined, isGenericClass, isInnerClass, isInterface, isNestedType, lookupAllMethods, lookupClass, lookupField, lookupFieldHelper, lookupMethod, lookupMethodOrSet, lookupMethodsSpecializedByMethod, lookupMSAMethod, lookupOverloadedMethod, lookupSuperField, lookupTopConcreteMethod, lookupTypeVariable, memberNeedsPrivilegedAccess, methods, methodsForCodeGen, nestedDescendsFrom, noAssertionsYet, noPossiblyInnerAssertionsYet, packageName, protoMethods, qualifiedName, register, registerNestedType, rmjAnnotate, setAssertHelperMethod, setAssertStaticInitMethod, setCheckedInterfaces, setCheckedMembers, setInnerClasses, setSuperClass, setTypeVariables, sourceFile, syntheticOuterThisInaccessible, wrapSuperCallTo
 
Methods inherited from class org.multijava.mjc.CMember
access, addModifiers, deprecated, getCCompilationUnit, getField, getIdent, getJavaName, getMethod, getOwnerName, getQualNameWithSeparator, hasDefaultAccess, host, ident, isAccessibleFrom, isDeclaredNonNull, isDeprecated, isFinal, isLocalTo, isPrivate, isProtected, isPublic, isStatic, modifiers, owner, setModifiers
 
Methods inherited from class org.multijava.util.Utils
assertTrue, assertTrue, combineArrays, escapeString, escapeString, fail, fail, getFilePath, hasFlag, hasOtherFlags, parsePathParts, relativePathTo, splitQualifiedName, splitQualifiedName, stripJavaModifiers, stripNonJavaModifiers, stripPrivateModifier, unescapeString, vectorToArray, vectorToIntArray
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.multijava.mjc.CGenericFunctionCollection
qualifiedName
 
Methods inherited from interface org.multijava.mjc.CMemberHost
host, ident, isAccessibleFrom
 

Field Detail

collection

private CGenericFunctionCollection.Impl collection
Delegee for the storage of augmenting methods and the application thereof.

Constructor Detail

CBinaryGFCollection

public CBinaryGFCollection(Main compiler,
                           ClassInfo file)
Constructs a new generic function collection from a ClassInfo object.

Parameters:
file - the info from the file
Method Detail

registerInstanceWithCache

protected void registerInstanceWithCache()
Adds this instance to the appropriate cache to prevent an infinite regress if the initialization of this results in another request to re-read the class file. This method should be called at the start of the constructor before any recursive initialization the other types referenced by the class file. This method should also be overridden as necessary in subclasses so that their instances are added to the appropriate cache.

Overrides:
registerInstanceWithCache in class CBinaryClass

applyAugmentationFor

public void applyAugmentationFor(CContextType context)
Augments the classes given by the receivers of methods in this collection for the given context. For each method m in this collection, a mapping from the given context to m is added to the CClass representing m's receiver type.

Specified by:
applyAugmentationFor in interface CGenericFunctionCollection
Parameters:
context - the context in which the augmentation occurs

toString

public String toString()
Overrides:
toString in class CClass

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.