diff --git a/src/Bridge/Class.cs b/src/Bridge/Class.cs index 59e5b717..7ad991a9 100644 --- a/src/Bridge/Class.cs +++ b/src/Bridge/Class.cs @@ -201,6 +201,20 @@ namespace CppSharp .Cast(); } + public IEnumerable FindHierarchy(Func> func) + where T : Declaration + { + foreach (var @base in Bases) + { + if (!@base.IsClass) continue; + foreach(var elem in @base.Class.FindHierarchy(func)) + yield return elem; + } + + foreach (var elem in func(this)) + yield return elem; + } + public override T Visit(IDeclVisitor visitor) { return visitor.VisitClassDecl(this);