mjc

org.multijava.mjc
Class CClassNameType

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

public class CClassNameType
extends CClassType

This class represents a class type when the class name first appears as a forward reference. The internal structure must be filled in later when enough information is available to find the corresponding class declaration.

See Also:
CType

Nested Class Summary
 
Nested classes inherited from class org.multijava.mjc.CType
CType.MethodSignature, CType.MethodSignatureParser, CType.StringBuffers, CType.TupleCollection
 
Field Summary
private  java.lang.String ident
           
(package private) static boolean ignoredJavaAlready
           
protected  java.lang.String maybeQualifiedName
           
private  java.lang.String originalQualifiedName
           
 
Fields inherited from class org.multijava.mjc.CClassType
arguments, EMPTY, 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_PURE, ACCESS_FLAG_ARRAY, ACCESS_FLAG_NAMES, AMID_JAVA_MATH, AMID_MAX, AMID_SAFE_MATH, CMP_VERSION, 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, 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_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
(package private) CClassNameType(java.lang.String maybeQualifiedName)
          Construct a class type.
(package private) CClassNameType(java.lang.String maybeQualifiedName, CUniverse univ, CClassType[][] arguments)
          Construct a class type.
 
Method Summary
 void appendGenericSignature(FastStringBuffer buff)
           
 CType checkType(CContextType context)
          Checks that this type is valid, throwing an exception if it is not.
(package private)  void forgetChecking()
           
 CClassType[][] getAllArguments()
          return the arguments of this type
 CClassType[] getArguments()
           
 CClass getCClass()
          Returns the class object associated with this type.
 java.lang.String getIdent()
           
 boolean isGenericType()
          check to see whether this class type is Generic or Not
 boolean isMethodTypeVariable()
           
 boolean isTypeVariable()
          Check if a type is a type variable
 java.lang.String originalQualifiedName()
           
 java.lang.String printArgs()
          Print the type arguments of this class type
 java.lang.String qualifiedName()
           
protected  void registerAsVisibleIn(CContextType context)
          Registers the type represented by this as being visible in the given context.
 void setAllArguments(CClassType[][] args)
           
protected  void setClass(CClass clazz)
          Sets the CClass singleton that goes with this class type and registers that this name type has been checked.
protected  void setClassFromNameOrDieTrying()
          Attempts to associate this type with a CClass singleton having the name given by maybeQualifiedName.
 void setIdent(java.lang.String id)
           
 java.lang.String toString()
          Transforms this type to a string
 
Methods inherited from class org.multijava.mjc.CClassType
appendSignature, clone, createSubstitutedType, directlyVisibleTypes, equals, equals, equals, equals, getCUniverse, getCUniverseJMLString, getCUniverseString, getErasure, getIndex, getSize, getUniverseByteConstant, getVisibleTypesFrom, hashCode, ident, implicitlyCastTo, isAlwaysAssignableTo, isAlwaysAssignableTo, isAlwaysAssignableTo, isAlwaysAssignableTo, isAlwaysAssignableToNoUniverses, isAssignableTo, isCastableTo, isChecked, isCheckedException, isClassType, isConcrete, isInterface, isLocalTo, isNestedType, isReference, plantDispatchTest, resolveValueType, setCUniverse, setIndex, toVerboseString
 
Methods inherited from class org.multijava.mjc.CType
checked, compareTo, genGenericMethodSignature, genGenericMethodSignature, genGenericMethodSignatureHelper, genMethodSignature, genMultimethodSignature, getGenericSignature, getLoadOpcode, getReturnOpcode, getSignature, getStoreOpcode, getTypeID, getValue, isArrayType, isBoolean, isCodedAsInt, isFloatingPoint, isNumeric, isOrdinal, isPrimitive, isValueType, isVoid, parseGenericTypeSignature, parseGenericTypeSignature, parseMethodSignature, parseMethodSignature, parseSignature, parseSignature, setMethodTypeVariable, 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

ignoredJavaAlready

static boolean ignoredJavaAlready

ident

private java.lang.String ident

maybeQualifiedName

protected java.lang.String maybeQualifiedName

originalQualifiedName

private final java.lang.String originalQualifiedName
Constructor Detail

CClassNameType

CClassNameType(java.lang.String maybeQualifiedName)
Construct a class type.


CClassNameType

CClassNameType(java.lang.String maybeQualifiedName,
               CUniverse univ,
               CClassType[][] arguments)
Construct a class type. Package accessible since clients should call CTopLevel.getTypeRep(name,isFullyQualified) to get a singleton for the given name.

Parameters:
maybeQualifiedName - the name of the class, perhaps just partially qualified or not qualified at all, but with '/' not '.' separators if any separators are present
See Also:
CClassType#lookup(String,boolean)
Method Detail

toString

public java.lang.String toString()
Transforms this type to a string

Overrides:
toString in class CClassType

printArgs

public java.lang.String printArgs()
Print the type arguments of this class type

Overrides:
printArgs in class CClassType

appendGenericSignature

public void appendGenericSignature(FastStringBuffer buff)
Specified by:
appendGenericSignature in interface CTypeSignatureAppender
Overrides:
appendGenericSignature in class CType

qualifiedName

public java.lang.String qualifiedName()
Overrides:
qualifiedName in class CClassType

originalQualifiedName

public java.lang.String originalQualifiedName()
Overrides:
originalQualifiedName in class CClassType

getCClass

public CClass getCClass()
Returns the class object associated with this type. If this type was never checked (i.e., associated with a CClass singleton), then check it!

Overrides:
getCClass in class CClassType
Returns:
the class object associated with this type

checkType

public CType checkType(CContextType context)
                throws UnpositionedError
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
Parameters:
context - the context in which this type was declared
Throws:
UnpositionedError - this unpositioned error should be positioned by the calling node of the AST, typically by calling the addPosition method of UnpositionedError

registerAsVisibleIn

protected final void registerAsVisibleIn(CContextType context)
                                  throws UnpositionedError
Registers the type represented by this as being visible in the given context. Does nothing if context == null.

 requires maybeQualifiedName == null;
 

Throws:
UnpositionedError

setClassFromNameOrDieTrying

protected void setClassFromNameOrDieTrying()
                                    throws UnpositionedError
Attempts to associate this type with a CClass singleton having the name given by maybeQualifiedName. Called after all other options for finding the class have been exhausted.

Throws:
UnpositionedError - if singleton cannot be found
See Also:
maybeQualifiedName, CTopLevel.loadClass(String)

setClass

protected void setClass(CClass clazz)
Sets the CClass singleton that goes with this class type and registers that this name type has been checked.

Overrides:
setClass in class CClassType
Parameters:
clazz - the CClass singleton that goes with this class type

forgetChecking

void forgetChecking()

isGenericType

public boolean isGenericType()
check to see whether this class type is Generic or Not

Overrides:
isGenericType in class CType

getArguments

public CClassType[] getArguments()
Overrides:
getArguments in class CClassType

getAllArguments

public CClassType[][] getAllArguments()
Description copied from class: CClassType
return the arguments of this type

Overrides:
getAllArguments in class CClassType

setAllArguments

public void setAllArguments(CClassType[][] args)
Overrides:
setAllArguments in class CClassType

isTypeVariable

public boolean isTypeVariable()
Description copied from class: CType
Check if a type is a type variable

Overrides:
isTypeVariable in class CType

isMethodTypeVariable

public boolean isMethodTypeVariable()
Overrides:
isMethodTypeVariable in class CType

getIdent

public java.lang.String getIdent()
Overrides:
getIdent in class CType

setIdent

public void setIdent(java.lang.String id)

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.