#include "structs.h"
#include "mymemory.h"
-struct Set {
+class Set {
+public:
+ Set(VarType t);
+ Set(VarType t, uint64_t *elements, uint num);
+ Set(VarType t, uint64_t lowrange, uint64_t highrange);
+ virtual ~Set();
+ bool exists(uint64_t element);
+ uint getSize();
+ VarType getType() {return type;}
+ uint64_t getNewUniqueItem() {return low++;}
+ uint64_t getMemberAt(uint index);
+ uint64_t getElement(uint index);
+ virtual bool isMutableSet() {return false;}
+ virtual Set *clone(CSolver *solver, CloneMap *map);
+ virtual void serialize(Serializer* serializer);
+ CMEMALLOC;
+protected:
VarType type;
bool isRange;
uint64_t low;//also used to count unique items
uint64_t high;
- VectorInt *members;
+ Vector<uint64_t> *members;
+
};
-Set *allocSet(VarType t, uint64_t *elements, uint num);
-Set *allocSetRange(VarType t, uint64_t lowrange, uint64_t highrange);
-bool existsInSet(Set *This, uint64_t element);
-uint getSetSize(Set *This);
-uint64_t getSetElement(Set *This, uint index);
-void deleteSet(Set *This);
+int intcompare(const void *p1, const void *p2);
#endif/* SET_H */