edits
[satune.git] / src / AST / table.cc
1 #include "table.h"
2 #include "common.h"
3 #include "structs.h"
4 #include "tableentry.h"
5 #include "set.h"
6 #include "mutableset.h"
7
8 Table::Table(Set **_domains, uint numDomain, Set *_range) : range(_range) {
9         initArrayInitSet(&domains, _domains, numDomain);
10         entries = allocHashSetTableEntry(HT_INITIAL_CAPACITY, HT_DEFAULT_FACTOR);
11 }
12
13 void Table::addNewTableEntry(uint64_t *inputs, uint inputSize, uint64_t result) {
14 #ifdef CONFIG_ASSERT
15         if (range == NULL)
16                 ASSERT(result == true || result == false);
17 #endif
18         TableEntry *tb = allocTableEntry(inputs, inputSize, result);
19         bool status = addHashSetTableEntry(entries, tb);
20         ASSERT(status);
21 }
22
23 TableEntry * Table::getTableEntry(uint64_t *inputs, uint inputSize) {
24         TableEntry *temp = allocTableEntry(inputs, inputSize, -1);
25         TableEntry *result = getHashSetTableEntry(entries, temp);
26         deleteTableEntry(temp);
27         return result;
28 }
29
30 Table::~Table() {
31         deleteInlineArraySet(&domains);
32         HSIteratorTableEntry *iterator = iteratorTableEntry(entries);
33         while (hasNextTableEntry(iterator)) {
34                 deleteTableEntry(nextTableEntry(iterator));
35         }
36         deleteIterTableEntry(iterator);
37         deleteHashSetTableEntry(entries);
38 }
39