X-Git-Url: http://plrg.eecs.uci.edu/git/?p=satune.git;a=blobdiff_plain;f=src%2FAST%2Ftable.cc;h=3e8832784803ac64223d57421138eeb2bb53a259;hp=b903744dac3b9062495c224a7f2b1b80607d1bfb;hb=78450a264304838bdf91bbab742dd32dae643fca;hpb=71b1f3df40acb5b54bbb06c2c55c97af1a62521b diff --git a/src/AST/table.cc b/src/AST/table.cc index b903744..3e88327 100644 --- a/src/AST/table.cc +++ b/src/AST/table.cc @@ -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); }