From ce0929ddda6d3736c54cc82ea74e0b30e2c3ccba Mon Sep 17 00:00:00 2001 From: Florian Jung Date: Thu, 8 Feb 2018 18:31:09 +0100 Subject: [PATCH] Added Cursor::get_children() method --- src/cursor.cc | 12 ++++++++++++ src/cursor.h | 1 + 2 files changed, 13 insertions(+) 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;