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

java.lang.Object
  extended by com.ibm.wala.util.graph.impl.DelegatingGraph<T>
All Implemented Interfaces:
EdgeManager<T>, Graph<T>, NodeManager<T>, java.lang.Iterable<T>
Direct Known Subclasses:
PartialCallGraph

public class DelegatingGraph<T>
extends java.lang.Object
implements Graph<T>

A utility class.


Constructor Summary
DelegatingGraph(Graph<T> delegate)
           
 
Method Summary
 void addEdge(T src, T dst)
           
 void addNode(T n)
          add a node to this graph
 boolean containsNode(T N)
           
 int getNumberOfNodes()
           
 int getPredNodeCount(T N)
          Return the number of immediate predecessor nodes of n
 java.util.Iterator<T> getPredNodes(T N)
          Return an Iterator over the immediate predecessor nodes of n This method never returns null.
 int getSuccNodeCount(T N)
          Return the number of immediate successor nodes of this Node in the Graph
 java.util.Iterator<T> getSuccNodes(T N)
          Return an Iterator over the immediate successor nodes of n
 boolean hasEdge(T src, T dst)
           
 java.util.Iterator<T> iterator()
           
 void removeAllIncidentEdges(T node)
           
 void removeEdge(T src, T dst)
           
 void removeIncomingEdges(T node)
           
 void removeNode(T n)
          remove a node from this graph
 void removeNodeAndEdges(T N)
          remove a node and all its incident edges
 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

DelegatingGraph

public DelegatingGraph(Graph<T> delegate)
Method Detail

addEdge

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

addNode

public void addNode(T n)
Description copied from interface: NodeManager
add a node to this graph

Specified by:
addNode in interface NodeManager<T>

containsNode

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

getNumberOfNodes

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

toString

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

getPredNodeCount

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

Specified by:
getPredNodeCount in interface EdgeManager<T>
Returns:
the number of immediate predecessors of n.
Throws:
java.lang.IllegalArgumentException

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 n 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

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

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 n

This method never returns null.

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

hasEdge

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

iterator

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

removeAllIncidentEdges

public void removeAllIncidentEdges(T node)
                            throws java.lang.IllegalArgumentException
Specified by:
removeAllIncidentEdges 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

removeIncomingEdges

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

removeNode

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

Specified by:
removeNode in interface NodeManager<T>

removeNodeAndEdges

public void removeNodeAndEdges(T N)
                        throws java.lang.IllegalArgumentException
Description copied from interface: Graph
remove a node and all its incident edges

Specified by:
removeNodeAndEdges in interface Graph<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