#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;
return 1;
}
+Set::Set(VarType t) : type(t), isRange(false), low(0), high(0) {
+ members = new Vector<uint64_t>();
+}
+
+
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);
uint middle=(low+high)/2;
uint64_t val=members->get(middle);
if (element < val) {
- high=middle;
- if (middle==low)
+ high=middle-1;
+ if (middle<=low)
return false;
} else if (element > val) {
- low=middle;
- if (middle==high)
+ low=middle+1;
+ if (middle>=high)
return false;
} else {
return true;
serializer->mywrite(&isRange, sizeof(bool));
serializer->mywrite(&low, sizeof(uint64_t));
serializer->mywrite(&high, sizeof(uint64_t));
+ bool isMutable = isMutableSet();
+ serializer->mywrite(&isMutable, sizeof(bool));
uint size = members->getSize();
serializer->mywrite(&size, sizeof(uint));
for(uint i=0; i<size; i++){