com.ibm.wala.util.graph.traverse
Class DFSFinishTimeIterator<T>

java.lang.Object
  extended by java.util.AbstractCollection<E>
      extended by java.util.AbstractList<E>
          extended by java.util.Vector<E>
              extended by java.util.Stack<T>
                  extended by com.ibm.wala.util.graph.traverse.DFSFinishTimeIterator<T>
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, java.lang.Iterable<T>, java.util.Collection<T>, java.util.Iterator<T>, java.util.List<T>, java.util.RandomAccess
Direct Known Subclasses:
NumberedDFSFinishTimeIterator, SlowDFSFinishTimeIterator

public abstract class DFSFinishTimeIterator<T>
extends java.util.Stack<T>
implements java.util.Iterator<T>

This class implements depth-first search over a Graph, return an enumeration of the nodes of the graph in order of increasing finishing time. This class follows the outNodes of the graph nodes to define the graph, but this behavior can be changed by overriding the getConnected method.

See Also:
Serialized Form

Field Summary
 
Fields inherited from class java.util.Vector
capacityIncrement, elementCount, elementData
 
Fields inherited from class java.util.AbstractList
modCount
 
Constructor Summary
DFSFinishTimeIterator()
           
 
Method Summary
protected  java.util.Iterator<? extends T> getConnected(T n)
          get the out edges of a given node
 boolean hasNext()
          Return whether there are any more nodes left to enumerate.
protected  void init(Graph<T> G, java.util.Iterator<? extends T> nodes)
          Subclasses must call this in the constructor!
 T next()
          Find the next graph node in finishing time order.
 void remove()
           
 
Methods inherited from class java.util.Stack
empty, peek, pop, push, search
 
Methods inherited from class java.util.Vector
add, add, addAll, addAll, addElement, capacity, clear, clone, contains, containsAll, copyInto, elementAt, elements, ensureCapacity, equals, firstElement, get, hashCode, indexOf, indexOf, insertElementAt, isEmpty, lastElement, lastIndexOf, lastIndexOf, remove, remove, removeAll, removeAllElements, removeElement, removeElementAt, removeRange, retainAll, set, setElementAt, setSize, size, subList, toArray, toArray, toString, trimToSize
 
Methods inherited from class java.util.AbstractList
iterator, listIterator, listIterator
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.List
iterator, listIterator, listIterator
 

Constructor Detail

DFSFinishTimeIterator

public DFSFinishTimeIterator()
Method Detail

init

protected void init(Graph<T> G,
                    java.util.Iterator<? extends T> nodes)
Subclasses must call this in the constructor!

Parameters:
G -
nodes -

hasNext

public boolean hasNext()
Return whether there are any more nodes left to enumerate.

Specified by:
hasNext in interface java.util.Iterator<T>
Returns:
true if there nodes left to enumerate.

next

public T next()
       throws java.util.NoSuchElementException
Find the next graph node in finishing time order.

Specified by:
next in interface java.util.Iterator<T>
Returns:
the next graph node in finishing time order.
Throws:
java.util.NoSuchElementException

getConnected

protected java.util.Iterator<? extends T> getConnected(T n)
get the out edges of a given node

Parameters:
n - the node of which to get the out edges
Returns:
the out edges

remove

public void remove()
            throws UnimplementedError
Specified by:
remove in interface java.util.Iterator<T>
Throws:
UnimplementedError
See Also:
Iterator.remove()