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 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.
Dec 07 2010








Jesse Phillips <jessekphillips+D gmail.com>