edits
[cdsspec-compiler.git] / src / edu / uci / eecs / codeGenerator / CodeGenerator.java
index 38a498103807d63a09f887b7c71e692d94e160c6..67848e5fb566d32916d01427e77ebe72c006d94c 100644 (file)
@@ -13,6 +13,7 @@ import java.util.HashMap;
 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;
@@ -59,10 +60,8 @@ public class CodeGenerator {
 
        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) {
@@ -104,6 +103,8 @@ public class CodeGenerator {
                        // 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;
@@ -122,6 +123,15 @@ public class CodeGenerator {
                                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) {
@@ -252,7 +262,7 @@ public class CodeGenerator {
                                .GenerateCDSSpecHeaderFile(extractor);
                Code generatedCPP = CodeGeneratorUtils
                                .GenerateCDSSpecCPPFile(extractor);
-               
+
                System.out.println("/***** Generated header file *****/");
                System.out.println(generatedHeader);
                System.out.println("/***** Generated cpp file *****/");
@@ -308,8 +318,17 @@ public class CodeGenerator {
        }
 
        static public void main(String[] args) {
-               String dirName = Environment.MS_QUEUE;
-               CodeGenerator generator = new CodeGenerator(dirName);
-               generator.generateCode();
+//             String[] dirNames = { Environment.REGISTER, Environment.MS_QUEUE,
+//                             Environment.LINUXRWLOCKS, Environment.MCS_LOCK,
+//                             Environment.DEQUE, Environment.TREIBER_STACK };
+               String[] dirNames = args;
+
+               for (int i = 0; i < dirNames.length; i++) {
+                       String dirName = dirNames[i];
+                       System.out.println("/**********   Processing " + dirName
+                                       + "    **********/");
+                       CodeGenerator generator = new CodeGenerator(dirName);
+                       generator.generateCode();
+               }
        }
 }