JML

org.multijava.mjc
Class CBinaryClass

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

public class CBinaryClass
extends CClass

This class represents a class read from a *.class file. It is primarily just a data structure, apart from methods for generating the qualified name and for determining whether the member is accessible from some class.

See Also:
CMember

Nested Class Summary
 
Nested classes inherited from class org.multijava.mjc.CClass
CClass.NoDupStrategy, CClass.Observer
 
Field Summary
protected  CClassContextType declContext
          This declaration context is used in top method searches.
private  boolean isAnonymous
          Indicates whether the class represented by this is anonymous.
private  boolean isMember
          Indicates whether the class represented by this is a member type.
private  boolean universeRuntimeSupport
          AHS: indicates if the class has been compiled with runtime support enabled.
private  String universeVersion
          AHS: The version of the encoding used to encode the universe type modifiers.
 
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.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
  CBinaryClass(Main compiler, ClassInfo classInfo)
          Constructs a class export from file.
protected CBinaryClass(Main compiler, ClassInfo classInfo, ClassCreator creator, SignatureParser signatureparser)
          Constructs a class export from file.
 
Method Summary
 void checkTypes(CField field, CType fieldtype, CContextType context)
           
 void checkTypes(CMethod method, CContextType context)
           
 CExtendedClassContext createExtendedClassContext(CContextType parent, CTypeVariable[] tvs)
           
private static CMemberHost getHostFrom(String clazz)
          Returns the host for the class named by the argument.
private static CClass getOuterClassFrom(String clazz)
          Returns the surrounding class for the inner class named by the argument.
 String getUniverseVersion()
          Return the version of the encoding used to encode the universe type modifiers.
 boolean hasUniverseRuntimeSupport()
          Return true if the class was compiled with run-time support enabled.
 boolean isAnonymous()
           
 boolean isMember()
          Indicates whether the class represented by this is a member type.
protected  CClassType[] loadInterfaces(String[] interfaces)
          Loads the interfaces specified by the Strings in the argument array (whether from other declarations in this compilation pass or from *.class files.)
protected  void processInnerClassesAttr(InnerClassInfo[] inners)
          Loads the inner classes specified by the info in the argument array (whether from other declarations in this compilation pass or from *.class files.)
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.
 
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, toString, 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.CMemberHost
host, ident, isAccessibleFrom
 

Field Detail

isAnonymous

private boolean isAnonymous
Indicates whether the class represented by this is anonymous.


isMember

private boolean isMember
Indicates whether the class represented by this is a member type. A member type is a type that is declared inside another type but that is not an anonymous class or a local type declaration.


declContext

protected final CClassContextType declContext
This declaration context is used in top method searches. It is needed within CBinaryMethod instances and is stored here so that it is available to subclasses that must instantiates such instances.


universeVersion

private String universeVersion
AHS: The version of the encoding used to encode the universe type modifiers.


universeRuntimeSupport

private boolean universeRuntimeSupport
AHS: indicates if the class has been compiled with runtime support enabled.

Constructor Detail

CBinaryClass

public CBinaryClass(Main compiler,
                    ClassInfo classInfo)
Constructs a class export from file.


CBinaryClass

protected CBinaryClass(Main compiler,
                       ClassInfo classInfo,
                       ClassCreator creator,
                       SignatureParser signatureparser)
Constructs a class export from file.

Method Detail

createExtendedClassContext

public CExtendedClassContext createExtendedClassContext(CContextType parent,
                                                        CTypeVariable[] tvs)

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.


checkTypes

public void checkTypes(CMethod method,
                       CContextType context)
                throws UnpositionedError
Throws:
UnpositionedError

checkTypes

public void checkTypes(CField field,
                       CType fieldtype,
                       CContextType context)
                throws UnpositionedError
Throws:
UnpositionedError

loadInterfaces

protected CClassType[] loadInterfaces(String[] interfaces)
Loads the interfaces specified by the Strings in the argument array (whether from other declarations in this compilation pass or from *.class files.)

Parameters:
interfaces - the names of the interfaces to load
Returns:
an array of the types of the interfaces

processInnerClassesAttr

protected final void processInnerClassesAttr(InnerClassInfo[] inners)
Loads the inner classes specified by the info in the argument array (whether from other declarations in this compilation pass or from *.class files.)

Parameters:
inners - the info of the inner classes to load

getOuterClassFrom

private static CClass getOuterClassFrom(String clazz)
Returns the surrounding class for the inner class named by the argument.

Parameters:
clazz - the name of the inner class
Returns:
the class representing the surrounding class

getHostFrom

private static CMemberHost getHostFrom(String clazz)
Returns the host for the class named by the argument.

Parameters:
clazz - the name of the class
Returns:
the host for the named class

isAnonymous

public boolean isAnonymous()
Returns:
true if this class is anonymous

isMember

public boolean isMember()
Indicates whether the class represented by this is a member type. A member type is a type that is declared inside another type but that is not an anonymous class or a local type declaration.


getUniverseVersion

public String getUniverseVersion()
Return the version of the encoding used to encode the universe type modifiers. By AHS.

Overrides:
getUniverseVersion in class CClass

hasUniverseRuntimeSupport

public boolean hasUniverseRuntimeSupport()
Return true if the class was compiled with run-time support enabled. By AHS.


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.