com.ibm.wala.util.graph.impl
Class SparseNumberedEdgeManager<T>

java.lang.Object
  extended by com.ibm.wala.util.graph.impl.SparseNumberedEdgeManager<T>
All Implemented Interfaces:
EdgeManager<T>, NumberedEdgeManager<T>

public final class SparseNumberedEdgeManager<T>
extends java.lang.Object
implements NumberedEdgeManager<T>

An object which tracks edges for nodes that have numbers.


Constructor Summary
SparseNumberedEdgeManager(NumberedNodeManager<T> nodeManager)
           
SparseNumberedEdgeManager(NumberedNodeManager<T> nodeManager, int normalCase, byte delegateImpl)
          If normalOutCount == n, this edge manager will eagerly allocated n words to hold out edges for each node.
 
Method Summary
 void addEdge(T src, T dst)
           
 int getPredNodeCount(T N)
          Return the number of immediate predecessor nodes of this Node in the Graph.
 IntSet getPredNodeNumbers(T node)
           
 java.util.Iterator<T> getPredNodes(T N)
          Return an Iterator over the immediate predecessor nodes of this Node in the Graph.
 int getSuccNodeCount(int number)
           
 int getSuccNodeCount(T N)
          Return the number of immediate successor nodes of this Node in the Graph
 IntSet getSuccNodeNumbers(T node)
           
 java.util.Iterator<T> getSuccNodes(int number)
           
 java.util.Iterator<T> getSuccNodes(T N)
          Return an Iterator over the immediate successor nodes of this Node in the Graph
 boolean hasAnySuccessor(int node)
          This is implemented as a shortcut for efficiency
 boolean hasEdge(T src, T dst)
           
 void removeAllIncidentEdges(T node)
           
 void removeEdge(T src, T dst)
           
 void removeIncomingEdges(T node)
           
 void removeOutgoingEdges(T node)
           
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

SparseNumberedEdgeManager

public SparseNumberedEdgeManager(NumberedNodeManager<T> nodeManager)
Parameters:
nodeManager - an object to track nodes

SparseNumberedEdgeManager

public SparseNumberedEdgeManager(NumberedNodeManager<T> nodeManager,
                                 int normalCase,
                                 byte delegateImpl)
If normalOutCount == n, this edge manager will eagerly allocated n words to hold out edges for each node. (performance optimization for time)

Parameters:
nodeManager - an object to track nodes
normalCase - what is the "normal" number of out edges for a node?
Method Detail

getPredNodes

public java.util.Iterator<T> getPredNodes(T N)
                                   throws java.lang.IllegalArgumentException
Description copied from interface: EdgeManager
Return an Iterator over the immediate predecessor nodes of this Node in the Graph. This method never returns null.

Specified by:
getPredNodes in interface EdgeManager<T>
Returns:
an Iterator over the immediate predecessor nodes of this Node.
Throws:
java.lang.IllegalArgumentException

getPredNodeCount

public int getPredNodeCount(T N)
                     throws java.lang.IllegalArgumentException
Description copied from interface: EdgeManager
Return the number of immediate predecessor nodes of this Node in the Graph.

Specified by:
getPredNodeCount in interface EdgeManager<T>
Returns:
the number of immediate predecessor Nodes of this Node in the Graph.
Throws:
java.lang.IllegalArgumentException

getSuccNodes

public java.util.Iterator<T> getSuccNodes(T N)
                                   throws java.lang.IllegalArgumentException
Description copied from interface: EdgeManager
Return an Iterator over the immediate successor nodes of this Node in the Graph

This method never returns null.

Specified by:
getSuccNodes in interface EdgeManager<T>
Returns:
an Iterator over the immediate successor Nodes of this Node.
Throws:
java.lang.IllegalArgumentException

getSuccNodes

public java.util.Iterator<T> getSuccNodes(int number)

getSuccNodeNumbers

public IntSet getSuccNodeNumbers(T node)
                          throws java.lang.IllegalArgumentException
Specified by:
getSuccNodeNumbers in interface NumberedEdgeManager<T>
Returns:
the numbers identifying the immediate successors of node
Throws:
java.lang.IllegalArgumentException

getPredNodeNumbers

public IntSet getPredNodeNumbers(T node)
                          throws java.lang.IllegalArgumentException
Specified by:
getPredNodeNumbers in interface NumberedEdgeManager<T>
Returns:
the numbers identifying the immediate predecessors of node
Throws:
java.lang.IllegalArgumentException

getSuccNodeCount

public int getSuccNodeCount(T N)
                     throws java.lang.IllegalArgumentException
Description copied from interface: EdgeManager
Return the number of immediate successor nodes of this Node in the Graph

Specified by:
getSuccNodeCount in interface EdgeManager<T>
Returns:
the number of immediate successor Nodes of this Node in the Graph.
Throws:
java.lang.IllegalArgumentException

getSuccNodeCount

public int getSuccNodeCount(int number)

addEdge

public void addEdge(T src,
                    T dst)
             throws java.lang.IllegalArgumentException
Specified by:
addEdge in interface EdgeManager<T>
Throws:
java.lang.IllegalArgumentException

hasEdge

public boolean hasEdge(T src,
                       T dst)
Specified by:
hasEdge in interface EdgeManager<T>

removeAllIncidentEdges

public void removeAllIncidentEdges(T node)
                            throws java.lang.IllegalArgumentException
Specified by:
removeAllIncidentEdges in interface EdgeManager<T>
Throws:
java.lang.IllegalArgumentException

removeIncomingEdges

public void removeIncomingEdges(T node)
                         throws java.lang.IllegalArgumentException
Specified by:
removeIncomingEdges in interface EdgeManager<T>
Throws:
java.lang.IllegalArgumentException

removeEdge

public void removeEdge(T src,
                       T dst)
                throws java.lang.IllegalArgumentException
Specified by:
removeEdge in interface EdgeManager<T>
Throws:
java.lang.IllegalArgumentException

removeOutgoingEdges

public void removeOutgoingEdges(T node)
                         throws java.lang.IllegalArgumentException
Specified by:
removeOutgoingEdges in interface EdgeManager<T>
Throws:
java.lang.IllegalArgumentException

hasAnySuccessor

public boolean hasAnySuccessor(int node)
This is implemented as a shortcut for efficiency

Parameters:
node -
Returns:
true iff that node has any successors

toString

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