From da3547c298060143070e32cc65efe4f91561657b Mon Sep 17 00:00:00 2001 From: badcel <1218031+badcel@users.noreply.github.com> Date: Mon, 15 Jan 2024 21:16:12 +0100 Subject: [PATCH 1/2] Typed Record: Add parameterless constructor --- src/Generation/Generator/Model/TypedRecord.cs | 3 +++ src/Generation/Generator/Renderer/Public/TypedRecord.cs | 4 ++++ src/Tests/Libs/GirTest-0.1.Tests/TypedRecordTest.cs | 7 +++++++ 3 files changed, 14 insertions(+) diff --git a/src/Generation/Generator/Model/TypedRecord.cs b/src/Generation/Generator/Model/TypedRecord.cs index 08c99d4c6..742e29fab 100644 --- a/src/Generation/Generator/Model/TypedRecord.cs +++ b/src/Generation/Generator/Model/TypedRecord.cs @@ -42,6 +42,9 @@ public static string GetDataName(GirModel.Record record) public static string GetFullyQuallifiedDataName(GirModel.Record record) => $"{Namespace.GetInternalName(record.Namespace)}.{GetDataName(record)}"; + + public static string GetFullyQuallifiedManagedHandle(GirModel.Record record) + => $"{Namespace.GetInternalName(record.Namespace)}.{GetInternalManagedHandle(record)}"; public static string GetInternalArrayHandle(GirModel.Record record) { diff --git a/src/Generation/Generator/Renderer/Public/TypedRecord.cs b/src/Generation/Generator/Renderer/Public/TypedRecord.cs index 53368bfbd..22da2d3da 100644 --- a/src/Generation/Generator/Renderer/Public/TypedRecord.cs +++ b/src/Generation/Generator/Renderer/Public/TypedRecord.cs @@ -35,6 +35,10 @@ public partial class {name} Initialize(); }} + public {name}() : this({Model.TypedRecord.GetFullyQuallifiedManagedHandle(record)}.Create()) + {{ + }} + //TODO: This is a workaround constructor as long as we are //not having https://github.com/gircore/gir.core/issues/397 private {name}(IntPtr ptr, bool ownsHandle) : this(ownsHandle diff --git a/src/Tests/Libs/GirTest-0.1.Tests/TypedRecordTest.cs b/src/Tests/Libs/GirTest-0.1.Tests/TypedRecordTest.cs index 7743cb9f8..0a5f91f3b 100644 --- a/src/Tests/Libs/GirTest-0.1.Tests/TypedRecordTest.cs +++ b/src/Tests/Libs/GirTest-0.1.Tests/TypedRecordTest.cs @@ -367,4 +367,11 @@ public void SupportsPrivateFields() //Private fields are not rendered in the public API typeof(TypedRecordTester).GetProperty(nameof(data.CustomIntPrivate)).Should().BeNull(); } + + [TestMethod] + public void HasParameterlessConstructor() + { + var instance = new TypedRecordTester(); + instance.Should().NotBeNull(); + } } From 301a288bce4506f98aff4ca89d6fd775fe0b4286 Mon Sep 17 00:00:00 2001 From: badcel <1218031+badcel@users.noreply.github.com> Date: Wed, 24 Jan 2024 16:05:51 +0100 Subject: [PATCH 2/2] Renderer: Remove unreachable break statement --- src/Generation/Generator/Model/TypedRecord.cs | 2 +- .../ParameterToNativeExpression/Converter/PointerAlias.cs | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Generation/Generator/Model/TypedRecord.cs b/src/Generation/Generator/Model/TypedRecord.cs index 742e29fab..6af610c42 100644 --- a/src/Generation/Generator/Model/TypedRecord.cs +++ b/src/Generation/Generator/Model/TypedRecord.cs @@ -42,7 +42,7 @@ public static string GetDataName(GirModel.Record record) public static string GetFullyQuallifiedDataName(GirModel.Record record) => $"{Namespace.GetInternalName(record.Namespace)}.{GetDataName(record)}"; - + public static string GetFullyQuallifiedManagedHandle(GirModel.Record record) => $"{Namespace.GetInternalName(record.Namespace)}.{GetInternalManagedHandle(record)}"; diff --git a/src/Generation/Generator/Renderer/Public/ParameterToNativeExpression/Converter/PointerAlias.cs b/src/Generation/Generator/Renderer/Public/ParameterToNativeExpression/Converter/PointerAlias.cs index b5def3260..cf17fe93a 100644 --- a/src/Generation/Generator/Renderer/Public/ParameterToNativeExpression/Converter/PointerAlias.cs +++ b/src/Generation/Generator/Renderer/Public/ParameterToNativeExpression/Converter/PointerAlias.cs @@ -18,10 +18,8 @@ public void Initialize(ParameterToNativeData parameter, IEnumerable