towards cloning
[satune.git] / src / AST / mutableset.cc
index 19552f6cfa01359010cb1fbf77bd6c3ba75258b8..d029f82bbdcdf428ebf5fe1c5f9c1eb342fc8d46 100644 (file)
@@ -1,15 +1,21 @@
 #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;
 }