mjc

org.multijava.mjc
Class CTypeVariable

java.lang.Object
  extended byorg.multijava.util.Utils
      extended byorg.multijava.mjc.CType
          extended byorg.multijava.mjc.CClassType
              extended byorg.multijava.mjc.CTypeVariable
All Implemented Interfaces:
Cloneable, Comparable, Constants, Constants, CTypeSignatureAppender
Direct Known Subclasses:
CCaptureType, CTypeVariableAlias

public class CTypeVariable
extends CClassType


Nested Class Summary
 
Nested classes inherited from class org.multijava.mjc.CType
CType.MethodSignature, CType.MethodSignatureParser, CType.StringBuffers, CType.TupleCollection
 
Field Summary
private  CClassType[] bounds
           
private  boolean checked
           
static CTypeVariable[] EMPTY
           
private  String name
           
 
Fields inherited from class org.multijava.mjc.CClassType
arguments, EMPTY_ARG, index, universe
 
Fields inherited from class org.multijava.mjc.CType
instance, isMethodTypeVariable, isTypeVariable, type
 
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
CTypeVariable(String name, CClassType[] bounds)
           
CTypeVariable(CTypeVariable tv)
           
 
Method Summary
protected  void appendDefinitionSignature(FastStringBuffer buffer)
          Appends the generic signature of the definition of this type variable to the specified buffer.
 void appendGenericSignature(FastStringBuffer buffer)
          Appends the generic signature (attribute) of this type variable to the specified buffer.
 void appendSignature(FastStringBuffer buffer)
          Appends the VM signature of this type variable to the specified buffer.
 boolean changesByErasure()
          Returns whether this type differs from its type erasure (JLS3 4.6).
 CType checkType(CContextType context)
          Checks that this type is valid, throwing an exception if it is not.
 boolean equals(Object other)
          Compares two objects for equality.
 boolean equals(CType other, CClassType[] subst)
           
 CClassType[] getBounds()
           
 String getIdent()
           
 int getIndex()
          return the index of this type variable
 int hashCode()
          Calculates the hash code for this
 boolean hasSameBound(CType other)
           
 boolean isAlwaysAssignableTo(CType dest)
           
 boolean isAlwaysAssignableTo(CType dest, boolean inst)
          Is this type assignable to the given type by assignment type conversion [JLS2 5.2] [JLS2 5.1.4]
 boolean isAlwaysAssignableTo(CType dest, CClassType[] subst)
           
 boolean isClassTypeVariable()
          Returns whether this type is a type variable introduced by a generic class declaration (JLS3 8.1.2) or a generic interface declaration (JLS3 9.1.2) as opposed to a method type variable.
 boolean isMethodTypeVariable()
           
 boolean isReifiableType()
          Returns whether this is a reifiable type (JLS3 4.7).
 boolean needsUncheckedConversion(CType dest)
          Returns whether unchecked conversion (JLS3 5.1.9) is required in order to convert from this type to the given type dest.
 void setIndex(int i)
          set the index of the type variable to the given int
 void setMethodTypeVariable(boolean isMethodTypeVariable)
           
 String toString()
          Transforms this type to a string also assignable loadedClassInfo, thisClassInfo; ensures \not_modified(loadedClassInfo);
 
Methods inherited from class org.multijava.mjc.CClassType
capture, clone, contains, createSubstitutedType, directlyVisibleTypes, equals, equals, getAllArguments, getArguments, getCClass, getCUniverse, getCUniverseJMLString, getCUniverseMJString, getCUniverseString, getErasure, getSize, getUniverseByteConstant, getVisibleTypesFrom, hasUnboundedWildcardTypeArgumentsOnly, hasWildcardTypeArgument, ident, implicitlyCastTo, isAlwaysAssignableToNoUniverses, isAssignableTo, isCastableTo, isChecked, isCheckedException, isClassType, isConcrete, isInterface, isLocalTo, isNestedType, isParameterizedType, isRawTypeInvocationOf, isReference, isValidTypeArgumentFor, needsUncheckedConversion, originalQualifiedName, plantDispatchTest, printArgs, qualifiedName, resolveValueType, setAllArguments, setClass, setCUniverse, toVerboseString
 
Methods inherited from class org.multijava.mjc.CType
checked, compareTo, genGenericMethodSignature, genGenericMethodSignature, genGenericMethodSignatureHelper, genMethodSignature, genMultimethodSignature, getCapture, getErasure, getGenericSignature, getLoadOpcode, getReturnOpcode, getSignature, getStoreOpcode, getTypeID, getValue, isArrayType, isBoolean, isCapture, isCodedAsInt, isFloatingPoint, isGenericType, isNumeric, isOrdinal, isPrimitive, isRawType, isTypeVariable, isValueType, isVoid, isWildcard, parseGenericTypeSignature, parseGenericTypeSignature, parseMethodSignature, parseMethodSignature, parseSignature, parseSignature, setTypeVariable, specializerSymbol, tupleToString, tupleToString
 
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
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

bounds

private CClassType[] bounds

name

private String name

checked

private boolean checked

EMPTY

public static final CTypeVariable[] EMPTY
Constructor Detail

CTypeVariable

public CTypeVariable(String name,
                     CClassType[] bounds)

CTypeVariable

public CTypeVariable(CTypeVariable tv)
Method Detail

getIdent

public String getIdent()
Overrides:
getIdent in class CType

getBounds

public CClassType[] getBounds()

checkType

public CType checkType(CContextType context)
                throws UnpositionedError
Description copied from class: CClassType
Checks that this type is valid, throwing an exception if it is not. For class types this check resolves type names into their fully qualified versions and sets the class parameter so that getCClass returns the appropriate singleton.

Overrides:
checkType in class CClassType
Throws:
UnpositionedError

isClassTypeVariable

public boolean isClassTypeVariable()
Description copied from class: CType
Returns whether this type is a type variable introduced by a generic class declaration (JLS3 8.1.2) or a generic interface declaration (JLS3 9.1.2) as opposed to a method type variable.

Overrides:
isClassTypeVariable in class CType

setMethodTypeVariable

public void setMethodTypeVariable(boolean isMethodTypeVariable)
Overrides:
setMethodTypeVariable in class CType

isMethodTypeVariable

public boolean isMethodTypeVariable()
Overrides:
isMethodTypeVariable in class CType

isReifiableType

public boolean isReifiableType()
Description copied from class: CType
Returns whether this is a reifiable type (JLS3 4.7).

Overrides:
isReifiableType in class CType

changesByErasure

public boolean changesByErasure()
Description copied from class: CType
Returns whether this type differs from its type erasure (JLS3 4.6).

Overrides:
changesByErasure in class CType

hashCode

public int hashCode()
Description copied from class: CClassType
Calculates the hash code for this

Overrides:
hashCode in class CClassType

equals

public boolean equals(Object other)
Description copied from class: CClassType
Compares two objects for equality.

Overrides:
equals in class CClassType

equals

public boolean equals(CType other,
                      CClassType[] subst)
Overrides:
equals in class CClassType

isAlwaysAssignableTo

public boolean isAlwaysAssignableTo(CType dest)
Description copied from class: CType
Is this type assignable to the given type by assignment type conversion [JLS2 5.2].

Overrides:
isAlwaysAssignableTo in class CClassType

isAlwaysAssignableTo

public boolean isAlwaysAssignableTo(CType dest,
                                    boolean inst)
Description copied from class: CClassType
Is this type assignable to the given type by assignment type conversion [JLS2 5.2] [JLS2 5.1.4]

Overrides:
isAlwaysAssignableTo in class CClassType

isAlwaysAssignableTo

public boolean isAlwaysAssignableTo(CType dest,
                                    CClassType[] subst)
Overrides:
isAlwaysAssignableTo in class CClassType

needsUncheckedConversion

public boolean needsUncheckedConversion(CType dest)
Description copied from class: CType
Returns whether unchecked conversion (JLS3 5.1.9) is required in order to convert from this type to the given type dest.

Overrides:
needsUncheckedConversion in class CClassType

getIndex

public int getIndex()
return the index of this type variable

Overrides:
getIndex in class CClassType

setIndex

public void setIndex(int i)
set the index of the type variable to the given int

Overrides:
setIndex in class CClassType

toString

public String toString()
Description copied from class: CClassType
Transforms this type to a string

 also
 assignable loadedClassInfo, thisClassInfo;
 ensures \not_modified(loadedClassInfo);
 

Overrides:
toString in class CClassType

hasSameBound

public boolean hasSameBound(CType other)

appendGenericSignature

public void appendGenericSignature(FastStringBuffer buffer)
Appends the generic signature (attribute) of this type variable to the specified buffer.

Specified by:
appendGenericSignature in interface CTypeSignatureAppender
Overrides:
appendGenericSignature in class CType

appendSignature

public void appendSignature(FastStringBuffer buffer)
Appends the VM signature of this type variable to the specified buffer.

Specified by:
appendSignature in interface CTypeSignatureAppender
Overrides:
appendSignature in class CClassType

appendDefinitionSignature

protected void appendDefinitionSignature(FastStringBuffer buffer)
Appends the generic signature of the definition of this type variable to the specified buffer.


mjc

mjc is Copyright (C) 2000-2004 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. mjc is based in part on the Kopi project Copyright (C) 1990-99 DMS Decision Management Systems Ges.m.b.H.