You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.5 KiB

11 years ago
#include "CodeCompleteResults.h"
#include "CompletionString.h"
#include <exception>
11 years ago
clang::CodeCompleteResults::
11 years ago
CodeCompleteResults(CXTranslationUnit &cx_tu, const std::string &file_name,
11 years ago
const std::map<std::string, std::string> &buffers,
11 years ago
unsigned line_num, unsigned column) {
11 years ago
std::vector<CXUnsavedFile> 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);
}
cx_results = clang_codeCompleteAt(cx_tu,
11 years ago
file_name.c_str(),
line_num,
column,
files.data(),
files.size(),
clang_defaultCodeCompleteOptions()|CXCodeComplete_IncludeBriefComments);
if(cx_results!=NULL)
clang_sortCodeCompletionResults(cx_results->Results, cx_results->NumResults);
11 years ago
}
clang::CodeCompleteResults::~CodeCompleteResults() {
clang_disposeCodeCompleteResults(cx_results);
}
11 years ago
unsigned clang::CodeCompleteResults::
11 years ago
size() {
if(cx_results==NULL)
return 0;
return cx_results->NumResults;
11 years ago
}
clang::CompletionString clang::CodeCompleteResults::
11 years ago
get(unsigned i) {
if (i >= size()) {
11 years ago
throw std::invalid_argument("clang::CodeCompleteResults::get(unsigned i): i>=size()");
11 years ago
}
return CompletionString(cx_results->Results[i].CompletionString);
11 years ago
}