|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectat.dms.util.Utils
at.dms.compiler.Phylum
at.dms.kjc.JPhylum
at.dms.kjc.JExpression
at.dms.kjc.JFieldAccessExpression
public class JFieldAccessExpression
JLS 15.11 Field Access Expression. A field access expression may access a field of an object or array.
Field Summary | |
---|---|
protected CField |
field
|
protected String |
ident
|
protected JExpression |
prefix
|
Fields inherited from class at.dms.kjc.JExpression |
---|
EMPTY |
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 |
Constructor Summary | |
---|---|
protected |
JFieldAccessExpression()
|
|
JFieldAccessExpression(JExpression prefix,
String ident)
|
|
JFieldAccessExpression(String ident)
|
|
JFieldAccessExpression(TokenReference where,
JExpression prefix,
String ident)
Construct a node in the parsing tree |
|
JFieldAccessExpression(TokenReference where,
JExpression prefix,
String ident,
CField field)
You usually don't know the cfield--this is mostly for constructing new accesses from old accesses within the ir. |
|
JFieldAccessExpression(TokenReference where,
String ident)
Construct a node in the parsing tree |
Method Summary | ||
---|---|---|
Object |
accept(AttributeVisitor p)
Accepts the specified attribute visitor |
|
|
accept(ExpressionVisitor<S,T> p,
T o)
Accepts the specified visitor |
|
void |
accept(KjcVisitor p)
Accepts the specified visitor |
|
JExpression |
analyse(CExpressionContext context)
Analyses the expression (semantically). |
|
void |
checkAccess(CClass local,
CExpressionContext context)
Checks is access to prefix is okay |
|
Object |
deepClone()
Returns a deep clone of this object. |
|
protected void |
deepCloneInto(JFieldAccessExpression other)
Clones all fields of this into |
|
boolean |
equals(Object o)
|
|
protected void |
findPrefix(CClass local,
CExpressionContext context)
Finds the type of the prefix. |
|
void |
genCode(CodeSequence code,
boolean discardValue)
Generates JVM bytecode to evaluate this expression. |
|
void |
genEndStoreCode(CodeSequence code,
boolean discardValue)
Generates JVM bytecode to store a value into the storage location denoted by this expression. |
|
void |
genStartStoreCode(CodeSequence code)
Generates JVM bytecode to store a value into the storage location denoted by this expression. |
|
CField |
getField()
Returns the exported field. |
|
String |
getIdent()
Returns the simple name of the field. |
|
JLiteral |
getLiteral()
Returns the literal value of this field. |
|
JExpression |
getPrefix()
Returns the left-hand-side of the expression. |
|
CType |
getType()
Returns the type of the expression. |
|
boolean |
isConstant()
Tests whether this expression denotes a compile-time constant (JLS 15.28). |
|
boolean |
isFinal()
Returns true if there must be exactly one initialization of the field. |
|
boolean |
isInitialized(CExpressionContext context)
Returns true iff this field is already initialized. |
|
boolean |
isLValue(CExpressionContext context)
Returns true if this field accepts assignments. |
|
boolean |
isThisAccess()
(bft: I think...) Returns whether or not this field access is on the |
|
void |
setIdent(String _ident)
Allows setting of Ident to rename a field in place. |
|
void |
setInitialized(CExpressionContext context)
Declares this variable to be initialized. |
|
void |
setPrefix(JExpression exp)
Sets the prefix expression of this to |
|
void |
setType(CType type)
Set type: delegates to the CField, or creates a new CSourceField if none. |
|
String |
toString()
Returns a string representation of this expression. |
Methods inherited from class at.dms.kjc.JExpression |
---|
booleanValue, byteValue, charValue, convertType, convertType, deepCloneInto, doubleValue, fail, floatValue, genBranch, intValue, isAssignableTo, isDynamic, isStatementExpression, longValue, shortValue, stringValue |
Methods inherited from class at.dms.kjc.JPhylum |
---|
assertMutable, check, check, check, check, deepCloneInto, setLineNumber |
Methods inherited from class at.dms.compiler.Phylum |
---|
deepCloneInto, getTokenReference, setTokenReference |
Methods inherited from class java.lang.Object |
---|
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected JExpression prefix
protected String ident
protected CField field
Constructor Detail |
---|
protected JFieldAccessExpression()
public JFieldAccessExpression(TokenReference where, JExpression prefix, String ident, CField field)
public JFieldAccessExpression(TokenReference where, JExpression prefix, String ident)
where
- the line of this node in the source codeprefix
- the prefix denoting the object to searchident
- the simple name of the fieldpublic JFieldAccessExpression(JExpression prefix, String ident)
public JFieldAccessExpression(TokenReference where, String ident)
where
- the line of this node in the source codeident
- the simple name of the fieldpublic JFieldAccessExpression(String ident)
Method Detail |
---|
public String getIdent()
getIdent
in class JExpression
public void setIdent(String _ident)
public CType getType()
getType
in class JExpression
public void setType(CType type)
setType
in class JExpression
type
- the CType to set.public JExpression getPrefix()
public boolean isConstant()
isConstant
in class JExpression
public boolean isLValue(CExpressionContext context)
isLValue
in class JExpression
public boolean isFinal()
isFinal
in class JExpression
public boolean isThisAccess()
thisobject. Will only work after semantic analysis has been done.
public void setPrefix(JExpression exp)
exp.
public boolean isInitialized(CExpressionContext context)
isInitialized
in class JExpression
public void setInitialized(CExpressionContext context)
setInitialized
in class JExpression
UnpositionedError
- an error if this object can't actually
be assignated this may happen with final variables.public CField getField()
public JLiteral getLiteral()
getLiteral
in class JExpression
public String toString()
toString
in class Object
public JExpression analyse(CExpressionContext context) throws PositionedError
analyse
in class JExpression
context
- the analysis context
PositionedError
- the analysis detected an errorprotected void findPrefix(CClass local, CExpressionContext context) throws PositionedError
PositionedError
- Error catched as soon as possiblepublic void checkAccess(CClass local, CExpressionContext context) throws PositionedError
PositionedError
- Error catched as soon as possiblepublic boolean equals(Object o)
equals
in class Object
public void accept(KjcVisitor p)
accept
in class JExpression
p
- the visitorpublic Object accept(AttributeVisitor p)
accept
in class JExpression
p
- the visitor
public <S,T> S accept(ExpressionVisitor<S,T> p, T o)
accept
in class JExpression
S
- output typeT
- auxilliary input typep
- the visitoro
- object containing extra data to be passed to visitor
public void genCode(CodeSequence code, boolean discardValue)
genCode
in class JExpression
code
- the bytecode sequencediscardValue
- discard the result of the evaluation ?public void genStartStoreCode(CodeSequence code)
genStartStoreCode
in class JExpression
code
- the code listpublic void genEndStoreCode(CodeSequence code, boolean discardValue)
genEndStoreCode
in class JExpression
code
- the code listdiscardValue
- discard the result of the evaluation ?public Object deepClone()
deepClone
in interface DeepCloneable
deepClone
in class JExpression
protected void deepCloneInto(JFieldAccessExpression other)
other
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |