org.siebengeisslein.pclass.expression
Class VariableExpression

java.lang.Object
  extended by org.siebengeisslein.client.Persistent
      extended by org.siebengeisslein.pclass.expression.AbstractExpression
          extended by org.siebengeisslein.pclass.expression.VariableExpression
All Implemented Interfaces:
CommitConstrained, Instrumented, CodeFragment, ErrorItem, Expression, HasVariable

public class VariableExpression
extends AbstractExpression
implements HasVariable, ErrorItem


Constructor Summary
VariableExpression(CastExpression ce, Variable variable)
           
VariableExpression(ExpressionContainer container)
           
VariableExpression(ExpressionContainer container, Variable var)
           
 
Method Summary
 java.lang.Object getContext()
           
 Level getLevel()
           
 java.lang.String getMessage()
           
 PType getResultType()
           
 Variable getVariable()
           
 boolean isAssignable()
           
 boolean isDeclaration()
           
 void onRemove()
           
 void onVariableUpdate()
           
 void setVariable(Variable variable)
           
 java.lang.String toString(java.lang.String indent)
           
 void visit(org.objectweb.asm.MethodVisitor mv, Frame frame, PClass clazz, boolean forAssignment)
           
 void visitAssignTo(org.objectweb.asm.MethodVisitor mv, Frame frame, PClass clazz)
           
 
Methods inherited from class org.siebengeisslein.pclass.expression.AbstractExpression
checkConstraints, getContainer, getDataDirectory, getOwnerClass, getOwnerMethod, getTypeManager, getVariableManager, loadClass, replaceWith, setContainer, toString
 
Methods inherited from class org.siebengeisslein.client.Persistent
abort, clearUserLocals, clone, commit, disposeTransient, getGroup, getRef, getTransientValue, hashCode, initTransient, isWriteTransaction, joinWriteTransaction, readLock, setGroup, setTransientValue, toPersistent, toRef, writeExternal, writeLock
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.siebengeisslein.pclass.HasVariable
getTypeManager, getVariableManager
 

Constructor Detail

VariableExpression

public VariableExpression(ExpressionContainer container)

VariableExpression

public VariableExpression(CastExpression ce,
                          Variable variable)

VariableExpression

public VariableExpression(ExpressionContainer container,
                          Variable var)
Method Detail

getVariable

public Variable getVariable()
Specified by:
getVariable in interface HasVariable

setVariable

public void setVariable(Variable variable)
Specified by:
setVariable in interface HasVariable

onVariableUpdate

public void onVariableUpdate()

onRemove

public void onRemove()
Specified by:
onRemove in interface Expression
Overrides:
onRemove in class AbstractExpression

isDeclaration

public boolean isDeclaration()
Specified by:
isDeclaration in interface HasVariable

visit

public void visit(org.objectweb.asm.MethodVisitor mv,
                  Frame frame,
                  PClass clazz,
                  boolean forAssignment)
Specified by:
visit in interface Expression
forAssignment - This indicates that the expression is evaluated to be assigned a value. In this case the last element should not be evaluated (e.g. obj.name should only push obj onto the stack, but to the value of "name".

getResultType

public PType getResultType()
Specified by:
getResultType in interface Expression

toString

public java.lang.String toString(java.lang.String indent)
Specified by:
toString in interface Expression

getContext

public java.lang.Object getContext()
Specified by:
getContext in interface ErrorItem

getLevel

public Level getLevel()
Specified by:
getLevel in interface ErrorItem

getMessage

public java.lang.String getMessage()
Specified by:
getMessage in interface ErrorItem

isAssignable

public boolean isAssignable()
Specified by:
isAssignable in interface Expression
Overrides:
isAssignable in class AbstractExpression

visitAssignTo

public void visitAssignTo(org.objectweb.asm.MethodVisitor mv,
                          Frame frame,
                          PClass clazz)
Specified by:
visitAssignTo in interface Expression
Overrides:
visitAssignTo in class AbstractExpression