Browse Source

Ensured conversion operators from primitive pointers pass the correct values.

Signed-off-by: Dimitar Dobrev <dpldobrev@yahoo.com>
pull/503/merge
Dimitar Dobrev 10 years ago
parent
commit
0930360cd5
  1. 10
      src/Generator/Generators/CSharp/CSharpTextTemplate.cs
  2. 2
      tests/CSharpTemp/CSharpTemp.Tests.cs

10
src/Generator/Generators/CSharp/CSharpTextTemplate.cs

@ -2283,12 +2283,14 @@ namespace CppSharp.Generators.CSharp @@ -2283,12 +2283,14 @@ namespace CppSharp.Generators.CSharp
Class @interface = null;
if (paramType.TryGetClass(out paramClass))
@interface = paramClass.Namespace.Classes.Find(c => c.OriginalClass == paramClass);
var paramName = string.Format("{0}{1}",
method.Parameters[0].IsPrimitiveParameterConvertibleToRef() ? "ref *" : string.Empty,
method.Parameters[0].Name);
if (@interface != null)
WriteLine("return new {0}(({2}) {1});", method.ConversionType,
method.Parameters[0].Name, @interface.Name);
WriteLine("return new {0}(({2}) {1});", method.ConversionType, paramName, @interface.Name);
else
WriteLine("return new {0}({1});", method.ConversionType,
method.Parameters[0].Name);
WriteLine("return new {0}({1});", method.ConversionType, paramName);
}
else
{

2
tests/CSharpTemp/CSharpTemp.Tests.cs

@ -350,6 +350,8 @@ public class CSharpTempTests : GeneratorTestFixture @@ -350,6 +350,8 @@ public class CSharpTempTests : GeneratorTestFixture
public unsafe void TestMultiOverLoadPtrToRef()
{
var r = 0;
MultiOverloadPtrToRef m = &r;
m.Dispose();
var obj = new MultiOverloadPtrToRef(ref r);
var p = obj.ReturnPrimTypePtr();
Assert.AreEqual(0, p[0]);

Loading…
Cancel
Save