diff --git a/src/Generator/Diagnostics.cs b/src/Generator/Diagnostics.cs index 6a89bd10..6c5af1e9 100644 --- a/src/Generator/Diagnostics.cs +++ b/src/Generator/Diagnostics.cs @@ -9,6 +9,8 @@ namespace CppSharp InvalidOperatorOverload, SymbolNotFound, FileGenerated, + ParseResult, + ParserDiagnostic, } public enum DiagnosticKind diff --git a/src/Generator/Driver.cs b/src/Generator/Driver.cs index edb88042..cf412a13 100644 --- a/src/Generator/Driver.cs +++ b/src/Generator/Driver.cs @@ -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 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 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 library.Setup(driver); driver.Setup(); - driver.Parser.OnHeaderParsed += OnFileParsed; - driver.Parser.OnLibraryParsed += OnFileParsed; - Console.WriteLine("Parsing libraries..."); if (!driver.ParseLibraries()) return;