import java.util.*;
import java.lang.reflect.*;
-class Node
- implements GraphViz.ToGraphViz {
+class Node<OtherNode extends Node>
+ implements IntegerMappable,
+ GraphViz.ToGraphViz,
+ Iterable<OtherNode> {
+
+ protected FastSet<OtherNode> predecessors = new FastSet<OtherNode>();
+ protected FastSet<OtherNode> successors = new FastSet<OtherNode>();
+ //private HashSet<OtherNode> predecessors = new HashSet<OtherNode>();
+ //private HashSet<OtherNode> successors = new HashSet<OtherNode>();
+
+ public Iterator<OtherNode> iterator() { return predecessors.iterator(); }
+
+ public boolean noSuccessors() { return successors.size()==0; }
+ public boolean predecessorsContains(OtherNode n) {
+ return predecessors.contains(n);
+ }
// GraphViz //////////////////////////////////////////////////////////////////////////////
}
public boolean isTransparent() { return false; }
public boolean isHidden() { return false; }
+
+ // IntegerMappable ////////////////////////////////////////////////////////////
+
+ private static int node_idx = 0;
+ private final int idx = node_idx++;
+ public int toInt() { return idx; }
+
}
\ No newline at end of file