|
||||||||||
| 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 field
public 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 JExpressionpublic void setIdent(String _ident)
public CType getType()
getType in class JExpressionpublic void setType(CType type)
setType in class JExpressiontype - the CType to set.public JExpression getPrefix()
public boolean isConstant()
isConstant in class JExpressionpublic boolean isLValue(CExpressionContext context)
isLValue in class JExpressionpublic boolean isFinal()
isFinal in class JExpressionpublic 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 JExpressionpublic void setInitialized(CExpressionContext context)
setInitialized in class JExpressionUnpositionedError - 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 JExpressionpublic String toString()
toString in class Object
public JExpression analyse(CExpressionContext context)
throws PositionedError
analyse in class JExpressioncontext - the analysis context
PositionedError - the analysis detected an error
protected void findPrefix(CClass local,
CExpressionContext context)
throws PositionedError
PositionedError - Error catched as soon as possible
public void checkAccess(CClass local,
CExpressionContext context)
throws PositionedError
PositionedError - Error catched as soon as possiblepublic boolean equals(Object o)
equals in class Objectpublic void accept(KjcVisitor p)
accept in class JExpressionp - the visitorpublic Object accept(AttributeVisitor p)
accept in class JExpressionp - the visitor
public <S,T> S accept(ExpressionVisitor<S,T> p,
T o)
accept in class JExpressionS - 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 JExpressioncode - the bytecode sequencediscardValue - discard the result of the evaluation ?public void genStartStoreCode(CodeSequence code)
genStartStoreCode in class JExpressioncode - the code list
public void genEndStoreCode(CodeSequence code,
boolean discardValue)
genEndStoreCode in class JExpressioncode - the code listdiscardValue - discard the result of the evaluation ?public Object deepClone()
deepClone in interface DeepCloneabledeepClone in class JExpressionprotected void deepCloneInto(JFieldAccessExpression other)
other
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||