
"Olaf van der Spek" <olafvdspek@gmail.com> wrote in message news:b2cc26e40603280426m1c14752do996f84adf0455ab6@mail.gmail.com...
Hi,
When reading/writing binary streams, you often need to read/write an (unaligned) integer in big, little or native endian. Is there support for this in Boost?
Back in 2000 there was considerable Boost discussion of endian integers. Darin Adler and I and some others contributed. We came up with a set of requirements that implied a surprisingly large feature set. 1, 2, 3, 4, 5, 6, 7, and 8 byte integers and unsigned are required. Unaligned for all, aligned for 2, 4, and 8 byte flavors. Both POD and non-POD flavors were requested. Must work correctly regardless of char being signed or unsigned. Must work correctly even when internal and external number of bits differ. No manual configuration. No optimization (supposed optimizations turned out to be pessimizations all too often between CPU's, compilers, compiler versions, or even when a compiler switch was changed). IIRC, almost everyone in the discussion had a set of roll-your-own classes, but none were Boost ready.
Wouldn't this make a nice additional to the new asio library?
The need goes way beyond asio. B-trees and other libraries need such integers if data files are to be portable, and users might well use such integers in their own binary data files. By the way, I've got a binary_file class about ready to propose for the filesystem library. It essentially wraps POSIX open/read/write/seek/close functions in a class. --Beman