Various bug fixes related to the C switch.
authorbdemsky <bdemsky>
Mon, 1 Nov 2004 01:51:23 +0000 (01:51 +0000)
committerbdemsky <bdemsky>
Mon, 1 Nov 2004 01:51:23 +0000 (01:51 +0000)
Repair/RepairCompiler/MCC/CRuntime/SimpleHash.c
Repair/RepairCompiler/MCC/CRuntime/SimpleHash.h
Repair/RepairCompiler/MCC/IR/RepairGenerator.java

index 187d70f..a14dd87 100755 (executable)
@@ -196,6 +196,10 @@ void freeSimpleHash(struct SimpleHash *thisvar) {
     free(thisvar);
 }
 
+inline int SimpleHashcountset(struct SimpleHash * thisvar) {
+    return thisvar->numelements;
+}
+
 int SimpleHashfirstkey(struct SimpleHash *thisvar) {
   struct ArraySimple *ptr=thisvar->listhead;
   int index=0;
@@ -592,3 +596,41 @@ int RepairHashgetrelation(struct RepairHash *thisvar, int relation, int rule, in
     }
     return 0;
 }
+
+inline struct SimpleIterator * noargallocateSimpleIterator() {
+    return (struct SimpleIterator*)malloc(sizeof(struct SimpleIterator));
+}
+
+inline struct SimpleIterator * allocateSimpleIterator(struct ArraySimple *start, struct ArraySimple *tl, int tlindex) {
+    struct SimpleIterator *thisvar=(struct SimpleIterator*)malloc(sizeof(struct SimpleIterator));
+    thisvar->cur = start;
+    thisvar->index=0;
+    thisvar->tailindex=tlindex;
+    thisvar->tail=tl;
+    return thisvar;
+}
+
+inline int hasNext(struct SimpleIterator *thisvar) {
+    if (thisvar->cur==thisvar->tail &&
+       thisvar->index==thisvar->tailindex)
+        return 0;
+    while((thisvar->index==ARRAYSIZE)||!thisvar->cur->nodes[thisvar->index].inuse) {
+        if (thisvar->index==ARRAYSIZE) {
+            thisvar->index=0;
+            thisvar->cur=thisvar->cur->nextarray;
+        } else
+            thisvar->index++;
+    }
+    if (thisvar->cur->nodes[thisvar->index].inuse)
+        return 1;
+    else
+        return 0;
+}
+
+inline int next(struct SimpleIterator *thisvar) {
+    return thisvar->cur->nodes[thisvar->index++].data;
+}
+
+inline int key(struct SimpleIterator *thisvar) {
+    return thisvar->cur->nodes[thisvar->index].key;
+}
index 48439bc..a58d98f 100755 (executable)
@@ -106,10 +106,7 @@ struct SimpleHash {
     int tailindex;
 };
 
-inline int SimpleHashcountset(struct SimpleHash * thisvar) {
-    return thisvar->numelements;
-}
-
+inline int SimpleHashcountset(struct SimpleHash * thisvar);
 
 /* SimpleHashExcepion  *************************************************/
 
@@ -135,47 +132,20 @@ struct SimpleIterator {
   int index,tailindex;
 };
 
-inline struct SimpleIterator * noargallocateSimpleIterator() {
-    return (struct SimpleIterator*)malloc(sizeof(struct SimpleIterator));
-}
-
-inline struct SimpleIterator * allocateSimpleIterator(struct ArraySimple *start, struct ArraySimple *tl, int tlindex) {
-    struct SimpleIterator *thisvar=(struct SimpleIterator*)malloc(sizeof(struct SimpleIterator));
-    thisvar->cur = start;
-    thisvar->index=0;
-    thisvar->tailindex=tlindex;
-    thisvar->tail=tl;
-    return thisvar;
-}
-
-inline int hasNext(struct SimpleIterator *thisvar) {
-    if (thisvar->cur==thisvar->tail &&
-       thisvar->index==thisvar->tailindex)
-        return 0;
-    while((thisvar->index==ARRAYSIZE)||!thisvar->cur->nodes[thisvar->index].inuse) {
-        if (thisvar->index==ARRAYSIZE) {
-            thisvar->index=0;
-            thisvar->cur=thisvar->cur->nextarray;
-        } else
-            thisvar->index++;
-    }
-    if (thisvar->cur->nodes[thisvar->index].inuse)
-        return 1;
-    else
-        return 0;
-}
-
-inline int next(struct SimpleIterator *thisvar) {
-    return thisvar->cur->nodes[thisvar->index++].data;
-}
-
-inline int key(struct SimpleIterator *thisvar) {
-    return thisvar->cur->nodes[thisvar->index].key;
-}
+inline struct SimpleIterator * noargallocateSimpleIterator();
+
+inline struct SimpleIterator * allocateSimpleIterator(struct ArraySimple *start, struct ArraySimple *tl, int tlindex);
+
+inline int hasNext(struct SimpleIterator *thisvar);
 
+inline int next(struct SimpleIterator *thisvar);
+
+inline int key(struct SimpleIterator *thisvar);
 
 struct RepairHashNode * allocateRepairHashNode(int setrelation, int rule, int lvalue, int rvalue, int data, int data2,int ismodify);
 
+
+
 struct RepairHashNode {
     struct RepairHashNode *next;
     struct RepairHashNode *lnext;
index b0bd167..2ece344 100755 (executable)
@@ -303,6 +303,7 @@ public class RepairGenerator {
 
     private void generate_stateobject() {
         CodeWriter crhead = new StandardCodeWriter(outputhead);
+        CodeWriter craux = new StandardCodeWriter(outputaux);
        crhead.outputline("struct "+name+"_state {");
        Iterator globals=state.stGlobals.descriptors();
        while (globals.hasNext()) {
@@ -310,6 +311,18 @@ public class RepairGenerator {
            crhead.outputline(vd.getType().getGenerateType().getSafeSymbol()+" "+vd.getSafeSymbol()+";");
        }
         crhead.outputline("};");
+       crhead.outputline("struct "+name+"_state * allocate"+name+"_state();");
+       craux.outputline("struct "+name+"_state * allocate"+name+"_state()");
+       craux.startblock();
+       craux.outputline("return (struct "+name+"_state *) malloc(sizeof(struct "+name+"_state));");
+       craux.endblock();
+
+       crhead.outputline("void free"+name+"_state(struct "+name+"_state *);");
+       craux.outputline("void free"+name+"_state(struct "+name+"_state * thisvar)");
+       craux.startblock();
+       craux.outputline("free(thisvar);");
+       craux.endblock();
+
        crhead.outputline("void "+name+"_statecomputesizes(struct "+name+"_state * ,int *,int **);");
        crhead.outputline("void "+name+"_staterecomputesizes(struct "+name+"_state *);");
     }
@@ -435,7 +448,7 @@ public class RepairGenerator {
                }
            }
        }
-        craux.outputline("struct "+ name+"* "+name+"()");
+        craux.outputline("struct "+ name+"* allocate"+name+"()");
        craux.startblock();
         craux.outputline("/* creating hashtables */");