Browse Source

Clean up the console driver by emitting file parsing diagnostics in the main driver.

pull/13/merge
triton 12 years ago
parent
commit
6eef880f7e
  1. 2
      src/Generator/Diagnostics.cs
  2. 55
      src/Generator/Driver.cs

2
src/Generator/Diagnostics.cs

@ -9,6 +9,8 @@ namespace CppSharp @@ -9,6 +9,8 @@ namespace CppSharp
InvalidOperatorOverload,
SymbolNotFound,
FileGenerated,
ParseResult,
ParserDiagnostic,
}
public enum DiagnosticKind

55
src/Generator/Driver.cs

@ -41,6 +41,8 @@ namespace CppSharp @@ -41,6 +41,8 @@ namespace CppSharp
Options = options;
Diagnostics = diagnostics;
Parser = new Parser(Options);
Parser.OnHeaderParsed += OnFileParsed;
Parser.OnLibraryParsed += OnFileParsed;
TypeDatabase = new TypeMapDatabase();
Passes = new PassBuilder(this);
}
@ -75,6 +77,33 @@ namespace CppSharp @@ -75,6 +77,33 @@ namespace CppSharp
TypeDatabase.SetupTypeMaps();
}
void OnFileParsed(string file, ParserResult result)
{
switch (result.Kind)
{
case ParserResultKind.Success:
Diagnostics.EmitMessage(DiagnosticId.ParseResult,
"Parsed '{0}'", file);
break;
case ParserResultKind.Error:
Diagnostics.EmitError(DiagnosticId.ParseResult,
"Error parsing '{0}'", file);
break;
case ParserResultKind.FileNotFound:
Diagnostics.EmitError(DiagnosticId.ParseResult,
"File '{0}' was not found", file);
break;
}
foreach (var diag in result.Diagnostics)
{
Diagnostics.EmitMessage(DiagnosticId.ParserDiagnostic,
"{0}({1},{2}): {3}: {4}", diag.FileName, diag.LineNumber,
diag.ColumnNumber, diag.Level.ToString().ToLower(),
diag.Message);
}
}
public bool ParseCode()
{
if (!Parser.ParseHeaders(Options.Headers))
@ -229,29 +258,6 @@ namespace CppSharp @@ -229,29 +258,6 @@ namespace CppSharp
public static class ConsoleDriver
{
static void OnFileParsed(string file, ParserResult result)
{
switch (result.Kind)
{
case ParserResultKind.Success:
Console.WriteLine(" Parsed '{0}'", file);
break;
case ParserResultKind.Error:
Console.WriteLine(" Error parsing '{0}'", file);
break;
case ParserResultKind.FileNotFound:
Console.WriteLine(" File '{0}' was not found", file);
break;
}
foreach (var diag in result.Diagnostics)
{
Console.WriteLine(string.Format("{0}({1},{2}): {3}: {4}",
diag.FileName, diag.LineNumber, diag.ColumnNumber,
diag.Level.ToString().ToLower(), diag.Message));
}
}
public static void Run(ILibrary library)
{
Console.BufferHeight = 1999;
@ -261,9 +267,6 @@ namespace CppSharp @@ -261,9 +267,6 @@ namespace CppSharp
library.Setup(driver);
driver.Setup();
driver.Parser.OnHeaderParsed += OnFileParsed;
driver.Parser.OnLibraryParsed += OnFileParsed;
Console.WriteLine("Parsing libraries...");
if (!driver.ParseLibraries())
return;

Loading…
Cancel
Save