Browse Source

Remove the direct usages of the parsing options

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/1391/head
Dimitar Dobrev 5 years ago
parent
commit
fbbda2020f
  1. 4
      src/CppParser/ParserGen/ParserGen.cs
  2. 8
      src/Generator.Tests/GeneratorTest.cs
  3. 14
      src/Generator/Driver.cs
  4. 72
      src/Parser/ParserOptions.cs

4
src/CppParser/ParserGen/ParserGen.cs

@ -72,8 +72,8 @@ namespace CppSharp
SetupLinuxOptions(parserOptions); SetupLinuxOptions(parserOptions);
var basePath = Path.Combine(GetSourceDirectory("src"), "CppParser"); var basePath = Path.Combine(GetSourceDirectory("src"), "CppParser");
parserOptions.AddIncludeDirs(basePath); parserModule.IncludeDirs.Add(basePath);
parserOptions.AddLibraryDirs("."); parserModule.LibraryDirs.Add(".");
options.OutputDir = Path.Combine(GetSourceDirectory("src"), "CppParser", options.OutputDir = Path.Combine(GetSourceDirectory("src"), "CppParser",
"Bindings", Kind.ToString()); "Bindings", Kind.ToString());

8
src/Generator.Tests/GeneratorTest.cs

@ -36,13 +36,13 @@ namespace CppSharp.Utils
Diagnostics.Message("Generating bindings for {0} ({1})", Diagnostics.Message("Generating bindings for {0} ({1})",
testModule.LibraryName, options.GeneratorKind.ToString()); testModule.LibraryName, options.GeneratorKind.ToString());
var parserOptions = driver.ParserOptions;
if (Platform.IsMacOS) if (Platform.IsMacOS)
parserOptions.TargetTriple = Environment.Is64BitProcess ? "x86_64-apple-darwin" : "i686-apple-darwin"; driver.ParserOptions.TargetTriple = Environment.Is64BitProcess ?
"x86_64-apple-darwin" : "i686-apple-darwin";
var path = Path.GetFullPath(GetTestsDirectory(name)); var path = Path.GetFullPath(GetTestsDirectory(name));
parserOptions.AddIncludeDirs(path); testModule.IncludeDirs.Add(path);
parserOptions.AddDefines("DLL_EXPORT"); testModule.Defines.Add("DLL_EXPORT");
Diagnostics.Message("Looking for tests in: {0}", path); Diagnostics.Message("Looking for tests in: {0}", path);
var files = Directory.EnumerateFiles(path, "*.h"); var files = Directory.EnumerateFiles(path, "*.h");

14
src/Generator/Driver.cs

@ -131,16 +131,10 @@ namespace CppSharp
var sourceFiles = Options.Modules.SelectMany(m => m.Headers); var sourceFiles = Options.Modules.SelectMany(m => m.Headers);
using (ParserOptions parserOptions = ParserOptions.BuildForSourceFile( ParserOptions.BuildForSourceFile(Options.Modules);
Options.Modules)) using (ParserResult result = parser.ParseSourceFiles(
{ sourceFiles, ParserOptions))
using (ParserResult result = parser.ParseSourceFiles( Context.TargetInfo = result.TargetInfo;
sourceFiles, parserOptions))
Context.TargetInfo = result.TargetInfo;
if (string.IsNullOrEmpty(ParserOptions.TargetTriple))
ParserOptions.TargetTriple = parserOptions.TargetTriple;
}
Context.ASTContext = ClangParser.ConvertASTContext(astContext); Context.ASTContext = ClangParser.ConvertASTContext(astContext);

72
src/Parser/ParserOptions.cs

@ -56,27 +56,7 @@ namespace CppSharp.Parser
public class ParserOptions : CppParserOptions public class ParserOptions : CppParserOptions
{ {
public ParserOptions() public ParserOptions() => MicrosoftMode = !Platform.IsUnixPlatform;
{
MicrosoftMode = !Platform.IsUnixPlatform;
}
public ParserOptions(ParserOptions options)
{
ToolSetToUse = options.ToolSetToUse;
TargetTriple = options.TargetTriple;
NoStandardIncludes = options.NoStandardIncludes;
NoBuiltinIncludes = options.NoBuiltinIncludes;
MicrosoftMode = options.MicrosoftMode;
Verbose = options.Verbose;
EnableRTTI = options.EnableRTTI;
LanguageVersion = options.LanguageVersion;
UnityBuild = options.UnityBuild;
SkipPrivateDeclarations = options.SkipPrivateDeclarations;
SkipFunctionBodies = options.SkipFunctionBodies;
SkipLayoutInfo = options.SkipLayoutInfo;
ForceClangToolchainLookup = options.ForceClangToolchainLookup;
}
public bool IsItaniumLikeAbi => !IsMicrosoftAbi; public bool IsItaniumLikeAbi => !IsMicrosoftAbi;
public bool IsMicrosoftAbi => TargetTriple.Contains("win32") || public bool IsMicrosoftAbi => TargetTriple.Contains("win32") ||
@ -93,11 +73,9 @@ namespace CppSharp.Parser
/// </summary> /// </summary>
public bool ForceClangToolchainLookup = true; public bool ForceClangToolchainLookup = true;
public ParserOptions BuildForSourceFile( public void BuildForSourceFile(
IEnumerable<CppSharp.AST.Module> modules, string file = null) IEnumerable<CppSharp.AST.Module> modules, string file = null)
{ {
var options = new ParserOptions(this);
// This eventually gets passed to Clang's MSCompatibilityVersion, which // This eventually gets passed to Clang's MSCompatibilityVersion, which
// is in turn used to derive the value of the built-in define _MSC_VER. // is in turn used to derive the value of the built-in define _MSC_VER.
// It used to receive a 4-digit based identifier but now expects a full // It used to receive a 4-digit based identifier but now expects a full
@ -107,59 +85,21 @@ namespace CppSharp.Parser
if (ToolSetToUse.ToString(CultureInfo.InvariantCulture).Length == 4) if (ToolSetToUse.ToString(CultureInfo.InvariantCulture).Length == 4)
ToolSetToUse *= 100000; ToolSetToUse *= 100000;
for (uint i = 0; i < ArgumentsCount; ++i)
{
var arg = GetArguments(i);
options.AddArguments(arg);
}
for (uint i = 0; i < IncludeDirsCount; ++i)
{
var include = GetIncludeDirs(i);
options.AddIncludeDirs(include);
}
for (uint i = 0; i < SystemIncludeDirsCount; ++i)
{
var include = GetSystemIncludeDirs(i);
options.AddSystemIncludeDirs(include);
}
for (uint i = 0; i < DefinesCount; ++i)
{
var define = GetDefines(i);
options.AddDefines(define);
}
for (uint i = 0; i < UndefinesCount; ++i)
{
var define = GetUndefines(i);
options.AddUndefines(define);
}
for (uint i = 0; i < LibraryDirsCount; ++i)
{
var lib = GetLibraryDirs(i);
options.AddLibraryDirs(lib);
}
foreach (var module in modules.Where( foreach (var module in modules.Where(
m => file == null || m.Headers.Contains(file))) m => file == null || m.Headers.Contains(file)))
{ {
foreach (var include in module.IncludeDirs) foreach (var include in module.IncludeDirs)
options.AddIncludeDirs(include); AddIncludeDirs(include);
foreach (var define in module.Defines) foreach (var define in module.Defines)
options.AddDefines(define); AddDefines(define);
foreach (var undefine in module.Undefines) foreach (var undefine in module.Undefines)
options.AddUndefines(undefine); AddUndefines(undefine);
foreach (var libraryDir in module.LibraryDirs) foreach (var libraryDir in module.LibraryDirs)
options.AddLibraryDirs(libraryDir); AddLibraryDirs(libraryDir);
} }
return options;
} }
public void SetupMSVC() public void SetupMSVC()

Loading…
Cancel
Save