4 #include "tableentry.h"
6 #include "mutableset.h"
8 Table *allocTable(Set **domains, uint numDomain, Set *range) {
9 Table *This = (Table *) ourmalloc(sizeof(Table));
10 initArrayInitSet(&This->domains, domains, numDomain);
11 This->entries = allocHashSetTableEntry(HT_INITIAL_CAPACITY, HT_DEFAULT_FACTOR);
16 void addNewTableEntry(Table *This, uint64_t *inputs, uint inputSize, uint64_t result) {
17 ASSERT(getSizeArraySet( &This->domains) == inputSize);
19 if (This->range == NULL)
20 ASSERT(result == true || result == false);
22 TableEntry *tb = allocTableEntry(inputs, inputSize, result);
23 ASSERT(!containsHashSetTableEntry(This->entries, tb));
24 bool status = addHashSetTableEntry(This->entries, tb);
28 TableEntry *getTableEntryFromTable(Table *table, uint64_t *inputs, uint inputSize) {
29 TableEntry *temp = allocTableEntry(inputs, inputSize, -1);
30 TableEntry *result = getHashSetTableEntry(table->entries, temp);
31 deleteTableEntry(temp);
35 void deleteTable(Table *This) {
36 deleteInlineArraySet(&This->domains);
37 HSIteratorTableEntry *iterator = iteratorTableEntry(This->entries);
38 while (hasNextTableEntry(iterator)) {
39 deleteTableEntry( nextTableEntry(iterator) );
41 deleteIterTableEntry(iterator);
42 deleteHashSetTableEntry(This->entries);