at.dms.kjc
Class CBadClass

java.lang.Object
  extended by at.dms.util.Utils
      extended by at.dms.kjc.CMember
          extended by at.dms.kjc.CClass
              extended by at.dms.kjc.CBadClass
All Implemented Interfaces:
Constants, DeepCloneable, Serializable

public class CBadClass
extends CClass

This class represents an undefined class (something that comes from a bad classfile) This class is not usable to anything, so it will sooner or later produce a comprehensive error.

See Also:
Serialized Form

Field Summary
 
Fields inherited from class at.dms.kjc.CClass
CLS_UNDEFINED
 
Fields inherited from class at.dms.kjc.CMember
owner
 
Fields inherited from class at.dms.util.Utils
EMPTY_LIST, getForLoopCallers
 
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_BIT, TID_BOOLEAN, TID_BYTE, TID_CHAR, TID_CLASS, TID_DOUBLE, TID_FLOAT, TID_INT, TID_LONG, TID_SHORT, TID_VECTOR, TID_VOID, VECTOR_EMPTY
 
Fields inherited from interface at.dms.classfile.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INLINE, ACC_INTERFACE, ACC_NATIVE, 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 CBadClass()
           
  CBadClass(String qualifiedName)
          Constructs a class export from file
 
Method Summary
 void collectAbstractMethods(Vector v)
          collectAbstractMethods search for a matching method with the provided type parameters look in parent hierarchy as needed
 void collectInterfaceMethods(Vector v)
          collectInterfaceMethods search for a matching method with the provided type parameters look in parent hierarchy as needed
 Object deepClone()
          Returns a deep clone of this object.
protected  void deepCloneInto(CBadClass other)
          Clones all fields of this into
 boolean descendsFrom(CClass from)
          descendsFrom
 void genClassFile(File destination)
          Generate the code in a class file
 CMethod[] getAbstractMethods()
          Returns a list of abstract methods
 CField getField(String ident)
          Returns the field with the specified name.
 boolean isAccessible(CClass from)
          Checks whether this type is accessible from the specified class (JLS 6.6).
 CClass lookupClass(CClass caller, String name)
          This can be used to see if a given class name is visible inside of this file.
 CField lookupField(String name)
          lookupField search for a field look in parent hierarchy as needed
 CMethod lookupMethod(String name, CType[] params)
          lookupMethod search for a matching method with the provided type parameters look in parent hierarchy as needed
 CMethod[] lookupSuperMethod(String name, CType[] params)
          lookupSuperMethod search for a matching method with the provided type parameters look in parent hierarchy as needed
 
Methods inherited from class at.dms.kjc.CClass
addField, close, collectApplicableMethods, deepCloneInto, genConstructorArray, genOuterSyntheticParams, genSyntheticParamsFromExplicitSuper, getApplicableMethods, getCClass, getFieldCount, getFields, getIdent, getImplementingMethod, getInnerClasses, getInterfaces, getMethods, getPackage, getQualifiedName, getRawFields, getSourceFile, getSuperClass, getType, hasOuterThis, isAbstract, isAnonymous, isClass, isDefinedInside, isInterface, isNested, isQualifiedAndAnonymous, lookupField, lookupMethod, lookupSuperField, setHasOuterThis, setInnerClasses, setQualifiedAndAnonymous, setSuperClass, setType, toString
 
Methods inherited from class at.dms.kjc.CMember
deepCloneInto, getField, getIdent, getJavaName, getMethod, getModifiers, getOwner, getPrefixName, isDeprecated, isFinal, isPrivate, isProtected, isPublic, isStatic, setModifiers
 
Methods inherited from class at.dms.util.Utils
asPercent, cellMathEquivalent, cMathEquivalent, cppMathEquivalent, deepCloneInto, equalArrays, fail, getEnvironmentVariable, getExpression, hasPeeks, initArray, initArray, initLiteralArray, intArrayToList, isMathMethod, isUniform, kopi_assert, kopi_assert, makeCountdownForLoop, makeDotFileName, makeForLoop, makeForLoop, makeForLoop, makeForLoopFieldIndex, makeForLoopLocalIndex, nextPow2, passThruParens, peelMarkers, popBeforePeek, readFile, removeUnusedPops, replaceAll, setupDotFileName, simplifyMathMethod, splitQualifiedName, splitQualifiedName, toArray, toIntArray, toVector, voidToInt, writeFile
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

CBadClass

protected CBadClass()

CBadClass

public CBadClass(String qualifiedName)
Constructs a class export from file

Method Detail

descendsFrom

public boolean descendsFrom(CClass from)
descendsFrom

Overrides:
descendsFrom in class CClass
Parameters:
from - an other CClass
Returns:
true if this class inherit from "from" or equals "from"

getField

public final CField getField(String ident)
Description copied from class: CClass
Returns the field with the specified name.

Overrides:
getField in class CClass
Parameters:
ident - the name of the field
Returns:
the field

lookupClass

public CClass lookupClass(CClass caller,
                          String name)
This can be used to see if a given class name is visible inside of this file. This includes globally-qualified class names that include their package and simple names that are visible thanks to some previous import statement or visible because they are in this file. If one is found, that entry is returned, otherwise null is returned.

Overrides:
lookupClass in class CClass
Parameters:
caller - the class of the caller
name - a TypeName (6.5.2)

lookupMethod

public CMethod lookupMethod(String name,
                            CType[] params)
lookupMethod search for a matching method with the provided type parameters look in parent hierarchy as needed

Parameters:
name - method name
params - method parameters
Throws:
UnpositionedError - this error will be positioned soon

lookupSuperMethod

public CMethod[] lookupSuperMethod(String name,
                                   CType[] params)
lookupSuperMethod search for a matching method with the provided type parameters look in parent hierarchy as needed

Overrides:
lookupSuperMethod in class CClass
Parameters:
name - method name
params - method parameters
Throws:
UnpositionedError - this error will be positioned soon

lookupField

public CField lookupField(String name)
lookupField search for a field look in parent hierarchy as needed

Parameters:
name - method name
Throws:
UnpositionedError - this error will be positioned soon

isAccessible

public boolean isAccessible(CClass from)
Description copied from class: CClass
Checks whether this type is accessible from the specified class (JLS 6.6).

Overrides:
isAccessible in class CClass
Returns:
true if this member is accessible

getAbstractMethods

public CMethod[] getAbstractMethods()
Returns a list of abstract methods

Overrides:
getAbstractMethods in class CClass

collectInterfaceMethods

public void collectInterfaceMethods(Vector v)
collectInterfaceMethods search for a matching method with the provided type parameters look in parent hierarchy as needed

Parameters:
v - method name

collectAbstractMethods

public void collectAbstractMethods(Vector v)
collectAbstractMethods search for a matching method with the provided type parameters look in parent hierarchy as needed

Parameters:
v - method name

genClassFile

public void genClassFile(File destination)
Generate the code in a class file

Parameters:
destination -

deepClone

public Object deepClone()
Returns a deep clone of this object.

Specified by:
deepClone in interface DeepCloneable
Overrides:
deepClone in class CClass

deepCloneInto

protected void deepCloneInto(CBadClass other)
Clones all fields of this into
other