commit after resolving conflict
[satune.git] / src / AST / table.c
index e89d72ad94fa001918b2da83e090e0bbefe31c3e..1f95f43c1d4b61d23a32f67ba4f9f6b220f3337b 100644 (file)
@@ -1 +1,36 @@
 #include "table.h"
+#include "common.h"
+#include "structs.h"
+#include "tableentry.h"
+#include "set.h"
+
+
+Table * allocTable(Set **domains, uint numDomain, Set * range){
+    Table* table = (Table*) ourmalloc(sizeof(Table));
+    table->domains = allocDefVectorSet();
+    for(int i=0; i<numDomain; i++){
+        pushVectorSet(table->domains, domains[i]);
+    }
+    table->range =range;
+               return table;
+}
+
+void addNewTableEntry(Table* table, uint64_t* inputs, uint inputSize, uint64_t result){
+    ASSERT(getSizeVectorSet( table->domains) == inputSize);
+    pushVectorTableEntry(table->entries, allocTableEntry(inputs, inputSize, result));
+}
+
+void deleteTable(Table* table){
+    uint size = getSizeVectorSet(table->domains);
+    for(uint i=0; i<size; i++){
+       deleteSet(getVectorSet(table->domains,i));
+    }
+    ourfree(table->domains);
+    ourfree(table->range);
+    size = getSizeVectorTableEntry(table->entries);
+    for(uint i=0; i<size; i++){
+       deleteTableEntry(getVectorTableEntry(table->entries, i));
+    }
+    ourfree(table);
+}
+