2014-08-01 2 views
0

В то время как я посещаю, допустим, декларацию (Decl в библиотеке Clang), как я могу получить имя файла, где это Decl было написано?Как я могу получить имя файла, который я сейчас посещаю с Clang?

Существует FileData класс, но я не могу найти какой-либо другой класс позволяет мне получить это FileData

ответ

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(); 
    } 
} 
Смежные вопросы