From: Hamed Date: Wed, 13 Sep 2017 03:14:24 +0000 (-0700) Subject: Adding support for (de)serializing MutableSet X-Git-Url: http://plrg.eecs.uci.edu/git/?p=satune.git;a=commitdiff_plain;h=40b96a454dfeaad7852e335f2805d9ad13b1523c Adding support for (de)serializing MutableSet --- diff --git a/src/AST/mutableset.h b/src/AST/mutableset.h index 568678f..c608f3f 100644 --- a/src/AST/mutableset.h +++ b/src/AST/mutableset.h @@ -7,6 +7,7 @@ public: MutableSet(VarType t); void addElementMSet(uint64_t element); Set *clone(CSolver *solver, CloneMap *map); + bool isMutableSet() {return true;} CMEMALLOC; }; #endif diff --git a/src/AST/set.cc b/src/AST/set.cc index 54c6679..fc8bf15 100644 --- a/src/AST/set.cc +++ b/src/AST/set.cc @@ -95,6 +95,8 @@ void Set::serialize(Serializer* serializer){ serializer->mywrite(&isRange, sizeof(bool)); serializer->mywrite(&low, sizeof(uint64_t)); serializer->mywrite(&high, sizeof(uint64_t)); + bool isMutable = isMutableSet(); + serializer->mywrite(&isMutable, sizeof(bool)); uint size = members->getSize(); serializer->mywrite(&size, sizeof(uint)); for(uint i=0; i members; for(uint i=0; iaddElementMSet(mem); + }else { + members.push(mem); + } + } + if(!isMutable){ + set = isRange? solver->createRangeSet(type, low, high): + solver->createSet(type, members.expose(), size); } - Set *set = isRange? solver->createRangeSet(type, low, high): - solver->createSet(type, members.expose(), size); map.put(s_ptr, set); }