From 4072a2a8bb184138292415685b359dbd212cba6d Mon Sep 17 00:00:00 2001 From: triton Date: Wed, 20 Feb 2013 14:26:38 +0000 Subject: [PATCH] Added an IMarshalPrinter interface. --- src/Generator/Generators/CLI/CLIMarshal.cs | 28 +++++++++++++--------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/Generator/Generators/CLI/CLIMarshal.cs b/src/Generator/Generators/CLI/CLIMarshal.cs index 6d1fb196..52cdad5f 100644 --- a/src/Generator/Generators/CLI/CLIMarshal.cs +++ b/src/Generator/Generators/CLI/CLIMarshal.cs @@ -4,19 +4,27 @@ using Cxxi.Types; namespace Cxxi.Generators.CLI { - public class CLIMarshalNativeToManagedPrinter : ITypeVisitor, - IDeclVisitor + public interface IMarshalPrinter : ITypeVisitor, IDeclVisitor + { + + } + + public class CLIMarshalNativeToManagedPrinter : IMarshalPrinter { public TextGenerator Support; public TextGenerator Return; - Generator Generator { get; set; } + Library Library { get; set; } + ITypeMapDatabase TypeMapDatabase { get; set; } MarshalContext Context { get; set; } - public CLIMarshalNativeToManagedPrinter(Generator gen, MarshalContext ctx) + public CLIMarshalNativeToManagedPrinter(ITypeMapDatabase database, + Library library, MarshalContext marshalContext) { - Generator = gen; - Context = ctx; + Library = library; + TypeMapDatabase = database; + Context = marshalContext; + Support = new TextGenerator(); Return = new TextGenerator(); } @@ -107,7 +115,7 @@ namespace Cxxi.Generators.CLI var decl = typedef.Declaration; TypeMap typeMap = null; - if (Generator.TypeMapDatabase.FindTypeMap(decl, out typeMap)) + if (TypeMapDatabase.FindTypeMap(decl, out typeMap)) { Return.Write(typeMap.MarshalFromNative(Context)); return typeMap.IsValueType; @@ -144,8 +152,7 @@ namespace Cxxi.Generators.CLI if (@class.IsRefType) Return.Write("gcnew "); - Return.Write("{0}::{1}(", Generator.Library.Name, - @class.Name); + Return.Write("{0}::{1}(", Library.Name, @class.Name); Return.Write("(::{0}*)", @class.QualifiedOriginalName); @@ -190,8 +197,7 @@ namespace Cxxi.Generators.CLI private string ToCLITypeName(Declaration decl) { - var typePrinter = new CLITypePrinter(Generator.TypeMapDatabase, - Generator.Library); + var typePrinter = new CLITypePrinter(TypeMapDatabase, Library); return typePrinter.VisitDeclaration(decl); }