c196d3cf0801db83449123b45905663ba7e1b80d
[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         void print();
15         ~Table();
16         Set *getRange() {return range;}
17
18         Set *getDomain(uint i) {return domains.get(i);}
19         uint numDomains() {return domains.getSize();}
20
21         SetIteratorTableEntry *getEntries() {return entries->iterator();}
22         uint getSize() {return entries->getSize();}
23
24         CMEMALLOC;
25
26 private:
27         Array<Set *> domains;
28         Set *range;
29         HashsetTableEntry *entries;
30 };
31
32 #endif