These checking do the reconstruction of the model and invoke concrete repairs.
[repair.git] / Repair / RepairCompiler / MCC / IR / SetQuantifier.java
index c9ef3dfb306d8492d08a00585c43008a3da4e4a1..9d03c8a16bba0cdd603de5c50db8864cae6dbb01 100755 (executable)
@@ -43,6 +43,25 @@ public class SetQuantifier extends Quantifier {
         writer.outputline(var.getType().getGenerateType() + " " + var.getSafeSymbol() + " = (" + var.getType().getGenerateType() + ") " + var.getSafeSymbol() + "_iterator->next();");
     }
   
+    public void generate_open(CodeWriter writer, String type,int number, String left,String right) {
+       VarDescriptor tmp=VarDescriptor.makeNew("flag");
+        writer.outputline("SimpleIterator* " + var.getSafeSymbol() + "_iterator = " + set.getSafeSymbol() + "_hash->iterator();");
+       writer.outputline("int "+tmp.getSafeSymbol()+"=0;");
+       writer.outputline("if ("+type+"=="+number+")");
+       writer.outputline(tmp.getSafeSymbol()+"=1;");
+
+       writer.outputline("while("+tmp.getSafeSymbol()+"||(("+type+"!="+number+")&&"+var.getSafeSymbol() + "_iterator->hasNext()))");
+        writer.startblock();
+        writer.outputline(var.getType().getGenerateType() + " " + var.getSafeSymbol() + ";");
+       writer.outputline("if ("+type+"=="+number+")");
+       writer.startblock();
+       writer.outputline(tmp.getSafeSymbol()+"=0;");
+        writer.outputline(var.getSafeSymbol() + " = (" + var.getType().getGenerateType() + ") " + left + ";");
+       writer.endblock();
+       writer.outputline("else");
+        writer.outputline(var.getSafeSymbol() + " = (" + var.getType().getGenerateType() + ") " + var.getSafeSymbol() + "_iterator->next();");
+    }
+  
     public int generate_worklistload(CodeWriter writer, int offset) {        
         String varname = var.getSafeSymbol();
         writer.outputline("int " + varname + " = wi->word" + offset + ";");