Browse Source

Added support for function to instance method conversions in the CLI generator.

This boils down to ignoring the first argument when we are generating the method parameters and calling NativePtr when we need access to the first argument.
pull/1/head
triton 13 years ago
parent
commit
7be2a4ef2b
  1. 4
      src/Generator/Generators/CLI/CLIHelpers.cs
  2. 9
      src/Generator/Generators/CLI/CLIMarshal.cs

4
src/Generator/Generators/CLI/CLIHelpers.cs

@ -438,6 +438,10 @@ namespace Cxxi.Generators.CLI
{ {
for (var i = 0; i < method.Parameters.Count; ++i) for (var i = 0; i < method.Parameters.Count; ++i)
{ {
if (method.Conversion == MethodConversionType.FunctionToInstanceMethod
&& i == 0)
continue;
var param = method.Parameters[i]; var param = method.Parameters[i];
Write("{0}", TypeSig.GetArgumentString(param)); Write("{0}", TypeSig.GetArgumentString(param));
if (i < method.Parameters.Count - 1) if (i < method.Parameters.Count - 1)

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

@ -436,6 +436,15 @@ namespace Cxxi.Generators.CLI
if (!Context.Parameter.Type.IsPointer()) if (!Context.Parameter.Type.IsPointer())
Return.Write("*"); Return.Write("*");
var method = Context.Function as Method;
if (method != null
&& method.Conversion == MethodConversionType.FunctionToInstanceMethod
&& Context.ParameterIndex == 0)
{
Return.Write("NativePtr");
return true;
}
Return.Write("{0}->NativePtr", Context.Parameter.Name); Return.Write("{0}->NativePtr", Context.Parameter.Name);
} }

Loading…
Cancel
Save