Change tabbing for everything....
[IRC.git] / Robust / src / Analysis / FlatIRGraph / FlatIRGraph.java
index ac816503a60754069266f1438e9034e5fd475c59..a5bfd34dddf66866887668a12d084e16828e5c12 100644 (file)
@@ -7,111 +7,111 @@ import java.io.*;
 
 public class FlatIRGraph {
 
-    private State state;
+  private State state;
 
-    private BufferedWriter flatbw;
+  private BufferedWriter flatbw;
 
-    private HashSet<FlatNode> visited;
-    private HashSet<FlatNode> toVisit;
-    
-    private int labelindex;
-    private Hashtable<FlatNode, Integer> flatnodetolabel;
+  private HashSet<FlatNode> visited;
+  private HashSet<FlatNode> toVisit;
 
-    public FlatIRGraph(State state, boolean tasks, boolean usermethods, boolean libmethods) throws java.io.IOException {
-       this.state=state;
+  private int labelindex;
+  private Hashtable<FlatNode, Integer> flatnodetolabel;
 
-       if( tasks )
-           graphTasks();
+  public FlatIRGraph(State state, boolean tasks, boolean usermethods, boolean libmethods) throws java.io.IOException {
+    this.state=state;
 
-       if( usermethods || libmethods )
-           graphMethods();
-    }
+    if( tasks )
+      graphTasks();
 
-    private void graphTasks() throws java.io.IOException {
-       for(Iterator it_tasks=state.getTaskSymbolTable().getDescriptorsIterator();it_tasks.hasNext();) {
-           TaskDescriptor td = (TaskDescriptor)it_tasks.next();
-           FlatMethod fm = state.getMethodFlat(td);
-           writeFlatIRGraph(fm,"task"+td.getSymbol());
-       }       
-    }
+    if( usermethods || libmethods )
+      graphMethods();
+  }
 
-    private void graphMethods() throws java.io.IOException {
-       for(Iterator it_classes=state.getClassSymbolTable().getDescriptorsIterator();it_classes.hasNext();) {
-           ClassDescriptor cd = (ClassDescriptor)it_classes.next();
-           for(Iterator it_methods=cd.getMethods();it_methods.hasNext();) {
-               MethodDescriptor md = (MethodDescriptor)it_methods.next();
-               FlatMethod fm = state.getMethodFlat(md);
-               writeFlatIRGraph(fm,cd.getSymbol()+"."+md.getSymbol());
-           }
-       }       
+  private void graphTasks() throws java.io.IOException {
+    for(Iterator it_tasks=state.getTaskSymbolTable().getDescriptorsIterator(); it_tasks.hasNext();) {
+      TaskDescriptor td = (TaskDescriptor)it_tasks.next();
+      FlatMethod fm = state.getMethodFlat(td);
+      writeFlatIRGraph(fm,"task"+td.getSymbol());
     }
-
-    private void writeFlatIRGraph( FlatMethod fm, String graphname ) throws java.io.IOException {
-       // give every node in the flat IR graph a unique label
-       // so a human being can inspect the graph and verify
-       // correctness
-       flatnodetolabel=new Hashtable<FlatNode, Integer>();
-       visited=new HashSet<FlatNode>();
-       labelindex=0;
-       labelFlatNodes( fm );
-
-       // take symbols out of graphname that cause dot to fail
-       graphname = graphname.replaceAll( "[\\W]", "" );
-
-       flatbw=new BufferedWriter( new FileWriter( graphname+"_flatIRGraph.dot" ) );
-       flatbw.write("digraph "+graphname+" {\n");
-
-       visited=new HashSet<FlatNode>();
-       toVisit=new HashSet<FlatNode>();
-       toVisit.add(fm);
-
-       while( !toVisit.isEmpty() ) {
-           FlatNode fn=(FlatNode)toVisit.iterator().next();
-           toVisit.remove(fn);
-           visited.add(fn);
-
-           if( fn.kind() == FKind.FlatMethod ) {
-               // FlatMethod does not have toString
-               flatbw.write( makeDotNodeDec( graphname, flatnodetolabel.get(fn), fn.getClass().getName(), "FlatMethod" ) );
-           } else {
-               flatbw.write( makeDotNodeDec( graphname, flatnodetolabel.get(fn), fn.getClass().getName(), fn.toString() ) );
-           }
-           
-           for(int i=0;i<fn.numNext();i++) {
-               FlatNode nn=fn.getNext(i);
-               flatbw.write( "  node"+flatnodetolabel.get(fn)+" -> node"+flatnodetolabel.get(nn)+";\n" );
-
-               if( !visited.contains( nn ) ) {
-                   toVisit.add( nn );
-               }
-           }
-       }
-
-       flatbw.write( "}\n" );
-       flatbw.close();
+  }
+
+  private void graphMethods() throws java.io.IOException {
+    for(Iterator it_classes=state.getClassSymbolTable().getDescriptorsIterator(); it_classes.hasNext();) {
+      ClassDescriptor cd = (ClassDescriptor)it_classes.next();
+      for(Iterator it_methods=cd.getMethods(); it_methods.hasNext();) {
+       MethodDescriptor md = (MethodDescriptor)it_methods.next();
+       FlatMethod fm = state.getMethodFlat(md);
+       writeFlatIRGraph(fm,cd.getSymbol()+"."+md.getSymbol());
+      }
     }
-
-    private void labelFlatNodes(FlatNode fn) {
-       visited.add(fn);
-       flatnodetolabel.put(fn,new Integer(labelindex++));
-       for(int i=0;i<fn.numNext();i++) {
-           FlatNode nn=fn.getNext(i);
-           if(!visited.contains(nn)) {
-               labelFlatNodes(nn);
-           }
+  }
+
+  private void writeFlatIRGraph(FlatMethod fm, String graphname) throws java.io.IOException {
+    // give every node in the flat IR graph a unique label
+    // so a human being can inspect the graph and verify
+    // correctness
+    flatnodetolabel=new Hashtable<FlatNode, Integer>();
+    visited=new HashSet<FlatNode>();
+    labelindex=0;
+    labelFlatNodes(fm);
+
+    // take symbols out of graphname that cause dot to fail
+    graphname = graphname.replaceAll("[\\W]", "");
+
+    flatbw=new BufferedWriter(new FileWriter(graphname+"_flatIRGraph.dot") );
+    flatbw.write("digraph "+graphname+" {\n");
+
+    visited=new HashSet<FlatNode>();
+    toVisit=new HashSet<FlatNode>();
+    toVisit.add(fm);
+
+    while( !toVisit.isEmpty() ) {
+      FlatNode fn=(FlatNode)toVisit.iterator().next();
+      toVisit.remove(fn);
+      visited.add(fn);
+
+      if( fn.kind() == FKind.FlatMethod ) {
+       // FlatMethod does not have toString
+       flatbw.write(makeDotNodeDec(graphname, flatnodetolabel.get(fn), fn.getClass().getName(), "FlatMethod") );
+      } else {
+       flatbw.write(makeDotNodeDec(graphname, flatnodetolabel.get(fn), fn.getClass().getName(), fn.toString() ) );
+      }
+
+      for(int i=0; i<fn.numNext(); i++) {
+       FlatNode nn=fn.getNext(i);
+       flatbw.write("  node"+flatnodetolabel.get(fn)+" -> node"+flatnodetolabel.get(nn)+";\n");
+
+       if( !visited.contains(nn) ) {
+         toVisit.add(nn);
        }
+      }
     }
 
-    private String makeNodeName( String graphname, Integer id, String type ) {
-       String s = String.format( "%05d", id );
-       return "FN"+s+"_"+type;
+    flatbw.write("}\n");
+    flatbw.close();
+  }
+
+  private void labelFlatNodes(FlatNode fn) {
+    visited.add(fn);
+    flatnodetolabel.put(fn,new Integer(labelindex++));
+    for(int i=0; i<fn.numNext(); i++) {
+      FlatNode nn=fn.getNext(i);
+      if(!visited.contains(nn)) {
+       labelFlatNodes(nn);
+      }
     }
-
-    private String makeDotNodeDec( String graphname, Integer id, String type, String details ) {
-       if( details == null ) {
-           return "  node"+id+"[label=\""+makeNodeName(graphname,id,type)+"\"];\n";
-       } else {
-           return "  node"+id+"[label=\""+makeNodeName(graphname,id,type)+"\\n"+details+"\"];\n";
-       }
+  }
+
+  private String makeNodeName(String graphname, Integer id, String type) {
+    String s = String.format("%05d", id);
+    return "FN"+s+"_"+type;
+  }
+
+  private String makeDotNodeDec(String graphname, Integer id, String type, String details) {
+    if( details == null ) {
+      return "  node"+id+"[label=\""+makeNodeName(graphname,id,type)+"\"];\n";
+    } else {
+      return "  node"+id+"[label=\""+makeNodeName(graphname,id,type)+"\\n"+details+"\"];\n";
     }
+  }
 }