Implementing client interfaces regarding Sets
authorHamed <hamed.gorjiara@gmail.com>
Thu, 15 Jun 2017 19:15:58 +0000 (12:15 -0700)
committerHamed <hamed.gorjiara@gmail.com>
Thu, 15 Jun 2017 19:15:58 +0000 (12:15 -0700)
.gitignore
src/csolver.c
src/csolver.h
src/element.c
src/mutableset.c
src/mutableset.h
src/set.h

index 50857424b9e3d1692ec01e51c4bb1ff76457c06b..39d4e58713ed3c50a2fe63da66b54db65cef26b7 100644 (file)
@@ -4,3 +4,4 @@ nbproject/
 #Ignoring binary files
 src/bin/
 src/lib_cons_comp.so
+/src/mymemory.cc
index a6dde8fe27489b4e775ba39ce441ceb0cc9d80ea..2e4f31659874524a98f642d12b47b0c0ccf17f7d 100644 (file)
@@ -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) {
index 7b2d65924c917aff764afb476d5ca3c49799dd43..f2db838c409b7aa0557b941847a9c56421570cd0 100644 (file)
@@ -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);
 
index e9284f79870c52f19db91445397a0e9b77b8cb14..2513fe5422122e0d512325b5e3465cc72215a31d 100644 (file)
@@ -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;
 }
index 3f33f9035b1f76ab62d1619a43a663d0466b3f99..b3fef7ceac2fad6ac2054e4457f1c0d3a3ff3edb 100644 (file)
@@ -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); }
index eee89bbf3e47c725d8bee393a4e1b4c6f3ba400e..955d1ec20823fcd964d2370d7f2b1b0962f9ba2f 100644 (file)
@@ -2,5 +2,6 @@
 #define MUTABLESET_H
 #include "set.h"
 
+MutableSet* allocMutableSet(VarType type);
 void addElementMSet(MutableSet * set, uint64_t element);
 #endif
index dee406676f296c52c5ab0751a07d218550cefbe3..ee3f940e47a67b28fc622f57a7e5cb5f61ae6f28 100644 (file)
--- 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 */