2013-09-25 4 views
0

Я хочу получить номера строк, где начинается реализация объектного метода c.Как найти линии реализации объектных c-методов с использованием libclang

1 #include "foobar.h" 
2 -(void)Foo{ 
3 ... 
4 } 
5 
6 +(NSInteger *)bar{ 
7 ... 
8 } 

Выход должен быть: 2,6

Как я могу добиться этого с libclang.

Я не хочу использовать регулярное выражение для этого, потому что этого будет достаточно.

+1

Вы искали 'libclang'? Вы знаете его функциональность? Что вы пробовали? SO существует как способ получить ответы на конкретные вопросы - Google существует для всего остального. :) –

ответ

0
Solution: 

CXSourceRange range = clang_getCursorExtent(cursor); 
CXSourceLocation startLocation = clang_getRangeStart(range); 
CXSourceLocation endLocation = clang_getRangeEnd(range); 

CXFile file; 
unsigned int line, column, offset; 
clang_getInstantiationLocation(startLocation, &file, &line, &column, &offset); 

enum CXCursorKind curKind = clang_getCursorKind(cursor); 
CXString curKindName = clang_getCursorKindSpelling(curKind); 
const char *funcDecl="ObjCInstanceMethodDecl"; 

if(strcmp(clang_getCString(curKindName),funcDecl)==0){ 
    printf("%u",line); 
}