2016-11-01 7 views
0

libclang C API имеет следующие функции для этой цели:Как я могу получить SourceLocation из триплета файла/строка/столбец с использованием C звоном в ++ API

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

Я не могу найти эквивалент для C++ API. Есть много функций getLocation, но ни один из них не принимает этот набор аргументов.

В конечном итоге я пытаюсь получить DeclRef в данном месте источника, если оно существует.

ответ

0

Поиск в SourceLocation для файла: строка: колонка триплет может быть сделано несколько неловко через 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 в этой точке, хотя.

+0

это может ответить на вопрос, но на основе кода только хмурится. Пожалуйста, отредактируйте свой ответ, чтобы добавить объяснения. –