Package com.ibm.wala.fixedpoint.impl
Class GeneralStatement<T extends IVariable<T>>
- java.lang.Object
-
- com.ibm.wala.util.graph.impl.NodeWithNumber
-
- com.ibm.wala.fixpoint.AbstractStatement<T,AbstractOperator<T>>
-
- com.ibm.wala.fixedpoint.impl.GeneralStatement<T>
-
- All Implemented Interfaces:
IFixedPointStatement<T>
,INodeWithNumber
- Direct Known Subclasses:
AbstractFixedPointSolver.Statement
public abstract class GeneralStatement<T extends IVariable<T>> extends AbstractStatement<T,AbstractOperator<T>>
Represents a single step in an iterative solver
-
-
Constructor Summary
Constructors Constructor Description GeneralStatement(T lhs, AbstractOperator<T> operator)
Constructor for case of zero operands on the right-hand side.GeneralStatement(T lhs, AbstractOperator<T> operator, T[] rhs)
Constructor for case of more than three operands on the right-hand side.GeneralStatement(T lhs, AbstractOperator<T> operator, T op1, T op2)
Constructor for case of two operands on the right-hand side.GeneralStatement(T lhs, AbstractOperator<T> operator, T op1, T op2, T op3)
Constructor for case of three operands on the right-hand side.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description boolean
equals(java.lang.Object o)
byte
evaluate()
Evaluate this equation, setting a new value for the left-hand side.T
getLHS()
Return the left-hand side of this equation.AbstractOperator<T>
getOperator()
T[]
getRHS()
returns the list of free variables appearing in the right-hand side of the statementint
hashCode()
Subclasses must implement this, to prevent non-determinism.boolean
hasVariable(T cell)
Does this equation contain an appearance of a given cell? Note: this uses reference equality, assuming that the variables are canonical! This is fragile.protected abstract T[]
makeRHS(int size)
-
Methods inherited from class com.ibm.wala.fixpoint.AbstractStatement
getOrderNumber, toString
-
Methods inherited from class com.ibm.wala.util.graph.impl.NodeWithNumber
getGraphNodeId, setGraphNodeId
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface com.ibm.wala.util.graph.INodeWithNumber
getGraphNodeId, setGraphNodeId
-
-
-
-
Constructor Detail
-
GeneralStatement
public GeneralStatement(T lhs, AbstractOperator<T> operator)
Constructor for case of zero operands on the right-hand side.- Parameters:
lhs
- the lattice cell set by this equationoperator
- the equation operator
-
GeneralStatement
public GeneralStatement(T lhs, AbstractOperator<T> operator, T op1, T op2)
Constructor for case of two operands on the right-hand side.- Parameters:
lhs
- the lattice cell set by this equationoperator
- the equation operatorop1
- the first operand on the rhsop2
- the second operand on the rhs
-
GeneralStatement
public GeneralStatement(T lhs, AbstractOperator<T> operator, T op1, T op2, T op3)
Constructor for case of three operands on the right-hand side.- Parameters:
lhs
- the lattice cell set by this equationoperator
- the equation operatorop1
- the first operand on the rhsop2
- the second operand on the rhsop3
- the third operand on the rhs
-
GeneralStatement
public GeneralStatement(T lhs, AbstractOperator<T> operator, T[] rhs)
Constructor for case of more than three operands on the right-hand side.- Parameters:
lhs
- the lattice cell set by this equationoperator
- the equation operatorrhs
- the operands of the right-hand side in order- Throws:
java.lang.IllegalArgumentException
- if rhs is null
-
-
Method Detail
-
evaluate
public byte evaluate()
Evaluate this equation, setting a new value for the left-hand side.- Returns:
- true if the lhs value changed. false otherwise
-
getLHS
public T getLHS()
Return the left-hand side of this equation.- Returns:
- the lattice cell this equation computes
-
hasVariable
public boolean hasVariable(T cell)
Does this equation contain an appearance of a given cell? Note: this uses reference equality, assuming that the variables are canonical! This is fragile. TODO: Address it perhaps, but be careful not to sacrifice efficiency.- Parameters:
cell
- the cell in question- Returns:
- true or false
-
makeRHS
protected abstract T[] makeRHS(int size)
-
hashCode
public int hashCode()
Description copied from class:AbstractStatement
Subclasses must implement this, to prevent non-determinism.- Specified by:
hashCode
in classAbstractStatement<T extends IVariable<T>,AbstractOperator<T extends IVariable<T>>>
-
equals
public boolean equals(java.lang.Object o)
- Specified by:
equals
in classAbstractStatement<T extends IVariable<T>,AbstractOperator<T extends IVariable<T>>>
-
getOperator
public AbstractOperator<T> getOperator()
- Specified by:
getOperator
in classAbstractStatement<T extends IVariable<T>,AbstractOperator<T extends IVariable<T>>>
-
getRHS
public T[] getRHS()
Description copied from interface:IFixedPointStatement
returns the list of free variables appearing in the right-hand side of the statement
-
-