Browse Source

Simplified the way generators are created in the driver.

pull/86/head
triton 12 years ago
parent
commit
b409d75bb6
  1. 32
      src/Generator/Driver.cs

32
src/Generator/Driver.cs

@ -17,20 +17,6 @@ namespace CppSharp
{ {
public class Driver public class Driver
{ {
public delegate Generator CreateGeneratorDelegate(Driver driver);
public static Dictionary<LanguageGeneratorKind, CreateGeneratorDelegate>
Generators;
static Driver()
{
Generators = new Dictionary<LanguageGeneratorKind,
CreateGeneratorDelegate>();
Generators[LanguageGeneratorKind.CSharp] = driver =>
new CSharpGenerator(driver);
Generators[LanguageGeneratorKind.CLI] = driver =>
new CLIGenerator(driver);
}
public DriverOptions Options { get; private set; } public DriverOptions Options { get; private set; }
public IDiagnosticConsumer Diagnostics { get; private set; } public IDiagnosticConsumer Diagnostics { get; private set; }
public Project Project { get; private set; } public Project Project { get; private set; }
@ -54,11 +40,21 @@ namespace CppSharp
GeneratorOutputPasses = new PassBuilder<GeneratorOutputPass>(this); GeneratorOutputPasses = new PassBuilder<GeneratorOutputPass>(this);
} }
static void ValidateOptions(DriverOptions options) Generator CreateGeneratorFromKind(GeneratorKind kind)
{ {
if (!Generators.ContainsKey(options.GeneratorKind)) switch (kind)
throw new InvalidOptionException(); {
case GeneratorKind.CLI:
return new CLIGenerator(this);
case GeneratorKind.CSharp:
return new CSharpGenerator(this);
}
return null;
}
static void ValidateOptions(DriverOptions options)
{
if (string.IsNullOrWhiteSpace(options.LibraryName)) if (string.IsNullOrWhiteSpace(options.LibraryName))
throw new InvalidOptionException(); throw new InvalidOptionException();
@ -75,8 +71,6 @@ namespace CppSharp
public void Setup() public void Setup()
{ {
ValidateOptions(Options); ValidateOptions(Options);
Generator = Generators[Options.GeneratorKind](this);
TypeDatabase.SetupTypeMaps(); TypeDatabase.SetupTypeMaps();
Generator = CreateGeneratorFromKind(Options.GeneratorKind); Generator = CreateGeneratorFromKind(Options.GeneratorKind);
} }

Loading…
Cancel
Save