From: Hamed Date: Thu, 15 Jun 2017 19:15:58 +0000 (-0700) Subject: Implementing client interfaces regarding Sets X-Git-Url: http://plrg.eecs.uci.edu/git/?p=satune.git;a=commitdiff_plain;h=c901d86ec2dca856e679c77eb52310791048887a;hp=2ef6d0360a8317b47f1a78990e2ed2f660855b53 Implementing client interfaces regarding Sets --- diff --git a/.gitignore b/.gitignore index 5085742..39d4e58 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ nbproject/ #Ignoring binary files src/bin/ src/lib_cons_comp.so +/src/mymemory.cc diff --git a/src/csolver.c b/src/csolver.c index a6dde8f..2e4f316 100644 --- a/src/csolver.c +++ b/src/csolver.c @@ -1,36 +1,45 @@ #include "csolver.h" - +#include "set.h" +#include "mutableset.h" +#include "element.h" CSolver * allocCSolver() { CSolver * tmp=(CSolver *) ourmalloc(sizeof(CSolver)); tmp->constraint=allocDefVectorBoolean(); + tmp->uniqSec=1; return tmp; } -Set * createSet(CSolver * solver, VarType type, uint64_t ** elements) { - return NULL; +Set * createSet(CSolver * solver, VarType type, uint64_t * elements, uint num) { + Set* set = allocSet(type, elements,num ); + return set; } Set * createRangeSet(CSolver * solver, VarType type, uint64_t lowrange, uint64_t highrange) { - return NULL; + Set* rset = allocSetRange(type, lowrange, highrange); + return rset; } MutableSet * createMutableSet(CSolver * solver, VarType type) { - return NULL; + MutableSet* mset = allocMutableSet(type); + return mset; } void addItem(CSolver *solver, MutableSet * set, uint64_t element) { + addElementMSet(set, element); } int64_t createUniqueItem(CSolver *solver, MutableSet * set) { - return 0; + uint64_t uSec= solver->uniqSec++; + addElementMSet(set, uSec); + return uSec; } Element * getElementVar(CSolver *solver, Set * set) { - return NULL; + return allocElement(set); } Boolean * getBooleanVar(CSolver *solver) { - return NULL; + return NULL; } Function * createFunctionOperator(CSolver *solver, enum ArithOp op, Set ** domain, Set * range, enum OverFlowBehavior overflowbehavior, Boolean * overflowstatus) { @@ -69,6 +78,7 @@ Boolean * applyLogicalOperation(CSolver *solver, enum LogicOp op, Boolean ** arr } void addBoolean(CSolver *solver, Boolean * constraint) { + solver-> } Order * createOrder(CSolver *solver, enum OrderType type, Set * set) { diff --git a/src/csolver.h b/src/csolver.h index 7b2d659..f2db838 100644 --- a/src/csolver.h +++ b/src/csolver.h @@ -6,10 +6,11 @@ struct CSolver { VectorBoolean * constraint; + uint64_t uniqSec; }; CSolver * allocCSolver(); -Set * createSet(CSolver *, VarType type, uint64_t ** elements); +Set * createSet(CSolver *, VarType type, uint64_t * elements, uint num); Set * createRangeSet(CSolver *, VarType type, uint64_t lowrange, uint64_t highrange); MutableSet * createMutableSet(CSolver *, VarType type); diff --git a/src/element.c b/src/element.c index e9284f7..2513fe5 100644 --- a/src/element.c +++ b/src/element.c @@ -1,7 +1,7 @@ #include "element.h" Element *allocElement(Set * s) { - Element * tmp=(Element *)ouralloc(sizeof(Element)); + Element * tmp=(Element *)ourmalloc(sizeof(Element)); tmp->set=s; return tmp; } diff --git a/src/mutableset.c b/src/mutableset.c index 3f33f90..b3fef7c 100644 --- a/src/mutableset.c +++ b/src/mutableset.c @@ -1,3 +1,12 @@ #include "mutableset.h" +MutableSet* allocMutableSet(VarType type){ + MutableSet* set = (MutableSet*)ourmalloc(sizeof(struct Set)); + set->type = type; + set->members = allocDefVectorInt(); + set->isRange = false; + return set; +} + + void addElementMSet(MutableSet * set, uint64_t element) { pushVectorInt(set->members, element); } diff --git a/src/mutableset.h b/src/mutableset.h index eee89bb..955d1ec 100644 --- a/src/mutableset.h +++ b/src/mutableset.h @@ -2,5 +2,6 @@ #define MUTABLESET_H #include "set.h" +MutableSet* allocMutableSet(VarType type); void addElementMSet(MutableSet * set, uint64_t element); #endif diff --git a/src/set.h b/src/set.h index dee4066..ee3f940 100644 --- a/src/set.h +++ b/src/set.h @@ -23,5 +23,6 @@ struct Set { Set *allocSet(VarType t, uint64_t * elements, uint num); Set * allocSetRange(VarType t, uint64_t lowrange, uint64_t highrange); void freeSet(Set *set); + #endif/* SET_H */