X-Git-Url: http://plrg.eecs.uci.edu/git/?p=satune.git;a=blobdiff_plain;f=src%2FAST%2Felement.h;h=91d677fc2b8726ff67aedcbda69338ac2b35c6ad;hp=b829a47f07a14d32a6c7a4006cd4098c17d3a19d;hb=3ea7df0292dcc11b7a60a186d375bda980d771e5;hpb=bc760a347a6fdeb0e43c25b24ce7ecb88afb0421 diff --git a/src/AST/element.h b/src/AST/element.h index b829a47..91d677f 100644 --- a/src/AST/element.h +++ b/src/AST/element.h @@ -14,56 +14,60 @@ public: virtual ~Element() {} Vector parents; ElementEncoding encoding; + inline ElementEncoding *getElementEncoding() { return &encoding; } virtual Element *clone(CSolver *solver, CloneMap *map) {ASSERT(0); return NULL;}; - virtual void serialize(Serializer* serializer) =0; + virtual void serialize(Serializer *serializer) = 0; + virtual void print() = 0; virtual void updateParents() {} - virtual Set * getRange() = 0; + virtual Set *getRange() = 0; CMEMALLOC; + bool anyValue; }; class ElementSet : public Element { public: ElementSet(ASTNodeType type, Set *s); + virtual ~ElementSet() {} ElementSet(Set *s); virtual Element *clone(CSolver *solver, CloneMap *map); - virtual void serialize(Serializer* serializer); + virtual void serialize(Serializer *serializer); + virtual void print(); CMEMALLOC; Set *getRange() {return set;} - protected: +protected: Set *set; - + friend class ElementOpt; }; class ElementConst : public ElementSet { public: ElementConst(uint64_t value, Set *_set); + virtual ~ElementConst() {} uint64_t value; - virtual void serialize(Serializer* serializer); + virtual void serialize(Serializer *serializer); + virtual void print(); Element *clone(CSolver *solver, CloneMap *map); CMEMALLOC; }; class ElementFunction : public Element { public: + virtual ~ElementFunction() {} ElementFunction(Function *function, Element **array, uint numArrays, BooleanEdge overflowstatus); Array inputs; BooleanEdge overflowstatus; FunctionEncoding functionencoding; Element *clone(CSolver *solver, CloneMap *map); - virtual void serialize(Serializer* serializer); - Set * getRange(); + virtual void serialize(Serializer *serializer); + virtual void print(); + Set *getRange(); void updateParents(); - Function * getFunction() {return function;} + Function *getFunction() {return function;} + inline FunctionEncoding *getElementFunctionEncoding() {return &functionencoding;} CMEMALLOC; - private: +private: Function *function; }; -static inline ElementEncoding *getElementEncoding(Element *e) { - return &e->encoding; -} -static inline FunctionEncoding *getElementFunctionEncoding(ElementFunction *func) { - return &func->functionencoding; -} #endif