From 4818d3974d96464861ddf4bfff8e24291937e026 Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Sat, 10 May 2014 14:48:11 +0300 Subject: [PATCH] Pass Driver to CSharpTypePrinter We need Driver.TargeInfo in CSharpTypePrinter so that we can find out the widths of the integer types. This patch changes CSharpTypePrinter to get the Driver reference in its constructor. As all the other constructor parameters can be found from the Driver reference, we can remove all the other parameters. Signed-off-by: Tomi Valkeinen --- .../Generators/CSharp/CSharpGenerator.cs | 2 +- .../Generators/CSharp/CSharpTypePrinter.cs | 18 +++++++----------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/Generator/Generators/CSharp/CSharpGenerator.cs b/src/Generator/Generators/CSharp/CSharpGenerator.cs index ca335f14..f65b8151 100644 --- a/src/Generator/Generators/CSharp/CSharpGenerator.cs +++ b/src/Generator/Generators/CSharp/CSharpGenerator.cs @@ -11,7 +11,7 @@ namespace CppSharp.Generators.CSharp public CSharpGenerator(Driver driver) : base(driver) { - typePrinter = new CSharpTypePrinter(driver.TypeDatabase, driver.Options, driver.ASTContext); + typePrinter = new CSharpTypePrinter(driver); expressionPrinter = new CSharpExpressionPrinter(); CppSharp.AST.Type.TypePrinterDelegate += type => type.Visit(typePrinter).Type; } diff --git a/src/Generator/Generators/CSharp/CSharpTypePrinter.cs b/src/Generator/Generators/CSharp/CSharpTypePrinter.cs index 10f4d7ad..4ef8d85d 100644 --- a/src/Generator/Generators/CSharp/CSharpTypePrinter.cs +++ b/src/Generator/Generators/CSharp/CSharpTypePrinter.cs @@ -52,9 +52,7 @@ namespace CppSharp.Generators.CSharp public class CSharpTypePrinter : ITypePrinter, IDeclVisitor { - public ASTContext AstContext { get; set; } - private readonly ITypeMapDatabase TypeMapDatabase; - private readonly DriverOptions driverOptions; + private Driver driver; private readonly Stack contexts; @@ -65,11 +63,9 @@ namespace CppSharp.Generators.CSharp public CSharpTypePrinterContext Context; - public CSharpTypePrinter(ITypeMapDatabase database, DriverOptions driverOptions, ASTContext context) + public CSharpTypePrinter(Driver driver) { - TypeMapDatabase = database; - this.driverOptions = driverOptions; - AstContext = context; + this.driver = driver; contexts = new Stack(); PushContext(CSharpTypePrinterContextKind.Managed); @@ -93,7 +89,7 @@ namespace CppSharp.Generators.CSharp return string.Empty; TypeMap typeMap; - if (TypeMapDatabase.FindTypeMap(tag.Declaration, out typeMap)) + if (this.driver.TypeDatabase.FindTypeMap(tag.Declaration, out typeMap)) { typeMap.Type = tag; Context.CSharpKind = ContextKind; @@ -269,7 +265,7 @@ namespace CppSharp.Generators.CSharp var decl = typedef.Declaration; TypeMap typeMap; - if (TypeMapDatabase.FindTypeMap(decl, out typeMap)) + if (this.driver.TypeDatabase.FindTypeMap(decl, out typeMap)) { typeMap.Type = typedef; Context.CSharpKind = ContextKind; @@ -314,7 +310,7 @@ namespace CppSharp.Generators.CSharp var decl = template.Template.TemplatedDecl; TypeMap typeMap = null; - if (TypeMapDatabase.FindTypeMap(template, out typeMap)) + if (this.driver.TypeDatabase.FindTypeMap(template, out typeMap)) { typeMap.Declaration = decl; typeMap.Type = template; @@ -386,7 +382,7 @@ namespace CppSharp.Generators.CSharp case PrimitiveType.Void: return "void"; case PrimitiveType.Char16: case PrimitiveType.WideChar: return "char"; - case PrimitiveType.Char: return driverOptions.MarshalCharAsManagedChar ? "char" : "sbyte"; + case PrimitiveType.Char: return this.driver.Options.MarshalCharAsManagedChar ? "char" : "sbyte"; case PrimitiveType.UChar: return "byte"; case PrimitiveType.Short: return "short"; case PrimitiveType.UShort: return "ushort";