Browse Source

Some fixes to the codebase to work correctly with the new parser bindings.

pull/146/merge
triton 12 years ago
parent
commit
b58a99ebf3
  1. 12
      src/Core/Parser/Parser.cs
  2. 52
      src/Generator/Driver.cs
  3. 8
      src/Generator/Passes/CleanUnitPass.cs
  4. 4
      src/Generator/Utils/TestsUtils.cs

12
src/Core/Parser/Parser.cs

@ -1,8 +1,10 @@ @@ -1,8 +1,10 @@
using System;
#if !OLD_PARSER
using CppSharp.AST;
using CppSharp.Parser;
using CppSharp.Parser.AST;
using ASTContext = CppSharp.Parser.AST.ASTContext;
using NativeLibrary = CppSharp.Parser.AST.NativeLibrary;
#else
using CppSharp.AST;
#endif
@ -89,8 +91,16 @@ namespace CppSharp @@ -89,8 +91,16 @@ namespace CppSharp
{
var newLibrary = new AST.NativeLibrary { FileName = library.FileName };
#if OLD_PARSER
foreach (var symbol in library.Symbols)
newLibrary.Symbols.Add(symbol);
#else
for (uint i = 0; i < library.SymbolsCount; ++i)
{
var symbol = library.getSymbols(i);
newLibrary.Symbols.Add(symbol);
}
#endif
return newLibrary;
}

52
src/Generator/Driver.cs

@ -63,11 +63,13 @@ namespace CppSharp @@ -63,11 +63,13 @@ namespace CppSharp
if (string.IsNullOrWhiteSpace(options.LibraryName))
throw new InvalidOptionException();
#if OLD_PARSER
for (var i = 0; i < options.IncludeDirs.Count; i++)
options.IncludeDirs[i] = Path.GetFullPath(options.IncludeDirs[i]);
for (var i = 0; i < options.LibraryDirs.Count; i++)
options.LibraryDirs[i] = Path.GetFullPath(options.LibraryDirs[i]);
#endif
if (string.IsNullOrWhiteSpace(options.OutputNamespace))
options.OutputNamespace = options.LibraryName;
@ -103,6 +105,7 @@ namespace CppSharp @@ -103,6 +105,7 @@ namespace CppSharp
break;
}
#if OLD_PARSER
foreach (var diag in result.Diagnostics)
{
if (Options.IgnoreParseWarnings
@ -117,6 +120,25 @@ namespace CppSharp @@ -117,6 +120,25 @@ namespace CppSharp
diag.ColumnNumber, diag.Level.ToString().ToLower(),
diag.Message);
}
#else
for (uint i = 0; i < result.DiagnosticsCount; ++i)
{
var diag = result.getDiagnostics(i);
if (Options.IgnoreParseWarnings
&& diag.Level == ParserDiagnosticLevel.Warning)
continue;
if (diag.Level == ParserDiagnosticLevel.Note)
continue;
Diagnostics.EmitMessage(DiagnosticId.ParserDiagnostic,
"{0}({1},{2}): {3}: {4}", diag.FileName, diag.LineNumber,
diag.ColumnNumber, diag.Level.ToString().ToLower(),
diag.Message);
}
#endif
}
ParserOptions BuildParseOptions(SourceFile file)
@ -139,6 +161,32 @@ namespace CppSharp @@ -139,6 +161,32 @@ namespace CppSharp
Verbose = Options.Verbose,
};
#if !OLD_PARSER
for (uint i = 0; i < Options.IncludeDirsCount; ++i)
{
var include = Options.getIncludeDirs(i);
options.addIncludeDirs(include);
}
for (uint i = 0; i < Options.SystemIncludeDirsCount; ++i)
{
var include = Options.getSystemIncludeDirs(i);
options.addSystemIncludeDirs(include);
}
for (uint i = 0; i < Options.DefinesCount; ++i)
{
var define = Options.getDefines(i);
options.addDefines(define);
}
for (uint i = 0; i < Options.LibraryDirsCount; ++i)
{
var lib = Options.getLibraryDirs(i);
options.addLibraryDirs(lib);
}
#endif
return options;
}
@ -155,14 +203,12 @@ namespace CppSharp @@ -155,14 +203,12 @@ namespace CppSharp
#else
var parser = new ClangParser(ASTContext);
#endif
parser.SourceParsed += OnSourceFileParsed;
parser.SourceParsed += OnSourceFileParsed;
parser.ParseProject(Project, Options);
#if !OLD_PARSER
ASTContext = ClangParser.ConvertASTContext(parser.ASTContext);
#else
ASTContext = parser.ASTContext;
#endif
return true;

8
src/Generator/Passes/CleanUnitPass.cs

@ -25,8 +25,16 @@ namespace CppSharp.Passes @@ -25,8 +25,16 @@ namespace CppSharp.Passes
var includePath = filePath;
var shortestIncludePath = filePath;
#if OLD_PARSER
foreach (var path in DriverOptions.IncludeDirs)
#else
for (uint i = 0; i < DriverOptions.IncludeDirsCount; ++i)
#endif
{
#if !OLD_PARSER
var path = DriverOptions.getIncludeDirs(i);
#endif
int idx = filePath.IndexOf(path, System.StringComparison.Ordinal);
if (idx == -1) continue;

4
src/Generator/Utils/TestsUtils.cs

@ -73,7 +73,11 @@ namespace CppSharp.Utils @@ -73,7 +73,11 @@ namespace CppSharp.Utils
var path = Path.GetFullPath(GetTestsDirectory(name));
#if OLD_PARSER
options.IncludeDirs.Add(path);
#else
options.addIncludeDirs(path);
#endif
driver.Diagnostics.EmitMessage("Looking for tests in: {0}", path);
var files = Directory.EnumerateFiles(path, "*.h");

Loading…
Cancel
Save