Как получить класс: функция с помощью Clang

у меня есть 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» (имя класса)?

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"
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]