edits
[satune.git] / src / AST / table.cc
index b903744dac3b9062495c224a7f2b1b80607d1bfb..3e8832784803ac64223d57421138eeb2bb53a259 100644 (file)
@@ -5,41 +5,35 @@
 #include "set.h"
 #include "mutableset.h"
 
-Table *allocTable(Set **domains, uint numDomain, Set *range) {
-       Table *This = (Table *) ourmalloc(sizeof(Table));
-       initArrayInitSet(&This->domains, domains, numDomain);
-       This->entries = allocHashSetTableEntry(HT_INITIAL_CAPACITY, HT_DEFAULT_FACTOR);
-       This->range = range;
-       return This;
+Table::Table(Set **_domains, uint numDomain, Set *_range) : range(_range) {
+       initArrayInitSet(&domains, _domains, numDomain);
+       entries = allocHashSetTableEntry(HT_INITIAL_CAPACITY, HT_DEFAULT_FACTOR);
 }
 
-void addNewTableEntry(Table *This, uint64_t *inputs, uint inputSize, uint64_t result) {
-       ASSERT(getSizeArraySet( &This->domains) == inputSize);
+void Table::addNewTableEntry(uint64_t *inputs, uint inputSize, uint64_t result) {
 #ifdef CONFIG_ASSERT
-       if (This->range == NULL)
+       if (range == NULL)
                ASSERT(result == true || result == false);
 #endif
        TableEntry *tb = allocTableEntry(inputs, inputSize, result);
-       ASSERT(!containsHashSetTableEntry(This->entries, tb));
-       bool status = addHashSetTableEntry(This->entries, tb);
+       bool status = addHashSetTableEntry(entries, tb);
        ASSERT(status);
 }
 
-TableEntry *getTableEntryFromTable(Table *table, uint64_t *inputs, uint inputSize) {
+TableEntry * Table::getTableEntry(uint64_t *inputs, uint inputSize) {
        TableEntry *temp = allocTableEntry(inputs, inputSize, -1);
-       TableEntry *result = getHashSetTableEntry(table->entries, temp);
+       TableEntry *result = getHashSetTableEntry(entries, temp);
        deleteTableEntry(temp);
        return result;
 }
 
-void deleteTable(Table *This) {
-       deleteInlineArraySet(&This->domains);
-       HSIteratorTableEntry *iterator = iteratorTableEntry(This->entries);
+Table::~Table() {
+       deleteInlineArraySet(&domains);
+       HSIteratorTableEntry *iterator = iteratorTableEntry(entries);
        while (hasNextTableEntry(iterator)) {
-               deleteTableEntry( nextTableEntry(iterator) );
+               deleteTableEntry(nextTableEntry(iterator));
        }
        deleteIterTableEntry(iterator);
-       deleteHashSetTableEntry(This->entries);
-       ourfree(This);
+       deleteHashSetTableEntry(entries);
 }