Completed support for generating C code.
[repair.git] / Repair / RepairCompiler / MCC / IR / ForQuantifier.java
index 1052eaa7ced7ea0212621f690e724d0b7d5ff2dd..20a0356fb0f3f0c25c9f408557d1ee7a7c999b96 100755 (executable)
@@ -14,17 +14,24 @@ public class ForQuantifier extends Quantifier {
         this.var = vd;
     }
 
+    public VarDescriptor getVar() {
+       return var;
+    }
+
     public void setBounds(Expr lower, Expr upper) {
         this.lower = lower;
         this.upper = upper;
     }
 
     public Set getRequiredDescriptors() {
-        return new HashSet();
+        HashSet set=new HashSet();
+       set.addAll(lower.getRequiredDescriptors());
+       set.addAll(upper.getRequiredDescriptors());
+       return set;
     }
 
     public String toString() {
-        return "for quantifier " + var.getSymbol() + " = " + lower + " to " + upper;
+        return "for quantifier " + var.getSymbol() + " = " + lower.name() + " to " + upper.name();
     }
 
     public void generate_open(CodeWriter writer) {
@@ -32,11 +39,30 @@ public class ForQuantifier extends Quantifier {
         VarDescriptor ud = VarDescriptor.makeNew();
         lower.generate(writer, ld);
         upper.generate(writer, ud);
-        
-        writer.outputline("for (int " + var.getSafeSymbol() + " = " + ld.getSafeSymbol() + "; " + var.getSafeSymbol() + " <= " + ud.getSafeSymbol() + "; " + var.getSafeSymbol() + "++)");
+        writer.addDeclaration("int",var.getSafeSymbol());
+        writer.outputline("for (" + var.getSafeSymbol() + " = " + ld.getSafeSymbol() + "; " + var.getSafeSymbol() + " <= " + ud.getSafeSymbol() + "; " + var.getSafeSymbol() + "++)");
         writer.startblock();
     }
 
+    public void generate_open(CodeWriter writer, String type,int number, String
+left,String right) {
+       generate_open(writer);
+    }
+
+    public int generate_worklistload(CodeWriter writer, int offset) {        
+        String varname = var.getSafeSymbol();
+       writer.addDeclaration("int",varname);
+        writer.outputline(varname + " = wi->word" + offset + ";"); 
+        return offset + 1;       
+    }
+
+    public int generate_workliststore(CodeWriter writer, int offset) {        
+        String varname = var.getSafeSymbol();
+        writer.outputline("wi->word" + offset + " = " + varname + ";");
+        return offset + 1;       
+    }
+
+
     public boolean typecheck(SemanticAnalyzer sa) {
         TypeDescriptor lt = lower.typecheck(sa);
         TypeDescriptor ut = upper.typecheck(sa);