Browse Source

Added marshaling of parameter declarations in native to managed marshaling of C# backend.

pull/28/head
triton 12 years ago
parent
commit
cc5a8656b8
  1. 27
      src/Generator/Generators/CSharp/CSharpMarshal.cs

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

@ -219,6 +219,33 @@ namespace CppSharp.Generators.CSharp
Context.Return.Write("{0}", Context.ReturnVarName); Context.Return.Write("{0}", Context.ReturnVarName);
return true; return true;
} }
public override bool VisitParameterDecl(Parameter parameter)
{
if (parameter.Usage == ParameterUsage.Unknown || parameter.IsIn)
return base.VisitParameterDecl(parameter);
var ctx = new CSharpMarshalContext(base.Context.Driver)
{
ReturnType = base.Context.ReturnType,
ReturnVarName = base.Context.ReturnVarName
};
var marshal = new CSharpMarshalNativeToManagedPrinter(ctx);
parameter.Type.Visit(marshal);
if (!string.IsNullOrWhiteSpace(ctx.SupportBefore))
Context.SupportBefore.WriteLine(ctx.SupportBefore);
if (!string.IsNullOrWhiteSpace(ctx.Return))
{
Context.SupportBefore.WriteLine("var _{0} = {1};", parameter.Name,
ctx.Return);
}
Context.Return.Write("_{0}", parameter.Name);
return true;
}
} }
public class CSharpMarshalManagedToNativePrinter : CSharpMarshalPrinter public class CSharpMarshalManagedToNativePrinter : CSharpMarshalPrinter

Loading…
Cancel
Save