|
|
|
@ -1,4 +1,5 @@ |
|
|
|
#include "Token.h" |
|
|
|
#include "Token.h" |
|
|
|
|
|
|
|
#include "Utility.h" |
|
|
|
|
|
|
|
|
|
|
|
// // // // //
|
|
|
|
// // // // //
|
|
|
|
// Token //
|
|
|
|
// Token //
|
|
|
|
@ -16,8 +17,7 @@ clang::SourceRange clang::Token::get_source_range() { |
|
|
|
} |
|
|
|
} |
|
|
|
// returns a string description of this tokens kind
|
|
|
|
// returns a string description of this tokens kind
|
|
|
|
std::string clang::Token::get_spelling() { |
|
|
|
std::string clang::Token::get_spelling() { |
|
|
|
CXString s = clang_getTokenSpelling(cx_tu, cx_token); |
|
|
|
return clang::to_string(clang_getTokenSpelling(cx_tu, cx_token)); |
|
|
|
return std::string(clang_getCString(s)); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const clang::TokenKind clang::Token::get_kind() { |
|
|
|
const clang::TokenKind clang::Token::get_kind() { |
|
|
|
@ -30,9 +30,7 @@ bool clang::Token::has_type() { |
|
|
|
if(clang_Cursor_isNull(referenced)) |
|
|
|
if(clang_Cursor_isNull(referenced)) |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
auto type=clang_getCursorType(referenced); |
|
|
|
auto type=clang_getCursorType(referenced); |
|
|
|
auto cxstr=clang_getTypeSpelling(type); |
|
|
|
auto spelling=clang::to_string(clang_getTypeSpelling(type)); |
|
|
|
std::string spelling=clang_getCString(cxstr); |
|
|
|
|
|
|
|
clang_disposeString(cxstr); |
|
|
|
|
|
|
|
return spelling!=""; |
|
|
|
return spelling!=""; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -41,17 +39,13 @@ std::string clang::Token::get_type() { |
|
|
|
auto referenced=clang_getCursorReferenced(cx_cursor); |
|
|
|
auto referenced=clang_getCursorReferenced(cx_cursor); |
|
|
|
if(!clang_Cursor_isNull(referenced)) { |
|
|
|
if(!clang_Cursor_isNull(referenced)) { |
|
|
|
auto type=clang_getCursorType(referenced); |
|
|
|
auto type=clang_getCursorType(referenced); |
|
|
|
auto cxstr=clang_getTypeSpelling(type); |
|
|
|
spelling=clang::to_string(clang_getTypeSpelling(type)); |
|
|
|
spelling=clang_getCString(cxstr); |
|
|
|
|
|
|
|
clang_disposeString(cxstr); |
|
|
|
|
|
|
|
std::string auto_end=""; |
|
|
|
std::string auto_end=""; |
|
|
|
//TODO fix const auto
|
|
|
|
//TODO fix const auto
|
|
|
|
if((spelling.size()>=4 && spelling.substr(0, 4)=="auto")) { |
|
|
|
if((spelling.size()>=4 && spelling.substr(0, 4)=="auto")) { |
|
|
|
auto_end=spelling.substr(4); |
|
|
|
auto_end=spelling.substr(4); |
|
|
|
auto type=clang_getCanonicalType(clang_getCursorType(cx_cursor)); |
|
|
|
auto type=clang_getCanonicalType(clang_getCursorType(cx_cursor)); |
|
|
|
auto cxstr=clang_getTypeSpelling(type); |
|
|
|
spelling=clang::to_string(clang_getTypeSpelling(type)); |
|
|
|
spelling=clang_getCString(cxstr); |
|
|
|
|
|
|
|
clang_disposeString(cxstr); |
|
|
|
|
|
|
|
if(spelling.find(" ")==std::string::npos) |
|
|
|
if(spelling.find(" ")==std::string::npos) |
|
|
|
spelling+=auto_end; |
|
|
|
spelling+=auto_end; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -59,57 +53,11 @@ std::string clang::Token::get_type() { |
|
|
|
return spelling; |
|
|
|
return spelling; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//TODO: use clang_Cursor_getBriefCommentText
|
|
|
|
|
|
|
|
std::string clang::Token::get_brief_comments() { |
|
|
|
std::string clang::Token::get_brief_comments() { |
|
|
|
std::string comment_string; |
|
|
|
std::string comment_string; |
|
|
|
auto referenced=clang_getCursorReferenced(cx_cursor); |
|
|
|
auto referenced=get_cursor().get_referenced(); |
|
|
|
auto comment=clang_Cursor_getParsedComment(referenced); |
|
|
|
if(referenced) { |
|
|
|
if(clang_Comment_getKind(comment)==CXComment_FullComment) { |
|
|
|
comment_string=clang::to_string(clang_Cursor_getBriefCommentText(referenced.cx_cursor)); |
|
|
|
size_t para_c=0; |
|
|
|
|
|
|
|
for(unsigned c=0;c<clang_Comment_getNumChildren(comment);c++) { |
|
|
|
|
|
|
|
auto child_comment=clang_Comment_getChild(comment, c); |
|
|
|
|
|
|
|
if(clang_Comment_getKind(child_comment)==CXComment_Paragraph) { |
|
|
|
|
|
|
|
para_c++; |
|
|
|
|
|
|
|
if(para_c>=2) |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
for(unsigned c=0;c<clang_Comment_getNumChildren(child_comment);c++) { |
|
|
|
|
|
|
|
auto grandchild_comment=clang_Comment_getChild(child_comment, c); |
|
|
|
|
|
|
|
if(clang_Comment_getKind(grandchild_comment)==CXComment_Text) { |
|
|
|
|
|
|
|
auto cxstr=clang_TextComment_getText(grandchild_comment); |
|
|
|
|
|
|
|
comment_string+=clang_getCString(cxstr); |
|
|
|
|
|
|
|
comment_string+="\n"; |
|
|
|
|
|
|
|
clang_disposeString(cxstr); |
|
|
|
|
|
|
|
size_t dot_position=comment_string.find("."); |
|
|
|
|
|
|
|
if(dot_position!=std::string::npos) |
|
|
|
|
|
|
|
return comment_string.substr(0, dot_position); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if(clang_Comment_getKind(grandchild_comment)==CXComment_InlineCommand) { |
|
|
|
|
|
|
|
auto cxstr=clang_InlineCommandComment_getCommandName(grandchild_comment); |
|
|
|
|
|
|
|
if(comment_string.size()>0) |
|
|
|
|
|
|
|
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_c<clang_InlineCommandComment_getNumArgs(grandchild_comment);arg_c++) { |
|
|
|
|
|
|
|
auto cxstr=clang_InlineCommandComment_getArgText(grandchild_comment, arg_c); |
|
|
|
|
|
|
|
if(cxstr.data!=NULL) { |
|
|
|
|
|
|
|
if(arg_c>0) |
|
|
|
|
|
|
|
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; |
|
|
|
return comment_string; |
|
|
|
} |
|
|
|
} |
|
|
|
|