mc_*_*rum 4 parsing objective-c libclang
我使用libclang来解析一个客观的c源代码文件.以下代码查找所有Objective-C实例方法声明,但它也在包含中找到声明:
enum CXCursorKind curKind = clang_getCursorKind(cursor);
CXString curKindName = clang_getCursorKindSpelling(curKind);
const char *funcDecl="ObjCInstanceMethodDecl";
if(strcmp(clang_getCString(curKindName),funcDecl)==0{
}
Run Code Online (Sandbox Code Playgroud)
如何跳过包含标题的所有内容?我只对源文件中我自己的Objective-C实例方法声明感兴趣,而不是任何包含.
例如,不应包括以下内容
...
Location: /System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:15:9:315
Type:
TypeKind: Invalid
CursorKind: ObjCInstanceMethodDecl
...
Run Code Online (Sandbox Code Playgroud)
回答这个问题,因为我无法相信硬编码路径比较是唯一的解决方案,实际上,有一个clang_Location_isFromMainFile函数可以完全按照您的需要进行操作,因此您可以在访问者中过滤掉不需要的结果,如下所示:
if (clang_Location_isFromMainFile (clang_getCursorLocation (cursor)) == 0) {
return CXChildVisit_Continue;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1208 次 |
| 最近记录: |