From 794091bd421c9bc101c4940934cd08f8386afefd Mon Sep 17 00:00:00 2001 From: eidheim Date: Sun, 5 Jul 2015 19:35:45 +0200 Subject: [PATCH] Can now receive brief comments given a cursor/token_id. --- src/CMakeLists.txt | 2 +- src/Tokens.cc | 66 ++++++++++++++++++++++++++++++++++++++++------ src/Tokens.h | 2 ++ 3 files changed, 61 insertions(+), 9 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index af536e8..1a1ae1c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,4 +1,4 @@ -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O3") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O3 -Wall -Wno-reorder") set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_HOME_DIRECTORY}/cmake/Modules/") diff --git a/src/Tokens.cc b/src/Tokens.cc index 0975a97..1b46dbb 100644 --- a/src/Tokens.cc +++ b/src/Tokens.cc @@ -17,16 +17,11 @@ clang::Tokens::~Tokens() { } void clang::Tokens::update_types(clang::TranslationUnit *tu) { - std::vector clang_cursors(size()); + clang_cursors.clear(); + clang_cursors.reserve(size()); clang_annotateTokens(tu->tu_, tokens_, size(), clang_cursors.data()); - std::vector cursors; - for(auto clang_cursor: clang_cursors) { - cursors.emplace_back(); - cursors.back().cursor_=clang_cursor; - } - - for(int c=0;c=2) + break; + for(unsigned c=0;c0) + comment_string.pop_back(); + if(clang_InlineCommandComment_getNumArgs(grandchild_comment)==0) + comment_string+=clang_getCString(cxstr); + clang_disposeString(cxstr); + for(unsigned arg_c=0;arg_c0) + comment_string+=" "; + comment_string+=clang_getCString(cxstr); + clang_disposeString(cxstr); + } + } + } + } + } + /*cout << " " << clang_Comment_getKind(child_comment) << ", children: " << clang_Comment_getNumChildren(child_comment) << endl; + auto cxstr=clang_FullComment_getAsHTML(child_comment); + cout << " " << clang_getCString(cxstr) << endl; + clang_disposeString(cxstr);*/ + } + while(comment_string.size()>0 && (comment_string.back()=='\n' || comment_string.back()==' ')) + comment_string.pop_back(); + } + + return comment_string; } \ No newline at end of file diff --git a/src/Tokens.h b/src/Tokens.h index ee3f883..c15cd25 100644 --- a/src/Tokens.h +++ b/src/Tokens.h @@ -10,9 +10,11 @@ namespace clang { Tokens(TranslationUnit *tu, SourceRange *range); ~Tokens(); void update_types(clang::TranslationUnit *tu); + std::string get_brief_comment(size_t cursor_id); private: CXToken *tokens_; unsigned num_tokens_; + std::vector clang_cursors; TranslationUnit& tu; }; } // namespace clang