我有一个CXCursor
标记了C ++中函数声明的位置。我知道如何获取方法名称或USR ...但我如何获得类名(该方法是其中的一部分)
我使用libclang解析的代码是:
Number3D* ParseObjectFace::RetFaceVertex(){
// some code...
}
当我尝试打印我使用的光标信息时:
clang_getCString(clang_getCursorUSR(cr));
//output "c:@C@ParseObjectFace@F@RetFaceVertex#"
clang_getCString(clang_getCursorDisplayName(cr));
//output "RetFaceVertex()"
如何获得“ParseObjectFace”(类名)?
答案 0 :(得分:4)
您可以使用clang_getCursorSemanticParent
来检索游标的“语义父级”。引自文档:
游标的语义父级是在语义上包含给定游标的游标。 [...] 在
C::f
的外联定义中,语义父类是类C
,此函数是其成员。
在您的示例中,以下内容应该有效:
// Retrieve the semantic parent (the class in this case)
CXCursor parent = clang_getCursorSemanticParent (cr);
clang_getCString (clang_getCursorDisplayName (parent));
// Should yield "ParseObjectFace"