<div dir="ltr">Thanks a lot Jeremy for your answer! I have chosen to write helper C functions to access the records containing bitfields, so that I let the compiler do its business without caring too much. I guess that no field after a bitfield definition in a struct can be reliably accessed either (with ctypes), even if it's not a bitfield itself (as there is no means to know if the bitfield was packed or padded). Is that right?<br>

</div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-05-17 2:14 GMT+02:00 Jeremy Yallop <span dir="ltr"><<a href="mailto:yallop@gmail.com" target="_blank">yallop@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Dear Philippe,<br>
<div class=""><br>
On 16/05/2014, Philippe Veber <<a href="mailto:philippe.veber@gmail.com">philippe.veber@gmail.com</a>> wrote:<br>
> Has ctypes some support for bit fields in C struct?<br>
<br>
</div>Not yet, I'm afraid.<br>
<div class=""><br>
> If not is it correct to<br>
> encode:<br>
><br>
> typedef struct {<br>
>    int32_t pos;<br>
>    uint32_t bin:16, qual:8, l_qname:8;<br>
>    ...<br>
> } bam1_core_t<br>
><br>
> as:<br>
><br>
>    type bam1_core_t<br>
>    let bam1_core_t : bam1_core_t structure typ = structure "bam1_core_t"<br>
>    let bam1_core_t_pos_f = field bam1_core_t "pos" int32_t<br>
>    let bam1_core_t_props_f = field bam1_core_t "props" int32_t<br>
>    ...<br>
>    let () = seal bam1_core_t<br>
><br>
> and then play with the fake "props" field directly?<br>
<br>
</div>It's quite likely to work but it's not guaranteed, since the C<br>
standard gives compilers a fair amount of freedom in laying out<br>
bit-fields.  The good news is that the standard also requires<br>
compilers to document how bit-fields are laid out, so your compiler<br>
documentation may have helpful details.<br>
<br>
Kind regards,<br>
<br>
Jeremy.<br>
</blockquote></div><br></div>