import edu.uci.eecs.codeGenerator.CodeAdditions.CodeAddition;
import edu.uci.eecs.specExtraction.Code;
import edu.uci.eecs.specExtraction.Construct;
+import edu.uci.eecs.specExtraction.DefineConstruct;
import edu.uci.eecs.specExtraction.EntryConstruct;
import edu.uci.eecs.specExtraction.InterfaceConstruct;
import edu.uci.eecs.specExtraction.OPConstruct;
public CodeGenerator(String dirName) {
this.dirName = dirName;
- originalDir = Environment.BenchmarksDir + dirName
- + "/";
- generatedDir = Environment.GeneratedFilesDir + dirName
- + "/";
+ originalDir = Environment.BenchmarksDir + dirName + "/";
+ generatedDir = Environment.GeneratedFilesDir + dirName + "/";
try {
files = this.getSrcFiles(originalDir);
} catch (FileNotFoundException e) {
// Extract all the additions
ArrayList<OPConstruct> OPList = extractor.OPListMap.get(file);
EntryConstruct entry = extractor.entryMap.get(file);
+ ArrayList<DefineConstruct> defineList = extractor.defineListMap
+ .get(file);
ArrayList<InterfaceConstruct> interfaceList = extractor.interfaceListMap
.get(file);
Code code = null;
addition = new CodeAddition(entry.beginLineNum, code);
additions.addCodeAddition(addition);
}
+ // For define constructs
+ if (defineList != null) {
+ for (DefineConstruct con : defineList) {
+ code = CodeGeneratorUtils.Generate4Define(con);
+ addition = new CodeAddition(con.endLineNum,
+ code);
+ additions.addCodeAddition(addition);
+ }
+ }
// For interface constructs
if (interfaceList != null) {
for (InterfaceConstruct con : interfaceList) {
additionIdx = 0;
curAddition = additions.codeAdditions.get(0);
}
+
+ // Include the header for C/C++ files (.c/.cc/.cpp)
+ String name = file.getName();
+ if (name.endsWith(".c") || name.endsWith(".cc") || name.endsWith(".cpp")) {
+ newCode.addLine(CodeGeneratorUtils.Comment("Add the" + SpecNaming.CDSSpecGeneratedHeader + " header file"));
+ newCode.addLine(CodeGeneratorUtils.IncludeHeader(SpecNaming.CDSSpecGeneratedHeader));
+ newCode.addLine("");
+ }
try {
br = new BufferedReader(new FileReader(file));
.GenerateCDSSpecHeaderFile(extractor);
Code generatedCPP = CodeGeneratorUtils
.GenerateCDSSpecCPPFile(extractor);
-
+
System.out.println("/***** Generated header file *****/");
System.out.println(generatedHeader);
System.out.println("/***** Generated cpp file *****/");
}
static public void main(String[] args) {
- String dirName = Environment.MS_QUEUE;
- CodeGenerator generator = new CodeGenerator(dirName);
- generator.generateCode();
+
+// String[] dirNames = args;
+ String[] dirNames = Environment.Benchmarks;
+
+ for (int i = 0; i < dirNames.length; i++) {
+ String dirName = dirNames[i];
+ System.out.println("/********** Generating CDSSpec files for " + dirName
+ + " **********/");
+ CodeGenerator generator = new CodeGenerator(dirName);
+ generator.generateCode();
+ }
}
}