Yea I had thought about this but haven't tried it yet. I am working on this tonight. I have another question that could help me. Is their a documentation available on exactly what is serialized in the archive, the class format and related stuff seem to be serialized as a list of numbers (at least in text archive it appears so, forgive me if I am wrong). What is serialized exactly for each class (beside what the user specifies of course!)? <br><br>If found that on a forum but I am not sure how relevant it is (from basic_archive.cpp) :<br><br>////////////////////////////////////////////////////////////////////// <br> // <br> // class_information is stored as <br> // <br> // class_id* // -1 for a null pointer <br> // if a new class id <br> // [ <br> // exported key - class name* <br> // tracking level - always/never <br> // file version <br> // ] <br> // <br> // if tracking <br> // [ <br> // object_id <br> // ] <br> // <br> // [ // if a new object id <br> // data... <br> // ] <br> // <br> // * required only for pointers - optional for objects <br><br>Thank you!<br><br><div><span class="gmail_quote">On 10/19/07, <b class="gmail_sendername">Robert Ramey</b> <<a href="mailto:ramey@rrsd.com">ramey@rrsd.com</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> <div bgcolor="#ffffff"> <div><font face="Arial" size="2">I've never thought about this, but my first attempt would be something like the following:</font></div> <div><font face="Arial" size="2"></font> </div> <div><font face="Arial" size="2">template<class Archive></font></div> <div><font face="Arial" size="2">void load(Archiv &ar , C &c, const unsigned int version){</font></div> <div><font face="Arial" size="2"> if(version < 4>)</font></div> <div><font face="Arial" size="2"> ar >> boost::serialization::base_object<A>(c);</font></div> <div><font face="Arial" size="2"> else</font></div> <div><font face="Arial" size="2"> ar >> boost::serialization::base_object<B>(c);</font></div> <div><font face="Arial" size="2">}</font></div> <blockquote style="border-left: 2px solid rgb(0, 0, 0); padding-right: 0px; padding-left: 5px; margin-left: 5px; margin-right: 0px;"> <div>"Fred Lupien" <<a href="mailto:fred.lupien@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">fred.lupien@gmail.com</a>> wrote in message <a href="news:32e6d6bf0710190708x45191057ld2a23a92399f59e4@mail.gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">news:32e6d6bf0710190708x45191057ld2a23a92399f59e4@mail.gmail.com </a>...</div><span class="q"> <div>Hello,<br><br> we are currently implementing serialization versioning using boost and I am curious to know if their is a way to support a changing class hierarchy. Let's say C derives from A for a while and then a change requires C to derive from B instead, which derives from A. Is it possible to support such a change provided we know what default values are needed for the new class? I tried and even if don't serialize anything in class C I get stream errors because I believe boost saves some base info for each class. When it tries to reload those value from a old stream, obviously it desynchronizes it because the values are not in the stream. So is their a way around this? <br><br>Also is it possible to support the removal of a class. If, for exemple C derives from B which in turn derives from A and suddenly B is removed. Is their a way to deal with this without invalidating all previously saved data? </div> <div> </div></span> <div><font face="Arial" size="2">*** I doubt it. If you want to load old archives, you have know how much to "skip" over. The only thing that MIGHT be possible</font></div> <div><font face="Arial" size="2">is something like:</font></div><font face="Arial" size="2"></font></blockquote> <blockquote style="border-left: 2px solid rgb(0, 0, 0); padding-right: 0px; padding-left: 5px; margin-left: 5px; margin-right: 0px;"> <div> <div><font face="Arial" size="2">template<class Archive></font></div> <div><font face="Arial" size="2">void load(Archiv &ar , C &c, const unsigned int version){</font></div> <div><font face="Arial" size="2"> if(version < 4>){</font></div> <div><font face="Arial" size="2"> class a; //no longer used</font></div> <div><font face="Arial" size="2"> ar >> a;</font></div> <div><font face="Arial" size="2"> // throw away old data on leaving scope</font></div> <div><font face="Arial" size="2"> }</font></div> <div><font face="Arial" size="2"> else</font></div> <div><font face="Arial" size="2"> ar >> boost::serialization::base_object<B>(c);</font></div><span class="q"> <div><font face="Arial" size="2">}</font></div><br><br>Thank you for your help!<br clear="all"><br>-- <br>Fr�d�rick Martel-Lupien<br>�tudiant en G�nie Informatique<br>Universit� de Sherbrooke<br><a href="mailto:fred.lupien@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">fred.lupien@gmail.com</a> </span></div> <p> </p><hr> <p></p>_______________________________________________<br>Boost-users mailing list<br><a href="mailto:Boost-users@lists.boost.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">Boost-users@lists.boost.org</a><br><a href="http://lists.boost.org/mailman/listinfo.cgi/boost-users" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"> http://lists.boost.org/mailman/listinfo.cgi/boost-users</a><p></p></blockquote></div> <br>_______________________________________________<br>Boost-users mailing list<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:Boost-users@lists.boost.org">Boost-users@lists.boost.org</a><br><a onclick="return top.js.OpenExtLink(window,event,this)" href="http://lists.boost.org/mailman/listinfo.cgi/boost-users" target="_blank"> http://lists.boost.org/mailman/listinfo.cgi/boost-users</a><br></blockquote></div><br><br clear="all"><br>-- <br>Fr�d�rick Martel-Lupien<br>�tudiant en G�nie Informatique<br>Universit� de Sherbrooke<br><a href="mailto:fred.lupien@gmail.com"> fred.lupien@gmail.com</a>