com.ibm.wala.fixpoint
Class AbstractVariable<T extends AbstractVariable>

java.lang.Object
  extended by com.ibm.wala.util.graph.impl.NodeWithNumber
      extended by com.ibm.wala.fixpoint.AbstractVariable<T>
All Implemented Interfaces:
IVariable<T>, INodeWithNumber
Direct Known Subclasses:
AbstractIntStackMachine.MachineState, BitVectorVariable, BooleanVariable, IntSetVariable, TypeVariable

public abstract class AbstractVariable<T extends AbstractVariable>
extends NodeWithNumber
implements IVariable<T>

Represents a single variable in a fixed-point system.


Constructor Summary
protected AbstractVariable()
           
 
Method Summary
 boolean equals(java.lang.Object obj)
           
 int getOrderNumber()
          Variables must allow the solver implementation to get/set an order number, which the solver uses to control evaluation order.
 int hashCode()
           
static int nextHash()
          I know this is theoretically bad.
 void setOrderNumber(int orderNumber)
          Variables must allow the solver implementation to get/set an order number, which the solver uses to control evaluation order.
 
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, toString, wait, wait, wait
 
Methods inherited from interface com.ibm.wala.fixpoint.IVariable
copyState
 
Methods inherited from interface com.ibm.wala.util.graph.INodeWithNumber
getGraphNodeId, setGraphNodeId
 

Constructor Detail

AbstractVariable

protected AbstractVariable()
Method Detail

equals

public boolean equals(java.lang.Object obj)
Overrides:
equals in class java.lang.Object

nextHash

public static int nextHash()
I know this is theoretically bad. However,


hashCode

public final int hashCode()
Overrides:
hashCode in class java.lang.Object

getOrderNumber

public int getOrderNumber()
Description copied from interface: IVariable
Variables must allow the solver implementation to get/set an order number, which the solver uses to control evaluation order. It might be cleaner to hold this on the side, but we cannot tolerate any extra space. TODO: consider moving this functionality to a subinterface?

Specified by:
getOrderNumber in interface IVariable<T extends AbstractVariable>
Returns:
a number used to order equation evaluation

setOrderNumber

public void setOrderNumber(int orderNumber)
Description copied from interface: IVariable
Variables must allow the solver implementation to get/set an order number, which the solver uses to control evaluation order. It might be cleaner to hold this on the side, but we cannot tolerate any extra space. TODO: consider moving this functionality to a subinterface?

Specified by:
setOrderNumber in interface IVariable<T extends AbstractVariable>