diff --git a/src/CodeCompleteResults.cc b/src/CodeCompleteResults.cc index 49ab663..8fdef7b 100644 --- a/src/CodeCompleteResults.cc +++ b/src/CodeCompleteResults.cc @@ -1,11 +1,12 @@ #include "CodeCompleteResults.h" #include "CompletionString.h" #include +#include "Utility.h" -clang::CodeCompleteResults:: -CodeCompleteResults(CXTranslationUnit &cx_tu, const std::string &file_name, - const std::map &buffers, - unsigned line_num, unsigned column) { +clang::CodeCompleteResults::CodeCompleteResults(CXTranslationUnit &cx_tu, + const std::string &file_name, + const std::map &buffers, + unsigned line_num, unsigned column) { std::vector files; for (auto &buffer : buffers) { CXUnsavedFile file; @@ -29,17 +30,19 @@ clang::CodeCompleteResults::~CodeCompleteResults() { clang_disposeCodeCompleteResults(cx_results); } -unsigned clang::CodeCompleteResults:: -size() { +unsigned clang::CodeCompleteResults::size() const { if(cx_results==NULL) return 0; return cx_results->NumResults; } -clang::CompletionString clang::CodeCompleteResults:: -get(unsigned i) { +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)); +} diff --git a/src/CodeCompleteResults.h b/src/CodeCompleteResults.h index e6c8a17..ceb366c 100644 --- a/src/CodeCompleteResults.h +++ b/src/CodeCompleteResults.h @@ -2,6 +2,7 @@ #define CODECOMPLETERESULTS_H_ #include #include +#include #include "CompletionString.h" namespace clang { @@ -12,8 +13,9 @@ namespace clang { unsigned line_num, unsigned column); public: ~CodeCompleteResults(); - CompletionString get(unsigned index); - unsigned size(); + CompletionString get(unsigned index) const; + unsigned size() const; + std::string get_usr() const; CXCodeCompleteResults *cx_results; }; diff --git a/src/Cursor.cc b/src/Cursor.cc index 6cd3271..8ad74b9 100644 --- a/src/Cursor.cc +++ b/src/Cursor.cc @@ -13,6 +13,10 @@ clang::SourceRange clang::Cursor::get_source_range() const { return SourceRange(clang_getCursorExtent(cx_cursor)); } +std::string clang::Cursor::get_spelling() const { + return clang::to_string(clang_getCursorSpelling(cx_cursor)); +} + std::string clang::Cursor::get_usr() const { return clang::to_string(clang_getCursorUSR(cx_cursor)); } @@ -27,4 +31,4 @@ clang::Cursor::operator bool() const { bool clang::Cursor::operator==(const Cursor& rhs) const { return get_usr()==rhs.get_usr(); -} \ No newline at end of file +} diff --git a/src/Cursor.h b/src/Cursor.h index f567375..94858eb 100644 --- a/src/Cursor.h +++ b/src/Cursor.h @@ -180,11 +180,12 @@ namespace clang { const CursorKind get_kind(); SourceLocation get_source_location() const; SourceRange get_source_range() const; + std::string get_spelling() const; std::string get_usr() const; Cursor get_referenced() const; operator bool() const; bool operator==(const Cursor& rhs) const; - + CXCursor cx_cursor; }; } // namespace clang diff --git a/src/Token.cc b/src/Token.cc index e3a9b9c..e8dbb65 100644 --- a/src/Token.cc +++ b/src/Token.cc @@ -34,6 +34,7 @@ bool clang::Token::has_type() { return spelling!=""; } +//TODO: Move to clang::Cursor std::string clang::Token::get_type() { std::string spelling; auto referenced=clang_getCursorReferenced(cx_cursor);