Mattias Holm wrote:
Bitfields in Phobos are defined portably: always populated from lsb to
msb, the total size must be 8, 16, 32, or 64, and there is no hidden
padding (you obtain padding with anonymous fields).
Andrei
If this is the case, the bitfields are not portable and the behaviour is
the same as for GCC, except it is reversed.
The order should be:
LSByte to MSByte on little endian machines
MSByte to LSByte on big endian machines
This means that bitfields are defined in human readable order with
respect to the physical layout on the machine.
The point being:
struct {
uint a:4;
uint b:28;
}
should give a structure:
_ _______
|.|.......|
where each dot represents 4 bits. And this structure should be identical
if the data is moved between different systems, that is a TCP header
definition mapping into a byte stream, should be identical on both PPC
and x86. If the LSB to MSB ordering is used in phobos, then the
bitfields are as useful as the GCC bitfields, i.e. not at all.
Not at all is a tad extreme as I'm using them already. I see your point
though. If you could submit a bug report, that would be great.
Andrei