From 112e4d564eb5ed8eac04a7b65ba76526415a9bde Mon Sep 17 00:00:00 2001 From: Dimitar Dobrev Date: Thu, 30 Oct 2014 23:52:28 +0200 Subject: [PATCH] Fixed the ostream type map which failed with pointers. Signed-off-by: Dimitar Dobrev --- src/Generator/Types/Std/Stdlib.cs | 5 +++-- tests/STL/STL.h | 7 ++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Generator/Types/Std/Stdlib.cs b/src/Generator/Types/Std/Stdlib.cs index 515b2f03..6eb17bb7 100644 --- a/src/Generator/Types/Std/Stdlib.cs +++ b/src/Generator/Types/Std/Stdlib.cs @@ -315,8 +315,9 @@ namespace CppSharp.Types.Std public override void CLIMarshalToNative(MarshalContext ctx) { - var marshal = ctx.MarshalToNative as CLIMarshalManagedToNativePrinter; - marshal.ArgumentPrefix.Write("*"); + var marshal = (CLIMarshalManagedToNativePrinter) ctx.MarshalToNative; + if (!ctx.Parameter.Type.Desugar().IsPointer()) + marshal.ArgumentPrefix.Write("*"); var marshalCtxName = string.Format("ctx_{0}", ctx.Parameter.Name); ctx.SupportBefore.WriteLine("msclr::interop::marshal_context {0};", marshalCtxName); ctx.Return.Write("{0}.marshal_as({1})", diff --git a/tests/STL/STL.h b/tests/STL/STL.h index e9c04dea..3220da3a 100644 --- a/tests/STL/STL.h +++ b/tests/STL/STL.h @@ -36,4 +36,9 @@ struct DLL_API OStreamTest { stream << s; }; -}; \ No newline at end of file + + static void WriteToOStreamPtr(std::ostream* stream, const char* s) + { + *stream << s; + }; +};