Boost logo

Boost Users :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2006-07-10 10:32:06


Joel de Guzman wrote:
> Peter Dimov wrote:
>> Joel de Guzman 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
>> 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. :-)


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