Fix tuner issues
[satune.git] / src / AST / mutableset.cc
1 #include "mutableset.h"
2 #include "csolver.h"
3 #include "qsort.h"
4
5 MutableSet::MutableSet(VarType t) : Set(t) {
6 }
7
8 void MutableSet::addElementMSet(uint64_t element) {
9         members->push(element);
10 }
11
12 Set *MutableSet::clone(CSolver *solver, CloneMap *map) {
13         Set *s = (Set *) map->get(this);
14         if (s != NULL)
15                 return s;
16         s = solver->createMutableSet(type);
17         for (uint i = 0; i < members->getSize(); i++) {
18                 ((MutableSet *)s)->addElementMSet(members->get(i));
19                 solver->addItem((MutableSet *) s, members->get(i));
20         }
21         ((MutableSet *)s)->finalize();
22         map->put(this, s);
23         return s;
24 }
25
26 void MutableSet::finalize() {
27         bsdqsort(members->expose(), members->getSize(), sizeof(uint64_t), intcompare);
28 }