#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);
}