X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=src%2FAST%2Felement.h;h=91d677fc2b8726ff67aedcbda69338ac2b35c6ad;hb=e1360c75a71486a0de8c1b30a2a8cd2877902416;hp=6d253280618f74fefd6e99e0f2598ec7f37cf337;hpb=cac96bb8e95553aa23fe1f32744a8ed96f811103;p=satune.git diff --git a/src/AST/element.h b/src/AST/element.h index 6d25328..91d677f 100644 --- a/src/AST/element.h +++ b/src/AST/element.h @@ -4,9 +4,9 @@ #include "mymemory.h" #include "structs.h" #include "astnode.h" -#include "corestructs.h" #include "functionencoding.h" #include "elementencoding.h" +#include "boolean.h" class Element : public ASTNode { public: @@ -14,50 +14,58 @@ public: virtual ~Element() {} Vector parents; ElementEncoding encoding; - inline ElementEncoding *getElementEncoding(){ return &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; };