[Issue 23573] std.bitmanip.bitfields doesn't respect native endianness
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Wed Dec 21 18:12:59 UTC 2022
https://issues.dlang.org/show_bug.cgi?id=23573
elpenguino+D at gmail.com changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |elpenguino+D at gmail.com
--- Comment #2 from elpenguino+D at gmail.com ---
(In reply to johanengelen from comment #1)
> I thought that `std.bitmanip.bitfields` does not give any guarantees on
> layout, just that it tries to pack bits in minimal storage space.
> For example also no guarantees when sending std.bitmanip.bitfields as
> ubyte[] over network connection to a PC with different OS/arch.
> Removal of guarantees (like no guarantees of class layout) enables
> reordering of fields if it is beneficial to prevent accessing multiple
> bytes/words for multibyte fields:
> mixin(bitfields!(
> bool, "flag1" , 1,
> ubyte, "flag2", 8, // spans 2 bytes or one byte?
> bool, "sign" , 1));
>
> Because D bitfields are meant to mimic C bitfields, I think it will be very
> hard to guarantee that the layout of std.bitmanip.bitfields is the same...
D doesn't need two undefined flavours of bitfields. Some people find it useful
to be able to read bitfields from files or the network regardless of cpu
architecture.
--
More information about the Digitalmars-d-bugs
mailing list