nmikhailov
nmikhailov

Reputation: 1423

Extract type string with Clang bindings

I am writing a python script(using python clang bindings) that parses C headers and extracts info about functions: name, return types, argument types.

I have no problem with extracting function name, but I can't find a way to convert a clang.cindex.Type to C type string. (e.g. clang.cindex.TypeKind.UINT to unsigned int)

Currently, as a temporary solution, i have a dictionary clang.cindex.TypeKind -> C type string and code to process pointers and const qualifiers, but I didn't found a way to extract structure names.

Is there a generic way to get C definition of clang.cindex.Type? If there isn't, how can I get C type string for clang.cindex.TypeKind.RECORD and clang.cindex.TypeKind.FUNCTIONPROTO types?

Upvotes: 4

Views: 1969

Answers (1)

thechao
thechao

Reputation: 387

For RECORD, the function get_declaration() points to the declaration of the type (a union, enum, struct, or typedef); getting the spelling of the node returns its name. (Obviously, take care between differentiating the TYPEDEF_DECL vs. the underlying declaration kind.)

For FUNCTIONPROTO, you have to use a combination of get_result() and get_arguments().

Upvotes: 3

Related Questions