Boost logo

Boost Users :

Subject: Re: [Boost-users] [serialization] tracking objects
From: Robert Ramey (ramey_at_[hidden])
Date: 2011-10-29 01:01:00


Matthias Brantner wrote:
> Hello,
>
> I have n objects sharing common (sub)objects in a pool (i.e. via
> pointers).
> I would like to save (serialize) these n objects separately. Each
> result
> should contain one copy of the shared object and can be used stand
> alone. However, when loading (deserializing) multiple of those n
> objects, I would
> like to recreate the original state, i.e. subobjects previously
> pooled are
> again shared and contained in the pool.
>
> For example, object O1 contains a pointer to object P1. Object
> O2 also contains a pointer to object P1. O1 and O2 are separately
> serialized
> and each serialization will contain a copy of P1. After deserializing,
> the deserialized versions of O1 and O2 should both contain pointers
> to the same object P1.
>
> My current idea is to deserialize P1 (in the process of deserializing
> O1
> or O2) by implementing the load function for P1's class. In this
> function,
> I would like to check if an object equal to P1 already exists in the
> pool.
> If it exists, I would like to return a pointer to the existing
> object. Otherwise, I would like to insert it into the pool and return
> the newly created object. However, I have not found a way to return a
> pointer that was not created
> by boost.
>
> Is there such a way or is there a better way to do what I'm trying
> to do?

I don't see a way to do this without a strong probability of creating
unintended sideeffects.

But this raises the question- why would anyone want to do such a thing?

Robert Ramey


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