Browse Source

Separate parser options from driver options.

This will break API compatibility, you will have to update your options setup code.
pull/696/head
Joao Matos 9 years ago
parent
commit
a77bc2a91f
  1. 3
      examples/SDL/SDL.cs
  2. 9
      src/Core/Platform.cs
  3. 25
      src/CppParser/ParserGen/ParserGen.cs
  4. 9
      src/CppParser/ParserGen/premake5.lua
  5. 11
      src/Generator.Tests/ASTTestFixture.cs
  6. 5
      src/Generator.Tests/GeneratorTest.cs
  7. 9
      src/Generator.Tests/ReadNativeDependenciesTest.cs
  8. 1
      src/Generator.Tests/premake5.lua
  9. 5
      src/Generator/BindingContext.cs
  10. 73
      src/Generator/Driver.cs
  11. 16
      src/Generator/Generators/CSharp/CSharpSources.cs
  12. 19
      src/Generator/Options.cs
  13. 2
      src/Generator/Passes/CheckAbiParameters.cs
  14. 4
      src/Generator/Passes/CleanUnitPass.cs
  15. 4
      src/Generator/Passes/DelegatesPass.cs
  16. 16
      src/Parser/ParserOptions.cs

3
examples/SDL/SDL.cs

@ -9,11 +9,12 @@ namespace CppSharp @@ -9,11 +9,12 @@ namespace CppSharp
{
public void Setup(Driver driver)
{
var parserOptions = driver.ParserOptions;
var options = driver.Options;
options.LibraryName = "SDL";
options.Headers.Add("SDL.h");
var sdlPath = Path.Combine(GetExamplesDirectory("SDL"), "SDL-2.0/include");
options.addIncludeDirs(sdlPath);
parserOptions.addIncludeDirs(sdlPath);
options.OutputDir = "SDL";
}

9
src/Core/Platform.cs

@ -57,5 +57,14 @@ namespace CppSharp @@ -57,5 +57,14 @@ namespace CppSharp
{
get { return Type.GetType("Mono.Runtime") != null; }
}
public static bool IsUnixPlatform
{
get
{
var platform = Environment.OSVersion.Platform;
return platform == PlatformID.Unix || platform == PlatformID.MacOSX;
}
}
}
}

25
src/CppParser/ParserGen/ParserGen.cs

@ -7,6 +7,7 @@ using CppSharp.Generators; @@ -7,6 +7,7 @@ using CppSharp.Generators;
using CppSharp.Passes;
using CppSharp.Types;
using CppAbi = CppSharp.Parser.AST.CppAbi;
using CppSharp.Parser;
namespace CppSharp
{
@ -49,9 +50,11 @@ namespace CppSharp @@ -49,9 +50,11 @@ namespace CppSharp
public void Setup(Driver driver)
{
var parserOptions = driver.ParserOptions;
parserOptions.TargetTriple = Triple;
parserOptions.Abi = Abi;
var options = driver.Options;
options.TargetTriple = Triple;
options.Abi = Abi;
options.LibraryName = "CppSharp.CppParser";
options.SharedLibraryName = "CppSharp.CppParser.dll";
options.GeneratorKind = Kind;
@ -64,17 +67,17 @@ namespace CppSharp @@ -64,17 +67,17 @@ namespace CppSharp
options.Libraries.Add("CppSharp.CppParser.lib");
if (Abi == CppAbi.Microsoft)
options.MicrosoftMode = true;
parserOptions.MicrosoftMode = true;
if (Triple.Contains("apple"))
SetupMacOptions(options);
SetupMacOptions(parserOptions);
if (Triple.Contains("linux"))
SetupLinuxOptions(options);
SetupLinuxOptions(parserOptions);
var basePath = Path.Combine(GetSourceDirectory("src"), "CppParser");
options.addIncludeDirs(basePath);
options.addLibraryDirs(".");
parserOptions.addIncludeDirs(basePath);
parserOptions.addLibraryDirs(".");
options.OutputDir = Path.Combine(GetSourceDirectory("src"), "CppParser",
"Bindings", Kind.ToString());
@ -82,15 +85,15 @@ namespace CppSharp @@ -82,15 +85,15 @@ namespace CppSharp
var extraTriple = IsGnuCpp11Abi ? "-cxx11abi" : string.Empty;
if (Kind == GeneratorKind.CSharp)
options.OutputDir = Path.Combine(options.OutputDir, options.TargetTriple + extraTriple);
options.OutputDir = Path.Combine(options.OutputDir, parserOptions.TargetTriple + extraTriple);
options.OutputNamespace = string.Empty;
options.CheckSymbols = false;
options.Verbose = true;
//options.Verbose = true;
options.UnityBuild = true;
}
private void SetupLinuxOptions(DriverOptions options)
private void SetupLinuxOptions(ParserOptions options)
{
options.MicrosoftMode = false;
options.NoBuiltinIncludes = true;
@ -124,7 +127,7 @@ namespace CppSharp @@ -124,7 +127,7 @@ namespace CppSharp
options.addDefines("_GLIBCXX_USE_CXX11_ABI=" + (IsGnuCpp11Abi ? "1" : "0"));
}
private static void SetupMacOptions(DriverOptions options)
private static void SetupMacOptions(ParserOptions options)
{
options.MicrosoftMode = false;
options.NoBuiltinIncludes = true;

9
src/CppParser/ParserGen/premake5.lua

@ -6,6 +6,13 @@ project "CppSharp.Parser.Gen" @@ -6,6 +6,13 @@ project "CppSharp.Parser.Gen"
debugdir "."
files { "ParserGen.cs", "*.lua" }
links { "CppSharp", "CppSharp.AST", "CppSharp.Generator", "System.Core" }
links
{
"CppSharp",
"CppSharp.AST",
"CppSharp.Generator",
"CppSharp.Parser",
"System.Core"
}
SetupParser()

11
src/Generator.Tests/ASTTestFixture.cs

@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
using System;
using CppSharp.AST;
using CppSharp.Utils;
using CppSharp.Parser;
namespace CppSharp.Generator.Tests
{
@ -8,18 +9,24 @@ namespace CppSharp.Generator.Tests @@ -8,18 +9,24 @@ namespace CppSharp.Generator.Tests
{
protected Driver Driver;
protected DriverOptions Options;
protected ParserOptions2 ParserOptions;
protected ASTContext AstContext;
protected void ParseLibrary(params string[] files)
{
Options = new DriverOptions();
ParserOptions = new ParserOptions2();
var testsPath = GeneratorTest.GetTestsDirectory("Native");
Options.addIncludeDirs(testsPath);
ParserOptions.addIncludeDirs(testsPath);
Options.Headers.AddRange(files);
Driver = new Driver(Options, new TextDiagnosticPrinter());
Driver = new Driver(Options, new TextDiagnosticPrinter())
{
ParserOptions = this.ParserOptions
};
foreach (var module in Driver.Options.Modules)
module.LibraryName = "Test";
Driver.Setup();

5
src/Generator.Tests/GeneratorTest.cs

@ -41,11 +41,12 @@ namespace CppSharp.Utils @@ -41,11 +41,12 @@ namespace CppSharp.Utils
if (!Platform.IsMono)
options.SharedLibraryName += ".dll";
var parserOptions = driver.ParserOptions;
if (Platform.IsMacOS)
options.TargetTriple = Environment.Is64BitProcess ? "x86_64-apple-darwin" : "i686-apple-darwin";
parserOptions.TargetTriple = Environment.Is64BitProcess ? "x86_64-apple-darwin" : "i686-apple-darwin";
var path = Path.GetFullPath(GetTestsDirectory(name));
options.addIncludeDirs(path);
parserOptions.addIncludeDirs(path);
driver.Diagnostics.Message("Looking for tests in: {0}", path);
var files = Directory.EnumerateFiles(path, "*.h");

9
src/Generator.Tests/ReadNativeDependenciesTest.cs

@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
using System.Collections.Generic;
using CppSharp.Utils;
using NUnit.Framework;
using CppSharp.Parser;
namespace CppSharp.Generator.Tests
{
@ -37,10 +38,14 @@ namespace CppSharp.Generator.Tests @@ -37,10 +38,14 @@ namespace CppSharp.Generator.Tests
private static IList<string> GetDependencies(string library)
{
var parserOptions = new ParserOptions2();
parserOptions.addLibraryDirs(GeneratorTest.GetTestsDirectory("Native"));
var driverOptions = new DriverOptions();
driverOptions.addLibraryDirs(GeneratorTest.GetTestsDirectory("Native"));
driverOptions.Libraries.Add(library);
var driver = new Driver(driverOptions, new TextDiagnosticPrinter());
var driver = new Driver(driverOptions, new TextDiagnosticPrinter())
{
ParserOptions = parserOptions
};
foreach (var module in driver.Options.Modules)
module.LibraryName = "Test";
driver.Setup();

1
src/Generator.Tests/premake5.lua

@ -20,6 +20,7 @@ project "CppSharp.Generator.Tests" @@ -20,6 +20,7 @@ project "CppSharp.Generator.Tests"
"CppSharp",
"CppSharp.AST",
"CppSharp.Generator",
"CppSharp.Parser",
"nunit.framework",
"NSubstitute"
}

5
src/Generator/BindingContext.cs

@ -1,10 +1,7 @@ @@ -1,10 +1,7 @@
using CppSharp.AST;
using CppSharp.Generators.CLI;
using CppSharp.Generators.CSharp;
using CppSharp.Passes;
using CppSharp.Types;
using CppSharp.Parser;
using CppSharp.Utils;
using System.Collections.Generic;
namespace CppSharp.Generators
@ -12,7 +9,9 @@ namespace CppSharp.Generators @@ -12,7 +9,9 @@ namespace CppSharp.Generators
public class BindingContext
{
public IDiagnostics Diagnostics { get; set; }
public DriverOptions Options { get; private set; }
public ParserOptions2 ParserOptions { get; set; }
public ASTContext ASTContext { get; set; }
public ParserTargetInfo TargetInfo { get; set; }

73
src/Generator/Driver.cs

@ -22,6 +22,7 @@ namespace CppSharp @@ -22,6 +22,7 @@ namespace CppSharp
{
public IDiagnostics Diagnostics { get; private set; }
public DriverOptions Options { get; private set; }
public ParserOptions2 ParserOptions { get; set; }
public Project Project { get; private set; }
public BindingContext Context { get; private set; }
public Generator Generator { get; private set; }
@ -33,6 +34,7 @@ namespace CppSharp @@ -33,6 +34,7 @@ namespace CppSharp
Options = options;
Diagnostics = diagnostics;
Project = new Project();
ParserOptions = new ParserOptions2();
}
Generator CreateGeneratorFromKind(GeneratorKind kind)
@ -48,9 +50,9 @@ namespace CppSharp @@ -48,9 +50,9 @@ namespace CppSharp
return null;
}
static void ValidateOptions(DriverOptions options)
void ValidateOptions()
{
foreach (var module in options.Modules)
foreach (var module in Options.Modules)
{
if (string.IsNullOrWhiteSpace(module.LibraryName))
throw new InvalidOptionException("One of your modules has no library name.");
@ -59,24 +61,25 @@ namespace CppSharp @@ -59,24 +61,25 @@ namespace CppSharp
module.OutputNamespace = module.LibraryName;
}
if (options.NoGenIncludeDirs != null)
foreach (var incDir in options.NoGenIncludeDirs)
options.addIncludeDirs(incDir);
if (Options.NoGenIncludeDirs != null)
foreach (var incDir in Options.NoGenIncludeDirs)
ParserOptions.addIncludeDirs(incDir);
}
public void SetupIncludes()
{
if (Platform.IsMacOS)
Options.SetupXcode();
else if (Platform.IsWindows && !Options.NoBuiltinIncludes)
Options.SetupMSVC();
ParserOptions.SetupXcode();
else if (Platform.IsWindows && !ParserOptions.NoBuiltinIncludes)
ParserOptions.SetupMSVC();
}
public void Setup()
{
ValidateOptions(Options);
ValidateOptions();
SetupIncludes();
Context = new BindingContext(Diagnostics, Options);
Context.ParserOptions = ParserOptions;
Generator = CreateGeneratorFromKind(Options.GeneratorKind);
}
@ -127,14 +130,14 @@ namespace CppSharp @@ -127,14 +130,14 @@ namespace CppSharp
{
var options = new ParserOptions
{
Abi = Options.Abi,
ToolSetToUse = Options.ToolSetToUse,
TargetTriple = Options.TargetTriple,
NoStandardIncludes = Options.NoStandardIncludes,
NoBuiltinIncludes = Options.NoBuiltinIncludes,
MicrosoftMode = Options.MicrosoftMode,
Verbose = Options.Verbose,
LanguageVersion = Options.LanguageVersion
Abi = ParserOptions.Abi,
ToolSetToUse = ParserOptions.ToolSetToUse,
TargetTriple = ParserOptions.TargetTriple,
NoStandardIncludes = ParserOptions.NoStandardIncludes,
NoBuiltinIncludes = ParserOptions.NoBuiltinIncludes,
MicrosoftMode = ParserOptions.MicrosoftMode,
Verbose = ParserOptions.Verbose,
LanguageVersion = ParserOptions.LanguageVersion
};
// This eventually gets passed to Clang's MSCompatibilityVersion, which
@ -143,42 +146,42 @@ namespace CppSharp @@ -143,42 +146,42 @@ namespace CppSharp
// version MSVC digit, so check if we still have the old version and
// convert to the right format.
if (Options.ToolSetToUse.ToString(CultureInfo.InvariantCulture).Length == 4)
Options.ToolSetToUse *= 100000;
if (ParserOptions.ToolSetToUse.ToString(CultureInfo.InvariantCulture).Length == 4)
ParserOptions.ToolSetToUse *= 100000;
for (uint i = 0; i < Options.ArgumentsCount; ++i)
for (uint i = 0; i < ParserOptions.ArgumentsCount; ++i)
{
var arg = Options.getArguments(i);
var arg = ParserOptions.getArguments(i);
options.addArguments(arg);
}
for (uint i = 0; i < Options.IncludeDirsCount; ++i)
for (uint i = 0; i < ParserOptions.IncludeDirsCount; ++i)
{
var include = Options.getIncludeDirs(i);
var include = ParserOptions.getIncludeDirs(i);
options.addIncludeDirs(include);
}
for (uint i = 0; i < Options.SystemIncludeDirsCount; ++i)
for (uint i = 0; i < ParserOptions.SystemIncludeDirsCount; ++i)
{
var include = Options.getSystemIncludeDirs(i);
var include = ParserOptions.getSystemIncludeDirs(i);
options.addSystemIncludeDirs(include);
}
for (uint i = 0; i < Options.DefinesCount; ++i)
for (uint i = 0; i < ParserOptions.DefinesCount; ++i)
{
var define = Options.getDefines(i);
var define = ParserOptions.getDefines(i);
options.addDefines(define);
}
for (uint i = 0; i < Options.UndefinesCount; ++i)
for (uint i = 0; i < ParserOptions.UndefinesCount; ++i)
{
var define = Options.getUndefines(i);
var define = ParserOptions.getUndefines(i);
options.addUndefines(define);
}
for (uint i = 0; i < Options.LibraryDirsCount; ++i)
for (uint i = 0; i < ParserOptions.LibraryDirsCount; ++i)
{
var lib = Options.getLibraryDirs(i);
var lib = ParserOptions.getLibraryDirs(i);
options.addLibraryDirs(lib);
}
@ -208,7 +211,7 @@ namespace CppSharp @@ -208,7 +211,7 @@ namespace CppSharp
parser.SourcesParsed += OnSourceFileParsed;
parser.ParseProject(Project, Options.UnityBuild);
Context.TargetInfo = parser.GetTargetInfo(Options);
Context.TargetInfo = parser.GetTargetInfo(ParserOptions);
Context.ASTContext = ClangParser.ConvertASTContext(parser.ASTContext);
return !hasParsingErrors;
@ -248,7 +251,7 @@ namespace CppSharp @@ -248,7 +251,7 @@ namespace CppSharp
foreach (var module in Options.Modules)
{
foreach (var libraryDir in module.LibraryDirs)
Options.addLibraryDirs(libraryDir);
ParserOptions.addLibraryDirs(libraryDir);
foreach (var library in module.Libraries)
{
@ -258,7 +261,7 @@ namespace CppSharp @@ -258,7 +261,7 @@ namespace CppSharp
var parser = new ClangParser();
parser.LibraryParsed += OnFileParsed;
using (var res = parser.ParseLibrary(library, Options))
using (var res = parser.ParseLibrary(library, ParserOptions))
{
if (res.Kind != ParserResultKind.Success)
continue;
@ -482,7 +485,7 @@ namespace CppSharp @@ -482,7 +485,7 @@ namespace CppSharp
driver.Setup();
if(driver.Options.Verbose)
if(driver.ParserOptions.Verbose)
Log.Level = DiagnosticKind.Debug;
if (!options.Quiet)

16
src/Generator/Generators/CSharp/CSharpSources.cs

@ -672,7 +672,7 @@ namespace CppSharp.Generators.CSharp @@ -672,7 +672,7 @@ namespace CppSharp.Generators.CSharp
retType = function.ReturnType.CSharpType(TypePrinter);
var @params = function.GatherInternalParams(Context.Options.IsItaniumLikeAbi).Select(p =>
var @params = function.GatherInternalParams(Context.ParserOptions.IsItaniumLikeAbi).Select(p =>
string.Format("{0} {1}", p.CSharpType(TypePrinter), p.Name)).ToList();
TypePrinter.PopContext();
@ -1486,7 +1486,7 @@ namespace CppSharp.Generators.CSharp @@ -1486,7 +1486,7 @@ namespace CppSharp.Generators.CSharp
private void AllocateNewVTables(Class @class, IList<VTableComponent> wrappedEntries,
bool destructorOnly)
{
if (Options.IsMicrosoftAbi)
if (Context.ParserOptions.IsMicrosoftAbi)
AllocateNewVTablesMS(@class, wrappedEntries, destructorOnly);
else
AllocateNewVTablesItanium(@class, wrappedEntries, destructorOnly);
@ -1495,7 +1495,7 @@ namespace CppSharp.Generators.CSharp @@ -1495,7 +1495,7 @@ namespace CppSharp.Generators.CSharp
private void SaveOriginalVTablePointers(Class @class)
{
var suffix = Helpers.GetSuffixForInternal(@class);
if (Context.Options.IsMicrosoftAbi)
if (Context.ParserOptions.IsMicrosoftAbi)
WriteLine("__OriginalVTables = new void*[] {{ {0} }};",
string.Join(", ",
@class.Layout.VTablePointers.Select(v => string.Format(
@ -1564,7 +1564,7 @@ namespace CppSharp.Generators.CSharp @@ -1564,7 +1564,7 @@ namespace CppSharp.Generators.CSharp
{
var entry = entries[i];
var offset = pointerSize
* (i - (Options.IsMicrosoftAbi ? 0 : VTables.ItaniumOffsetToTopAndRTTI));
* (i - (Context.ParserOptions.IsMicrosoftAbi ? 0 : VTables.ItaniumOffsetToTopAndRTTI));
var nativeVftableEntry = string.Format("*(void**)(native->{0} + {1})", vptr, offset);
var managedVftableEntry = string.Format("*(void**)(vfptr{0} + {1})", tableIndex, offset);
@ -1953,7 +1953,7 @@ namespace CppSharp.Generators.CSharp @@ -1953,7 +1953,7 @@ namespace CppSharp.Generators.CSharp
var suffix = Helpers.GetSuffixForInternal(@class);
if (@class.IsDynamic && GetUniqueVTableMethodEntries(@class).Count != 0)
{
if (Options.IsMicrosoftAbi)
if (Context.ParserOptions.IsMicrosoftAbi)
for (var i = 0; i < @class.Layout.VTablePointers.Count; i++)
WriteLine("((Internal{0}*) {1})->{2} = new global::System.IntPtr(__OriginalVTables[{3}]);",
suffix, Helpers.InstanceIdentifier,
@ -2816,7 +2816,7 @@ namespace CppSharp.Generators.CSharp @@ -2816,7 +2816,7 @@ namespace CppSharp.Generators.CSharp
private int GetInstanceParamIndex(Function method)
{
if (Options.IsMicrosoftAbi)
if (Context.ParserOptions.IsMicrosoftAbi)
return 0;
var indirectReturnType = method.Parameters.FirstOrDefault(
@ -3161,9 +3161,9 @@ namespace CppSharp.Generators.CSharp @@ -3161,9 +3161,9 @@ namespace CppSharp.Generators.CSharp
if (Platform.IsMacOS)
{
var framework = libName + ".framework";
for (uint i = 0; i < Context.Options.LibraryDirsCount; i++)
for (uint i = 0; i < Context.ParserOptions.LibraryDirsCount; i++)
{
var libDir = Context.Options.getLibraryDirs(i);
var libDir = Context.ParserOptions.getLibraryDirs(i);
if (Path.GetFileName(libDir) == framework && File.Exists(Path.Combine(libDir, libName)))
{
libName = string.Format("@executable_path/../Frameworks/{0}/{1}", framework, libName);

19
src/Generator/Options.cs

@ -4,27 +4,13 @@ using System.IO; @@ -4,27 +4,13 @@ using System.IO;
using System.Text;
using CppSharp.AST;
using CppSharp.Generators;
using CppSharp.Parser;
using CppAbi = CppSharp.Parser.AST.CppAbi;
namespace CppSharp
{
public class DriverOptions : ParserOptions
public class DriverOptions
{
public static bool IsUnixPlatform
{
get
{
var platform = Environment.OSVersion.Platform;
return platform == PlatformID.Unix || platform == PlatformID.MacOSX;
}
}
public DriverOptions()
{
Abi = IsUnixPlatform ? CppAbi.Itanium : CppAbi.Microsoft;
MicrosoftMode = !IsUnixPlatform;
OutputDir = Directory.GetCurrentDirectory();
SystemModule = new Module { OutputNamespace = string.Empty, LibraryName = "Std" };
@ -75,9 +61,6 @@ namespace CppSharp @@ -75,9 +61,6 @@ namespace CppSharp
public bool IgnoreParseWarnings;
public bool IgnoreParseErrors;
public bool IsItaniumLikeAbi { get { return Abi != CppAbi.Microsoft; } }
public bool IsMicrosoftAbi { get { return Abi == CppAbi.Microsoft; } }
// Library options
public List<string> Libraries { get { return MainModule.Libraries; } }
public bool CheckSymbols;

2
src/Generator/Passes/CheckAbiParameters.cs

@ -67,7 +67,7 @@ namespace CppSharp.Passes @@ -67,7 +67,7 @@ namespace CppSharp.Passes
// Deleting destructors (default in v-table) accept an i32 bitfield as a
// second parameter.in MS ABI.
if (method != null && method.IsDestructor && Options.IsMicrosoftAbi)
if (method != null && method.IsDestructor && Context.ParserOptions.IsMicrosoftAbi)
{
method.Parameters.Add(new Parameter
{

4
src/Generator/Passes/CleanUnitPass.cs

@ -38,9 +38,9 @@ namespace CppSharp.Passes @@ -38,9 +38,9 @@ namespace CppSharp.Passes
var includePath = filePath;
var shortestIncludePath = filePath;
for (uint i = 0; i < Options.IncludeDirsCount; ++i)
for (uint i = 0; i < Context.ParserOptions.IncludeDirsCount; ++i)
{
var path = Options.getIncludeDirs(i);
var path = Context.ParserOptions.getIncludeDirs(i);
int idx = filePath.IndexOf(path, System.StringComparison.Ordinal);
if (idx == -1)

4
src/Generator/Passes/DelegatesPass.cs

@ -61,7 +61,7 @@ namespace CppSharp.Passes @@ -61,7 +61,7 @@ namespace CppSharp.Passes
// dependent types with virtuals have no own virtual layouts
// so virtuals are considered different objects in template instantiations
// therefore the method itself won't be visited, so let's visit it through the v-table
if (Options.IsMicrosoftAbi)
if (Context.ParserOptions.IsMicrosoftAbi)
{
foreach (var method in from vfTable in @class.Layout.VFTables
from component in vfTable.Layout.Components
@ -88,7 +88,7 @@ namespace CppSharp.Passes @@ -88,7 +88,7 @@ namespace CppSharp.Passes
if (!base.VisitMethodDecl(method) || !method.IsVirtual || method.Ignore)
return false;
var @params = method.GatherInternalParams(Options.IsItaniumLikeAbi, true).ToList();
var @params = method.GatherInternalParams(Context.ParserOptions.IsItaniumLikeAbi, true).ToList();
var delegateName = GenerateDelegateSignature(@params, method.ReturnType);
var module = method.TranslationUnit.Module;

16
src/Parser/ParserOptions.cs

@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
using CppSharp.Parser.AST;
namespace CppSharp.Parser
{
public class ParserOptions2 : ParserOptions
{
public ParserOptions2()
{
Abi = Platform.IsUnixPlatform ? CppAbi.Itanium : CppAbi.Microsoft;
MicrosoftMode = !Platform.IsUnixPlatform;
}
public bool IsItaniumLikeAbi { get { return Abi != CppAbi.Microsoft; } }
public bool IsMicrosoftAbi { get { return Abi == CppAbi.Microsoft; } }
}
}
Loading…
Cancel
Save