mirror of https://gitlab.com/cppit/libclangmm
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.
45 lines
1.6 KiB
45 lines
1.6 KiB
#include "CodeCompleteResults.h" |
|
#include "CompletionString.h" |
|
#include <exception> |
|
#include "Utility.h" |
|
|
|
clang::CodeCompleteResults::CodeCompleteResults(CXTranslationUnit &cx_tu, |
|
const std::string &buffer, |
|
unsigned line_num, unsigned column) { |
|
CXUnsavedFile files[1]; |
|
auto file_path=clang::to_string(clang_getTranslationUnitSpelling(cx_tu)); |
|
files[0].Filename = file_path.c_str(); |
|
files[0].Contents = buffer.c_str(); |
|
files[0].Length = buffer.size(); |
|
|
|
cx_results = clang_codeCompleteAt(cx_tu, |
|
file_path.c_str(), |
|
line_num, |
|
column, |
|
files, |
|
1, |
|
clang_defaultCodeCompleteOptions()|CXCodeComplete_IncludeBriefComments); |
|
if(cx_results!=NULL) |
|
clang_sortCodeCompletionResults(cx_results->Results, cx_results->NumResults); |
|
} |
|
|
|
clang::CodeCompleteResults::~CodeCompleteResults() { |
|
clang_disposeCodeCompleteResults(cx_results); |
|
} |
|
|
|
unsigned clang::CodeCompleteResults::size() const { |
|
if(cx_results==NULL) |
|
return 0; |
|
return cx_results->NumResults; |
|
} |
|
|
|
clang::CompletionString clang::CodeCompleteResults::get(unsigned i) const { |
|
if (i >= size()) { |
|
throw std::invalid_argument("clang::CodeCompleteResults::get(unsigned i): i>=size()"); |
|
} |
|
return CompletionString(cx_results->Results[i].CompletionString); |
|
} |
|
|
|
std::string clang::CodeCompleteResults::get_usr() const { |
|
return clang::to_string(clang_codeCompleteGetContainerUSR(cx_results)); |
|
}
|
|
|