diff --git a/src/cursor.cc b/src/cursor.cc index 9b01b9c..915d782 100644 --- a/src/cursor.cc +++ b/src/cursor.cc @@ -157,6 +157,18 @@ clangmm::Cursor clangmm::Cursor::get_semantic_parent() const { return Cursor(clang_getCursorSemanticParent(cx_cursor)); } +std::vector clangmm::Cursor::get_children() const { + std::vector result; + clang_visitChildren(cx_cursor, + [](CXCursor cur, CXCursor /*parent*/, CXClientData data) { + static_cast*>(data)->emplace_back(cur); + return CXChildVisit_Continue; + }, + &result + ); + return result; +} + std::vector clangmm::Cursor::get_arguments() const { std::vector cursors; auto size=clang_Cursor_getNumArguments(cx_cursor); diff --git a/src/cursor.h b/src/cursor.h index 4d521f8..b4a62c1 100644 --- a/src/cursor.h +++ b/src/cursor.h @@ -208,6 +208,7 @@ namespace clangmm { Cursor get_canonical() const; Cursor get_definition() const; Cursor get_semantic_parent() const; + std::vector get_children() const; std::vector get_arguments() const; std::vector get_all_overridden_cursors() const; operator bool() const;