X-Git-Url: http://plrg.eecs.uci.edu/git/?p=cdsspec-compiler.git;a=blobdiff_plain;f=src%2Fedu%2Fuci%2Feecs%2FspecCompiler%2FcodeGenerator%2FCodeGenerator.java;h=2e44f5ad9b7e0d63d56cf9f502d8f6b52c5bea8f;hp=66bdca4ab408d740edb6a444ad684fc9fc48ee02;hb=d18efdf3d6318f37d0b2443e5d0a9c1daba85363;hpb=9715bde2a0d400f34e601b5f5d8589a73eb46010 diff --git a/src/edu/uci/eecs/specCompiler/codeGenerator/CodeGenerator.java b/src/edu/uci/eecs/specCompiler/codeGenerator/CodeGenerator.java index 66bdca4..2e44f5a 100644 --- a/src/edu/uci/eecs/specCompiler/codeGenerator/CodeGenerator.java +++ b/src/edu/uci/eecs/specCompiler/codeGenerator/CodeGenerator.java @@ -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()); + codeAdditions + .put(construct.file, new ArrayList()); } 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()); + codeAdditions.put(defineConstruct.file, + new ArrayList()); } 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()); + codeAdditions + .put(construct.file, new ArrayList()); } 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 additions = codeAdditions.get(file); - if (additions.size() == 0) // Simply do nothing, already written - // once + if (additions.size() == 0) // Simply do nothing continue; ArrayList 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();