X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Futil%2FPrintableTree.java;h=ba26a5821bf6b6ebf5542178422b84c3a172494e;hb=fcc038ff693cf2b3e91efcd348ea3a3b7fbb1829;hp=f32b0c9cc8c0c26664270c14c6b50567f9f3e42d;hpb=8abe88ea7a5d7b1fc20c45b05e6397dad81e7cdb;p=sbp.git diff --git a/src/edu/berkeley/sbp/util/PrintableTree.java b/src/edu/berkeley/sbp/util/PrintableTree.java index f32b0c9..ba26a58 100644 --- a/src/edu/berkeley/sbp/util/PrintableTree.java +++ b/src/edu/berkeley/sbp/util/PrintableTree.java @@ -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 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(); @@ -17,7 +20,7 @@ public abstract class PrintableTree implements Iterable private boolean basic() { return toString().length() < MAXCHARS; } public String toPrettyString() { return toPrettyString("\n"); } - public StringBuffer toPrettyString(StringBuffer sb) { sb.append(this); return sb; } + public StringBuffer toPrettyString(StringBuffer sb) { sb.append(toPrettyString()); return sb; } private String toPrettyString(String nl) { String str = toString(); if (str.length() < MAXCHARS) return str; @@ -82,4 +85,15 @@ public abstract class PrintableTree implements Iterable sb.append("})"); } + // this is here to keep it out of the javadoc for Tree + + 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; } }