C Bitfields in D
Jesse Phillips
jessekphillips+D at gmail.com
Tue Dec 7 16:20:08 PST 2010
Jonathan M Davis Wrote:
> Okay. I'm trying to get some C code to be properly callable from some D code,
> which naturally involves some extern(C) blocks. One of the types that I have to
> deal with looks something like this:
>
> typedef struct
> {
> unsigned i:1;
> } my_struct;
>
> I have no idea how to do such a bitfield in D. Does a std.bitmanip.bitfield work?
> I wouldn't have thought so, but I don't know. What would be the proper way to
> create a properly compatible struct in D?
>
> - Jonathan M Davis
I had some help from htod translating Fuse headers:
https://github.com/he-the-great/Fused/blob/master/src/fuse_common.d#L47
struct my_struct
{
uint __bitfield1;
@property uint i() { return (__bitfield1 >> 0) & 0x1; }
@property uint i(uint value) { __bitfield1 = (__bitfield1 & 0xfffffffffffffffe) | (value << 0); return value; }
}
I think I got the copy/past/modify right.
More information about the Digitalmars-d-learn
mailing list