Indent the code a little better by default...isn't perfect, but better than it was...
authorbdemsky <bdemsky>
Mon, 22 Nov 2010 22:37:02 +0000 (22:37 +0000)
committerbdemsky <bdemsky>
Mon, 22 Nov 2010 22:37:02 +0000 (22:37 +0000)
Robust/src/IR/Flat/BuildCode.java
Robust/src/IR/Flat/RuntimeConflictResolver.java
Robust/src/Util/CodePrinter.java

index a94f438def7578e1560119ae75496ca9210e47c7..1a7907081bc1e9a4fe3150bfd7e00130f3becffb 100644 (file)
@@ -44,6 +44,7 @@ import Analysis.MLP.VSTWrapper;
 import Analysis.MLP.CodePlan;
 import Analysis.MLP.SESEandAgePair;
 import Analysis.MLP.WaitingElement;
+import Util.CodePrinter;
 
 public class BuildCode {
   State state;
@@ -163,27 +164,27 @@ public class BuildCode {
 
     try {
       if (state.SANDBOX) {
-       outsandbox=new PrintWriter(new FileOutputStream(PREFIX+"sandboxdefs.c"), true);
+       outsandbox=new CodePrinter(new FileOutputStream(PREFIX+"sandboxdefs.c"), true);
       }
-      outstructs=new PrintWriter(new FileOutputStream(PREFIX+"structdefs.h"), true);
-      outmethodheader=new PrintWriter(new FileOutputStream(PREFIX+"methodheaders.h"), true);
-      outclassdefs=new PrintWriter(new FileOutputStream(PREFIX+"classdefs.h"), true);
+      outstructs=new CodePrinter(new FileOutputStream(PREFIX+"structdefs.h"), true);
+      outmethodheader=new CodePrinter(new FileOutputStream(PREFIX+"methodheaders.h"), true);
+      outclassdefs=new CodePrinter(new FileOutputStream(PREFIX+"classdefs.h"), true);
       if(state.MGC) {
         // TODO add version for normal Java later
-      outglobaldefs=new PrintWriter(new FileOutputStream(PREFIX+"globaldefs.h"), true);
+      outglobaldefs=new CodePrinter(new FileOutputStream(PREFIX+"globaldefs.h"), true);
       }
-      outmethod=new PrintWriter(new FileOutputStream(PREFIX+"methods.c"), true);
-      outvirtual=new PrintWriter(new FileOutputStream(PREFIX+"virtualtable.h"), true);
+      outmethod=new CodePrinter(new FileOutputStream(PREFIX+"methods.c"), true);
+      outvirtual=new CodePrinter(new FileOutputStream(PREFIX+"virtualtable.h"), true);
       if (state.TASK) {
-       outtask=new PrintWriter(new FileOutputStream(PREFIX+"task.h"), true);
-       outtaskdefs=new PrintWriter(new FileOutputStream(PREFIX+"taskdefs.c"), true);
+       outtask=new CodePrinter(new FileOutputStream(PREFIX+"task.h"), true);
+       outtaskdefs=new CodePrinter(new FileOutputStream(PREFIX+"taskdefs.c"), true);
        if (state.OPTIONAL) {
-         outoptionalarrays=new PrintWriter(new FileOutputStream(PREFIX+"optionalarrays.c"), true);
-         optionalheaders=new PrintWriter(new FileOutputStream(PREFIX+"optionalstruct.h"), true);
+         outoptionalarrays=new CodePrinter(new FileOutputStream(PREFIX+"optionalarrays.c"), true);
+         optionalheaders=new CodePrinter(new FileOutputStream(PREFIX+"optionalstruct.h"), true);
        }
       }
       if (state.structfile!=null) {
-       outrepairstructs=new PrintWriter(new FileOutputStream(PREFIX+state.structfile+".struct"), true);
+       outrepairstructs=new CodePrinter(new FileOutputStream(PREFIX+state.structfile+".struct"), true);
       }
     } catch (Exception e) {
       e.printStackTrace();
index f2d8d9a13d3f24a3b49b90ed7d593284526ec2d7..5102130741c2a34aee83718c63899df70102d34b 100644 (file)
@@ -17,6 +17,7 @@ import IR.TypeDescriptor;
 import Analysis.OoOJava.ConflictGraph;
 import Analysis.OoOJava.ConflictNode;
 import Analysis.OoOJava.OoOJavaAnalysis;
+import Util.CodePrinter;
 
 /* An instance of this class manages all OoOJava coarse-grained runtime conflicts
  * by generating C-code to either rule out the conflict at runtime or resolve one.
@@ -78,8 +79,8 @@ public class RuntimeConflictResolver {
     this.oooa=oooa;
     this.state=state;
 
-    cFile = new PrintWriter(new File(outputFile + ".c"));
-    headerFile = new PrintWriter(new File(outputFile + ".h"));
+    cFile = new CodePrinter(new File(outputFile + ".c"));
+    headerFile = new CodePrinter(new File(outputFile + ".h"));
     
     cFile.println("#include \"" + hashAndQueueCFileDir + "hashRCR.h\"\n#include \""
         + hashAndQueueCFileDir + "Queue_RCR.h\"\n#include <stdlib.h>");
index 046589b73d9c08514aad6aae19076c1ad18662d4..2d317a10894fbc34d945b222dad56a0c5b46eea3 100644 (file)
@@ -2,9 +2,11 @@ package Util;
 import java.io.PrintWriter;
 import java.io.Writer;
 import java.io.OutputStream;
+import java.io.File;
 
 public class CodePrinter extends PrintWriter {
   int braceCount=0;
+  boolean seenChar=false;
   StringBuffer sb=new StringBuffer();
   public CodePrinter(Writer w) {
     super(w);
@@ -14,6 +16,10 @@ public class CodePrinter extends PrintWriter {
     super(w,af);
   }
 
+  public CodePrinter(File w) throws java.io.FileNotFoundException {
+    super(w);
+  }
+
   public CodePrinter(OutputStream w) {
     super(w);
   }
@@ -108,13 +114,15 @@ public class CodePrinter extends PrintWriter {
   public void addString(String str) {
     char[] string=str.toCharArray();
     int lastcr=0;
-    boolean seenChar=false;
+
     for(int i=0;i<string.length;i++) {
       char c=string[i];
+
       switch(c) {
       case '\n': {
-       sb.append(string, lastcr, i-lastcr);
-       super.println(sb.toString());
+       //get the cr
+       sb.append(string, lastcr, (i-lastcr)+1);
+       super.write(sb.toString());
        sb=genSpacing();
        lastcr=i+1;//skip carriage return
        seenChar=false;
@@ -126,6 +134,9 @@ public class CodePrinter extends PrintWriter {
        break;
       case '}':
        braceCount--;
+       //fix up close brace...
+       if (!seenChar)
+         sb=genSpacing();
        seenChar=true;
        break;
       case ' ':
@@ -144,12 +155,13 @@ public class CodePrinter extends PrintWriter {
   }
 
   public void flush() {
-    super.println(sb.toString());
+    super.write(sb.toString());
     sb=genSpacing();
+    super.flush();
   }
 
   public void close() {
-    super.println(sb.toString());
+    super.write(sb.toString());
     super.close();
   }
 }
\ No newline at end of file