1 package edu.berkeley.sbp;
2 import edu.berkeley.sbp.*;
3 import edu.berkeley.sbp.*;
4 import edu.berkeley.sbp.util.*;
7 import java.lang.reflect.*;
9 public abstract class PrintableTree<T extends PrintableTree> implements Iterable<T> {
11 protected abstract String headToString();
12 protected abstract String headToJava();
14 public String toString() {
15 StringBuffer ret = new StringBuffer();
17 String q = t==null ? "null" : t.toString();
18 if (q.length() > 0) { ret.append(q); ret.append(" "); }
20 String tail = ret.toString().trim();
21 String head = headToString();
22 String h = (head!=null && !head.toString().equals("")) ? (tail.length() > 0 ? head+":" : head+"") : "";
23 if (tail.length() > 0) tail = "{" + tail + "}";
27 /** append Java code to <tt>sb</tt> which evaluates to this instance */
28 public void toJava(StringBuffer sb) {
29 sb.append("new "+this.getClass().getName()+"(null, ");
30 String head = headToJava();
31 sb.append(head==null ? "null" : "\"" + head + "\"");
32 sb.append(", new "+this.getClass().getName()+"[] { ");
35 if (!first) sb.append(",\n ");
36 if (t==null) sb.append("null");