[cfe-dev] Get the number of bits of a bit field with libclang?
kyrtzidis at apple.com
Tue May 22 12:41:35 PDT 2012
On May 22, 2012, at 12:35 PM, Jordy Rose wrote:
> On May 22, 2012, at 15:28, Argyrios Kyrtzidis wrote:
>> On May 22, 2012, at 11:42 AM, Jacob Carlborg wrote:
>>> Is it possible to get the number of bits of a bit field with libclang?
>>> struct Foo
>>> int a : 1;
>>> I noticed I could traverse to the "value" of "a" and the type of the
>>> cursor was CXCursor_IntegerLiteral. But is it possible to get the actual
>> No, are you interested in submitting a patch ? I suggest something like "clang_Cursor_getBitWidthValue(CXCursor)" similar to how clang_Cursor_getNumArguments(CXCursor C) works, with the difference that it can return "unsigned" and 0 if the cursor is not a bitfield.
> Unfortunately, C99 184.108.40.206p3 states that unnamed bit fields may have 0 width, and 220.127.116.11p11 explains that it's a way to separate packed units.
> int a : 1;
> int : 0;
> int b: 1;
> // a and b will be in different bytes, possibly different words.
> You'll need another sentinel value, a dual return, or maybe just an assert to make this work.
Good point, I suggest same behavior as clang_Cursor_getNumArguments (int with -1 for non bitfield).
More information about the cfe-dev