From 7756da62dfcdbcbf306ca00ab3aee531ccb3324d Mon Sep 17 00:00:00 2001 From: bdemsky Date: Mon, 19 Jun 2017 00:07:07 -0700 Subject: [PATCH] Start work on Naive Encoders --- src/Collections/vector.h | 10 +++++++--- src/Encoders/elementencoding.c | 1 + src/Encoders/elementencoding.h | 4 +++- src/Encoders/naiveelementencoder.c | 18 ++++++++++++++++++ src/Encoders/naiveelementencoder.h | 5 +++++ 5 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 src/Encoders/naiveelementencoder.c create mode 100644 src/Encoders/naiveelementencoder.h diff --git a/src/Collections/vector.h b/src/Collections/vector.h index 08c540c..a6da986 100644 --- a/src/Collections/vector.h +++ b/src/Collections/vector.h @@ -15,9 +15,10 @@ 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 diff --git a/src/Encoders/elementencoding.c b/src/Encoders/elementencoding.c index a4e2067..8056812 100644 --- a/src/Encoders/elementencoding.c +++ b/src/Encoders/elementencoding.c @@ -17,3 +17,4 @@ void deleteElementEncoding(ElementEncoding *This) { ourfree(This->encodingArray); ourfree(This); } + diff --git a/src/Encoders/elementencoding.h b/src/Encoders/elementencoding.h index 08fb85e..d6de95a 100644 --- a/src/Encoders/elementencoding.h +++ b/src/Encoders/elementencoding.h @@ -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 index 0000000..ec3be7d --- /dev/null +++ b/src/Encoders/naiveelementencoder.c @@ -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;iencodingArray[i]=getVectorInt(set->members, i); + } + This->type=BINARYINDEX; +} diff --git a/src/Encoders/naiveelementencoder.h b/src/Encoders/naiveelementencoder.h new file mode 100644 index 0000000..db4aeb9 --- /dev/null +++ b/src/Encoders/naiveelementencoder.h @@ -0,0 +1,5 @@ +#ifndef NAIVEELEMENTENCODER_H +#define NAIVEELEMENTENCODER_H +#include "classlist.h" +void baseBinaryIndexElementAssign(ElementEncoding *This); +#endif -- 2.34.1