digitalmars.D.learn - C Bitfields in D
- Jonathan M Davis (11/11) Dec 07 2010 Okay. I'm trying to get some C code to be properly callable from some D ...
- Jesse Phillips (11/25) Dec 07 2010 I had some help from htod translating Fuse headers:
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
Dec 07 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 DavisI 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.
Dec 07 2010