#include "TranslationUnit.h" #include "SourceLocation.h" #include "Tokens.h" clang::TranslationUnit:: ~TranslationUnit() { clang_disposeTranslationUnit(tu_); } clang::TranslationUnit& clang::TranslationUnit:: operator=(const clang::TranslationUnit &tu) { tu_ = tu.tu_; return *this; } clang::TranslationUnit:: TranslationUnit(Index *index, const std::string &filepath, const std::vector &command_line_args) { std::vector args; for(auto &a: command_line_args) { args.push_back(a.c_str()); } tu_ = clang_createTranslationUnitFromSourceFile(index->index_, filepath.c_str(), args.size(), args.data(), 0, NULL); } clang::TranslationUnit:: TranslationUnit(Index *index, const std::string &filepath) { tu_ = clang_createTranslationUnitFromSourceFile(index->index_, filepath.c_str(), 0, NULL, 0, NULL); } clang::TranslationUnit:: TranslationUnit(clang::Index *index, const std::string &filepath, const std::vector &command_line_args, const std::map &buffers, unsigned flags) { std::vector files; for (auto &buffer : buffers) { CXUnsavedFile file; file.Filename = buffer.first.c_str(); file.Contents = buffer.second.c_str(); file.Length = buffer.second.size(); files.push_back(file); } std::vector args; for(auto &a: command_line_args) { args.push_back(a.c_str()); } tu_ = clang_parseTranslationUnit(index->index_, filepath.c_str(), args.data(), args.size(), files.data(), files.size(), flags); } int clang::TranslationUnit:: ReparseTranslationUnit(const std::string &file_path, const std::map &buffers, unsigned flags) { std::vector files; for (auto &buffer : buffers) { CXUnsavedFile file; file.Filename = buffer.first.c_str(); file.Contents = buffer.second.c_str(); file.Length = buffer.second.size(); files.push_back(file); } return clang_reparseTranslationUnit(tu_, files.size(), files.data(), flags); } unsigned clang::TranslationUnit::DefaultFlags() { return CXTranslationUnit_CacheCompletionResults | CXTranslationUnit_PrecompiledPreamble | CXTranslationUnit_Incomplete; } void clang::TranslationUnit::update_diagnostics() { diagnostics.clear(); for(unsigned c=0;c