Browse Source

Minor fixes to handling arrays and std::string.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/696/head
Dimitar Dobrev 10 years ago
parent
commit
3230f9037f
  1. 3
      src/Generator/Generators/CSharp/CSharpTypePrinter.cs
  2. 4
      src/Generator/Generators/Template.cs
  3. 6
      src/Generator/Types/Std/Stdlib.cs

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

@ -146,6 +146,9 @@ namespace CppSharp.Generators.CSharp
return string.Format("{0}*", array.Type.Visit(this, quals)); return string.Format("{0}*", array.Type.Visit(this, quals));
} }
if (Context.Parameter != null)
return string.Format("global::System.IntPtr");
Class @class; Class @class;
if (arrayType.TryGetClass(out @class)) if (arrayType.TryGetClass(out @class))
{ {

4
src/Generator/Generators/Template.cs

@ -309,8 +309,8 @@ namespace CppSharp.Generators
public string Generate() public string Generate()
{ {
//if (Options.IsCSharpGenerator && Options.CompileCode) if (Options.IsCSharpGenerator && Options.CompileCode)
// return RootBlock.GenerateUnformatted(Options).ToString(); return RootBlock.GenerateUnformatted(Options).ToString();
return RootBlock.Generate(Options); return RootBlock.Generate(Options);
} }

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

@ -94,14 +94,14 @@ namespace CppSharp.Types.Std
var type = ctx.ReturnType.Type; var type = ctx.ReturnType.Type;
ClassTemplateSpecialization basicString = GetBasicString(type); ClassTemplateSpecialization basicString = GetBasicString(type);
Declaration c_str = basicString.Methods.FirstOrDefault(m => m.OriginalName == "c_str"); Declaration c_str = basicString.Methods.FirstOrDefault(m => m.OriginalName == "c_str");
if (c_str == null) if (!c_str.IsGenerated)
c_str = basicString.Properties.First(p => p.OriginalName == "c_str"); c_str = basicString.Properties.First(p => p.OriginalName == "c_str");
var typePrinter = new CSharpTypePrinter(ctx.Driver); var typePrinter = new CSharpTypePrinter(ctx.Driver);
if (type.IsPointer() || ctx.Declaration is Field) if (type.IsPointer() || ctx.Declaration is Field)
{ {
ctx.Return.Write("{0}.{1}({2}).{3}()", ctx.Return.Write("{0}.{1}({2}).{3}{4}",
basicString.Visit(typePrinter), Helpers.CreateInstanceIdentifier, basicString.Visit(typePrinter), Helpers.CreateInstanceIdentifier,
ctx.ReturnVarName, c_str.Name); ctx.ReturnVarName, c_str.Name, c_str is Method ? "()" : string.Empty);
} }
else else
{ {

Loading…
Cancel
Save