X-Git-Url: http://plrg.eecs.uci.edu/git/?p=satune.git;a=blobdiff_plain;f=src%2FEncoders%2Felementencoding.h;fp=src%2FEncoders%2Felementencoding.h;h=27ff2488fb16db80f6544f0a3ec9a36a26316685;hp=c0f0d2d9e774270d30ee4c934fad0d23e91aa627;hb=cd2da835188cf0bbe3502c61dc66cc803f26cbfa;hpb=9cd058c2fb9e7e9dae580d2d8abb84b97e4bf96a diff --git a/src/Encoders/elementencoding.h b/src/Encoders/elementencoding.h index c0f0d2d..27ff248 100644 --- a/src/Encoders/elementencoding.h +++ b/src/Encoders/elementencoding.h @@ -10,7 +10,33 @@ enum ElementEncodingType { typedef enum ElementEncodingType ElementEncodingType; -struct ElementEncoding { +class ElementEncoding { + public: + ElementEncoding(Element *element); + ElementEncodingType getElementEncodingType() {return type;} + ~ElementEncoding(); + void setElementEncodingType(ElementEncodingType type); + void deleteElementEncoding(); + void allocEncodingArrayElement(uint size); + void allocInUseArrayElement(uint size); + uint numEncodingVars() {return numVars;} + bool isinUseElement(uint offset) { return (inUseArray[(offset >> 6)] >> (offset & 63)) & 0x1;} + void setInUseElement(uint offset) {inUseArray[(offset >> 6)] |= 1 << (offset & 63);} + void encodingArrayInitialization(); + uint getSizeEncodingArray(uint setSize) { + switch (type) { + case BINARYINDEX: + return NEXTPOW2(setSize); + case ONEHOT: + case UNARY: + return setSize; + default: + ASSERT(0); + } + return -1; + } + + ElementEncodingType type; Element *element; Edge *variables;/* List Variables Used To Encode Element */ @@ -29,22 +55,9 @@ struct ElementEncoding { }; }; uint numVars; /* Number of variables */ + MEMALLOC; }; -void initElementEncoding(ElementEncoding *This, Element *element); -static inline ElementEncodingType getElementEncodingType(ElementEncoding *This) {return This->type;} -void setElementEncodingType(ElementEncoding *This, ElementEncodingType type); -void deleteElementEncoding(ElementEncoding *This); -void allocEncodingArrayElement(ElementEncoding *This, uint size); -void allocInUseArrayElement(ElementEncoding *This, uint size); -static inline uint numEncodingVars(ElementEncoding *This) {return This->numVars;} - -static inline bool isinUseElement(ElementEncoding *This, uint offset) { - return (This->inUseArray[(offset >> 6)] >> (offset & 63)) & 0x1; -} -static inline void setInUseElement(ElementEncoding *This, uint offset) { - This->inUseArray[(offset >> 6)] |= 1 << (offset & 63); -} #endif