Browse Source

Since now the native pointer of the wrapper class can be of a base class, we need to explicitly cast to the current type.

pull/1/head
triton 13 years ago
parent
commit
e891df479a
  1. 2
      src/Generator/Generators/CLI/CLIMarshal.cs
  2. 9
      src/Generator/Generators/CLI/CLISourcesTemplate.cs

2
src/Generator/Generators/CLI/CLIMarshal.cs

@ -433,10 +433,12 @@ namespace Cxxi.Generators.CLI
&& method.Conversion == MethodConversionKind.FunctionToInstanceMethod && method.Conversion == MethodConversionKind.FunctionToInstanceMethod
&& Context.ParameterIndex == 0) && Context.ParameterIndex == 0)
{ {
Return.Write("(::{0}*)", @class.QualifiedOriginalName);
Return.Write("NativePtr"); Return.Write("NativePtr");
return; return;
} }
Return.Write("(::{0}*)", @class.QualifiedOriginalName);
Return.Write("{0}->NativePtr", Context.Parameter.Name); Return.Write("{0}->NativePtr", Context.Parameter.Name);
} }

9
src/Generator/Generators/CLI/CLISourcesTemplate.cs

@ -312,7 +312,14 @@ namespace Cxxi.Generators.CLI
} }
else else
{ {
Write(IsInstanceFunction(function) ? "NativePtr->" : "::"); if (IsInstanceFunction(function))
{
Write("((::{0}*)NativePtr)->", @class.QualifiedOriginalName);
}
else
{
Write("::");
}
Write("{0}(", function.QualifiedOriginalName); Write("{0}(", function.QualifiedOriginalName);
GenerateFunctionParams(function, @params); GenerateFunctionParams(function, @params);

Loading…
Cancel
Save