From d659f04d9db140108d029f9f82bba5d5257c02ed Mon Sep 17 00:00:00 2001 From: Dimitar Dobrev Date: Tue, 20 Aug 2013 23:57:55 +0300 Subject: [PATCH] Generated compilable wrappers for functions taking char*. Signed-off-by: Dimitar Dobrev --- src/Generator/Generators/CSharp/CSharpMarshal.cs | 5 +++-- tests/Basic/Basic.cpp | 4 ++-- tests/Basic/Basic.h | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/Generator/Generators/CSharp/CSharpMarshal.cs b/src/Generator/Generators/CSharp/CSharpMarshal.cs index 08de1719..b228c0d5 100644 --- a/src/Generator/Generators/CSharp/CSharpMarshal.cs +++ b/src/Generator/Generators/CSharp/CSharpMarshal.cs @@ -344,8 +344,9 @@ namespace CppSharp.Generators.CSharp var pointee = pointer.Pointee; Type type = pointee.Desugar(); - if (type.IsPrimitiveType(PrimitiveType.Char) || - type.IsPrimitiveType(PrimitiveType.WideChar)) + if ((type.IsPrimitiveType(PrimitiveType.Char) || + type.IsPrimitiveType(PrimitiveType.WideChar)) && + pointer.QualifiedPointee.Qualifiers.IsConst) { Context.Return.Write("Marshal.StringToHGlobalAnsi({0})", Helpers.SafeIdentifier(Context.Parameter.Name)); diff --git a/tests/Basic/Basic.cpp b/tests/Basic/Basic.cpp index 5e3bbfe0..7f6242f5 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) +int unsafeFunction(const Bar& ret, char* testForString) { return ret.A; } @@ -82,4 +82,4 @@ Bar operator+(const Bar& b1, const Bar& b2) b.A = b1.A + b2.A; b.B = b1.B + b2.B; return b; -} \ No newline at end of file +} diff --git a/tests/Basic/Basic.h b/tests/Basic/Basic.h index 1158d450..11334939 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); +int DLL_API unsafeFunction(const Bar& ret, char* testForString);