Reputation: 1423
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
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