optimizations to IntPairMap.java
[sbp.git] / src / edu / berkeley / sbp / util / PrintableTree.java
index 8e12956..802296d 100644 (file)
@@ -1,3 +1,5 @@
+// Copyright 2006-2007 all rights reserved; see LICENSE file for BSD-style license
+
 package edu.berkeley.sbp.util;
 import edu.berkeley.sbp.*;
 import edu.berkeley.sbp.util.*;
@@ -5,8 +7,9 @@ import java.io.*;
 import java.util.*;
 import java.lang.reflect.*;
 
-public abstract class PrintableTree<T extends PrintableTree> implements Iterable<T>, ToJava /*, ToHTML*/ {
+public abstract class PrintableTree<T extends PrintableTree> implements Iterable<T>, ToJava /*, ToHTML*/, GraphViz.ToGraphViz {
 
+    protected abstract Object head();
     protected abstract String headToString();
     protected abstract String headToJava();    
     protected abstract String left();
@@ -82,4 +85,15 @@ public abstract class PrintableTree<T extends PrintableTree> implements Iterable
         sb.append("})");
     }
 
+    // this is here to keep it out of the javadoc for Tree<T>
+    
+    public GraphViz.StateNode toGraphViz(GraphViz gv) {
+        if (gv.hasNode(this)) return gv.createNode(this);
+        GraphViz.StateNode n = gv.createNode(this);
+        n.label = head()==null ? "" : head().toString();
+        for(T t : this) n.edge(t, null);
+        return n;
+    }
+    public boolean isTransparent() { return false; }
+    public boolean isHidden() { return false; }
 }