Skip to content

Commit 3f87bb2

Browse files
Merge pull request #704 from NathanJPhillips/feature/serialization-improvements
Feature/serialization improvements
2 parents 29cf00c + ad18aa9 commit 3f87bb2

File tree

2 files changed

+14
-10
lines changed

2 files changed

+14
-10
lines changed

src/config.inc

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ BUILD_ENV = AUTO
99

1010
# Select optimisation or debug info
1111
#CXXFLAGS += -O2 -DNDEBUG
12-
CXXFLAGS += -O0 -g
12+
#CXXFLAGS += -O0 -g
1313

1414
ifeq ($(shell uname),Linux)
1515
CXXFLAGS += -DUSE_BOOST

src/util/serializer.h

+13-9
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@ Purpose: Generic serialization of object hierarchies.
1212
#define CPROVER_UTIL_SERIALIZER_H
1313

1414
#include <utility>
15+
#include <memory>
1516
#include <string>
1617
#include <functional>
1718
#include <vector>
1819
#include <set>
1920
#include <map>
21+
#include <cstdint>
2022
#include <cassert>
2123
#ifdef USE_BOOST
2224
#include <boost/bimap.hpp>
@@ -66,7 +68,7 @@ class serializert
6668
// Whether this serializer is used for reading rather than writing
6769
bool is_read;
6870
// Traits attached to this serializer
69-
serializer_traitst *traits;
71+
std::shared_ptr<serializer_traitst> traits;
7072

7173
/////////////////////////////////////////////////////////////////////////////
7274
// Section: Constructors/destructors
@@ -88,7 +90,7 @@ class serializert
8890
8991
\*******************************************************************/
9092
serializert(serializert *parent, bool is_read)
91-
: parent(parent), is_read(is_read), traits(nullptr)
93+
: parent(parent), is_read(is_read)
9294
{
9395
}
9496

@@ -108,7 +110,7 @@ class serializert
108110
109111
\*******************************************************************/
110112
explicit serializert(bool is_read)
111-
: parent(nullptr), is_read(is_read), traits(nullptr)
113+
: parent(nullptr), is_read(is_read)
112114
{
113115
}
114116

@@ -160,7 +162,7 @@ class serializert
160162
template<typename traitst>
161163
traitst &get_traits() const
162164
{
163-
traitst * result=dynamic_cast<traitst *>(traits);
165+
traitst * result=dynamic_cast<traitst *>(traits.get());
164166
if(result!=nullptr)
165167
return *result;
166168
assert(parent!=nullptr); // In release build allow undefined behaviour
@@ -185,10 +187,12 @@ class serializert
185187
Sets traits attached to this serializer.
186188
187189
\*******************************************************************/
188-
void set_traits(serializer_traitst &serializer_traits)
190+
void set_traits(std::shared_ptr<serializer_traitst> serializer_traits)
189191
{
192+
assert(serializer_traits!=nullptr);
193+
// If you need to set_traits twice then make the traits member a set
190194
assert(traits==nullptr);
191-
traits=&serializer_traits;
195+
traits=serializer_traits;
192196
}
193197

194198
/////////////////////////////////////////////////////////////////////////////
@@ -257,7 +261,7 @@ class serializert
257261
Serializes a field.
258262
259263
\*******************************************************************/
260-
virtual void serialize(const char *name, int &field)=0;
264+
virtual void serialize(const char *name, int32_t &field)=0;
261265

262266
/*******************************************************************\
263267
@@ -273,7 +277,7 @@ class serializert
273277
Serializes a field.
274278
275279
\*******************************************************************/
276-
virtual void serialize(const char *name, unsigned int &field)=0;
280+
virtual void serialize(const char *name, uint32_t &field)=0;
277281

278282
/*******************************************************************\
279283
@@ -289,7 +293,7 @@ class serializert
289293
Serializes a field.
290294
291295
\*******************************************************************/
292-
virtual void serialize(const char *name, unsigned long long &field)=0;
296+
virtual void serialize(const char *name, uint64_t &field)=0;
293297

294298
/*******************************************************************\
295299

0 commit comments

Comments
 (0)