From 734b1377f0910d3d461643775d2a0ab4d9a53d00 Mon Sep 17 00:00:00 2001 From: Dimitar Dobrev Date: Wed, 21 Aug 2013 00:50:28 +0300 Subject: [PATCH] Fixed the wrapping of functions taking a function pointer. Signed-off-by: Dimitar Dobrev --- src/Generator/Generators/CSharp/CSharpTypePrinter.cs | 3 +++ tests/Basic/Basic.cpp | 2 +- tests/Basic/Basic.h | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Generator/Generators/CSharp/CSharpTypePrinter.cs b/src/Generator/Generators/CSharp/CSharpTypePrinter.cs index 3fb2d838..a222a94e 100644 --- a/src/Generator/Generators/CSharp/CSharpTypePrinter.cs +++ b/src/Generator/Generators/CSharp/CSharpTypePrinter.cs @@ -120,6 +120,9 @@ namespace CppSharp.Generators.CSharp if (arguments.Count > 0) args = VisitParameters(function.Parameters, hasNames: false).Type; + if (ContextKind != CSharpTypePrinterContextKind.Managed) + return "global::System.IntPtr"; + if (returnType.Type.IsPrimitiveType(PrimitiveType.Void)) { if (!string.IsNullOrEmpty(args)) diff --git a/tests/Basic/Basic.cpp b/tests/Basic/Basic.cpp index 7f6242f5..a45acbed 100644 --- a/tests/Basic/Basic.cpp +++ b/tests/Basic/Basic.cpp @@ -71,7 +71,7 @@ int Hello::RetEnum(Enum e) return (int)e; } -int unsafeFunction(const Bar& ret, char* testForString) +int unsafeFunction(const Bar& ret, char* testForString, void (*foo)(int)) { return ret.A; } diff --git a/tests/Basic/Basic.h b/tests/Basic/Basic.h index 11334939..4dc74cf5 100644 --- a/tests/Basic/Basic.h +++ b/tests/Basic/Basic.h @@ -73,4 +73,4 @@ public: DLL_API Bar operator+(const Bar &, const Bar &); -int DLL_API unsafeFunction(const Bar& ret, char* testForString); +int DLL_API unsafeFunction(const Bar& ret, char* testForString, void (*foo)(int));