X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Futil%2FPrintableTree.java;h=c805caba69136d0140d4521b284688686d0c67c9;hp=a50aff9267b2852768da6c946f598fe506e6eba3;hb=7fbee73b4dd985cb5b217ed297710c00fd9d7004;hpb=b0d313eb49712b23f9c71003c96f130f23a63526;ds=sidebyside diff --git a/src/edu/berkeley/sbp/util/PrintableTree.java b/src/edu/berkeley/sbp/util/PrintableTree.java index a50aff9..c805cab 100644 --- a/src/edu/berkeley/sbp/util/PrintableTree.java +++ b/src/edu/berkeley/sbp/util/PrintableTree.java @@ -1,16 +1,79 @@ -package edu.berkeley.sbp; -import edu.berkeley.sbp.*; +package edu.berkeley.sbp.util; import edu.berkeley.sbp.*; import edu.berkeley.sbp.util.*; import java.io.*; import java.util.*; import java.lang.reflect.*; -public abstract class PrintableTree implements Iterable { +public abstract class PrintableTree implements Iterable, ToJava { protected abstract String headToString(); protected abstract String headToJava(); + private boolean empty() { + for(T t : this) return false; + return true; + } + + private static final int MAXDEPTH=3; + public int depth() { + int depth = headToString()==null ? 0 : 1; + int ret = depth; + for(T t : this) ret = Math.max(ret, depth+t.depth()); + return ret; + } + public String toString(int indent0, int cur, int limit) { + int indent = indent0; + String s = toString(); + if (depth()indent) { + ret.append('\n'); for(int i=0; i 0) ret.append("\n "); + } + ret.append(s); + if (s.indexOf('\n')!=-1) + cur = s.length()-s.lastIndexOf('\n'); + else + cur += s.length(); + if (cur>indent) { + ret.append(' '); + cur += s.length()+1; + } + } + if (head==null) { + ret.append("}"); + } else if (cur>indent) { + /* + indent = indent0; + ret.append('\n'); for(int i=0; i