Transitive bit-packing of fields
Stefan Koch via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun Apr 30 06:22:49 PDT 2017
On Sunday, 30 April 2017 at 11:02:52 UTC, Nordlöw wrote:
> Have anybody found a way to do transitive packing of bitfields?
>
> For instance, in
>
>
> import std.bitmanip : bitfields;
>
> struct X
> {
> // one bit too many to fit in one byte
> mixin(bitfields!(bool, `a`, 1,
> bool, `b`, 1,
> ubyte, `c`, 7,
> ubyte, `_pad`, 7);
> }
>
> struct Y
> {
> // one unused bit
> mixin(bitfields!(ubyte, `d`, 7,
> ubyte, `_pad`, 1);
> }
>
> struct XY
> {
> X x;
> Y y;
> }
>
>
> `XY` will currently occupy 4 bytes, when only 1+1+7+7=16 bits
> are actually used in `a`, `b`, `c` and `d`.
>
> Rust just got support for this.
You'd have to write your own template to do it; it's easy though
:)
More information about the Digitalmars-d-learn
mailing list