bug fixing
[cdsspec-compiler.git] / src / edu / uci / eecs / specCompiler / codeGenerator / CodeGenerator.java
index 66bdca4ab408d740edb6a444ad684fc9fc48ee02..2e44f5ad9b7e0d63d56cf9f502d8f6b52c5bea8f 100644 (file)
@@ -87,11 +87,8 @@ public class CodeGenerator {
                }
        }
 
-       // Mainly rename and wrap the interface
+       // Wrap the interface and then renaem it
        private void interface2Code(InterfaceConstruct construct) {
-               // First rename the interface
-               CodeVariables.renameInterface(_semantics, construct);
-
                // If there's no define construct for it, we generate the wrapper just
                // in place without declaration
                InterfaceDefineConstruct defineConstruct = _semantics.interfaceName2DefineConstruct
@@ -101,36 +98,44 @@ public class CodeGenerator {
                CodeAddition addition;
                // Then generate the wrapper if necessary
                if (defineConstruct != null) { // Need to have a wrapper declaration
-                       newCode = CodeVariables.generateInterfaceWrapperDeclaration(_semantics, construct);
+                       newCode = CodeVariables.generateInterfaceWrapperDeclaration(
+                                       _semantics, construct);
                        lineNum = construct.beginLineNum;
                        // Add the wrapper declaration
                        addition = new CodeAddition(lineNum, newCode);
                        if (!codeAdditions.containsKey(construct.file)) {
-                               codeAdditions.put(construct.file, new ArrayList<CodeAddition>());
+                               codeAdditions
+                                               .put(construct.file, new ArrayList<CodeAddition>());
                        }
                        codeAdditions.get(construct.file).add(addition);
-                       
+
                        // Add the wrapper definition
-                       newCode = CodeVariables.generateInterfaceWrapperDefinition(_semantics, construct);
+                       newCode = CodeVariables.generateInterfaceWrapperDefinition(
+                                       _semantics, construct);
                        lineNum = defineConstruct.beginLineNum;
                        // Add the wrapper declaration
                        addition = new CodeAddition(lineNum, newCode);
                        if (!codeAdditions.containsKey(defineConstruct.file)) {
-                               codeAdditions.put(defineConstruct.file, new ArrayList<CodeAddition>());
+                               codeAdditions.put(defineConstruct.file,
+                                               new ArrayList<CodeAddition>());
                        }
                        codeAdditions.get(defineConstruct.file).add(addition);
                } else { // No declaration needed
                        // Last generate the definition
-                       newCode = CodeVariables.generateInterfaceWrapperDefinition(_semantics, construct);
+                       newCode = CodeVariables.generateInterfaceWrapperDefinition(
+                                       _semantics, construct);
                        lineNum = construct.beginLineNum;
                        // Add the wrapper declaration
                        addition = new CodeAddition(lineNum, newCode);
                        if (!codeAdditions.containsKey(construct.file)) {
-                               codeAdditions.put(construct.file, new ArrayList<CodeAddition>());
+                               codeAdditions
+                                               .put(construct.file, new ArrayList<CodeAddition>());
                        }
                        codeAdditions.get(construct.file).add(addition);
                }
-               
+
+               // Don't forget to rename the interface
+               CodeVariables.renameInterface(_semantics, construct);
        }
 
        private void potentialCPDefine2Code(PotentialCPDefineConstruct construct) {
@@ -223,8 +228,7 @@ public class CodeGenerator {
                // Sort code additions
                for (File file : codeAdditions.keySet()) {
                        ArrayList<CodeAddition> additions = codeAdditions.get(file);
-                       if (additions.size() == 0) // Simply do nothing, already written
-                                                                               // once
+                       if (additions.size() == 0) // Simply do nothing
                                continue;
                        ArrayList<String> content = _semantics.srcFilesInfo.get(file).content;
                        Collections.sort(additions, CodeAddition.lineNumComparator);
@@ -240,13 +244,16 @@ public class CodeGenerator {
        public static void main(String[] argvs) {
                String homeDir = Environment.HOME_DIRECTORY;
                File[] srcFiles = {
-               // new File(Environment.MODEL_CHECKER_TEST_DIR +
-               // "/backup_linuxrwlocks.c") };
-               // new File(homeDir + "/benchmark/linuxrwlocks/linuxrwlocks.c") };
-               new File(homeDir
-                               + "/benchmark/cliffc-hashtable/simplified_cliffc_hashtable.h"), };
-               // new File(homeDir + "/benchmark/ms-queue/my_queue.c"),
-               // new File(homeDir + "/benchmark/ms-queue/my_queue.c") };
+                               // new File(Environment.MODEL_CHECKER_TEST_DIR +
+                               // "/backup_linuxrwlocks.c") };
+                               // new File(homeDir + "/benchmark/linuxrwlocks/linuxrwlocks.c")
+                               // };
+                               // new File(homeDir
+                               // +
+                               // "/benchmark/cliffc-hashtable/simplified_cliffc_hashtable.h"),
+                               // };
+                               new File(homeDir + "/benchmark/ms-queue/my_queue.c"),
+                               new File(homeDir + "/benchmark/ms-queue/my_queue.h") };
                // new File(homeDir + "/benchmark/test/test.c") };
                CodeGenerator gen = new CodeGenerator(srcFiles);
                gen.generateCode();