diff --git a/src/CompileCommands.cc b/src/CompileCommands.cc index af9b64d..42a7095 100644 --- a/src/CompileCommands.cc +++ b/src/CompileCommands.cc @@ -17,7 +17,7 @@ std::vector clang::CompileCommands:: get_commands() { unsigned N = clang_CompileCommands_getSize(commands_); std::vector res; - for (auto i = 0; i < N; i++) { + for (unsigned i = 0; i < N; i++) { res.emplace_back(clang::CompileCommand(i, this)); } return res; diff --git a/src/CompletionString.cc b/src/CompletionString.cc index a3c17eb..06bc9cb 100644 --- a/src/CompletionString.cc +++ b/src/CompletionString.cc @@ -17,7 +17,7 @@ std::vector clang::CompletionString:: get_chunks() { std::vector res; if (clang_getCompletionAvailability(str_) == CXAvailability_Available) { - for (auto i = 0; i < get_num_chunks(); i++) { + for (size_t i = 0; i < get_num_chunks(); i++) { res.emplace_back(clang_getCString(clang_getCompletionChunkText(str_, i)), static_cast (clang_getCompletionChunkKind(str_, i))); diff --git a/src/TranslationUnit.cc b/src/TranslationUnit.cc index 1361912..a91fa6d 100644 --- a/src/TranslationUnit.cc +++ b/src/TranslationUnit.cc @@ -1,13 +1,10 @@ #include "TranslationUnit.h" -const int TranslationUnitOptions = CXTranslationUnit_CacheCompletionResults | CXTranslationUnit_PrecompiledPreamble | CXTranslationUnit_Incomplete; - clang::TranslationUnit:: ~TranslationUnit() { - // clang_disposeTranslationUnit(tu_); + clang_disposeTranslationUnit(tu_); } - clang::TranslationUnit& clang::TranslationUnit:: operator=(const clang::TranslationUnit &tu) { tu_ = tu.tu_; @@ -45,7 +42,8 @@ clang::TranslationUnit:: TranslationUnit(clang::Index *index, const std::string &filepath, const std::vector &command_line_args, - const std::map &buffers) { + const std::map &buffers, + unsigned flags) { std::vector files; for (auto &buffer : buffers) { CXUnsavedFile file; @@ -65,12 +63,13 @@ TranslationUnit(clang::Index *index, args.size(), files.data(), files.size(), - TranslationUnitOptions); + flags); } int clang::TranslationUnit:: ReparseTranslationUnit(const std::string &file_path, - const std::map &buffers) { + const std::map &buffers, + unsigned flags) { std::vector files; for (auto &buffer : buffers) { CXUnsavedFile file; @@ -82,5 +81,9 @@ ReparseTranslationUnit(const std::string &file_path, return clang_reparseTranslationUnit(tu_, files.size(), files.data(), - TranslationUnitOptions); + flags); +} + +unsigned clang::TranslationUnit::DefaultFlags() { + return CXTranslationUnit_CacheCompletionResults | CXTranslationUnit_PrecompiledPreamble | CXTranslationUnit_Incomplete; } diff --git a/src/TranslationUnit.h b/src/TranslationUnit.h index 6e8e170..6cfa1a4 100644 --- a/src/TranslationUnit.h +++ b/src/TranslationUnit.h @@ -23,16 +23,17 @@ namespace clang { TranslationUnit(Index *index, const std::string &filepath, const std::vector &command_line_args, - const std::map &buffers); + const std::map &buffers, + unsigned flags=DefaultFlags()); TranslationUnit(Index *index, const std::string &filepath); ~TranslationUnit(); - TranslationUnit() { } TranslationUnit& operator=(const TranslationUnit &tu); int ReparseTranslationUnit(const std::string &file_path, const std::map - &buffers); - + &buffers, + unsigned flags=DefaultFlags()); + static unsigned DefaultFlags(); private: friend Token; friend Tokens;