OK,
A closer inspection of the XML whilst more awake shows that my old files
have a header in the form:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE boost_serialization>
On Behalf Of Tim
Burgess via Boost-users
Sent: 02 August 2018 21:29
To: boost-users@lists.boost.org
Cc: tim@raisedbar.net
Subject: Re: [Boost-users] Serialization and class versioning
Hi Robert,
Many thanks for coming back to me. I'm afraid I gave you bad information -
the version number in the file is 0, whilst the class definition is version
3, so the file should be read in and the additional class elements would be
added at run-time and could be saved back to a new edition of the file. I'm
confused because I have other classes using the same technique that don't
blow up. No exceptions are thrown until the serialization routine is
complete and an attempt is made to assign the result to a variable. I've
written a test harness that successfully creates and reads new files - the
problem lies in importing older files.
Best wishes.
Tim Burgess
-----Original Message-----
From: Boost-users
Hi,
I have an application that uses serialization for data storage/retrieval, based on Boost 1.67.0. I've implemented class versioning as per:
https://www.boost.org/doc/libs/1_67_0/libs/serialization/doc/tutorial. html#versioning
The overall archive stores a number of sub-classes, nested within the XML. However, I get a run-time exception thrown that I can't catch when one of my sub-classes (DisplayDefinition) returns from being read in. A bit of debugging found that the problem was caused by the class version number having a value of 0, whilst the file being read had a version number of 3 for the class in question.
A couple of possibilites a) something else is messed up and the values get out of sync. Using XML should be detected as it checks the end tags to be sure they match the start tags. So this is not likely it. b) determine how the input file got the version number 3 in the first place. Did it previously have a version # of 3? Did you change it back to 0 - lowering the version # would create this problem. c) If it's showing up on newly create files - it's easy, just debug and find the place where the version # is being written. Robert Ramey _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org https://lists.boost.org/mailman/listinfo.cgi/boost-users _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org https://lists.boost.org/mailman/listinfo.cgi/boost-users