org.siebengeisslein.pclass.expression
Class DereferenceExpression

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

public class DereferenceExpression
extends AbstractExpression
implements ExpressionContainer


Constructor Summary
DereferenceExpression(ExpressionContainer parent)
           
 
Method Summary
 void checkConstraints()
           
 boolean containsChild(Expression expression)
           
 Expression getDereferenced()
           
 Expression getExpression()
           
 PType getResultType()
           
 boolean isAssignable()
           
 void onRemove()
           
 void removeChild(Expression child)
           
 void replaceChild(Expression child, Expression newChild)
           
 void setDereferenced(Expression dereferenced)
           
 void setExpression(Expression expression)
           
 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
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.expression.ExpressionContainer
getDataDirectory, getOwnerClass, getOwnerMethod, getVariableManager
 

Constructor Detail

DereferenceExpression

public DereferenceExpression(ExpressionContainer parent)
Method Detail

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".

setDereferenced

public void setDereferenced(Expression dereferenced)

setExpression

public void setExpression(Expression expression)

getDereferenced

public Expression getDereferenced()

getExpression

public Expression getExpression()

replaceChild

public void replaceChild(Expression child,
                         Expression newChild)
Specified by:
replaceChild in interface ExpressionContainer

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

removeChild

public void removeChild(Expression child)
Specified by:
removeChild in interface ExpressionContainer

containsChild

public boolean containsChild(Expression expression)
Specified by:
containsChild in interface ExpressionContainer

checkConstraints

public void checkConstraints()
                      throws ConstraintViolationException
Specified by:
checkConstraints in interface CommitConstrained
Overrides:
checkConstraints in class AbstractExpression
Throws:
ConstraintViolationException

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

onRemove

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