PrintWrapper outputrepair = null;
PrintWrapper outputaux = null;
PrintWrapper outputhead = null;
- String name="foo";
+ public static String name="foo";
+ public static String postfix="";
String headername;
static VarDescriptor oldmodel=null;
static VarDescriptor newmodel=null;
}
}
-
private void name_updates() {
int count=0;
for(Iterator it=termination.updatenodes.iterator();it.hasNext();) {
if (togenerate.contains(gn))
for (int i=0;i<mun.numUpdates();i++) {
UpdateNode un=mun.getUpdate(i);
- String name="update"+String.valueOf(count++);
+ String name="update"+RepairGenerator.name+String.valueOf(count++);
updatenames.put(un,name);
}
}
cr.outputline(vdstate.getSafeSymbol()+"->"+vd.getSafeSymbol()+"=("+vd.getType().getGenerateType().getSafeSymbol()+")"+vd.getSafeSymbol()+";");
}
/* Insert repair here */
- cr.outputline("doanalysis("+vdstate.getSafeSymbol()+");");
+ cr.outputline("doanalysis"+postfix+"("+vdstate.getSafeSymbol()+");");
globals=state.stGlobals.descriptors();
while (globals.hasNext()) {
VarDescriptor vd=(VarDescriptor) globals.next();
craux.outputline(relation.getSafeSymbol() + "_hashinv = noargallocateSimpleHash();");
}
}
-
+ craux.outputline("return thisvar;");
craux.endblock();
crhead.outputline("};");
craux.outputline("void free"+name+"(struct "+ name +"* thisvar)");
craux.outputline("int abstractcount;");
}
- crhead.outputline("void doanalysis(struct "+name+"_state *);");
- craux.outputline("void doanalysis(struct "+name+"_state * thisvar)");
+ crhead.outputline("void doanalysis"+postfix+"(struct "+name+"_state *);");
+ craux.outputline("void doanalysis"+postfix+"(struct "+name+"_state * thisvar)");
craux.startblock();
+ craux.outputline("int highmark;"); /* This declaration is special...need it to be first */
craux.startBuffer();
+
if (Compiler.TIME) {
craux.outputline("struct timeval _begin_time,_end_time;");
craux.outputline("gettimeofday(&_begin_time,NULL);");
craux.outputline("rebuildcount=0;");
craux.outputline("abstractcount=0;");
}
- craux.addDeclaration("int","highmark");
+
craux.addDeclaration("struct "+name+ " * ",oldmodel.getSafeSymbol());
craux.outputline(oldmodel.getSafeSymbol()+"=0;");
cr.endblock();
}
+ Iterator reliterator = state.stRelations.descriptors();
+ while (reliterator.hasNext()) {
+ RelationDescriptor rd = (RelationDescriptor) reliterator.next();
+
+
+ String relname = rd.getSafeSymbol();
+ if (rd.testUsage(RelationDescriptor.IMAGE)) {
+ cr.startblock();
+ cr.outputline("/* printing relation " + relname+"*/");
+ cr.outputline("printf(\"\\nPrinting relation " + rd.getSymbol() + " - %d elements \\n\", SimpleHashcountset("+relname+"_hash));");
+ cr.addDeclaration("struct SimpleIterator","__reliterator");
+ cr.outputline("SimpleHashiterator("+relname+"_hash,&__reliterator);");
+ cr.outputline("while (hasNext(&__reliterator))");
+ cr.startblock();
+ cr.addDeclaration("int","__relval");
+ cr.addDeclaration("int","__relval2");
+ cr.outputline("__relval2 = (int) key(&__reliterator);");
+ cr.outputline("__relval = (int) next(&__reliterator);");
+
+ cr.outputline("printf(\"<%ld,%ld> \", __relval2,__relval);");
+
+ cr.endblock();
+ cr.endblock();
+ } else if (rd.testUsage(RelationDescriptor.INVIMAGE)) {
+ cr.startblock();
+ cr.outputline("/* printing inv relation " + relname+"*/");
+ cr.outputline("printf(\"\\nPrinting relation using inv" + rd.getSymbol() + " - %d elements \\n\", SimpleHashcountset("+relname+"_hash));");
+ cr.addDeclaration("struct SimpleIterator","__reliterator");
+ cr.outputline("SimpleHashiterator("+relname+"_hashinv,&__reliterator);");
+ cr.outputline("while (hasNext(&__reliterator))");
+ cr.startblock();
+ cr.addDeclaration("int","__relval");
+ cr.addDeclaration("int","__relval2");
+ cr.outputline("__relval2 = (int) key(&__reliterator);");
+ cr.outputline("__relval = (int) next(&__reliterator);");
+
+
+ cr.outputline("printf(\"<%ld,%ld> \", __relval,__relval2);");
+
+ cr.endblock();
+ cr.endblock();
+ }
+
+ }
+
cr.outputline("printf(\"\\n\\n------------------- END PRINTING\\n\");");
}