Package com.ibm.wala.util.graph.traverse
Class DFSDiscoverTimeIterator<T>
- java.lang.Object
-
- java.util.AbstractCollection<E>
-
- java.util.AbstractList<E>
-
- java.util.ArrayList<T>
-
- com.ibm.wala.util.graph.traverse.DFSDiscoverTimeIterator<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:
NumberedDFSDiscoverTimeIterator
,SlowDFSDiscoverTimeIterator
public abstract class DFSDiscoverTimeIterator<T> extends java.util.ArrayList<T> implements java.util.Iterator<T>
This class implements depth-first search over aNumberedGraph
, return an enumeration of the nodes of the graph in order of increasing discover 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
-
-
Constructor Summary
Constructors Constructor Description DFSDiscoverTimeIterator()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract java.util.Iterator<? extends T>
getConnected(T n)
get the out edges of a given nodeprotected abstract java.util.Iterator<? extends T>
getPendingChildren(T n)
boolean
hasNext()
Return whether there are any more nodes left to enumerate.protected void
init(java.util.Iterator<? extends T> nodes)
subclass constructors must call this!protected void
init(T N)
subclass constructors must call this!T
next()
Find the next graph node in discover time order.void
remove()
protected abstract void
setPendingChildren(T v, java.util.Iterator<? extends T> iterator)
protected void
visitEdge(T from, T to)
-
Methods inherited from class java.util.ArrayList
add, add, addAll, addAll, clear, clone, contains, ensureCapacity, equals, forEach, get, hashCode, indexOf, isEmpty, iterator, lastIndexOf, listIterator, listIterator, remove, remove, removeAll, removeIf, removeRange, replaceAll, retainAll, set, size, sort, spliterator, subList, toArray, toArray, trimToSize
-
-
-
-
Method Detail
-
init
protected void init(java.util.Iterator<? extends T> nodes)
subclass constructors must call this!
-
init
protected void init(T N)
subclass constructors must call this!
-
hasNext
public boolean hasNext()
Return whether there are any more nodes left to enumerate.- Specified by:
hasNext
in interfacejava.util.Iterator<T>
- Returns:
- true if there nodes left to enumerate.
-
setPendingChildren
protected abstract void setPendingChildren(T v, java.util.Iterator<? extends T> iterator)
-
next
public T next() throws java.util.NoSuchElementException
Find the next graph node in discover time order.- Specified by:
next
in interfacejava.util.Iterator<T>
- Returns:
- the next graph node in discover time order.
- Throws:
java.util.NoSuchElementException
-
getConnected
protected abstract 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 interfacejava.util.Iterator<T>
- Throws:
UnimplementedError
-
-