fixed minor bugs
[cdsspec-compiler.git] / src / edu / uci / eecs / specCompiler / codeGenerator / CodeVariables.java
index 4abd5699d300140353f325036966661f72aca8b8..f98250d6e163637c1efa2b45aa166c7b1112e99e 100644 (file)
@@ -545,6 +545,19 @@ public class CodeVariables {
                        newCode.add("}");
                        newCode.add("");
                }
+               // Also add the true condition if any
+               if (semantics.containsConditionalInterface(new ConditionalInterface(interfaceName, ""))) {
+                       structName = "hb_condition";
+                       newCode.add(STRUCT_NEW_DECLARE_DEFINE(ANNO_HB_CONDITION, structName));
+                       newCode.add(ASSIGN_TO_PTR(structName, "interface_num", interfaceNum));
+                       newCode.add(ASSIGN_TO_PTR(structName, "hb_condition_num", "0"));
+                       anno = "annotation_hb_condition";
+                       newCode.add(STRUCT_NEW_DECLARE_DEFINE(SPEC_ANNOTATION, anno));
+                       newCode.add(ASSIGN_TO_PTR(anno, "type", SPEC_ANNO_TYPE_HB_CONDITION));
+                       newCode.add(ASSIGN_TO_PTR(anno, "annotation", structName));
+                       newCode.add(ANNOTATE(anno));
+                       newCode.add("");
+               }
                // Interface end
                String infoStructType = null, infoName = null;
                if (!header.returnType.equals("void") || header.args.size() > 0) {
@@ -620,6 +633,7 @@ public class CodeVariables {
                newCode.add(COMMENT("Include redundant headers"));
                newCode.add(INCLUDE(HEADER_STDINT));
                newCode.add(INCLUDE(HEADER_CDSANNOTATE));
+               newCode.add(INCLUDE(HEADER_SPECANNOTATION));
                newCode.add("");
                // Add annotation
                newCode.add("if (" + construct.condition + ") {");