Browse Source

Added Cursor::get_all_overridden_cursors

merge-requests/37/head
eidheim 8 years ago
parent
commit
997d02a8de
  1. 22
      src/cursor.cc
  2. 1
      src/cursor.h

22
src/cursor.cc

@ -161,6 +161,28 @@ std::vector<clangmm::Cursor> clangmm::Cursor::get_arguments() const {
return cursors;
}
std::vector<clangmm::Cursor> clangmm::Cursor::get_all_overridden_cursors() const {
std::vector<Cursor> result;
if(get_kind()!=Kind::CXXMethod)
return result;
class Recursive {
public:
static void overridden(std::vector<Cursor> &result, const Cursor &cursor, int depth) {
if(depth>0)
result.emplace_back(cursor);
CXCursor *cursors;
unsigned size;
clang_getOverriddenCursors(cursor.cx_cursor, &cursors, &size);
for(unsigned c=0;c<size;++c)
overridden(result, cursors[c], depth+1);
clang_disposeOverriddenCursors(cursors);
}
};
Recursive::overridden(result, *this, 0);
return result;
}
clangmm::Cursor::operator bool() const {
return !clang_Cursor_isNull(cx_cursor);
}

1
src/cursor.h

@ -208,6 +208,7 @@ namespace clangmm {
Cursor get_definition() const;
Cursor get_semantic_parent() const;
std::vector<Cursor> get_arguments() const;
std::vector<Cursor> get_all_overridden_cursors() const;
operator bool() const;
bool operator==(const Cursor& rhs) const;

Loading…
Cancel
Save