import Analysis.MLP.CodePlan;
import Analysis.MLP.SESEandAgePair;
import Analysis.MLP.WaitingElement;
+import Util.CodePrinter;
public class BuildCode {
State state;
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();
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.
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>");
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);
super(w,af);
}
+ public CodePrinter(File w) throws java.io.FileNotFoundException {
+ super(w);
+ }
+
public CodePrinter(OutputStream w) {
super(w);
}
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;
break;
case '}':
braceCount--;
+ //fix up close brace...
+ if (!seenChar)
+ sb=genSpacing();
seenChar=true;
break;
case ' ':
}
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