Boost logo

Boost :

From: Robert Ramey (ramey_at_[hidden])
Date: 2004-05-05 22:35:26


Ian McCulloch wrote:
>
> Dave Harris wrote:
>
> > In-Reply-To: <95C853D0-9EAF-11D8-BFD9-000A95DC1C98_at_[hidden]>
> > troyer_at_[hidden] (Matthias Troyer) wrote (abridged):
> >> As I see it the current serialization library allows both options,
> >> depending on your preferences. Any archive may choose which types it
> >> view as fundamental, but both have their disadvantages:
> >
> > I would use variable length integers. Use as many bytes as you need for
> > the integer's actual value. That way the archive format is independent
> of
> > whether short, int, long or some other type was used by the outputting
> > program. It can also give you byte order independence for free.
> >
> > Specifically, I'd use a byte oriented scheme where the low 7 bits of
> each
> > byte contribute to the current number, and the high bit says whether
> there
> > are more bytes to come.
> [...]
> > Thus integers less than 128 take 1 byte, less than 16,000 take 2 bytes
> > etc. This gives a compact representation while still supporting 64-bit
> > ints and beyond. You can use boost::numeric_cast<> or similar to bring
> the
> > uintmax_t down to a smaller size.
>
> Nice idea. I was thinking along the lines of how to achieve
> high-performance, with shared memory & fast network message passing in
> mind. I think now though, this is probably too specialized an application
> for boost::serialization.
>

That's the way it's done in demo_portable_binary_archive included in the
current serialization package.

Robert Ramey


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