diff --git a/src/Generator/Generators/CLI/CLIMarshal.cs b/src/Generator/Generators/CLI/CLIMarshal.cs index 9d8f88b2..6009ea87 100644 --- a/src/Generator/Generators/CLI/CLIMarshal.cs +++ b/src/Generator/Generators/CLI/CLIMarshal.cs @@ -7,11 +7,9 @@ namespace Cxxi.Generators.CLI public abstract class MarshalPrinter : ITypeVisitor, IDeclVisitor { public MarshalContext Context { get; private set; } - public Driver Driver { get; private set; } - protected MarshalPrinter(Driver driver, MarshalContext ctx) + protected MarshalPrinter(MarshalContext ctx) { - Driver = driver; Context = ctx; } @@ -45,8 +43,8 @@ namespace Cxxi.Generators.CLI public class CLIMarshalNativeToManagedPrinter : MarshalPrinter { - public CLIMarshalNativeToManagedPrinter(Driver driver, MarshalContext marshalContext) - : base(driver,marshalContext) + public CLIMarshalNativeToManagedPrinter(MarshalContext marshalContext) + : base(marshalContext) { Context.MarshalToManaged = this; } @@ -150,7 +148,7 @@ namespace Cxxi.Generators.CLI var decl = typedef.Declaration; TypeMap typeMap = null; - if (Driver.TypeDatabase.FindTypeMap(decl, out typeMap)) + if (Context.Driver.TypeDatabase.FindTypeMap(decl, out typeMap)) { typeMap.Type = typedef; typeMap.CLIMarshalToManaged(Context); @@ -175,7 +173,7 @@ namespace Cxxi.Generators.CLI TypeQualifiers quals) { TypeMap typeMap; - if (Driver.TypeDatabase.FindTypeMap(template, out typeMap)) + if (Context.Driver.TypeDatabase.FindTypeMap(template, out typeMap)) { typeMap.Type = template; typeMap.CLIMarshalToManaged(Context); @@ -220,8 +218,8 @@ namespace Cxxi.Generators.CLI public string QualifiedIdentifier(Declaration decl) { - if (Driver.Options.GenerateLibraryNamespace) - return string.Format("{0}::{1}", Driver.Options.OutputNamespace, + if (Context.Driver.Options.GenerateLibraryNamespace) + return string.Format("{0}::{1}", Context.Driver.Options.OutputNamespace, decl.QualifiedName); return string.Format("{0}", decl.QualifiedName); } @@ -275,7 +273,7 @@ namespace Cxxi.Generators.CLI private string ToCLITypeName(Declaration decl) { - var typePrinter = new CLITypePrinter(Driver); + var typePrinter = new CLITypePrinter(Context.Driver); return typePrinter.VisitDeclaration(decl); } @@ -315,8 +313,8 @@ namespace Cxxi.Generators.CLI public readonly TextGenerator VarPrefix; public readonly TextGenerator ArgumentPrefix; - public CLIMarshalManagedToNativePrinter(Driver driver, MarshalContext ctx) - : base(driver,ctx) + public CLIMarshalManagedToNativePrinter(MarshalContext ctx) + : base(ctx) { VarPrefix = new TextGenerator(); ArgumentPrefix = new TextGenerator(); @@ -440,7 +438,7 @@ namespace Cxxi.Generators.CLI var decl = typedef.Declaration; TypeMap typeMap = null; - if (Driver.TypeDatabase.FindTypeMap(decl, out typeMap)) + if (Context.Driver.TypeDatabase.FindTypeMap(decl, out typeMap)) { typeMap.CLIMarshalToNative(Context); return typeMap.IsValueType; @@ -466,7 +464,7 @@ namespace Cxxi.Generators.CLI TypeQualifiers quals) { TypeMap typeMap = null; - if (Driver.TypeDatabase.FindTypeMap(template, out typeMap)) + if (Context.Driver.TypeDatabase.FindTypeMap(template, out typeMap)) { typeMap.Type = template; typeMap.CLIMarshalToNative(Context); @@ -513,7 +511,7 @@ namespace Cxxi.Generators.CLI private void MarshalRefClass(Class @class) { TypeMap typeMap = null; - if (Driver.TypeDatabase.FindTypeMap(@class, out typeMap)) + if (Context.Driver.TypeDatabase.FindTypeMap(@class, out typeMap)) { typeMap.CLIMarshalToNative(Context); return; @@ -548,7 +546,6 @@ namespace Cxxi.Generators.CLI Context.SupportBefore.WriteLine("auto {0} = ::{1}();", marshalVar, @class.QualifiedOriginalName); - Context.SupportBefore.PushIndent(); MarshalValueClassFields(@class, marshalVar); @@ -586,7 +583,7 @@ namespace Cxxi.Generators.CLI ParameterIndex = Context.ParameterIndex++ }; - var marshal = new CLIMarshalManagedToNativePrinter(Driver, marshalCtx); + var marshal = new CLIMarshalManagedToNativePrinter(marshalCtx); field.Visit(marshal); Context.ParameterIndex = marshalCtx.ParameterIndex; diff --git a/src/Generator/Generators/CLI/CLISourcesTemplate.cs b/src/Generator/Generators/CLI/CLISourcesTemplate.cs index da889b06..d416251e 100644 --- a/src/Generator/Generators/CLI/CLISourcesTemplate.cs +++ b/src/Generator/Generators/CLI/CLISourcesTemplate.cs @@ -186,7 +186,7 @@ namespace Cxxi.Generators.CLI ArgName = param.Name, }; - var marshal = new CLIMarshalManagedToNativePrinter(Driver, ctx); + var marshal = new CLIMarshalManagedToNativePrinter(ctx); param.Visit(marshal); var variable = string.Format("((::{0}*)NativePtr)->{1}", @@ -219,7 +219,7 @@ namespace Cxxi.Generators.CLI ReturnType = field.Type }; - var marshal = new CLIMarshalNativeToManagedPrinter(Driver, ctx); + var marshal = new CLIMarshalNativeToManagedPrinter(ctx); field.Visit(marshal); WriteLine("return {0};", marshal.Context.Return); @@ -327,7 +327,7 @@ namespace Cxxi.Generators.CLI ReturnType = param.Type }; - var marshal = new CLIMarshalNativeToManagedPrinter(Driver, ctx); + var marshal = new CLIMarshalNativeToManagedPrinter(ctx); param.Visit(marshal); returns.Add(marshal.Context.Return); @@ -410,7 +410,7 @@ namespace Cxxi.Generators.CLI ReturnType = field.Type }; - var marshal = new CLIMarshalNativeToManagedPrinter(Driver, ctx); + var marshal = new CLIMarshalNativeToManagedPrinter(ctx); field.Visit(marshal); if (!string.IsNullOrWhiteSpace(marshal.Context.SupportBefore)) @@ -503,7 +503,7 @@ namespace Cxxi.Generators.CLI ArgName = param.Name, }; - var marshal = new CLIMarshalManagedToNativePrinter(Driver, ctx); + var marshal = new CLIMarshalManagedToNativePrinter(ctx); param.Visit(marshal); if (!string.IsNullOrWhiteSpace(marshal.Context.SupportBefore)) @@ -541,7 +541,7 @@ namespace Cxxi.Generators.CLI ReturnType = field.Type }; - var marshal = new CLIMarshalNativeToManagedPrinter(Driver, ctx); + var marshal = new CLIMarshalNativeToManagedPrinter(ctx); field.Visit(marshal); WriteLine("this->{0} = {1};", field.Name, marshal.Context.Return); @@ -625,7 +625,7 @@ namespace Cxxi.Generators.CLI ReturnType = retType }; - var marshal = new CLIMarshalNativeToManagedPrinter(Driver, ctx); + var marshal = new CLIMarshalNativeToManagedPrinter(ctx); function.ReturnType.Visit(marshal); WriteLine("{0};", marshal.Context.Return); @@ -681,7 +681,7 @@ namespace Cxxi.Generators.CLI Function = function }; - var marshal = new CLIMarshalManagedToNativePrinter(Driver, ctx); + var marshal = new CLIMarshalManagedToNativePrinter(ctx); param.Visit(marshal); diff --git a/src/Generator/Types/TypeMap.cs b/src/Generator/Types/TypeMap.cs index c09e5b2a..0ff19047 100644 --- a/src/Generator/Types/TypeMap.cs +++ b/src/Generator/Types/TypeMap.cs @@ -9,12 +9,13 @@ namespace Cxxi.Types { public MarshalContext(Driver driver) { + Driver = driver; SupportBefore = new TextGenerator(); SupportAfter = new TextGenerator(); Return = new TextGenerator(); } - public Driver Driver { get; set; } + public Driver Driver { get; private set; } public CLIMarshalNativeToManagedPrinter MarshalToManaged; public CLIMarshalManagedToNativePrinter MarshalToNative;