#include "mutableset.h"
+#include "csolver.h"
-MutableSet *allocMutableSet(VarType t) {
- MutableSet *This = (MutableSet *)ourmalloc(sizeof(MutableSet));
- This->type = t;
- This->isRange = false;
- This->low = 0;
- This->high = 0;
- This->members = allocDefVectorInt();
- return This;
+MutableSet::MutableSet(VarType t) : Set(t) {
}
-void addElementMSet(MutableSet *set, uint64_t element) {
- pushVectorInt(set->members, element);
+void MutableSet::addElementMSet(uint64_t element) {
+ members->push(element);
+}
+
+Set * MutableSet::clone(CSolver * solver, CloneMap *map) {
+ Set * s=map->set.get(this);
+ if (s != NULL)
+ return s;
+ s=solver->createMutableSet(type);
+ for(uint i=0; i<members->getSize();i++) {
+ solver->addItem((MutableSet *) s, members->get(i));
+ }
+ map->set.put(this, s);
+ return s;
}