at.dms.kjc
Class JClassDeclaration

java.lang.Object
  extended by at.dms.util.Utils
      extended by at.dms.compiler.Phylum
          extended by at.dms.kjc.JPhylum
              extended by at.dms.kjc.JMemberDeclaration
                  extended by at.dms.kjc.JTypeDeclaration
                      extended by at.dms.kjc.JClassDeclaration
All Implemented Interfaces:
Constants, DeepCloneable, Finalizable, Serializable

public class JClassDeclaration
extends JTypeDeclaration

This class represents a java class in the syntax tree

See Also:
Serialized Form

Field Summary
static JClassDeclaration[] EMPTY
           
protected  String superName
           
 
Fields inherited from class at.dms.kjc.JTypeDeclaration
body, fields, ident, inners, instanceInit, interfaces, methods, modifiers, sourceClass, statInit
 
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 JClassDeclaration()
           
  JClassDeclaration(TokenReference where, int modifiers, String ident, CClassType superClass, CClassType[] interfaces, JFieldDeclaration[] fields, JMethodDeclaration[] methods, JTypeDeclaration[] inners, JPhylum[] initializers, JavadocComment javadoc, JavaStyleComment[] comment)
          Constructs a class declaration node in the syntax tree.
 
Method Summary
 Object accept(AttributeVisitor p)
          Accepts the specified attribute visitor
 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 Exceptions are not allowed here, this pass is just a tuning pass in order to create informations about exported elements such as Classes, Interfaces, Methods, Constructors and Fields
 void checkTypeBody(CContext context)
          checkTypeBody Check expression and evaluate and alter context
 void compileStaticInitializer(CClassContext context)
           
 Object deepClone()
          Returns a deep clone of this object.
protected  void deepCloneInto(JClassDeclaration other)
          Clones all fields of this into
 void genInnerJavaCode(KjcPrettyPrinter p)
          Generate the code in pure java form It is useful to debug and tune compilation process
 CSourceClass getSourceClass()
          Gets the CSourceClass
 void setInterfaces(CClassType[] interfaces)
          Sets the super class
 void setSuperClass(CClassType superClass)
          Sets the super class
 
Methods inherited from class at.dms.kjc.JTypeDeclaration
addMethod, addOuterThis, checkInterface, deepCloneInto, generateInterface, getDefaultConstructor, getFields, getIdent, getMethods, getModifiers, getOwner, isNested, setDefaultConstructor, setIdent, setModifiers
 
Methods inherited from class at.dms.kjc.JMemberDeclaration
deepCloneInto, genComments, genComments1, getCClass, getField, getMethod, isDeprecated, setInterface
 
Methods inherited from class at.dms.kjc.JPhylum
assertMutable, check, check, check, check, deepCloneInto, fail, setLineNumber
 
Methods inherited from class at.dms.compiler.Phylum
deepCloneInto, getTokenReference, setTokenReference
 
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, toString, wait, wait, wait
 

Field Detail

superName

protected String superName

EMPTY

public static final JClassDeclaration[] EMPTY
Constructor Detail

JClassDeclaration

protected JClassDeclaration()

JClassDeclaration

public JClassDeclaration(TokenReference where,
                         int modifiers,
                         String ident,
                         CClassType superClass,
                         CClassType[] interfaces,
                         JFieldDeclaration[] fields,
                         JMethodDeclaration[] methods,
                         JTypeDeclaration[] inners,
                         JPhylum[] initializers,
                         JavadocComment javadoc,
                         JavaStyleComment[] comment)
Constructs a class declaration node in the syntax tree.

Parameters:
where - the line of this node in the source code
modifiers - the list of modifiers of this class
ident - the simple name of this class
superClass - the super class of this class
interfaces - the interfaces implemented by this class
fields - the fields defined by this class
methods - the methods defined by this class
inners - the inner classes defined by this class
initializers - the class and instance initializers defined by this class
javadoc - java documentation comments
comment - other comments in the source code
Method Detail

getSourceClass

public CSourceClass getSourceClass()
Gets the CSourceClass


setSuperClass

public void setSuperClass(CClassType superClass)
Sets the super class


setInterfaces

public void setInterfaces(CClassType[] interfaces)
Sets the super class


checkInterface

public void checkInterface(CContext context)
                    throws PositionedError
Second pass (quick), check interface looks good Exceptions are not allowed here, this pass is just a tuning pass in order to create informations about exported elements such as Classes, Interfaces, Methods, Constructors and Fields

Specified by:
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

compileStaticInitializer

public void compileStaticInitializer(CClassContext context)
                              throws PositionedError
Throws:
PositionedError

checkTypeBody

public void checkTypeBody(CContext context)
                   throws PositionedError
checkTypeBody 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

accept

public void accept(KjcVisitor p)
Accepts the specified visitor

Overrides:
accept in class JMemberDeclaration
Parameters:
p - the visitor

accept

public Object accept(AttributeVisitor p)
Accepts the specified attribute 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

deepClone

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

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

deepCloneInto

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