checkpoint
authoradam <adam@megacz.com>
Sun, 12 Feb 2006 00:01:00 +0000 (19:01 -0500)
committeradam <adam@megacz.com>
Sun, 12 Feb 2006 00:01:00 +0000 (19:01 -0500)
darcs-hash:20060212000100-5007d-4c92cbbb7c01833e7a607e9793985715c6f352e5.gz

src/edu/berkeley/sbp/Forest.java
src/edu/berkeley/sbp/util/GraphViz.java

index b9c4fcc..90c4e43 100644 (file)
@@ -70,7 +70,10 @@ public abstract class Forest<T> /*extends PrintableTree<Forest.MyBody<T>>*/ impl
             edges(n);
             return n;
         }
+        boolean edges = false;
         public void edges(GraphViz.Node n) {
+            if (edges) return;
+            edges = true;
             for(int i=0; i<tokens.length; i++) {
                 if (i==tokens.length-1 && unwrap) {
                     tokens[i].edges(n);
index a92e298..13899bb 100644 (file)
@@ -38,7 +38,7 @@ public class GraphViz {
         public void edges(PrintWriter pw) {
             if (simple()) return;
             for(Node n : edges)
-                pw.println("    "+name()+" -> " + n.name());
+                pw.println("    "+name()+" -> " + n.name() + " [color="+color+"];\n");
         }
         public int numEdges() { return edges.size(); }
         public boolean simple() {
@@ -63,15 +63,21 @@ public class GraphViz {
             if (directed) pw.print("ordering=out");
             if (simple()) {
                 pw.print(" shape=record ");
-                pw.print(" label=\"{");
+                pw.print(" label=\"");
+                boolean complex = false;
+                for(Node n : edges)
+                    if (n.edges.size()>0)
+                        complex = true;
+                if (!complex) pw.print("{");
                 boolean first = true;
                 for(Node n : edges) {
                     if (!first) pw.print("|");
                     first = false;
-                    pw.print("<"+n.name()+">");
+                    pw.print("<node_"+n.idx+">");
                     pw.print(StringUtil.escapify(n.label,"\\\""));
                 }
-                pw.print("}\"");
+                if (!complex) pw.print("}");
+                pw.print("\"");
             } else {
                 pw.print(" label=\"");
                 pw.print(StringUtil.escapify(label,"\\\""));
@@ -102,7 +108,7 @@ public class GraphViz {
 
     public void dump(PrintWriter pw) {
         IdentityHashMap<Node,Node> done = new IdentityHashMap<Node,Node>();
-        pw.println("digraph G {\n");
+        pw.println("digraph G { rankdir=LR; \n");
         for(Group g : groups.values()) {
             pw.println("  { rank=same;\n");
             for(Node n : groups.keySet())