at.dms.kjc
Class JFieldDeclaration

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.JFieldDeclaration
All Implemented Interfaces:
Constants, DeepCloneable, Finalizable, Serializable

public class JFieldDeclaration
extends JMemberDeclaration

This class represents a java class in the syntax tree

See Also:
Serialized Form

Field Summary
protected  JVariableDefinition variable
           
 
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 JFieldDeclaration()
           
  JFieldDeclaration(JVariableDefinition variable)
           
  JFieldDeclaration(TokenReference where, JVariableDefinition variable, JavadocComment javadoc, JavaStyleComment[] comments)
          Construct a node in the parsing tree
 
Method Summary
 Object accept(AttributeVisitor p)
          Accepts the specified attribute visitor
 void accept(KjcVisitor p)
          Accepts the specified visitor
 void analyse(CBodyContext context)
          Analyses the statement (semantically).
 CSourceField checkInterface(CClassContext 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 sub classes must check modifiers and call checkInterface(super)
 Object deepClone()
          Returns a deep clone of this object.
protected  void deepCloneInto(JFieldDeclaration other)
          Clones all fields of this into
static JFieldDeclaration[] EMPTY()
           
 void genCode(CodeSequence code)
          Generates a sequence of bytescodes
 CType getType()
          Returns the type of this field
 JVariableDefinition getVariable()
           
 boolean hasInitializer()
          Returns true if this field declarator has initializer (should be initialized)
 boolean needInitialization()
          Returns true if this field need to be initialized WARNING: this method return true when initial value corresponds to a default value ====> a second check should be made after calling "analyse" to ensure that an initialization is really needed
 void setValue(JExpression expr)
          Sets the initial value of this.
 void setVariable(JVariableDefinition _variable)
          Allow setting a new variable name.
 
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

variable

protected JVariableDefinition variable
Constructor Detail

JFieldDeclaration

protected JFieldDeclaration()

JFieldDeclaration

public JFieldDeclaration(TokenReference where,
                         JVariableDefinition variable,
                         JavadocComment javadoc,
                         JavaStyleComment[] comments)
Construct a node in the parsing tree

Parameters:
where - the line of this node in the source code
variable - the variable definition
javadoc - is this field deprecated
comments - comments in the source text

JFieldDeclaration

public JFieldDeclaration(JVariableDefinition variable)
Method Detail

hasInitializer

public boolean hasInitializer()
Returns true if this field declarator has initializer (should be initialized)


getType

public CType getType()
Returns the type of this field


needInitialization

public boolean needInitialization()
Returns true if this field need to be initialized WARNING: this method return true when initial value corresponds to a default value ====> a second check should be made after calling "analyse" to ensure that an initialization is really needed


getVariable

public JVariableDefinition getVariable()

setVariable

public void setVariable(JVariableDefinition _variable)
Allow setting a new variable name. For performing variable renaming in situ.

Parameters:
_variable - The new variable definition

checkInterface

public CSourceField checkInterface(CClassContext 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 sub classes must check modifiers and call checkInterface(super)

Parameters:
context -
Returns:
??
Throws:
PositionedError - an error with reference to the source file

analyse

public void analyse(CBodyContext context)
             throws PositionedError
Analyses the statement (semantically).

Parameters:
context - the analysis context
Throws:
PositionedError - the analysis detected an error

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

setValue

public void setValue(JExpression expr)
Sets the initial value of this.


genCode

public void genCode(CodeSequence code)
Generates a sequence of bytescodes

Parameters:
code - the code list

EMPTY

public static JFieldDeclaration[] EMPTY()

deepClone

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

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

deepCloneInto

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