X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Futil%2FPrintableTree.java;h=a6c2f6e316578e0efc9e321eb222356369eb3a54;hb=74e53cbf7227f5958ff7495abe31cb0462d62c4e;hp=9d37a05e00e0a66a8bf9cacd0f2695c04e236b77;hpb=6b24a8ff6410a47d7290c2b42587fd8a8c5341e8;p=sbp.git diff --git a/src/edu/berkeley/sbp/util/PrintableTree.java b/src/edu/berkeley/sbp/util/PrintableTree.java index 9d37a05..a6c2f6e 100644 --- a/src/edu/berkeley/sbp/util/PrintableTree.java +++ b/src/edu/berkeley/sbp/util/PrintableTree.java @@ -48,7 +48,9 @@ public abstract class PrintableTree implements Iterable return ret.toString(); } + private String cached = null; public String toString() { + if (cached!=null) return cached; StringBuffer ret = new StringBuffer(); int count=0; for(T t : this) { @@ -56,12 +58,12 @@ public abstract class PrintableTree implements Iterable String q = t==null ? "null" : t.toString(); if (q.length() > 0) { ret.append(q); ret.append(" "); } } - if (count==1 && ignoreSingleton()) return ret.toString().trim(); + if (count==1 && ignoreSingleton()) { return cached = ret.toString().trim(); } String tail = ret.toString().trim(); String head = headToString(); String h = (head!=null && !head.toString().equals("")) ? (tail.length() > 0 ? head+":" : head+"") : ""; if (tail.length() > 0) tail = left() + tail + right(); - return h + tail; + return cached = h + tail; } /** append Java code to sb which evaluates to this instance */