Switch hashtable/hashset
[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 = new HashSetTableEntry();
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 = entries->add(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 = entries->get(temp);
27         deleteTableEntry(temp);
28         return result;
29 }
30
31 Table::~Table() {
32         HSIteratorTableEntry *iterator = entries->iterator();
33         while (iterator->hasNext()) {
34                 deleteTableEntry(iterator->next());
35         }
36         delete iterator;
37         delete entries;
38 }
39