Merge
[satune.git] / src / AST / table.h
1 #ifndef TABLE_H
2 #define TABLE_H
3 #include "classlist.h"
4 #include "mymemory.h"
5 #include "structs.h"
6
7 class Table {
8 public:
9         Table(Set **domains, uint numDomain, Set *range);
10         void addNewTableEntry(uint64_t *inputs, uint inputSize, uint64_t result);
11         TableEntry *getTableEntry(uint64_t *inputs, uint inputSize);
12         Table *clone(CSolver *solver, CloneMap *map);
13         void serialize(Serializer *serializer);
14         ~Table();
15         Set * getRange() {return range;}
16         
17         Set * getDomain(uint i) {return domains.get(i);}
18         uint numDomains() {return domains.getSize();}
19  
20         SetIteratorTableEntry * getEntries() {return entries->iterator();}
21         uint getSize() {return entries->getSize();}
22
23         CMEMALLOC;
24         
25  private:
26         Array<Set *> domains;
27         Set *range;
28         HashsetTableEntry *entries;
29 };
30
31 #endif