如何使用Clang的C ++ API从文件名/行/列三元组中获取SourceLocation

时间:2016-11-01 12:16:36

标签: c++ clang clang++ llvm-clang

libclang C API具有以下功能:

CXSourceLocation clang_getLocation( CXTranslationUnit tu, CXFile file, unsigned line, unsigned column )

我找不到C ++ API的等价物。有许多getLocation个函数,但没有一个函数接受这组参数。

我最终试图在给定的源位置获取DeclRef(如果存在)。

1 个答案:

答案 0 :(得分:1)

为文件找到SourceLocation:line:column triplet可以通过SourceManager稍微笨拙地完成,如下所示:

SourceManager& srcmgr = astctx.getSourceManager();
FileManager& filemgr = srcmgr.getFileManager();
const FileEntry* file_entry_ptr = filemgr.getFile(filename);
SourceLocation loc = srcmgr.translateFileLineCol(file_entry_ptr, line, column);

我仍然不知道如何在那时找到Stmt