Boost logo

Boost Users :

From: Rene Rivera (grafikrobot_at_[hidden])
Date: 2006-07-10 10:45:17


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

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

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