如何检索类:使用clang的函数

时间:2014-01-28 15:58:46

标签: c++ clang libclang

我有一个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”(类名)?

1 个答案:

答案 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"