Finish clone
[satune.git] / src / AST / mutableset.cc
index 19f6dec8b3878a02126245be10f5a246ad4ec55b..6b3f9537786ca4b52d6f590b0f9faeb17ed7ace2 100644 (file)
@@ -1,4 +1,5 @@
 #include "mutableset.h"
+#include "csolver.h"
 
 MutableSet::MutableSet(VarType t) : Set(t) {
 }
@@ -6,3 +7,15 @@ MutableSet::MutableSet(VarType t) : Set(t) {
 void MutableSet::addElementMSet(uint64_t element) {
        members->push(element);
 }
+
+Set *MutableSet::clone(CSolver *solver, CloneMap *map) {
+       Set *s = (Set *) map->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->put(this, s);
+       return s;
+}