$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: Cliff Green (cliffg_at_[hidden])
Date: 2007-06-26 18:57:51
> Probably answered before, but I wondered whether there 
>is a standard
> implementation for portable binary archives available. 
I'm not quite sure what you mean by "standard 
implementation" - there are a number of commonly used 
portable binary approaches or standards. For example, XDR 
(IETF standard) has been around for quite a while:
http://tools.ietf.org/rfc/rfc4506.txt
as well as SDXF (not sure how much it is used):
http://tools.ietf.org/rfc/rfc3072.txt
There's CDR, used in CORBA and other libraries or 
frameworks where interoperability is needed:
http://en.wikipedia.org/wiki/Common_Data_Representation
I'm sure there's a gaggle of home-grown approaches (I've 
written some myself) as well as other industry standard 
approaches.
If you're talking about portable binary archives for 
Boost.Serialization, there's been talk, but I'm not sure 
what the status is - anyone have an implementation? I'd be 
willing to help / work with someone on it.
Beman submitted a nice set of utilities for endian 
handling, which could be used (something I've also written 
many times in the past, although not quite as 
comprehensive as Beman's).
Integral byte swapping is pretty straight forward, but 
floating point is not - besides the obvious representation 
issues (e.g. IEEE 754 or not), there's some non-obvious 
issues dealing with floating point normalization and 
special values (infinity, etc). For example, I wrote one 
template function which returned (by value) byte swapped 
entities, but found it would silently change floating 
point values depending on the value, platform, compiler 
version, register usage, etc. Turns out normalization 
would occur on the "by value" return, changing bits in the 
byte swapped floating point number.
What use cases and constraints do you envision? There's 
lots of tradeoffs and design choices already discussed in 
previous Boost threads. Personally I think portably binary 
archiving through Boost.Serialization is long overdue.
Cliff