Browse Source

Fixed a regression, a crash, when generating the parser bindings.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/1026/head
Dimitar Dobrev 8 years ago
parent
commit
573818f33e
  1. 17
      src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs
  2. 9
      src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs
  3. 17
      src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs
  4. 7
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs
  5. 7
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs
  6. 9
      src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs
  7. 23
      src/Parser/ParserOptions.cs

17
src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs

@ -19252,9 +19252,24 @@ namespace Std @@ -19252,9 +19252,24 @@ namespace Std
{
namespace Pair
{
[StructLayout(LayoutKind.Explicit, Size = 0)]
[StructLayout(LayoutKind.Explicit, Size = 16)]
public unsafe partial struct __Internalc__N_std_N___1_S_pair____N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C____N_CppSharp_N_CppParser_N_AST_S_Declaration
{
[FieldOffset(0)]
internal global::Std.BasicString.__Internalc__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C first;
[FieldOffset(12)]
internal global::System.IntPtr second;
}
[StructLayout(LayoutKind.Explicit, Size = 16)]
public unsafe partial struct __Internalc__N_std_N___1_S_pair__1__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C____N_CppSharp_N_CppParser_N_AST_S_Declaration
{
[FieldOffset(0)]
internal global::Std.BasicString.__Internalc__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C first;
[FieldOffset(12)]
internal global::System.IntPtr second;
}
}
}

9
src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs

@ -19248,11 +19248,16 @@ namespace CppSharp @@ -19248,11 +19248,16 @@ namespace CppSharp
namespace Std
{
namespace pair
namespace Pair
{
[StructLayout(LayoutKind.Explicit, Size = 0)]
[StructLayout(LayoutKind.Explicit, Size = 28)]
public unsafe partial struct __Internalc__N_std_S_pair__1__N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C____N_CppSharp_N_CppParser_N_AST_S_Declaration
{
[FieldOffset(0)]
internal global::Std.BasicString.__Internalc__N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C first;
[FieldOffset(24)]
internal global::System.IntPtr second;
}
}
}

17
src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs

@ -19251,9 +19251,24 @@ namespace Std @@ -19251,9 +19251,24 @@ namespace Std
{
namespace Pair
{
[StructLayout(LayoutKind.Explicit, Size = 0)]
[StructLayout(LayoutKind.Explicit, Size = 32)]
public unsafe partial struct __Internalc__N_std_N___1_S_pair____N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C____N_CppSharp_N_CppParser_N_AST_S_Declaration
{
[FieldOffset(0)]
internal global::Std.BasicString.__Internalc__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C first;
[FieldOffset(24)]
internal global::System.IntPtr second;
}
[StructLayout(LayoutKind.Explicit, Size = 32)]
public unsafe partial struct __Internalc__N_std_N___1_S_pair__1__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C____N_CppSharp_N_CppParser_N_AST_S_Declaration
{
[FieldOffset(0)]
internal global::Std.BasicString.__Internalc__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C first;
[FieldOffset(24)]
internal global::System.IntPtr second;
}
}
}

7
src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs

@ -19249,9 +19249,14 @@ namespace Std @@ -19249,9 +19249,14 @@ namespace Std
{
namespace pair
{
[StructLayout(LayoutKind.Explicit, Size = 0)]
[StructLayout(LayoutKind.Explicit, Size = 40)]
public unsafe partial struct __Internalc__N_std_S_pair__1__N_std_N___cxx11_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C____N_CppSharp_N_CppParser_N_AST_S_Declaration
{
[FieldOffset(0)]
internal global::Std.BasicString.__Internalc__N_std_N___cxx11_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C first;
[FieldOffset(32)]
internal global::System.IntPtr second;
}
}
}

7
src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs

@ -19249,9 +19249,14 @@ namespace Std @@ -19249,9 +19249,14 @@ namespace Std
{
namespace pair
{
[StructLayout(LayoutKind.Explicit, Size = 0)]
[StructLayout(LayoutKind.Explicit, Size = 16)]
public unsafe partial struct __Internalc__N_std_S_pair__1__N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C____N_CppSharp_N_CppParser_N_AST_S_Declaration
{
[FieldOffset(0)]
internal global::Std.BasicString.__Internalc__N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C first;
[FieldOffset(8)]
internal global::System.IntPtr second;
}
}
}

9
src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs

@ -19248,11 +19248,16 @@ namespace CppSharp @@ -19248,11 +19248,16 @@ namespace CppSharp
namespace Std
{
namespace pair
namespace Pair
{
[StructLayout(LayoutKind.Explicit, Size = 0)]
[StructLayout(LayoutKind.Explicit, Size = 40)]
public unsafe partial struct __Internalc__N_std_S_pair__1__N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C____N_CppSharp_N_CppParser_N_AST_S_Declaration
{
[FieldOffset(0)]
internal global::Std.BasicString.__Internalc__N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C first;
[FieldOffset(32)]
internal global::System.IntPtr second;
}
}
}

23
src/Parser/ParserOptions.cs

@ -7,6 +7,7 @@ using System.Collections.Generic; @@ -7,6 +7,7 @@ using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text.RegularExpressions;
using System.IO;
namespace CppSharp.Parser
{
@ -221,8 +222,24 @@ namespace CppSharp.Parser @@ -221,8 +222,24 @@ namespace CppSharp.Parser
AddArguments("-stdlib=libc++");
}
private void GetUnixCompilerInfo(out string compiler, out string longVersion, out string shortVersion)
private void GetUnixCompilerInfo(string headersPath, out string compiler,
out string longVersion, out string shortVersion)
{
if (!Platform.IsLinux)
{
compiler = "gcc";
// Search for the available GCC versions on the provided headers.
var versions = Directory.EnumerateDirectories(Path.Combine(headersPath,
"usr", "include", "c++"));
if (versions.Count() == 0)
throw new Exception("No valid GCC version found on system include paths");
string gccVersionPath = versions.First();
longVersion = shortVersion = gccVersionPath.Substring(
gccVersionPath.LastIndexOf(Path.DirectorySeparatorChar) + 1);
return;
}
var info = new ProcessStartInfo(Environment.GetEnvironmentVariable("CXX") ?? "gcc", "-v");
info.RedirectStandardError = true;
info.CreateNoWindow = true;
@ -242,7 +259,7 @@ namespace CppSharp.Parser @@ -242,7 +259,7 @@ namespace CppSharp.Parser
shortVersion = match.Groups[3].ToString();
}
public void SetupLinux(string headersPath="")
public void SetupLinux(string headersPath = "")
{
MicrosoftMode = false;
NoBuiltinIncludes = true;
@ -250,7 +267,7 @@ namespace CppSharp.Parser @@ -250,7 +267,7 @@ namespace CppSharp.Parser
Abi = CppAbi.Itanium;
string compiler, longVersion, shortVersion;
GetUnixCompilerInfo(out compiler, out longVersion, out shortVersion);
GetUnixCompilerInfo(headersPath, out compiler, out longVersion, out shortVersion);
string[] versions = {longVersion, shortVersion};
string[] tripples = {"x86_64-linux-gnu", "x86_64-pc-linux-gnu"};
if (compiler == "gcc")

Loading…
Cancel
Save