
Peter Dimov wrote:
Joel de Guzman wrote:
Peter Dimov wrote:
Hi,
Here's a use case that I can't seem to find a way to do using boost.serialization.
Say with version 1, I want to serialize X Y and Z. These are hierarchical and expensive data structures. Now, with version 2, I do not need to create Y objects anymore. Yet, I still have to open version 1 files for backward compatibility. So, when loading version 1 files, I want to skip reading Y objects. How do I do that without having to create a temporary Y object that will be discarded later? You need to define a proxy Y object that can deserialize itself into
Joel de Guzman wrote: thin air. I thought about that. But that would mean that blank_proxy<Y> knows all about Y -- its composition down to the leaves -- and wrap them all as blank_proxy<T>s. A hairy proposition, IMO.
This is the only way that works reliably with any archive. :-) (And, since the serialization library does not document its external format, the only way that works reliably with it.)
The option of actually reading a temporary Y and destroying it afterwards is also feasible. You don't necessarily have to optimize the new version so that it reads v1 files faster than v1 itself. :-)
It's not a matter of optimization. It could be that the v1 Y object is just not present at all in the v2 application. And for that matter that if you could have it present loading it would cause unwanted side effects. -- -- Grafik - Don't Assume Anything -- Redshift Software, Inc. - http://redshift-software.com -- rrivera/acm.org - grafik/redshift-software.com -- 102708583/icq - grafikrobot/aim - grafikrobot/yahoo