$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Cliff Green (cliffg_at_[hidden])
Date: 2006-05-31 15:05:18
I've dealt with (and written) endian utilities for many 
years, since almost my full career has involved writing 
software for heterogeneous distributed systems. I 
definitely think Boost needs a library to ease and 
simplify byte endian issues.
But I'm curious as to the rationale for these endian 
integer types - I've always written utilities to transform 
native (or user-defined) types into a serializable binary 
format - including the option for big-endian, 
little-endian (or in one project, for "receiver makes 
right" endianness). I've never had a need for code that 
performs operations on endian types, other than as 
"placeholders" for performing I/O with them (whether over 
a network, or disk I/O). Are there application use cases 
where the application never transforms into / out of 
native / UDT's, and always uses these (endian) types 
instead?
Specifically, I've written (templatized generic) utilities 
that take integers and append them to a character (byte) 
buffer in a specified endian format (and the converse 
transformation). (Non-integral types are also supported, 
with lots of caveats and warnings - floating point type 
swapping is full of pitfalls, and any endian / byte 
swapping on a UDT has the expected restrictions - POD 
single element, no pointers or references, etc.) I would 
expect these types of utilities to be used in some form of 
serialization design (e.g. with Boost.Serialization).
Anyway, I'm just trying to expand my awareness of various 
endian related designs.
Cliff