Browse Source

Generated compilable wrappers for functions taking char*.

Signed-off-by: Dimitar Dobrev <dpldobrev@yahoo.com>
pull/48/merge
Dimitar Dobrev 13 years ago committed by triton
parent
commit
d659f04d9d
  1. 5
      src/Generator/Generators/CSharp/CSharpMarshal.cs
  2. 4
      tests/Basic/Basic.cpp
  3. 2
      tests/Basic/Basic.h

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

@ -344,8 +344,9 @@ namespace CppSharp.Generators.CSharp
var pointee = pointer.Pointee; var pointee = pointer.Pointee;
Type type = pointee.Desugar(); Type type = pointee.Desugar();
if (type.IsPrimitiveType(PrimitiveType.Char) || if ((type.IsPrimitiveType(PrimitiveType.Char) ||
type.IsPrimitiveType(PrimitiveType.WideChar)) type.IsPrimitiveType(PrimitiveType.WideChar)) &&
pointer.QualifiedPointee.Qualifiers.IsConst)
{ {
Context.Return.Write("Marshal.StringToHGlobalAnsi({0})", Context.Return.Write("Marshal.StringToHGlobalAnsi({0})",
Helpers.SafeIdentifier(Context.Parameter.Name)); Helpers.SafeIdentifier(Context.Parameter.Name));

4
tests/Basic/Basic.cpp

@ -71,7 +71,7 @@ int Hello::RetEnum(Enum e)
return (int)e; return (int)e;
} }
int unsafeFunction(const Bar& ret) int unsafeFunction(const Bar& ret, char* testForString)
{ {
return ret.A; return ret.A;
} }
@ -82,4 +82,4 @@ Bar operator+(const Bar& b1, const Bar& b2)
b.A = b1.A + b2.A; b.A = b1.A + b2.A;
b.B = b1.B + b2.B; b.B = b1.B + b2.B;
return b; return b;
} }

2
tests/Basic/Basic.h

@ -73,4 +73,4 @@ public:
DLL_API Bar operator+(const Bar &, const Bar &); DLL_API Bar operator+(const Bar &, const Bar &);
int DLL_API unsafeFunction(const Bar& ret); int DLL_API unsafeFunction(const Bar& ret, char* testForString);

Loading…
Cancel
Save