From: bdemsky Date: Mon, 11 Sep 2017 23:27:01 +0000 (-0700) Subject: Merge X-Git-Url: http://plrg.eecs.uci.edu/git/?p=satune.git;a=commitdiff_plain;h=a7e23f92b1faec2e4a1ce451b7e1fdd06f810965 Merge --- a7e23f92b1faec2e4a1ce451b7e1fdd06f810965 diff --cc src/AST/boolean.h index 9d7e9ab,df1f4e8..6449a8e --- a/src/AST/boolean.h +++ b/src/AST/boolean.h @@@ -61,11 -65,8 +65,13 @@@ class BooleanPredicate : public Boolea public: BooleanPredicate(Predicate *_predicate, Element **_inputs, uint _numInputs, BooleanEdge _undefinedStatus); Boolean *clone(CSolver *solver, CloneMap *map); + Predicate *getPredicate() {return predicate;} + FunctionEncoding *getFunctionEncoding() {return &encoding;} + void updateParents(); - CMEMALLOC; + void serialize(Serializer *serializer ); + ++ CMEMALLOC; + Predicate *predicate; FunctionEncoding encoding; Array inputs; diff --cc src/AST/element.h index db1cbfb,19e35b6..b829a47 --- a/src/AST/element.h +++ b/src/AST/element.h @@@ -47,12 -51,10 +50,13 @@@ public BooleanEdge overflowstatus; FunctionEncoding functionencoding; Element *clone(CSolver *solver, CloneMap *map); + virtual void serialize(Serializer* serializer); Set * getRange(); void updateParents(); + Function * getFunction() {return function;} CMEMALLOC; + private: + Function *function; }; static inline ElementEncoding *getElementEncoding(Element *e) { diff --cc src/AST/predicate.h index 80515fa,2f292b2..beaebc9 --- a/src/AST/predicate.h +++ b/src/AST/predicate.h @@@ -21,11 -22,10 +22,12 @@@ public PredicateOperator(CompOp op, Set **domain, uint numDomain); bool evalPredicateOperator(uint64_t *inputs); Predicate *clone(CSolver *solver, CloneMap *map); - CompOp getOp() {return op;} + virtual void serialize(Serializer* serializer); - CompOp op; Array domains; ++ CompOp getOp() {return op;} CMEMALLOC; + private: + CompOp op; }; class PredicateTable : public Predicate { diff --cc src/Collections/structs.h index 1e957ae,e6f451e..d5d6f5e --- a/src/Collections/structs.h +++ b/src/Collections/structs.h @@@ -26,17 -26,13 +26,16 @@@ typedef Hashset HashsetBoolean; typedef Hashset HashsetElement; typedef SetIterator SetIteratorBoolean; +typedef Hashset Hashset64Int; + + typedef Hashtable HashtableNodeToNodeSet; typedef Hashtable HashtableOrderPair; typedef Hashtable CloneMap; -typedef Hashtable HashTableEncoding; +typedef Hashtable HashtableEncoding; - typedef Hashset HashsetEncodingNode; - typedef SetIterator SetIteratorEncodingNode; + typedef SetIterator SetIteratorTableEntry; typedef SetIterator SetIteratorOrderEdge; diff --cc src/Serialize/serializer.h index 0000000,12bff13..e6d2b50 mode 000000,100644..100644 --- a/src/Serialize/serializer.h +++ b/src/Serialize/serializer.h @@@ -1,0 -1,37 +1,39 @@@ + + /* + * File: serializer.h + * Author: hamed + * + * Created on September 7, 2017, 3:38 PM + */ + + #ifndef SERIALIZER_H + #define SERIALIZER_H + #include "mymemory.h" ++#include "classlist.h" + #include "structs.h" + ++ + class Serializer { + public: + Serializer(const char *file); + void mywrite(const void *__buf, size_t __n); + inline bool isSerialized(void *obj); + inline void addObject(void *obj) { map.put(obj, obj);} + virtual ~Serializer(); + CMEMALLOC; + private: + int filedesc; + CloneMap map; + }; + + inline bool Serializer::isSerialized(void* obj){ + return map.contains(obj); + } + + + + + void serializeBooleanEdge(Serializer* serializer, BooleanEdge be); + + #endif /* SERIALIZER_H */ +