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 5085742..39d4e58 100644 (file)
@@ -4,3 +4,4 @@ nbproject/
 #Ignoring binary files
 src/bin/
 src/lib_cons_comp.so
+/src/mymemory.cc
index a6dde8f..2e4f316 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 7b2d659..f2db838 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 e9284f7..2513fe5 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 3f33f90..b3fef7c 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 eee89bb..955d1ec 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 dee4066..ee3f940 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 */