X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Futil%2FPrintableTree.java;fp=src%2Fedu%2Fberkeley%2Fsbp%2Futil%2FPrintableTree.java;h=1b5ffc0b176ed04cc41bff0e32413b29462e0169;hp=8e12956700c96d95de59aabc4e936c2818adbeed;hb=f09d2abb95f106197aea99c345282c3bf0cd3717;hpb=2cc11837a52505dd9863bcd366240a8f229af294 diff --git a/src/edu/berkeley/sbp/util/PrintableTree.java b/src/edu/berkeley/sbp/util/PrintableTree.java index 8e12956..1b5ffc0 100644 --- a/src/edu/berkeley/sbp/util/PrintableTree.java +++ b/src/edu/berkeley/sbp/util/PrintableTree.java @@ -5,8 +5,9 @@ import java.io.*; import java.util.*; import java.lang.reflect.*; -public abstract class PrintableTree implements Iterable, ToJava /*, ToHTML*/ { +public abstract class PrintableTree implements Iterable, ToJava /*, ToHTML*/, GraphViz.ToGraphViz { + protected abstract Object head(); protected abstract String headToString(); protected abstract String headToJava(); protected abstract String left(); @@ -82,4 +83,13 @@ public abstract class PrintableTree implements Iterable sb.append("})"); } + 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(); + for(T t : this) n.edge(t, null); + return n; + } + public boolean isTransparent() { return false; } + public boolean isHidden() { return false; } }