使用Clang绑定提取类型字符串

时间:2013-03-13 15:04:03

标签: python clang llvm-clang

我正在编写一个python脚本(使用python clang绑定),它解析C头并提取有关函数的信息:name,return types,argument types。

我提取函数名称没有问题,但我找不到将clang.cindex.Type转换为C类型字符串的方法。 (例如clang.cindex.TypeKind.UINTunsigned int

目前,作为临时解决方案,我有一个字典clang.cindex.TypeKind -> C type string和代码来处理指针和const限定符,但我没有找到提取结构名称的方法。

是否有通用方法来获取clang.cindex.Type的C定义?如果没有,我如何获得clang.cindex.TypeKind.RECORDclang.cindex.TypeKind.FUNCTIONPROTO类型的C类型字符串?

1 个答案:

答案 0 :(得分:1)

对于RECORD,函数get_declaration()指向类型声明(unionenumstructtypedef );获取节点的拼写返回其名称。 (显然,要区分TYPEDEF_DECL与基础声明类型。)

对于FUNCTIONPROTO,您必须使用get_result()get_arguments()的组合。