Browse Source

Fixed the generated C# for const void*& in parameters.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/1166/head
Dimitar Dobrev 7 years ago
parent
commit
6602841a3c
  1. 11
      src/Generator/Generators/CSharp/CSharpMarshal.cs
  2. 1
      src/Generator/Generators/CodeGenerator.cs
  3. 4
      tests/Common/Common.cpp
  4. 1
      tests/Common/Common.h

11
src/Generator/Generators/CSharp/CSharpMarshal.cs

@ -614,7 +614,18 @@ namespace CppSharp.Generators.CSharp
Context.Return.Write($"({typePrinter.PrintNative(pointer)}) "); Context.Return.Write($"({typePrinter.PrintNative(pointer)}) ");
if (qualifiedPointer.IsConstRefToPrimitive()) if (qualifiedPointer.IsConstRefToPrimitive())
{
if (primitive == PrimitiveType.Void && pointee.IsAddress())
{
string ptr = $@"{Helpers.PtrIdentifier}{
Context.ParameterIndex}";
Context.Before.WriteLine($@"var {ptr} = {
Context.Parameter.Name}.ToPointer();");
Context.Return.Write($"&{ptr}");
return true;
}
Context.Return.Write("&"); Context.Return.Write("&");
}
Context.Return.Write(Context.Parameter.Name); Context.Return.Write(Context.Parameter.Name);
} }

1
src/Generator/Generators/CodeGenerator.cs

@ -523,6 +523,7 @@ namespace CppSharp.Generators
public static readonly string DummyIdentifier = Generator.GeneratedIdentifier("dummy"); public static readonly string DummyIdentifier = Generator.GeneratedIdentifier("dummy");
public static readonly string TargetIdentifier = Generator.GeneratedIdentifier("target"); public static readonly string TargetIdentifier = Generator.GeneratedIdentifier("target");
public static readonly string SlotIdentifier = Generator.GeneratedIdentifier("slot"); public static readonly string SlotIdentifier = Generator.GeneratedIdentifier("slot");
public static readonly string PtrIdentifier = Generator.GeneratedIdentifier("ptr");
public static readonly string OwnsNativeInstanceIdentifier = Generator.GeneratedIdentifier("ownsNativeInstance"); public static readonly string OwnsNativeInstanceIdentifier = Generator.GeneratedIdentifier("ownsNativeInstance");

4
tests/Common/Common.cpp

@ -1006,3 +1006,7 @@ void integerOverload(long i)
void integerOverload(unsigned long i) void integerOverload(unsigned long i)
{ {
} }
void takeReferenceToVoidStar(const void*& p)
{
}

1
tests/Common/Common.h

@ -1480,3 +1480,4 @@ DLL_API void integerOverload(int i);
DLL_API void integerOverload(unsigned int i); DLL_API void integerOverload(unsigned int i);
DLL_API void integerOverload(long i); DLL_API void integerOverload(long i);
DLL_API void integerOverload(unsigned long i); DLL_API void integerOverload(unsigned long i);
DLL_API void takeReferenceToVoidStar(const void*& p);

Loading…
Cancel
Save