com.ibm.wala.util.graph.impl
Class DelegatingNumberedNodeManager<T extends INodeWithNumber>

java.lang.Object
  extended by com.ibm.wala.util.graph.impl.DelegatingNumberedNodeManager<T>
All Implemented Interfaces:
NodeManager<T>, NumberedNodeManager<T>, java.lang.Iterable<T>

public class DelegatingNumberedNodeManager<T extends INodeWithNumber>
extends java.lang.Object
implements NumberedNodeManager<T>

Basic implementation of a numbered graph -- this implementation relies on nodes that carry numbers and edges. The management of node numbers is a bit fragile, but designed this way for efficiency. Use this class with care.


Constructor Summary
DelegatingNumberedNodeManager()
           
 
Method Summary
 void addNode(T n)
          If N.getNumber() == -1, then set N.number and insert this node in the graph.
 boolean containsNode(T n)
           
 int getMaxNumber()
           
 T getNode(int number)
           
 int getNumber(T N)
           
 int getNumberOfNodes()
           
 java.util.Iterator<T> iterateNodes(IntSet s)
           
 java.util.Iterator<T> iterator()
           
 void removeNode(T n)
          remove a node from this graph
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

DelegatingNumberedNodeManager

public DelegatingNumberedNodeManager()
Method Detail

getNumber

public int getNumber(T N)
Specified by:
getNumber in interface NumberedNodeManager<T extends INodeWithNumber>

getNode

public T getNode(int number)
Specified by:
getNode in interface NumberedNodeManager<T extends INodeWithNumber>

getMaxNumber

public int getMaxNumber()
Specified by:
getMaxNumber in interface NumberedNodeManager<T extends INodeWithNumber>

iterator

public java.util.Iterator<T> iterator()
Specified by:
iterator in interface NodeManager<T extends INodeWithNumber>
Specified by:
iterator in interface java.lang.Iterable<T extends INodeWithNumber>
Returns:
an Iterator of the nodes in this graph

getNumberOfNodes

public int getNumberOfNodes()
Specified by:
getNumberOfNodes in interface NodeManager<T extends INodeWithNumber>
Returns:
the number of nodes in this graph

addNode

public void addNode(T n)
If N.getNumber() == -1, then set N.number and insert this node in the graph. Use with extreme care.

Specified by:
addNode in interface NodeManager<T extends INodeWithNumber>
Throws:
java.lang.IllegalArgumentException - if n is null
See Also:
NodeManager.addNode(java.lang.Object)

removeNode

public void removeNode(T n)
Description copied from interface: NodeManager
remove a node from this graph

Specified by:
removeNode in interface NodeManager<T extends INodeWithNumber>

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

containsNode

public boolean containsNode(T n)
Specified by:
containsNode in interface NodeManager<T extends INodeWithNumber>
Returns:
true iff the graph contains the specified node

iterateNodes

public java.util.Iterator<T> iterateNodes(IntSet s)
Specified by:
iterateNodes in interface NumberedNodeManager<T extends INodeWithNumber>
Returns:
iterator of nodes with the numbers in set s