at.dms.kjc
Class CClassType

java.lang.Object
  |
  +--at.dms.util.Utils
        |
        +--at.dms.kjc.CType
              |
              +--at.dms.kjc.CClassType
All Implemented Interfaces:
Constants, Constants
Direct Known Subclasses:
CArrayType, CClassNameType, CNullType

public class CClassType
extends CType

This class represents class types in the type structure.


Field Summary
static CClassType[] EMPTY
          Constant for an empty aray of CClassType.
 
Fields inherited from class at.dms.kjc.CType
signatureParser, type
 
Fields inherited from class at.dms.util.Utils
DBG_LEVEL_HIGH, DBG_LEVEL_LOW, DBG_LEVEL_NO
 
Fields inherited from interface at.dms.kjc.Constants
CMP_VERSION, JAV_CLASS, JAV_CLONE, JAV_CLONEABLE, JAV_CONSTRUCTOR, JAV_ERROR, JAV_EXCEPTION, JAV_INIT, JAV_LENGTH, JAV_NAME_SEPARATOR, JAV_OBJECT, JAV_OUTER_THIS, JAV_RUNTIME, JAV_RUNTIME_EXCEPTION, JAV_STATIC_INIT, JAV_STRING, JAV_STRINGBUFFER, JAV_THIS, JAV_THROWABLE, OPE_BAND, OPE_BNOT, OPE_BOR, OPE_BSR, OPE_BXOR, OPE_EQ, OPE_GE, OPE_GT, OPE_LE, OPE_LNOT, 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_SHORT, TID_VOID
 
Fields inherited from interface at.dms.classfile.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_NBR_FLAGS, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, ATT_CODE, ATT_CONSTANTVALUE, ATT_DEPRECATED, ATT_EXCEPTIONS, ATT_GENERIC, ATT_INNERCLASSES, ATT_LINENUMBERTABLE, ATT_LOCALVARIABLETABLE, ATT_SOURCEFILE, ATT_SYNTHETIC, 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_dup_x1, opc_dup_x2, opc_dup2, opc_dup2_x1, opc_dup2_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_ldc_w, opc_ldc2_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
protected CClassType()
          Construct a class type that is yet unresolved; this constructor is protected and for use by subclasses.
  CClassType(CClass clazz)
          Construct a class type.
 
Method Summary
protected  void appendSignature(FastStringBuffer buffer)
          Transforms this type to a string.
 void checkType(CContext context)
          Check that type is valid.
 boolean equals(CType other)
          equals.
 CClass getCClass()
          Returns the class object associated with this type If this type was never checked (read from class files) check it!
 java.lang.String getIdent()
           
 java.lang.String getQualifiedName()
          Returns the qualified name of the class of this class type.
 int getSize()
          Returns the size used in stack by value of this type.
 boolean implicitlyCastTo(CType destination)
          implicitlyCastTo.
 boolean isAssignableTo(CType destination)
          isAssignableTo
 boolean isCastableTo(CType destination)
          Can this type be converted to the specified type by casting conversion (JLS 5.5) ?
protected  boolean isChecked()
          Returns whether the type is checked.
 boolean isCheckedException()
          Whether this is an exception that should be declared.
 boolean isClassType()
          Check if a type is a class type.
 boolean isReference()
          Check if a type is a reference.
static CClassType lookup(java.lang.String className)
          Looks up CClassType object for the qualifiedName using a static Map.
static CClassType lookup(java.lang.String className, InnerClassInfo extraInfo)
          Looks up CClassType object for the qualifiedName using a static Map.
protected  void setClass(CClass clazz)
          Sets the CClass export belonging to this CClassType.
protected  void setClassFromName(java.lang.String name, InnerClassInfo extraInfo)
          Tries to set the CClass export belonging to this CClassType by loading it from the top level.
 java.lang.String toString()
          Transforms this type to a string.
 
Methods inherited from class at.dms.kjc.CType
checked, genMethodSignature, getLoadOpcode, getReturnOpcode, getSignature, getStoreOpcode, getTypeID, isArrayType, isCodedHasInt, isFloatingPoint, isNumeric, isOrdinal, isPrimitive, parseMethodSignature, parseSignature
 
Methods inherited from class at.dms.util.Utils
assert, assert, fail, fail, hasFlag, hasMoreThanOneFlag, hasOtherFlags, splitQualifiedName, splitQualifiedName, vectorToArray, vectorToIntArray
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

EMPTY

public static final CClassType[] EMPTY
Constant for an empty aray of CClassType.
Constructor Detail

CClassType

protected CClassType()
Construct a class type that is yet unresolved; this constructor is protected and for use by subclasses.

CClassType

public CClassType(CClass clazz)
Construct a class type.
Parameters:
clazz - The class that will be represented by this type.
Method Detail

lookup

public static CClassType lookup(java.lang.String className)
Looks up CClassType object for the qualifiedName using a static Map.

lookup

public static CClassType lookup(java.lang.String className,
                                InnerClassInfo extraInfo)
Looks up CClassType object for the qualifiedName using a static Map.

isChecked

protected boolean isChecked()
Returns whether the type is checked.

setClass

protected void setClass(CClass clazz)
Sets the CClass export belonging to this CClassType.

setClassFromName

protected void setClassFromName(java.lang.String name,
                                InnerClassInfo extraInfo)
Tries to set the CClass export belonging to this CClassType by loading it from the top level.

equals

public boolean equals(CType other)
equals.
Overrides:
equals in class CType

toString

public java.lang.String toString()
Transforms this type to a string.
Overrides:
toString in class CType

appendSignature

protected void appendSignature(FastStringBuffer buffer)
Transforms this type to a string.
Overrides:
appendSignature in class CType

getIdent

public java.lang.String getIdent()
Returns:
the short name of this class

getQualifiedName

public java.lang.String getQualifiedName()
Returns the qualified name of the class of this class type.

getSize

public int getSize()
Returns the size used in stack by value of this type.
Overrides:
getSize in class CType

isReference

public boolean isReference()
Check if a type is a reference.
Overrides:
isReference in class CType
Returns:
whether this is a reference type.

isClassType

public boolean isClassType()
Check if a type is a class type.
Overrides:
isClassType in class CType
Returns:
whether this is a class type.

getCClass

public CClass getCClass()
Returns the class object associated with this type If this type was never checked (read from class files) check it!
Overrides:
getCClass in class CType
Returns:
the class object associated with this type

checkType

public void checkType(CContext context)
               throws UnpositionedError
Check that type is valid.
Overrides:
checkType in class CType
Parameters:
context - The context (may be be null)
Throws:
UnpositionedError - This error will be positioned soon.

isAssignableTo

public boolean isAssignableTo(CType destination)
isAssignableTo
Overrides:
isAssignableTo in class CType
Parameters:
destination - The destination type.
Returns:
Assignment is valid ?

isCastableTo

public boolean isCastableTo(CType destination)
Can this type be converted to the specified type by casting conversion (JLS 5.5) ?
Overrides:
isCastableTo in class CType
Parameters:
destination - The destination type.
Returns:
true iff the casting conversion is valid.

implicitlyCastTo

public boolean implicitlyCastTo(CType destination)
implicitlyCastTo.
Overrides:
implicitlyCastTo in class CType
Parameters:
destination - The expression type to cast to.
Returns:
Cast is valid?

isCheckedException

public boolean isCheckedException()
Whether this is an exception that should be declared.
Overrides:
isCheckedException in class CType
Following copied from class: at.dms.kjc.CType
Returns:
true if this type corrspond to a checked exception