From 7a682ca2c42fa93a84567df2a30153863727ba2a Mon Sep 17 00:00:00 2001 From: triton Date: Tue, 9 Apr 2013 02:00:35 +0100 Subject: [PATCH] Setup the code generator before processing code. --- src/Generator/Driver.cs | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/Generator/Driver.cs b/src/Generator/Driver.cs index f702d4d1..9c68b865 100644 --- a/src/Generator/Driver.cs +++ b/src/Generator/Driver.cs @@ -16,6 +16,7 @@ namespace Cxxi public IDiagnosticConsumer Diagnostics { get; private set; } public TypeMapDatabase TypeDatabase { get; private set; } public Library Library { get; private set; } + public Generator Generator { get; private set; } public Driver(DriverOptions options, ILibrary transform) { @@ -31,6 +32,8 @@ namespace Cxxi Transform.Setup(Options); ValidateOptions(); + + Generator = CreateGenerator(); } private void ValidateOptions() @@ -55,6 +58,19 @@ namespace Cxxi Options.OutputNamespace = Options.LibraryName; } + Generator CreateGenerator() + { + switch (Options.GeneratorKind) + { + case LanguageGeneratorKind.CSharp: + return new CSharpGenerator(this); + case LanguageGeneratorKind.CPlusPlusCLI: + return new CLIGenerator(this); + default: + throw new NotImplementedException("Unknown language generator kind"); + } + } + private void OnFileParsed(string file, ParserResult result) { switch (result.Kind) @@ -143,20 +159,6 @@ namespace Cxxi Console.WriteLine("Generating wrapper code..."); - Generator generator = null; - - switch (Options.GeneratorKind) - { - case LanguageGeneratorKind.CSharp: - generator = new CSharpGenerator(this); - break; - case LanguageGeneratorKind.CPlusPlusCLI: - generator = new CLIGenerator(this); - break; - default: - throw new NotImplementedException("Unknown language generator kind"); - } - if (!Directory.Exists(Options.OutputDir)) Directory.CreateDirectory(Options.OutputDir); @@ -170,7 +172,7 @@ namespace Cxxi continue; // Generate the target code. - generator.Generate(unit); + Generator.Generate(unit); } }