Skip to content

Commit 0d84877

Browse files
committed
Simplify code by not specially handling void**
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
1 parent 25e9836 commit 0d84877

File tree

3 files changed

+5
-14
lines changed

3 files changed

+5
-14
lines changed

src/Generator/Generators/CSharp/CSharpMarshal.cs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -184,11 +184,6 @@ public override bool VisitPointerType(PointerType pointer, TypeQualifiers quals)
184184

185185
if (new QualifiedType(pointer, quals).IsConstRefToPrimitive())
186186
{
187-
if (finalPointee.IsPrimitiveType(PrimitiveType.Void))
188-
{
189-
Context.Return.Write($"new {typePrinter.IntPtrType}(*{Context.ReturnVarName})");
190-
return true;
191-
}
192187
Context.Return.Write("*");
193188
if (Context.MarshalKind == MarshalKind.NativeField)
194189
Context.Return.Write($"({pointer.QualifiedPointee.Visit(typePrinter)}*) ");
@@ -612,9 +607,7 @@ public override bool VisitPointerType(PointerType pointer, TypeQualifiers quals)
612607
{
613608
var local = Generator.GeneratedIdentifier($@"{
614609
param.Name}{Context.ParameterIndex}");
615-
string cast = isVoid ? $@"({pointee.Visit(
616-
new CppTypePrinter(Context.Context) { PrintTypeQualifiers = false })}) " : string.Empty;
617-
Context.Before.WriteLine($"var {local} = {cast}{Context.Return};");
610+
Context.Before.WriteLine($"var {local} = {Context.Return};");
618611
Context.Return.StringBuilder.Clear();
619612
Context.Return.Write(local);
620613
}

src/Generator/Generators/CSharp/CSharpTypePrinter.cs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -191,8 +191,7 @@ public override TypePrinterResult VisitPointerType(PointerType pointer,
191191
// * Any pointer type.
192192
// * Any user-defined struct type that contains fields of unmanaged types only.
193193
var finalPointee = (pointee.GetFinalPointee() ?? pointee).Desugar();
194-
Enumeration @enum;
195-
if (finalPointee.IsPrimitiveType() || finalPointee.TryGetEnum(out @enum))
194+
if (finalPointee.IsPrimitiveType() || finalPointee.IsEnum())
196195
{
197196
// Skip one indirection if passed by reference
198197
bool isRefParam = Parameter != null && (Parameter.IsOut || Parameter.IsInOut);
@@ -212,11 +211,10 @@ public override TypePrinterResult VisitPointerType(PointerType pointer,
212211
allowStrings = true;
213212

214213
string @ref = Parameter != null && Parameter.IsIndirect ? string.Empty : "*";
215-
return !isRefParam && result.Type == this.IntPtrType ? "void**" : result + @ref;
214+
return result + @ref;
216215
}
217216

218-
Class @class;
219-
if ((pointee.IsDependent || pointee.TryGetClass(out @class))
217+
if ((pointee.IsDependent || pointee.IsClass())
220218
&& ContextKind == TypePrinterContextKind.Native)
221219
{
222220
return IntPtrType;

tests/CSharp/CSharp.Tests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1691,7 +1691,7 @@ public void TestConstCharStarRef()
16911691
public void TestRValueReferenceToPointer()
16921692
{
16931693
int value = 5;
1694-
IntPtr intPtr = CSharp.CSharp.RValueReferenceToPointer((void**) &value);
1694+
IntPtr intPtr = CSharp.CSharp.RValueReferenceToPointer((IntPtr*) &value);
16951695
Assert.That((int) intPtr, Is.EqualTo(value));
16961696
}
16971697

0 commit comments

Comments
 (0)