proper bit fields in the D2 language?
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Mon Apr 27 13:09:20 PDT 2009
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
More information about the Digitalmars-d
mailing list