checkpoint
[sbp.git] / src / edu / berkeley / sbp / Tree.java
index 220d1dd..cdd3b8b 100644 (file)
@@ -7,7 +7,10 @@ import java.util.*;
 import java.lang.reflect.*;
 
 /** a tree (or node in a tree); see jargon.txt for details */
 import java.lang.reflect.*;
 
 /** a tree (or node in a tree); see jargon.txt for details */
-public class Tree<T> extends PrintableTree<Tree<T>> implements Iterable<Tree<T>> {
+public class Tree<T>
+    extends PrintableTree<Tree<T>>
+    implements Iterable<Tree<T>>,
+               GraphViz.ToGraphViz {
 
     final T           head;
           Tree<T>[]   children;
 
     final T           head;
           Tree<T>[]   children;
@@ -43,4 +46,15 @@ public class Tree<T> extends PrintableTree<Tree<T>> implements Iterable<Tree<T>>
     protected String left()   { return "{"; }
     protected String right()  { return "}"; }
     protected boolean ignoreSingleton() { return false; }
     protected String left()   { return "{"; }
     protected String right()  { return "}"; }
     protected boolean ignoreSingleton() { return false; }
+
+    public GraphViz.Node toGraphViz(GraphViz gv) {
+        if (gv.hasNode(this)) return gv.createNode(this);
+        GraphViz.Node n = gv.createNode(this);
+        n.label = head()==null ? "" : head().toString();
+        //n.color = "red";
+        for(Tree t : this) n.edge(t, null);
+        return n;
+    }
+    public boolean isTransparent() { return false; }
+    public boolean isHidden() { return false; }
 }
 }