Browse Source

Remove ILibrary out of the driver code and only call it from the ConsoleDriver.

pull/12/merge
triton 12 years ago
parent
commit
848cb4e18c
  1. 36
      src/Generator/Driver.cs

36
src/Generator/Driver.cs

@ -29,20 +29,17 @@ namespace CppSharp
public IDiagnosticConsumer Diagnostics { get; private set; } public IDiagnosticConsumer Diagnostics { get; private set; }
public Parser Parser { get; private set; } public Parser Parser { get; private set; }
public TypeMapDatabase TypeDatabase { get; private set; } public TypeMapDatabase TypeDatabase { get; private set; }
public ILibrary Transform { get; private set; }
public Generator Generator { get; private set; } public Generator Generator { get; private set; }
public Library Library { get; private set; } public Library Library { get; private set; }
public Library LibrarySymbols { get; private set; } public Library LibrarySymbols { get; private set; }
public Driver(DriverOptions options, IDiagnosticConsumer diagnostics, public Driver(DriverOptions options, IDiagnosticConsumer diagnostics)
ILibrary transform)
{ {
Options = options; Options = options;
Diagnostics = diagnostics; Diagnostics = diagnostics;
Parser = new Parser(Options); Parser = new Parser(Options);
TypeDatabase = new TypeMapDatabase(); TypeDatabase = new TypeMapDatabase();
Transform = transform;
} }
static void ValidateOptions(DriverOptions options) static void ValidateOptions(DriverOptions options)
@ -100,13 +97,26 @@ namespace CppSharp
return true; return true;
} }
public void ProcessCode() public void AddPrePasses()
{ {
TypeDatabase.SetupTypeMaps(); Passes.CleanUnit(Options);
Passes.SortDeclarations();
Passes.ResolveIncompleteDecls();
}
if (Transform != null) public void AddPostPasses()
Transform.Preprocess(this, Library); {
Passes.CleanInvalidDeclNames();
Passes.CheckIgnoredDecls();
Passes.CheckTypeReferences();
Passes.CheckFlagEnums();
Passes.CheckAmbiguousOverloads();
Generator.SetupPasses(Passes);
}
public void ProcessCode()
{
TypeDatabase.SetupTypeMaps();
var passes = new PassBuilder(this); var passes = new PassBuilder(this);
passes.CleanUnit(Options); passes.CleanUnit(Options);
passes.SortDeclarations(); passes.SortDeclarations();
@ -252,8 +262,7 @@ namespace CppSharp
Console.BufferHeight = 1999; Console.BufferHeight = 1999;
var options = new DriverOptions(); var options = new DriverOptions();
var driver = new Driver(options, new TextDiagnosticPrinter(), var driver = new Driver(options, new TextDiagnosticPrinter());
library);
library.Setup(driver); library.Setup(driver);
driver.Setup(); driver.Setup();
@ -272,7 +281,14 @@ namespace CppSharp
return; return;
Console.WriteLine("Processing code..."); Console.WriteLine("Processing code...");
library.Preprocess(driver, driver.Library);
driver.AddPrePasses();
library.SetupPasses(driver, driver.Passes);
driver.AddPostPasses();
driver.ProcessCode(); driver.ProcessCode();
library.Postprocess(driver.Library);
Console.WriteLine("Generating code..."); Console.WriteLine("Generating code...");
driver.GenerateCode(); driver.GenerateCode();

Loading…
Cancel
Save