com.ibm.wala.fixpoint
Class UnaryOperator<T extends IVariable>

java.lang.Object
  extended by com.ibm.wala.fixpoint.AbstractOperator<T>
      extended by com.ibm.wala.fixpoint.UnaryOperator<T>
All Implemented Interfaces:
FixedPointConstants
Direct Known Subclasses:
BitVectorFilter, BitVectorIdentity, BitVectorKillAll, BitVectorKillGen, BitVectorMinusVector, BitVectorOr, BitVectorUnionConstant, BitVectorUnionVector, BooleanIdentity, PropagationCallGraphBuilder.FilterOperator, PropagationCallGraphBuilder.InstanceArrayStoreOperator, PropagationCallGraphBuilder.InstancePutFieldOperator, TrueOperator, UnaryBitVectorUnion, UnaryOr, UnarySideEffect

public abstract class UnaryOperator<T extends IVariable>
extends AbstractOperator<T>
implements FixedPointConstants

An operator of the form lhs = op (rhs)


Field Summary
 
Fields inherited from interface com.ibm.wala.fixpoint.FixedPointConstants
CHANGED, CHANGED_AND_FIXED, CHANGED_MASK, FIXED_MASK, NOT_CHANGED, NOT_CHANGED_AND_FIXED, SIDE_EFFECT_MASK
 
Constructor Summary
UnaryOperator()
           
 
Method Summary
abstract  byte evaluate(T lhs, T rhs)
          Evaluate this equation, setting a new value for the left-hand side.
 byte evaluate(T lhs, T[] rhs)
          Evaluate this equation, setting a new value for the left-hand side.
 boolean isIdentity()
           
 UnaryStatement<T> makeEquation(T lhs, T rhs)
          Create an equation which uses this operator Override in subclasses for efficiency.
 
Methods inherited from class com.ibm.wala.fixpoint.AbstractOperator
equals, hashCode, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

UnaryOperator

public UnaryOperator()
Method Detail

evaluate

public abstract byte evaluate(T lhs,
                              T rhs)
Evaluate this equation, setting a new value for the left-hand side.

Returns:
true if the lhs value changes. false otherwise.

makeEquation

public UnaryStatement<T> makeEquation(T lhs,
                                      T rhs)
Create an equation which uses this operator Override in subclasses for efficiency.


isIdentity

public boolean isIdentity()

evaluate

public byte evaluate(T lhs,
                     T[] rhs)
              throws UnimplementedError
Description copied from class: AbstractOperator
Evaluate this equation, setting a new value for the left-hand side. Note that the RHS is an IVariable[] and not a T[] because the framework may be need to allocate an array for the rhs, and we cannot do new T[] in Java.

Specified by:
evaluate in class AbstractOperator<T extends IVariable>
Returns:
a code that indicates: 1) has the lhs value changed? 2) has this equation reached a fixed-point, in that we never have to evaluate the equation again, even if rhs operands change?
Throws:
UnimplementedError