more refactoring into Node
authoradam <adam@megacz.com>
Mon, 5 Nov 2007 02:48:49 +0000 (21:48 -0500)
committeradam <adam@megacz.com>
Mon, 5 Nov 2007 02:48:49 +0000 (21:48 -0500)
darcs-hash:20071105024849-5007d-00b91c1b26f557923a028c853a2edf0775679567.gz

src/edu/berkeley/sbp/Node.java
src/edu/berkeley/sbp/ResultNode.java
src/edu/berkeley/sbp/StateNode.java

index 09718af..1168c78 100644 (file)
@@ -12,13 +12,21 @@ import java.lang.reflect.*;
 
 class Node<OtherNode extends Node>
     implements IntegerMappable,
-               GraphViz.ToGraphViz {
+               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 GraphViz.StateNode toGraphViz(GraphViz gv) {
index 9b14882..6a6629c 100644 (file)
@@ -16,9 +16,6 @@ final class ResultNode
     private Pos reduction;
     private GSS.Phase predPhase;
 
-    public boolean predecessorsContains(StateNode n) {
-        return predecessors.contains(n);
-    }
     public Pos reduction() { return reduction; }
     public void merge(Forest newf) {
         this.f.merge(newf);
@@ -30,11 +27,8 @@ final class ResultNode
         */
     }
 
-    public boolean noSuccessors() { return successors.size()==0; }
-
     public GSS.Phase phase() { return predPhase; }
     public Forest getForest() { return f; }
-    public Iterable<StateNode> getPreds() { return predecessors; }
     public void addSucc(StateNode succ) {
         if (successors.contains(succ)) return;
         successors.add(succ);
index 4b7834e..2a438e5 100644 (file)
@@ -13,8 +13,7 @@ import java.lang.reflect.*;
 /** a node in the GSS */
 final class StateNode
     extends Node<ResultNode>
-    implements Invokable<Pos, ResultNode, Object>,
-               Iterable<ResultNode> {
+    implements Invokable<Pos, ResultNode, Object> {
 
     /** which GSS.Phase this StateNode belongs to */
     public GSS.Phase phase() { return phase; }
@@ -75,7 +74,7 @@ final class StateNode
     private void reduce(Pos r, int pos, GSS.Phase target, ResultNode only) {
         for(ResultNode res : predecessors)
             if (only == null || res == only)
-                for(StateNode pred : res.getPreds())
+                for(StateNode pred : res)
                     reduce2(r, pos, target, pred, res.getForest());
     }