#include "mymemory.h"
#include "structs.h"
-struct Table {
- ArrayElement domains;
- Element * range;
- VectorTableEntry entries;
+class Table {
+public:
+ Table(Set **domains, uint numDomain, Set *range);
+ void addNewTableEntry(uint64_t *inputs, uint inputSize, uint64_t result);
+ TableEntry *getTableEntry(uint64_t *inputs, uint inputSize);
+ Table *clone(CSolver *solver, CloneMap *map);
+ void serialize(Serializer *serializer);
+ void print();
+ ~Table();
+ Set *getRange() {return range;}
+
+ Set *getDomain(uint i) {return domains.get(i);}
+ uint numDomains() {return domains.getSize();}
+
+ SetIteratorTableEntry *getEntries() {return entries->iterator();}
+ uint getSize() {return entries->getSize();}
+
+ CMEMALLOC;
+
+private:
+ Array<Set *> domains;
+ Set *range;
+ HashsetTableEntry *entries;
};
-Table * allocTable(Element **domains, uint numDomain, Element * range);
-void addNewTableEntry(Table* table, uint64_t* inputs, uint inputSize, uint64_t result);
-void deleteTable(Table* table);
#endif