return s;
s = solver->createMutableSet(type);
for (uint i = 0; i < members->getSize(); i++) {
- solver->addItem((MutableSet *) s, members->get(i));
+ ((MutableSet *)s)->addElementMSet(members->get(i));
+ // solver->addItem((MutableSet *) s, members->get(i));
}
map->put(this, s);
return s;
#include <stddef.h>
#include "csolver.h"
#include "serializer.h"
+#include "qsort.h"
Set::Set(VarType t) : type(t), isRange(false), low(0), high(0) {
members = new Vector<uint64_t>();
}
+int intcompare(const void *p1, const void *p2) {
+ uint64_t a=*(uint64_t const *) p1;
+ uint64_t b=*(uint64_t const *) p2;
+ if (a < b)
+ return -1;
+ else if (a==b)
+ return 0;
+ else
+ return 1;
+}
+
Set::Set(VarType t, uint64_t *elements, uint num) : type(t), isRange(false), low(0), high(0) {
members = new Vector<uint64_t>(num, elements);
+ bsdqsort(members->expose(), members->getSize(), sizeof(uint64_t), intcompare);
}
+
Set::Set(VarType t, uint64_t lowrange, uint64_t highrange) : type(t), isRange(true), low(lowrange), high(highrange), members(NULL) {
}
uint64_t mem = members->get(i);
serializer->mywrite(&mem, sizeof(uint64_t));
}
-}
\ No newline at end of file
+}
return set;
}
-void CSolver::addItem(MutableSet *set, uint64_t element) {
- set->addElementMSet(element);
-}
+//void CSolver::addItem(MutableSet *set, uint64_t element) {
+// set->addElementMSet(element);
+//}
uint64_t CSolver::createUniqueItem(MutableSet *set) {
uint64_t element = set->getNewUniqueItem();
/** This function adds a new item to a set. */
- void addItem(MutableSet *set, uint64_t element);
+ //Deprecating this unless we need it...
+ // void addItem(MutableSet *set, uint64_t element);
/** This function adds a new unique item to the set and returns it.
This function cannot be used in conjunction with manually adding