Start work on Naive Encoders
authorbdemsky <bdemsky@uci.edu>
Mon, 19 Jun 2017 07:07:07 +0000 (00:07 -0700)
committerbdemsky <bdemsky@uci.edu>
Mon, 19 Jun 2017 07:07:07 +0000 (00:07 -0700)
src/Collections/vector.h
src/Encoders/elementencoding.c
src/Encoders/elementencoding.h
src/Encoders/naiveelementencoder.c [new file with mode: 0644]
src/Encoders/naiveelementencoder.h [new file with mode: 0644]

index 08c540cb8bb250bef3be17e8fb0ff532c99d76ba..a6da986ef854ed4fb459bf8ed2260b5fa8ead8f9 100644 (file)
        void pushVector ## name(Vector ## name *vector, type item);           \
        type getVector ## name(Vector ## name *vector, uint index);           \
        void setVector ## name(Vector ## name *vector, uint index, type item); \
-       uint getSizeVector ## name(Vector ## name *vector);                     \
-       void deleteVector ## name(Vector ## name *vector);                        \
-       void clearVector ## name(Vector ## name *vector);
+       uint getSizeVector ## name(Vector ## name *vector);                                                                             \
+       void deleteVector ## name(Vector ## name *vector);                                                                              \
+       void clearVector ## name(Vector ## name *vector);                                                                                       \
+       type * exposeArray ## name(Vector ## name * vector);
 
 #define VectorImpl(name, type, defcap)                                  \
        Vector ## name * allocDefVector ## name() {                           \
@@ -57,5 +58,8 @@
        }                                                                     \
        void clearVector ## name(Vector ## name *vector) {                     \
                vector->size=0;                                                     \
+       }                                                                                                                                                                                                                                                                                       \
+       type * exposeArray ## name(Vector ## name * vector) {                                                                   \
+               return vector->array;                                                                                                                                                                                           \
        }
 #endif
index a4e206762ef11b7bf8669a67e176feb7c451f71a..8056812863aa4b619f8c0114a8fab29c21518a64 100644 (file)
@@ -17,3 +17,4 @@ void deleteElementEncoding(ElementEncoding *This) {
                ourfree(This->encodingArray);
        ourfree(This);
 }
+
index 08fb85e7dab28544d008d2c2e3238fca35ecff84..d6de95ac0a6d43ff7b7fd871c47ed33e1590ce41 100644 (file)
@@ -11,11 +11,13 @@ typedef enum ElementEncodingType ElementEncodingType;
 struct ElementEncoding {
        ElementEncodingType type;
        Element * element;
-       Boolean ** variables; /* List Variables Use To Encode Element */
+       Constraint ** variables; /* List Variables Used To Encode Element */
        uint64_t * encodingArray; /* List the Variables in the appropriate order */
        uint numVars; /* Number of variables */
 };
 
 ElementEncoding * allocElementEncoding(ElementEncodingType type, Element *element);
 void deleteElementEncoding(ElementEncoding *This);
+void baseBinaryIndexElementAssign(ElementEncoding *This);
+
 #endif
diff --git a/src/Encoders/naiveelementencoder.c b/src/Encoders/naiveelementencoder.c
new file mode 100644 (file)
index 0000000..ec3be7d
--- /dev/null
@@ -0,0 +1,18 @@
+#include "naiveelementencoder.h"
+#include "elementencoding.h"
+#include "element.h"
+#include "set.h"
+#include "common.h"
+#include "struct.h"
+
+void baseBinaryIndexElementAssign(ElementEncoding *This) {
+       Element * element=This->element;
+       Set * set=element->set;
+       ASSERT(set->isRange==false);
+       uint size=getSizeVectorInt(set->members);
+       This->encodingArray=ourmalloc(sizeof(uint64_t)*size);
+       for(uint i=0;i<size;i++) {
+               This->encodingArray[i]=getVectorInt(set->members, i);
+       }
+       This->type=BINARYINDEX;
+}
diff --git a/src/Encoders/naiveelementencoder.h b/src/Encoders/naiveelementencoder.h
new file mode 100644 (file)
index 0000000..db4aeb9
--- /dev/null
@@ -0,0 +1,5 @@
+#ifndef NAIVEELEMENTENCODER_H
+#define NAIVEELEMENTENCODER_H
+#include "classlist.h"
+void baseBinaryIndexElementAssign(ElementEncoding *This);
+#endif