b7d550c5aee6bbfb1cf66aadca78898c25ff9fbd
[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) :
9         domains(_domains, numDomain),
10         range(_range) {
11         entries = allocHashSetTableEntry(HT_INITIAL_CAPACITY, HT_DEFAULT_FACTOR);
12 }
13
14 void Table::addNewTableEntry(uint64_t *inputs, uint inputSize, uint64_t result) {
15 #ifdef CONFIG_ASSERT
16         if (range == NULL)
17                 ASSERT(result == true || result == false);
18 #endif
19         TableEntry *tb = allocTableEntry(inputs, inputSize, result);
20         bool status = addHashSetTableEntry(entries, tb);
21         ASSERT(status);
22 }
23
24 TableEntry * Table::getTableEntry(uint64_t *inputs, uint inputSize) {
25         TableEntry *temp = allocTableEntry(inputs, inputSize, -1);
26         TableEntry *result = getHashSetTableEntry(entries, temp);
27         deleteTableEntry(temp);
28         return result;
29 }
30
31 Table::~Table() {
32         HSIteratorTableEntry *iterator = iteratorTableEntry(entries);
33         while (hasNextTableEntry(iterator)) {
34                 deleteTableEntry(nextTableEntry(iterator));
35         }
36         deleteIterTableEntry(iterator);
37         deleteHashSetTableEntry(entries);
38 }
39