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.