From fec8b00d8e849268e0f940df26694a3d697183c7 Mon Sep 17 00:00:00 2001 From: triton Date: Mon, 14 Apr 2014 03:12:58 +0100 Subject: [PATCH] Added marshaling of function types to C# backend. --- src/Generator/Generators/CSharp/CSharpMarshal.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Generator/Generators/CSharp/CSharpMarshal.cs b/src/Generator/Generators/CSharp/CSharpMarshal.cs index f7b37e3d..4ff5b0e2 100644 --- a/src/Generator/Generators/CSharp/CSharpMarshal.cs +++ b/src/Generator/Generators/CSharp/CSharpMarshal.cs @@ -231,6 +231,18 @@ namespace CppSharp.Generators.CSharp return decl.Type.Visit(this); } + public override bool VisitFunctionType(FunctionType function, TypeQualifiers quals) + { + var ptrName = Generator.GeneratedIdentifier("ptr") + Context.ParameterIndex; + + Context.SupportBefore.WriteLine("var {0} = {1};", ptrName, + Context.ReturnVarName); + + Context.Return.Write("({1})Marshal.GetDelegateForFunctionPointer({0}, typeof({1}))", + ptrName, function.ToString()); + return true; + } + public override bool VisitClassDecl(Class @class) { var ctx = Context as CSharpMarshalContext;