diff --git a/src/Generator/Driver.cs b/src/Generator/Driver.cs index aa5466db..6af0982a 100644 --- a/src/Generator/Driver.cs +++ b/src/Generator/Driver.cs @@ -127,13 +127,13 @@ namespace CppSharp Defines = Options.Defines, LibraryDirs = Options.LibraryDirs, #endif - Abi = Options.Parser.Abi, - ToolSetToUse = Options.Parser.ToolSetToUse, - TargetTriple = Options.Parser.TargetTriple, - NoStandardIncludes = Options.Parser.NoStandardIncludes, - NoBuiltinIncludes = Options.Parser.NoBuiltinIncludes, - MicrosoftMode = Options.Parser.MicrosoftMode, - Verbose = Options.Parser.Verbose, + Abi = Options.Abi, + ToolSetToUse = Options.ToolSetToUse, + TargetTriple = Options.TargetTriple, + NoStandardIncludes = Options.NoStandardIncludes, + NoBuiltinIncludes = Options.NoBuiltinIncludes, + MicrosoftMode = Options.MicrosoftMode, + Verbose = Options.Verbose, }; return options; @@ -151,7 +151,7 @@ namespace CppSharp parser.SourceParsed += OnSourceFileParsed; parser.LibraryParsed += OnFileParsed; - parser.ParseProject(Project, Options.Parser); + parser.ParseProject(Project, Options); #if !OLD_PARSER ASTContext = ClangParser.ConvertASTContext(parser.ASTContext); @@ -167,7 +167,7 @@ namespace CppSharp foreach (var library in Options.Libraries) { var parser = new ClangParser(); - var res = parser.ParseLibrary(library, Options.Parser); + var res = parser.ParseLibrary(library, Options); if (res.Kind != ParserResultKind.Success) continue; diff --git a/src/Generator/Options.cs b/src/Generator/Options.cs index 69d46fb0..b6b81852 100644 --- a/src/Generator/Options.cs +++ b/src/Generator/Options.cs @@ -12,27 +12,25 @@ using CppAbi = CppSharp.Parser.AST.CppAbi; namespace CppSharp { - public class DriverOptions + public class DriverOptions : ParserOptions { + static public bool IsUnixPlatform + { + get + { + var platform = Environment.OSVersion.Platform; + return platform == PlatformID.Unix || platform == PlatformID.MacOSX; + } + } public DriverOptions() { - Defines = new List(); - IncludeDirs = new List(); - SystemIncludeDirs = new List(); Headers = new List(); + Libraries = new List(); - var platform = Environment.OSVersion.Platform; - var isUnix = platform == PlatformID.Unix || platform == PlatformID.MacOSX; - - Parser = new ParserOptions - { - Abi = isUnix ? CppAbi.Itanium : CppAbi.Microsoft, - MicrosoftMode = !isUnix - }; + Abi = IsUnixPlatform ? CppAbi.Itanium : CppAbi.Microsoft; + MicrosoftMode = !IsUnixPlatform; OutputDir = Directory.GetCurrentDirectory(); - - LibraryDirs = new List(); Libraries = new List(); CheckSymbols = true; @@ -47,26 +45,19 @@ namespace CppSharp } // General options - public bool Verbose; public bool Quiet; public bool ShowHelpText; public bool OutputDebug; // Parser options - public List Defines; - public List IncludeDirs; - public List SystemIncludeDirs; public List Headers; - - public ParserOptions Parser; public bool IgnoreParseWarnings; public bool IgnoreParseErrors; - public bool IsItaniumAbi { get { return Parser.Abi == CppAbi.Itanium; } } - public bool IsMicrosoftAbi { get { return Parser.Abi == CppAbi.Microsoft; } } + public bool IsItaniumAbi { get { return Abi == CppAbi.Itanium; } } + public bool IsMicrosoftAbi { get { return Abi == CppAbi.Microsoft; } } // Library options - public List LibraryDirs; public List Libraries; public bool CheckSymbols; diff --git a/src/Generator/Passes/CleanUnitPass.cs b/src/Generator/Passes/CleanUnitPass.cs index f7e08749..62240f3e 100644 --- a/src/Generator/Passes/CleanUnitPass.cs +++ b/src/Generator/Passes/CleanUnitPass.cs @@ -25,7 +25,7 @@ namespace CppSharp.Passes var includePath = filePath; var shortestIncludePath = filePath; - foreach (var path in DriverOptions.Parser.IncludeDirs) + foreach (var path in DriverOptions.IncludeDirs) { int idx = filePath.IndexOf(path, System.StringComparison.Ordinal); if (idx == -1) continue; diff --git a/src/Generator/Passes/GenerateAbstractImplementationsPass.cs b/src/Generator/Passes/GenerateAbstractImplementationsPass.cs index 6140800f..0f3850a2 100644 --- a/src/Generator/Passes/GenerateAbstractImplementationsPass.cs +++ b/src/Generator/Passes/GenerateAbstractImplementationsPass.cs @@ -129,7 +129,7 @@ namespace CppSharp.Passes private void FillVTable(Class @class, IList abstractMethods, Class internalImplementation) { - switch (Driver.Options.Parser.Abi) + switch (Driver.Options.Abi) { case CppAbi.Microsoft: CreateVTableMS(@class, abstractMethods, internalImplementation); diff --git a/src/Generator/Passes/GenerateInlinesCodePass.cs b/src/Generator/Passes/GenerateInlinesCodePass.cs index a5cc9846..8b7bbed8 100644 --- a/src/Generator/Passes/GenerateInlinesCodePass.cs +++ b/src/Generator/Passes/GenerateInlinesCodePass.cs @@ -37,7 +37,7 @@ namespace CppSharp.Passes private void WriteInlinedSymbols() { - switch (Driver.Options.Parser.Abi) + switch (Driver.Options.Abi) { case CppAbi.Microsoft: var defBuilder = new StringBuilder("EXPORTS\r\n"); diff --git a/src/Generator/Utils/TestsUtils.cs b/src/Generator/Utils/TestsUtils.cs index 4459b4bb..846fbcff 100644 --- a/src/Generator/Utils/TestsUtils.cs +++ b/src/Generator/Utils/TestsUtils.cs @@ -73,7 +73,7 @@ namespace CppSharp.Utils var path = Path.GetFullPath(GetTestsDirectory(name)); - options.Parser.IncludeDirs.Add(path); + options.IncludeDirs.Add(path); Console.WriteLine("Looking for tests in: {0}", path); var files = Directory.EnumerateFiles(path, "*.h");