|
|
|
@ -20,15 +20,13 @@ clang::Tokens::~Tokens() { |
|
|
|
//This works across TranslationUnits! However, to get rename refactoring to work,
|
|
|
|
//This works across TranslationUnits! However, to get rename refactoring to work,
|
|
|
|
//one have to open all the files that might include a similar token
|
|
|
|
//one have to open all the files that might include a similar token
|
|
|
|
//Similar tokens defined as tokens with equal referenced cursors.
|
|
|
|
//Similar tokens defined as tokens with equal referenced cursors.
|
|
|
|
std::vector<std::pair<unsigned, unsigned> > clang::Tokens::get_similar_token_offsets(clang::Token& token) { |
|
|
|
std::vector<std::pair<unsigned, unsigned> > clang::Tokens::get_similar_token_offsets(const std::string &usr) { |
|
|
|
std::vector<std::pair<unsigned, unsigned> > offsets; |
|
|
|
std::vector<std::pair<unsigned, unsigned> > offsets; |
|
|
|
|
|
|
|
for(auto &token: *this) { |
|
|
|
|
|
|
|
if(token.get_kind()==clang::Token_Identifier) { |
|
|
|
auto referenced=token.get_cursor().get_referenced(); |
|
|
|
auto referenced=token.get_cursor().get_referenced(); |
|
|
|
if(referenced) { |
|
|
|
if(referenced && usr==referenced.get_usr()) { |
|
|
|
auto referenced_usr=referenced.get_usr(); |
|
|
|
offsets.emplace_back(token.offsets); |
|
|
|
for(auto &a_token: *this) { |
|
|
|
|
|
|
|
auto a_referenced=a_token.get_cursor().get_referenced(); |
|
|
|
|
|
|
|
if(a_referenced && referenced_usr==a_referenced.get_usr() && token.get_spelling()==a_token.get_spelling()) { |
|
|
|
|
|
|
|
offsets.emplace_back(a_token.offsets); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|