Boost logo

Boost :

From: Robert Ramey (ramey_at_[hidden])
Date: 2004-05-13 13:17:03


Martin Ecker wrote:

> One way of achieving all this would, of course, be to derive from one of
> the existing archive classes and add the required functionality.
> However, we don't want to lose the flexibility of being able to write
> out data to a binary, text, XML, or any other archive with some other
> kind of representation. So basically we're looking for a good way of
> inserting an additional layer in between the archives and the actual
> serialize functions that can store state variables.
>

Have you consider making a template which takes the base class as a
parameter? Example

template <class BaseArchive>
class stately_iarchive : public BaseArchive
{
        ... // your overloads here
      ... // you extra control functions here
};

To be used thusly:

// can't use typedef because it typedef does like self-reference

class stately_binary_archive :
    public stately_archive<binary_iarchive_impl<stately_binary_archive>
{
    stately_binary_archive(istream &is, flags = 0) :
        stately_archive<binary_iarchive_impl<stately_binary_archive>(is,
flags);
};

Now just use stately_binary_archive anywhere you used binary_archive before.

Robert Ramey


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk