Browse Source

Fix marshaling of C++ references in C++ marshaler.

pull/1318/head
João Matos 6 years ago committed by João Matos
parent
commit
0f23d871de
  1. 12
      src/Generator/Generators/C/CppMarshal.cs

12
src/Generator/Generators/C/CppMarshal.cs

@ -586,9 +586,15 @@ namespace CppSharp.Generators.Cpp @@ -586,9 +586,15 @@ namespace CppSharp.Generators.Cpp
}
var paramType = Context.Parameter.Type.Desugar();
var deref = paramType.SkipPointerRefs().IsPointer() ? "->" : ".";
Context.Return.Write($"(::{@class.QualifiedOriginalName}*)");
Context.Return.Write($"{Context.Parameter.Name}{deref}{Helpers.InstanceIdentifier}");
var isPointer = paramType.SkipPointerRefs().IsPointer();
var deref = isPointer ? "->" : ".";
var instance = $"(::{@class.QualifiedOriginalName}*)" +
$"{Context.Parameter.Name}{deref}{Helpers.InstanceIdentifier}";
if (isPointer)
Context.Return.Write($"{Context.Parameter.Name} ? {instance} : nullptr");
else
Context.Return.Write($"{instance}");
}
private void MarshalValueClass(Class @class)

Loading…
Cancel
Save