diff options
author | Alp Toker <alp@nuanti.com> | 2014-07-07 01:23:14 +0000 |
---|---|---|
committer | Alp Toker <alp@nuanti.com> | 2014-07-07 01:23:14 +0000 |
commit | 3d44bd8e89a63f4dc707acd4f4322fde8919de8d (patch) | |
tree | 606299a2cd981b0f7fb8ea3373093463cd56e8b8 /tools/libclang/CIndexCodeCompletion.cpp | |
parent | d044b4fcaa7558afdf097f3a227918313463812c (diff) |
libclang: refactor handling of unsaved_files
Consolidate CXUnsavedFile argument handling in API functions to support a wider
cleanup of various file remapping schemes in the frontend.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212427 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/libclang/CIndexCodeCompletion.cpp')
-rw-r--r-- | tools/libclang/CIndexCodeCompletion.cpp | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/tools/libclang/CIndexCodeCompletion.cpp b/tools/libclang/CIndexCodeCompletion.cpp index 9dd2dfec7a..0d88003a1f 100644 --- a/tools/libclang/CIndexCodeCompletion.cpp +++ b/tools/libclang/CIndexCodeCompletion.cpp @@ -651,8 +651,7 @@ struct CodeCompleteAtInfo { const char *complete_filename; unsigned complete_line; unsigned complete_column; - struct CXUnsavedFile *unsaved_files; - unsigned num_unsaved_files; + ArrayRef<CXUnsavedFile> unsaved_files; unsigned options; CXCodeCompleteResults *result; }; @@ -662,8 +661,6 @@ void clang_codeCompleteAt_Impl(void *UserData) { const char *complete_filename = CCAI->complete_filename; unsigned complete_line = CCAI->complete_line; unsigned complete_column = CCAI->complete_column; - struct CXUnsavedFile *unsaved_files = CCAI->unsaved_files; - unsigned num_unsaved_files = CCAI->num_unsaved_files; unsigned options = CCAI->options; bool IncludeBriefComments = options & CXCodeComplete_IncludeBriefComments; CCAI->result = nullptr; @@ -693,14 +690,13 @@ void clang_codeCompleteAt_Impl(void *UserData) { // Perform the remapping of source files. SmallVector<ASTUnit::RemappedFile, 4> RemappedFiles; - for (unsigned I = 0; I != num_unsaved_files; ++I) { - StringRef Data(unsaved_files[I].Contents, unsaved_files[I].Length); - llvm::MemoryBuffer *Buffer = - llvm::MemoryBuffer::getMemBufferCopy(Data, unsaved_files[I].Filename); - RemappedFiles.push_back(std::make_pair(unsaved_files[I].Filename, - Buffer)); + + for (auto &UF : CCAI->unsaved_files) { + llvm::MemoryBuffer *MB = + llvm::MemoryBuffer::getMemBufferCopy(getContents(UF), UF.Filename); + RemappedFiles.push_back(std::make_pair(UF.Filename, MB)); } - + if (EnableLogging) { // FIXME: Add logging. } @@ -823,9 +819,12 @@ CXCodeCompleteResults *clang_codeCompleteAt(CXTranslationUnit TU, << complete_filename << ':' << complete_line << ':' << complete_column; } - CodeCompleteAtInfo CCAI = { TU, complete_filename, complete_line, - complete_column, unsaved_files, num_unsaved_files, - options, nullptr }; + if (num_unsaved_files && !unsaved_files) + return nullptr; + + CodeCompleteAtInfo CCAI = {TU, complete_filename, complete_line, + complete_column, llvm::makeArrayRef(unsaved_files, num_unsaved_files), + options, nullptr}; if (getenv("LIBCLANG_NOTHREADS")) { clang_codeCompleteAt_Impl(&CCAI); |