Browse Source

Simplify the generated C# for marshalling strings

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
bug-pass-const-char-star-no-copy
Dimitar Dobrev 6 years ago
parent
commit
a0da3b37b1
  1. 2
      src/Generator/Generators/CSharp/CSharpTypePrinter.cs
  2. 1
      src/Generator/Passes/DelegatesPass.cs
  3. 2
      src/Generator/Types/Std/Stdlib.cs

2
src/Generator/Generators/CSharp/CSharpTypePrinter.cs

@ -129,7 +129,7 @@ namespace CppSharp.Generators.CSharp @@ -129,7 +129,7 @@ namespace CppSharp.Generators.CSharp
if (arrayType.IsPointerToPrimitiveType(PrimitiveType.Char))
{
var prefix = ContextKind == TypePrinterContextKind.Managed ? string.Empty :
"[MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPStr)] ";
"[MarshalAs(UnmanagedType.LPArray)] ";
return $"{prefix}string[]";
}

1
src/Generator/Passes/DelegatesPass.cs

@ -276,7 +276,6 @@ namespace CppSharp.Passes @@ -276,7 +276,6 @@ namespace CppSharp.Passes
{
// TODO: all of this needs proper general fixing by only leaving type names
return types.Replace("global::System.", string.Empty)
.Replace("[MarshalAs(UnmanagedType.LPStr)] ", string.Empty)
.Replace("[MarshalAs(UnmanagedType.LPWStr)] ", string.Empty)
.Replace("global::", string.Empty).Replace("*", "Ptr")
.Replace('.', '_').Replace(' ', '_').Replace("::", "_")

2
src/Generator/Types/Std/Stdlib.cs

@ -155,7 +155,7 @@ namespace CppSharp.Types.Std @@ -155,7 +155,7 @@ namespace CppSharp.Types.Std
}
if (Context.Options.Encoding == Encoding.ASCII)
return new CustomType("[MarshalAs(UnmanagedType.LPStr)] string");
return new CustomType("string");
if (Context.Options.Encoding == Encoding.Unicode ||
Context.Options.Encoding == Encoding.BigEndianUnicode)

Loading…
Cancel
Save