2014-01-28 2 views
2

У меня есть CXCursor, который отмечает место, где объявление функции в C++. Я знаю, как получить имя методы, или USR ... но как я могу получить имя класса (что метод является частью)Как получить класс: function with clang

Кода, который я разбор с libclang является:

Number3D* ParseObjectFace::RetFaceVertex(){ 
    // some code... 
} 

Когда я пытаюсь напечатать информацию о курсоре я использую:

clang_getCString(clang_getCursorUSR(cr)); 
//output "c:@[email protected]@[email protected]#" 
clang_getCString(clang_getCursorDisplayName(cr)); 
//output "RetFaceVertex()" 

Как я могу получить «ParseObjectFace» (название класса)?

ответ

3

Вы можете использовать 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" 

 Смежные вопросы

  • Нет связанных вопросов^_^