at.dms.kjc
Class JClassDeclaration

java.lang.Object
  |
  +--at.dms.util.Utils
        |
        +--at.dms.compiler.Phylum
              |
              +--at.dms.kjc.JPhylum
                    |
                    +--at.dms.kjc.JMemberDeclaration
                          |
                          +--at.dms.kjc.JTypeDeclaration
                                |
                                +--at.dms.kjc.JClassDeclaration
All Implemented Interfaces:
Constants, Constants

public class JClassDeclaration
extends JTypeDeclaration

This class represents a java class in the syntax tree.


Field Summary
protected  java.lang.String superName
          Name of superclass.
 
Fields inherited from class at.dms.kjc.JMemberDeclaration
ACCESSOR_PREFIX
 
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
JClassDeclaration(TokenReference where, int modifiers, java.lang.String ident, java.lang.String superName, CClassType[] interfaces, JFieldDeclaration[] fields, JMethodDeclaration[] methods, JTypeDeclaration[] inners, JPhylum[] initializers, JavadocComment javadoc, JavaStyleComment[] comment)
          Construct a node in the parsing tree.
 
Method Summary
 void accept(KjcVisitor p)
          Accepts the specified visitor
 void checkInitializers(CContext context)
          Check that initializers are correct.
 void checkInterface(CContext context)
          Second pass (quick), check interface looks good.
 void checkTransformedInterface(CContext context)
          Checks interface again after transformations have been applied.
 void checkTransformedTypeBody(CContext context)
          Check only the parts of the class that have changed because of the transformations.
 void checkTypeBody(CContext context)
          Check expression and evaluate and alter context.
 CClassContext createContext(CContext parent)
          Creates a CClassContext that takes this class as its class context.
 void genInnerJavaCode(KjcPrettyPrinter p)
          Generate the code in pure java form It is useful to debug and tune compilation process
 void setSuperClass(java.lang.String superName)
          Sets the super class.
 void transformType(CContext context)
          Transforms this type before code generation.
 
Methods inherited from class at.dms.kjc.JTypeDeclaration
addGeneratedBodyPart, addGeneratedField, addGeneratedInner, addGeneratedMethod, addOuterThis, checkInterface, generateInterface, getBody, getBodyList, getDefaultConstructor, getFieldList, getFields, getGeneratedFieldList, getGeneratedInnerList, getGeneratedMethodList, getIdent, getInnerList, getInners, getInstanceInitializer, getInterfaces, getMethodList, getMethods, getModifiers, getOwner, getSourceClass, getStaticInitializer, isAtTopLevel, setDefaultConstructor, setIdent, setInstanceInitializer, setInterfaces, setModifiers, setStaticInitializer
 
Methods inherited from class at.dms.kjc.JMemberDeclaration
checkOrder, genComments, getCClass, getField, getMethod, getModifierName, isDeprecated, isSynthetic, setInterface, setSynthetic
 
Methods inherited from class at.dms.kjc.JPhylum
check, check, check, check, fail
 
Methods inherited from class at.dms.compiler.Phylum
getTokenReference, setTokenReference
 
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, toString, wait, wait, wait
 

Field Detail

superName

protected java.lang.String superName
Name of superclass.
Constructor Detail

JClassDeclaration

public JClassDeclaration(TokenReference where,
                         int modifiers,
                         java.lang.String ident,
                         java.lang.String superName,
                         CClassType[] interfaces,
                         JFieldDeclaration[] fields,
                         JMethodDeclaration[] methods,
                         JTypeDeclaration[] inners,
                         JPhylum[] initializers,
                         JavadocComment javadoc,
                         JavaStyleComment[] comment)
Construct a node in the parsing tree.
Parameters:
where - the line of this node in the source code
context - the context in which this class is defined
modifiers - the list of modifiers of this class
ident - the short name of this class
superName - the name of super class of this class
interfaces - the name of this class's interfaces
javadoc - is this class deprecated
Method Detail

setSuperClass

public void setSuperClass(java.lang.String superName)
Sets the super class.

transformType

public void transformType(CContext context)
                   throws PositionedError
Transforms this type before code generation.
Overrides:
transformType in class JTypeDeclaration
Throws:
PositionedError - An error with reference to the source file./

checkInterface

public void checkInterface(CContext context)
                    throws PositionedError
Second pass (quick), check interface looks good. This pass is just a tuning pass in order to create informations about exported elements such as Classes, Interfaces, Methods, Constructors and Fields.
Overrides:
checkInterface in class JTypeDeclaration
Throws:
PositionedError - An error with reference to the source file.

checkInitializers

public void checkInitializers(CContext context)
                       throws PositionedError
Check that initializers are correct.
Overrides:
checkInitializers in class JTypeDeclaration
Throws:
PositionedError - An error with reference to the source file.

checkTransformedInterface

public void checkTransformedInterface(CContext context)
                               throws PositionedError
Checks interface again after transformations have been applied.

checkTransformedTypeBody

public void checkTransformedTypeBody(CContext context)
                              throws PositionedError
Check only the parts of the class that have changed because of the transformations. Only generated inner classes and methods (no constructors) are checked, not fields. (Because AgentJava doesn't generate fields in transformed classes, only in generated inner classes.)

checkTypeBody

public void checkTypeBody(CContext context)
                   throws PositionedError
Check expression and evaluate and alter context.
Overrides:
checkTypeBody in class JTypeDeclaration
Parameters:
context - The actual context of analyse.
Throws:
PositionedError - An error with reference to the source file.

createContext

public CClassContext createContext(CContext parent)
Creates a CClassContext that takes this class as its class context.
Overrides:
createContext in class JTypeDeclaration
Parameters:
parent - The parent context or null.
Returns:
A CClassContext that represents this context.

accept

public void accept(KjcVisitor p)
Accepts the specified visitor
Overrides:
accept in class JMemberDeclaration
Parameters:
p - the visitor

genInnerJavaCode

public void genInnerJavaCode(KjcPrettyPrinter p)
Generate the code in pure java form It is useful to debug and tune compilation process
Parameters:
p - the printwriter into the code is generated