diff --git a/src/config.inc b/src/config.inc index 1fb0a49886a..84a7749ee07 100644 --- a/src/config.inc +++ b/src/config.inc @@ -9,7 +9,7 @@ BUILD_ENV = AUTO # Select optimisation or debug info #CXXFLAGS += -O2 -DNDEBUG -CXXFLAGS += -O0 -g +#CXXFLAGS += -O0 -g ifeq ($(shell uname),Linux) CXXFLAGS += -DUSE_BOOST diff --git a/src/util/serializer.h b/src/util/serializer.h index 8647292948a..2c2a13d3519 100755 --- a/src/util/serializer.h +++ b/src/util/serializer.h @@ -12,11 +12,13 @@ Purpose: Generic serialization of object hierarchies. #define CPROVER_UTIL_SERIALIZER_H #include +#include #include #include #include #include #include +#include #include #ifdef USE_BOOST #include @@ -66,7 +68,7 @@ class serializert // Whether this serializer is used for reading rather than writing bool is_read; // Traits attached to this serializer - serializer_traitst *traits; + std::shared_ptr traits; ///////////////////////////////////////////////////////////////////////////// // Section: Constructors/destructors @@ -88,7 +90,7 @@ class serializert \*******************************************************************/ serializert(serializert *parent, bool is_read) - : parent(parent), is_read(is_read), traits(nullptr) + : parent(parent), is_read(is_read) { } @@ -108,7 +110,7 @@ class serializert \*******************************************************************/ explicit serializert(bool is_read) - : parent(nullptr), is_read(is_read), traits(nullptr) + : parent(nullptr), is_read(is_read) { } @@ -160,7 +162,7 @@ class serializert template traitst &get_traits() const { - traitst * result=dynamic_cast(traits); + traitst * result=dynamic_cast(traits.get()); if(result!=nullptr) return *result; assert(parent!=nullptr); // In release build allow undefined behaviour @@ -185,10 +187,12 @@ class serializert Sets traits attached to this serializer. \*******************************************************************/ - void set_traits(serializer_traitst &serializer_traits) + void set_traits(std::shared_ptr serializer_traits) { + assert(serializer_traits!=nullptr); + // If you need to set_traits twice then make the traits member a set assert(traits==nullptr); - traits=&serializer_traits; + traits=serializer_traits; } ///////////////////////////////////////////////////////////////////////////// @@ -257,7 +261,7 @@ class serializert Serializes a field. \*******************************************************************/ - virtual void serialize(const char *name, int &field)=0; + virtual void serialize(const char *name, int32_t &field)=0; /*******************************************************************\ @@ -273,7 +277,7 @@ class serializert Serializes a field. \*******************************************************************/ - virtual void serialize(const char *name, unsigned int &field)=0; + virtual void serialize(const char *name, uint32_t &field)=0; /*******************************************************************\ @@ -289,7 +293,7 @@ class serializert Serializes a field. \*******************************************************************/ - virtual void serialize(const char *name, unsigned long long &field)=0; + virtual void serialize(const char *name, uint64_t &field)=0; /*******************************************************************\