|
Boost Users : |
Subject: [Boost-users] [serialization] Reading back old archives
From: David Raulo (david.raulo_at_[hidden])
Date: 2010-07-11 13:16:56
Hello,
I have a problem reading back serialization archives generated by older version of boost. I used to have a YYYYMMDD class versioning scheme. This broke with boost 1.42, which truncates the class version numbers to 16 bits, causing my code to generated corrupted archives. I fixed my code by implementing my own class versioning when compiling with boost 1.42, so I am again able to create archives that I can read back. Unfortunately this fixes only half of the problem. How can I read back archives that were saved using older releases of the serialization library?
I saw that someone else opened ticket 3990 for the same problem. Here you suggested using the function get_library_version() in the following way:
template<class Archive>
void serialization(Archive & ar, unsigned int version){
library_version_type library_version = get_library_version
if(library_version < 6)
// the library version is a date
my_date = version;
else{
// don't use the boost serialization number, use ours instead
ar & my_date;
}
ar && old_data_items
if(ar.is_loading)
if(my_date > "jan 10, 2010")
ar & new_data_item;
but I can't get this to work: the version argument is already truncated, and can't be interpreted as a date. As the bug reporter said, this is a case of data loss. Should I reopen ticket 3990, or is this code supposed to work with svn (I admit I did not test the trunk)?
Thanks for your help,
David.
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net