From fb7b7f6ea2f503a3ee55ff981271da23f5caa216 Mon Sep 17 00:00:00 2001 From: ceresgalax Date: Thu, 1 Feb 2024 23:46:51 -0800 Subject: [PATCH 1/2] Add OverloadedDeclRef For cursors of the kind CXCursor_OverloadedDeclRef. --- .../Cursors/Refs/OverloadedDeclRef.cs | 28 +++++++++++++++++++ sources/ClangSharp/Cursors/Refs/Ref.cs | 7 ++++- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 sources/ClangSharp/Cursors/Refs/OverloadedDeclRef.cs diff --git a/sources/ClangSharp/Cursors/Refs/OverloadedDeclRef.cs b/sources/ClangSharp/Cursors/Refs/OverloadedDeclRef.cs new file mode 100644 index 00000000..620ea88b --- /dev/null +++ b/sources/ClangSharp/Cursors/Refs/OverloadedDeclRef.cs @@ -0,0 +1,28 @@ +// Copyright (c) .NET Foundation and Contributors. Licensed under the MIT License (MIT). See License.md in the repository root for more information. + +using System; +using System.Collections.Generic; +using System.Linq; +using ClangSharp.Interop; +using static ClangSharp.Interop.CXCursorKind; + +namespace ClangSharp; + +public sealed class OverloadedDeclRef : Ref +{ + private readonly Lazy> _overloadedDecls; + + internal OverloadedDeclRef(CXCursor handle) : base(handle, CXCursor_OverloadedDeclRef) + { + _overloadedDecls = new Lazy>(() => { + uint num = Handle.NumOverloadedDecls; + return Enumerable.Range(0, (int)num) + .Select(i => Handle.GetOverloadedDecl((uint)i)) + .Select(c => TranslationUnit.GetOrCreate(c)) + .ToArray(); + }); + } + + public IEnumerable OverloadedDecls => _overloadedDecls.Value; + +} diff --git a/sources/ClangSharp/Cursors/Refs/Ref.cs b/sources/ClangSharp/Cursors/Refs/Ref.cs index b4dfe8f6..8a8901fb 100644 --- a/sources/ClangSharp/Cursors/Refs/Ref.cs +++ b/sources/ClangSharp/Cursors/Refs/Ref.cs @@ -34,6 +34,12 @@ internal static new Ref Create(CXCursor handle) break; } + case CXCursor_OverloadedDeclRef: + { + result = new OverloadedDeclRef(handle); + break; + } + case CXCursor_ObjCSuperClassRef: case CXCursor_ObjCProtocolRef: case CXCursor_ObjCClassRef: @@ -42,7 +48,6 @@ internal static new Ref Create(CXCursor handle) case CXCursor_NamespaceRef: case CXCursor_MemberRef: case CXCursor_LabelRef: - case CXCursor_OverloadedDeclRef: case CXCursor_VariableRef: { result = new Ref(handle, handle.Kind); From 4090c681261807ca8629746e31e238f1e98d7a64 Mon Sep 17 00:00:00 2001 From: Tanner Gooding Date: Sun, 4 Feb 2024 08:54:11 -0800 Subject: [PATCH 2/2] Update sources/ClangSharp/Cursors/Refs/OverloadedDeclRef.cs --- sources/ClangSharp/Cursors/Refs/OverloadedDeclRef.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/sources/ClangSharp/Cursors/Refs/OverloadedDeclRef.cs b/sources/ClangSharp/Cursors/Refs/OverloadedDeclRef.cs index 620ea88b..38681a09 100644 --- a/sources/ClangSharp/Cursors/Refs/OverloadedDeclRef.cs +++ b/sources/ClangSharp/Cursors/Refs/OverloadedDeclRef.cs @@ -24,5 +24,4 @@ internal OverloadedDeclRef(CXCursor handle) : base(handle, CXCursor_OverloadedDe } public IEnumerable OverloadedDecls => _overloadedDecls.Value; - }