如何获取我目前正在访问Clang的文件的名称?

时间:2014-08-01 07:24:54

标签: c++ clang clang++

在我访问时,让我们说一个声明(Clang库中的Decl),如何获取已写入此Decl的文件的名称?

有一个FileData课程,但我找不到任何其他课程可以让我获得FileData

1 个答案:

答案 0 :(得分:1)

您可以向SourceManager询问当前文件的FileEntry。

例如在匹配器回调中:

void MyMatcher::run(const MatchFinder::MatchResult& Result) {
    ASTContext* Context = Result.Context;
    if (const Decl* D = Result.Nodes.getNodeAs<Decl>("MyDecl")) {
        SourceManager& SrcMgr = Context->getSourceManager();
        const FileEntry* Entry = SrcMgr.getFileEntryForID(SrcMgr.getFileID(D.getCaretLocation()));
        const char* FileName = Entry->getName();
    }
}