目的の c メソッドの実装が開始される行番号を取得したい。
1 #include "foobar.h"
2 -(void)Foo{
3 ...
4 }
5
6 +(NSInteger *)bar{
7 ...
8 }
出力は次のようになります: 2,6
libclangでどうすれば達成できますか。
十分なので、正規表現を使用したくありません。
目的の c メソッドの実装が開始される行番号を取得したい。
1 #include "foobar.h"
2 -(void)Foo{
3 ...
4 }
5
6 +(NSInteger *)bar{
7 ...
8 }
出力は次のようになります: 2,6
libclangでどうすれば達成できますか。
十分なので、正規表現を使用したくありません。
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);
}