Browse Source

Fallback to LayoutKind.Explicit when a custom alignment is specified. (#1476)

pull/1479/head
josetr 5 years ago committed by GitHub
parent
commit
7791cf6996
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      build/Tests.lua
  2. 3
      src/AST/Declaration.cs
  3. 3
      src/CppParser/AST.cpp
  4. 10
      src/CppParser/Bindings/CLI/Decl.cpp
  5. 6
      src/CppParser/Bindings/CLI/Decl.h
  6. 1902
      src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs
  7. 1898
      src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs
  8. 168
      src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs
  9. 168
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs
  10. 168
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs
  11. 168
      src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs
  12. 1
      src/CppParser/Decl.h
  13. 15
      src/CppParser/Parser.cpp
  14. 1
      src/CppParser/Parser.h
  15. 26
      src/Generator/Generators/CSharp/CSharpSources.cs
  16. 1
      src/Parser/ASTConverter.cs
  17. 19
      tests/CSharp/CSharp.Tests.cs
  18. 35
      tests/CSharp/CSharp.h

6
build/Tests.lua

@ -71,6 +71,12 @@ function SetupManagedTestProject() @@ -71,6 +71,12 @@ function SetupManagedTestProject()
kind "SharedLib"
language "C#"
clr "Unsafe"
filter { "action:not netcore" }
links
{
"System.Core"
}
end
function SetupTestGeneratorProject(name, depends)

3
src/AST/Declaration.cs

@ -121,7 +121,8 @@ namespace CppSharp.AST @@ -121,7 +121,8 @@ namespace CppSharp.AST
public int LineNumberStart { get; set; }
public int LineNumberEnd { get; set; }
public bool IsImplicit { get; set; }
public int MaxFieldAlignment { get; set; }
public int AlignAs { get; set; }
public int MaxFieldAlignment { get; set; }
private DeclarationContext @namespace;
public DeclarationContext OriginalNamespace;

3
src/CppParser/AST.cpp

@ -280,7 +280,8 @@ Declaration::Declaration(DeclarationKind kind) @@ -280,7 +280,8 @@ Declaration::Declaration(DeclarationKind kind)
, completeDeclaration(0)
, definitionOrder(0)
, originalPtr(0)
, maxFieldAlignment(0)
, alignAs(0)
, maxFieldAlignment(0)
{
}

10
src/CppParser/Bindings/CLI/Decl.cpp

@ -124,6 +124,16 @@ void CppSharp::Parser::AST::Declaration::Kind::set(CppSharp::Parser::AST::Declar @@ -124,6 +124,16 @@ void CppSharp::Parser::AST::Declaration::Kind::set(CppSharp::Parser::AST::Declar
((::CppSharp::CppParser::AST::Declaration*)NativePtr)->kind = (::CppSharp::CppParser::AST::DeclarationKind)value;
}
int CppSharp::Parser::AST::Declaration::AlignAs::get()
{
return ((::CppSharp::CppParser::AST::Declaration*)NativePtr)->alignAs;
}
void CppSharp::Parser::AST::Declaration::AlignAs::set(int value)
{
((::CppSharp::CppParser::AST::Declaration*)NativePtr)->alignAs = value;
}
int CppSharp::Parser::AST::Declaration::MaxFieldAlignment::get()
{
return ((::CppSharp::CppParser::AST::Declaration*)NativePtr)->maxFieldAlignment;

6
src/CppParser/Bindings/CLI/Decl.h

@ -307,6 +307,12 @@ namespace CppSharp @@ -307,6 +307,12 @@ namespace CppSharp
void set(CppSharp::Parser::AST::DeclarationKind);
}
property int AlignAs
{
int get();
void set(int);
}
property int MaxFieldAlignment
{
int get();

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

File diff suppressed because it is too large Load Diff

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

File diff suppressed because it is too large Load Diff

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

@ -6407,9 +6407,12 @@ namespace CppSharp @@ -6407,9 +6407,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -6646,6 +6649,19 @@ namespace CppSharp @@ -6646,6 +6649,19 @@ namespace CppSharp
}
}
public int AlignAs
{
get
{
return ((__Internal*)__Instance)->alignAs;
}
set
{
((__Internal*)__Instance)->alignAs = value;
}
}
public int MaxFieldAlignment
{
get
@ -6914,9 +6930,12 @@ namespace CppSharp @@ -6914,9 +6930,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -7497,9 +7516,12 @@ namespace CppSharp @@ -7497,9 +7516,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -7674,9 +7696,12 @@ namespace CppSharp @@ -7674,9 +7696,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -7831,9 +7856,12 @@ namespace CppSharp @@ -7831,9 +7856,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -8005,9 +8033,12 @@ namespace CppSharp @@ -8005,9 +8033,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -8899,9 +8930,12 @@ namespace CppSharp @@ -8899,9 +8930,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -9153,9 +9187,12 @@ namespace CppSharp @@ -9153,9 +9187,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -9699,9 +9736,12 @@ namespace CppSharp @@ -9699,9 +9736,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -10153,9 +10193,12 @@ namespace CppSharp @@ -10153,9 +10193,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -10299,9 +10342,12 @@ namespace CppSharp @@ -10299,9 +10342,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -10644,9 +10690,12 @@ namespace CppSharp @@ -10644,9 +10690,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -11025,9 +11074,12 @@ namespace CppSharp @@ -11025,9 +11074,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -11246,9 +11298,12 @@ namespace CppSharp @@ -11246,9 +11298,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -12524,9 +12579,12 @@ namespace CppSharp @@ -12524,9 +12579,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -13068,9 +13126,12 @@ namespace CppSharp @@ -13068,9 +13126,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -13301,9 +13362,12 @@ namespace CppSharp @@ -13301,9 +13362,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -13461,9 +13525,12 @@ namespace CppSharp @@ -13461,9 +13525,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -13668,9 +13735,12 @@ namespace CppSharp @@ -13668,9 +13735,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -13876,9 +13946,12 @@ namespace CppSharp @@ -13876,9 +13946,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -14057,9 +14130,12 @@ namespace CppSharp @@ -14057,9 +14130,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -14302,9 +14378,12 @@ namespace CppSharp @@ -14302,9 +14378,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -14535,9 +14614,12 @@ namespace CppSharp @@ -14535,9 +14614,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -14844,9 +14926,12 @@ namespace CppSharp @@ -14844,9 +14926,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -15085,9 +15170,12 @@ namespace CppSharp @@ -15085,9 +15170,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -15500,9 +15588,12 @@ namespace CppSharp @@ -15500,9 +15588,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -15733,9 +15824,12 @@ namespace CppSharp @@ -15733,9 +15824,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -15976,9 +16070,12 @@ namespace CppSharp @@ -15976,9 +16070,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -16151,9 +16248,12 @@ namespace CppSharp @@ -16151,9 +16248,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -16305,9 +16405,12 @@ namespace CppSharp @@ -16305,9 +16405,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -16967,9 +17070,12 @@ namespace CppSharp @@ -16967,9 +17070,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]

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

@ -6407,9 +6407,12 @@ namespace CppSharp @@ -6407,9 +6407,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -6646,6 +6649,19 @@ namespace CppSharp @@ -6646,6 +6649,19 @@ namespace CppSharp
}
}
public int AlignAs
{
get
{
return ((__Internal*)__Instance)->alignAs;
}
set
{
((__Internal*)__Instance)->alignAs = value;
}
}
public int MaxFieldAlignment
{
get
@ -6914,9 +6930,12 @@ namespace CppSharp @@ -6914,9 +6930,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -7497,9 +7516,12 @@ namespace CppSharp @@ -7497,9 +7516,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -7674,9 +7696,12 @@ namespace CppSharp @@ -7674,9 +7696,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -7831,9 +7856,12 @@ namespace CppSharp @@ -7831,9 +7856,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -8005,9 +8033,12 @@ namespace CppSharp @@ -8005,9 +8033,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -8899,9 +8930,12 @@ namespace CppSharp @@ -8899,9 +8930,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -9153,9 +9187,12 @@ namespace CppSharp @@ -9153,9 +9187,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -9699,9 +9736,12 @@ namespace CppSharp @@ -9699,9 +9736,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -10153,9 +10193,12 @@ namespace CppSharp @@ -10153,9 +10193,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -10299,9 +10342,12 @@ namespace CppSharp @@ -10299,9 +10342,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -10644,9 +10690,12 @@ namespace CppSharp @@ -10644,9 +10690,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -11025,9 +11074,12 @@ namespace CppSharp @@ -11025,9 +11074,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -11246,9 +11298,12 @@ namespace CppSharp @@ -11246,9 +11298,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -12524,9 +12579,12 @@ namespace CppSharp @@ -12524,9 +12579,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -13068,9 +13126,12 @@ namespace CppSharp @@ -13068,9 +13126,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -13301,9 +13362,12 @@ namespace CppSharp @@ -13301,9 +13362,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -13461,9 +13525,12 @@ namespace CppSharp @@ -13461,9 +13525,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -13668,9 +13735,12 @@ namespace CppSharp @@ -13668,9 +13735,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -13876,9 +13946,12 @@ namespace CppSharp @@ -13876,9 +13946,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -14057,9 +14130,12 @@ namespace CppSharp @@ -14057,9 +14130,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -14302,9 +14378,12 @@ namespace CppSharp @@ -14302,9 +14378,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -14535,9 +14614,12 @@ namespace CppSharp @@ -14535,9 +14614,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -14844,9 +14926,12 @@ namespace CppSharp @@ -14844,9 +14926,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -15085,9 +15170,12 @@ namespace CppSharp @@ -15085,9 +15170,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -15500,9 +15588,12 @@ namespace CppSharp @@ -15500,9 +15588,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -15733,9 +15824,12 @@ namespace CppSharp @@ -15733,9 +15824,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -15976,9 +16070,12 @@ namespace CppSharp @@ -15976,9 +16070,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -16151,9 +16248,12 @@ namespace CppSharp @@ -16151,9 +16248,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -16305,9 +16405,12 @@ namespace CppSharp @@ -16305,9 +16405,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -16967,9 +17070,12 @@ namespace CppSharp @@ -16967,9 +17070,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]

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

@ -6407,9 +6407,12 @@ namespace CppSharp @@ -6407,9 +6407,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -6646,6 +6649,19 @@ namespace CppSharp @@ -6646,6 +6649,19 @@ namespace CppSharp
}
}
public int AlignAs
{
get
{
return ((__Internal*)__Instance)->alignAs;
}
set
{
((__Internal*)__Instance)->alignAs = value;
}
}
public int MaxFieldAlignment
{
get
@ -6914,9 +6930,12 @@ namespace CppSharp @@ -6914,9 +6930,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -7497,9 +7516,12 @@ namespace CppSharp @@ -7497,9 +7516,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -7674,9 +7696,12 @@ namespace CppSharp @@ -7674,9 +7696,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -7831,9 +7856,12 @@ namespace CppSharp @@ -7831,9 +7856,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -8005,9 +8033,12 @@ namespace CppSharp @@ -8005,9 +8033,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -8899,9 +8930,12 @@ namespace CppSharp @@ -8899,9 +8930,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -9153,9 +9187,12 @@ namespace CppSharp @@ -9153,9 +9187,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -9699,9 +9736,12 @@ namespace CppSharp @@ -9699,9 +9736,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -10153,9 +10193,12 @@ namespace CppSharp @@ -10153,9 +10193,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -10299,9 +10342,12 @@ namespace CppSharp @@ -10299,9 +10342,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -10644,9 +10690,12 @@ namespace CppSharp @@ -10644,9 +10690,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -11025,9 +11074,12 @@ namespace CppSharp @@ -11025,9 +11074,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -11246,9 +11298,12 @@ namespace CppSharp @@ -11246,9 +11298,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -12524,9 +12579,12 @@ namespace CppSharp @@ -12524,9 +12579,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -13068,9 +13126,12 @@ namespace CppSharp @@ -13068,9 +13126,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -13301,9 +13362,12 @@ namespace CppSharp @@ -13301,9 +13362,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -13461,9 +13525,12 @@ namespace CppSharp @@ -13461,9 +13525,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -13668,9 +13735,12 @@ namespace CppSharp @@ -13668,9 +13735,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -13876,9 +13946,12 @@ namespace CppSharp @@ -13876,9 +13946,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -14057,9 +14130,12 @@ namespace CppSharp @@ -14057,9 +14130,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -14302,9 +14378,12 @@ namespace CppSharp @@ -14302,9 +14378,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -14535,9 +14614,12 @@ namespace CppSharp @@ -14535,9 +14614,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -14844,9 +14926,12 @@ namespace CppSharp @@ -14844,9 +14926,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -15085,9 +15170,12 @@ namespace CppSharp @@ -15085,9 +15170,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -15500,9 +15588,12 @@ namespace CppSharp @@ -15500,9 +15588,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -15733,9 +15824,12 @@ namespace CppSharp @@ -15733,9 +15824,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -15976,9 +16070,12 @@ namespace CppSharp @@ -15976,9 +16070,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -16151,9 +16248,12 @@ namespace CppSharp @@ -16151,9 +16248,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -16305,9 +16405,12 @@ namespace CppSharp @@ -16305,9 +16405,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -16967,9 +17070,12 @@ namespace CppSharp @@ -16967,9 +17070,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]

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

@ -6407,9 +6407,12 @@ namespace CppSharp @@ -6407,9 +6407,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -6646,6 +6649,19 @@ namespace CppSharp @@ -6646,6 +6649,19 @@ namespace CppSharp
}
}
public int AlignAs
{
get
{
return ((__Internal*)__Instance)->alignAs;
}
set
{
((__Internal*)__Instance)->alignAs = value;
}
}
public int MaxFieldAlignment
{
get
@ -6914,9 +6930,12 @@ namespace CppSharp @@ -6914,9 +6930,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -7497,9 +7516,12 @@ namespace CppSharp @@ -7497,9 +7516,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -7674,9 +7696,12 @@ namespace CppSharp @@ -7674,9 +7696,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -7831,9 +7856,12 @@ namespace CppSharp @@ -7831,9 +7856,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -8005,9 +8033,12 @@ namespace CppSharp @@ -8005,9 +8033,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -8899,9 +8930,12 @@ namespace CppSharp @@ -8899,9 +8930,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -9153,9 +9187,12 @@ namespace CppSharp @@ -9153,9 +9187,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -9699,9 +9736,12 @@ namespace CppSharp @@ -9699,9 +9736,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -10153,9 +10193,12 @@ namespace CppSharp @@ -10153,9 +10193,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -10299,9 +10342,12 @@ namespace CppSharp @@ -10299,9 +10342,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -10644,9 +10690,12 @@ namespace CppSharp @@ -10644,9 +10690,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -11025,9 +11074,12 @@ namespace CppSharp @@ -11025,9 +11074,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -11246,9 +11298,12 @@ namespace CppSharp @@ -11246,9 +11298,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -12525,9 +12580,12 @@ namespace CppSharp @@ -12525,9 +12580,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -13069,9 +13127,12 @@ namespace CppSharp @@ -13069,9 +13127,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -13302,9 +13363,12 @@ namespace CppSharp @@ -13302,9 +13363,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -13462,9 +13526,12 @@ namespace CppSharp @@ -13462,9 +13526,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -13669,9 +13736,12 @@ namespace CppSharp @@ -13669,9 +13736,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -13877,9 +13947,12 @@ namespace CppSharp @@ -13877,9 +13947,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -14058,9 +14131,12 @@ namespace CppSharp @@ -14058,9 +14131,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -14303,9 +14379,12 @@ namespace CppSharp @@ -14303,9 +14379,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -14536,9 +14615,12 @@ namespace CppSharp @@ -14536,9 +14615,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -14845,9 +14927,12 @@ namespace CppSharp @@ -14845,9 +14927,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -15086,9 +15171,12 @@ namespace CppSharp @@ -15086,9 +15171,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -15501,9 +15589,12 @@ namespace CppSharp @@ -15501,9 +15589,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -15734,9 +15825,12 @@ namespace CppSharp @@ -15734,9 +15825,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -15977,9 +16071,12 @@ namespace CppSharp @@ -15977,9 +16071,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -16152,9 +16249,12 @@ namespace CppSharp @@ -16152,9 +16249,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -16306,9 +16406,12 @@ namespace CppSharp @@ -16306,9 +16406,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]
@ -16968,9 +17071,12 @@ namespace CppSharp @@ -16968,9 +17071,12 @@ namespace CppSharp
internal global::CppSharp.Parser.AST.DeclarationKind kind;
[FieldOffset(4)]
internal int maxFieldAlignment;
internal int alignAs;
[FieldOffset(8)]
internal int maxFieldAlignment;
[FieldOffset(12)]
internal global::CppSharp.Parser.AST.AccessSpecifier access;
[FieldOffset(16)]

1
src/CppParser/Decl.h

@ -72,6 +72,7 @@ public: @@ -72,6 +72,7 @@ public:
~Declaration();
DeclarationKind kind;
int alignAs;
int maxFieldAlignment;
AccessSpecifier access;
DeclarationContext* _namespace;

15
src/CppParser/Parser.cpp

@ -1888,6 +1888,9 @@ Field* Parser::WalkFieldCXX(const clang::FieldDecl* FD, Class* Class) @@ -1888,6 +1888,9 @@ Field* Parser::WalkFieldCXX(const clang::FieldDecl* FD, Class* Class)
F->isBitField = FD->isBitField();
if (F->isBitField && !F->isDependent && !FD->getBitWidth()->isInstantiationDependent())
F->bitWidth = FD->getBitWidthValue(c->getASTContext());
if (auto alignedAttr = FD->getAttr<clang::AlignedAttr>())
F->alignAs = GetAlignAs(alignedAttr);
Class->Fields.push_back(F);
@ -4179,6 +4182,9 @@ Declaration* Parser::WalkDeclaration(const clang::Decl* D) @@ -4179,6 +4182,9 @@ Declaration* Parser::WalkDeclaration(const clang::Decl* D)
Decl->isDeprecated = true;
break;
}
case clang::attr::Kind::Aligned:
Decl->alignAs = GetAlignAs(cast<clang::AlignedAttr>(Attr));
break;
default:
break;
}
@ -4188,6 +4194,15 @@ Declaration* Parser::WalkDeclaration(const clang::Decl* D) @@ -4188,6 +4194,15 @@ Declaration* Parser::WalkDeclaration(const clang::Decl* D)
return Decl;
}
int Parser::GetAlignAs(const clang::AlignedAttr* alignedAttr)
{
return alignedAttr->isAlignas() &&
!alignedAttr->isAlignmentErrorDependent() &&
!alignedAttr->isAlignmentDependent()
? alignedAttr->getAlignment(c->getASTContext())
: 0;
}
void Parser::HandleDiagnostics(ParserResult* res)
{
auto DiagClient = (DiagnosticConsumer&) c->getDiagnosticClient();

1
src/CppParser/Parser.h

@ -140,6 +140,7 @@ private: @@ -140,6 +140,7 @@ private:
std::stack<clang::Scope> GetScopesFor(clang::FunctionDecl* FD);
void MarkValidity(Function* F);
void WalkFunction(const clang::FunctionDecl* FD, Function* F);
int GetAlignAs(const clang::AlignedAttr* alignedAttr);
void HandlePreprocessedEntities(Declaration* Decl);
void HandlePreprocessedEntities(Declaration* Decl, clang::SourceRange sourceRange,
MacroLocation macroLocation = MacroLocation::Unknown);

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

@ -3,6 +3,7 @@ using System.Collections.Generic; @@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Security.Permissions;
using System.Text;
using System.Text.RegularExpressions;
using CppSharp.AST;
@ -774,6 +775,15 @@ namespace CppSharp.Generators.CSharp @@ -774,6 +775,15 @@ namespace CppSharp.Generators.CSharp
if (@class.IsUnion)
return false;
foreach (var field in @class.Fields)
{
if (field.AlignAs != 0)
{
// https://github.com/dotnet/runtime/issues/22990
return false;
}
}
var fields = @class.Layout.Fields;
if (fields.Count > 1)
@ -782,6 +792,14 @@ namespace CppSharp.Generators.CSharp @@ -782,6 +792,14 @@ namespace CppSharp.Generators.CSharp
{
if (fields[i].Offset == fields[i - 1].Offset)
return false;
var type = fields[i].QualifiedType.Type.Desugar();
if (type.TryGetDeclaration(out Declaration declaration) && declaration.AlignAs != 0)
{
// https://github.com/dotnet/runtime/issues/9089
return false;
}
}
}
@ -812,14 +830,12 @@ namespace CppSharp.Generators.CSharp @@ -812,14 +830,12 @@ namespace CppSharp.Generators.CSharp
}
WriteLine(";");
// HACK: work around the lack of alignment in StructLayout
// it's been requested multiple times to no avail:
// https://github.com/dotnet/runtime/issues/5931, https://github.com/dotnet/runtime/issues/9089, https://github.com/dotnet/runtime/issues/22990
// Sometimes padding is needed due to aligment.
// The linux 32 bit target pads at the end the structure
// which is already handled by using [StructLayout(Size = n)].
// However the windows 32 bit target pads at the front,
// right after the vtable pointer, which is what we are handling here
// However the windows 32 bit target will add some of the padding at the front,
// right after the vtable pointer, which is what we are handling here.
// See https://github.com/dotnet/runtime/issues/44378 for more info.
if (sequentalLayout && fields[i].IsVTablePtr)
{
var nativePointerSize = Context.TargetInfo.PointerWidth / 8;

1
src/Parser/ASTConverter.cs

@ -985,6 +985,7 @@ namespace CppSharp @@ -985,6 +985,7 @@ namespace CppSharp
_decl.IsImplicit = decl.IsImplicit;
_decl.IsInvalid = decl.IsInvalid;
_decl.DefinitionOrder = decl.DefinitionOrder;
_decl.AlignAs = decl.AlignAs;
_decl.MaxFieldAlignment = decl.MaxFieldAlignment;
_decl.IsDeprecated = decl.IsDeprecated;

19
tests/CSharp/CSharp.Tests.cs

@ -1,7 +1,9 @@ @@ -1,7 +1,9 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Security;
using System.Text;
using CppSharp.Utils;
using CSharp;
@ -707,7 +709,7 @@ public unsafe class CSharpTests : GeneratorTestFixture @@ -707,7 +709,7 @@ public unsafe class CSharpTests : GeneratorTestFixture
}
[Test]
public void TestTemplateInternals()
public void TestAlignment()
{
foreach (var internalType in new[]
{
@ -724,6 +726,7 @@ public unsafe class CSharpTests : GeneratorTestFixture @@ -724,6 +726,7 @@ public unsafe class CSharpTests : GeneratorTestFixture
if (fieldOffset != null)
Assert.That(fieldOffset.Value, Is.EqualTo(0));
Assert.That((int)Marshal.OffsetOf(internalType, independentFields[0].Name), Is.EqualTo(0));
Assert.That(Marshal.SizeOf(internalType), Is.EqualTo(internalType.StructLayoutAttribute.Size));
}
foreach (var internalType in new Type[]
@ -743,6 +746,20 @@ public unsafe class CSharpTests : GeneratorTestFixture @@ -743,6 +746,20 @@ public unsafe class CSharpTests : GeneratorTestFixture
if (fieldOffsetValue != null)
Assert.That(fieldOffsetValue.Value, Is.EqualTo(Marshal.SizeOf(IntPtr.Zero)));
Assert.That((int)Marshal.OffsetOf(internalType, independentFields[1].Name), Is.EqualTo(Marshal.SizeOf(IntPtr.Zero)));
Assert.That(Marshal.SizeOf(internalType), Is.EqualTo(internalType.StructLayoutAttribute.Size));
}
foreach (var (type, offsets) in new (Type, int[])[] {
(typeof(ClassCustomTypeAlignment), CSharp.CSharp.ClassCustomTypeAlignmentOffsets),
(typeof(ClassCustomObjectAligment), CSharp.CSharp.ClassCustomObjectAligmentOffsets),
})
{
var internalType = type.GetNestedType("__Internal");
var managedOffsets = internalType.GetFields(BindingFlags.Instance | BindingFlags.NonPublic).Select(field =>
(int)Marshal.OffsetOf(internalType, field.Name)
);
Assert.That(managedOffsets, Is.EqualTo(offsets));
Assert.That(Marshal.SizeOf(internalType), Is.EqualTo(internalType.StructLayoutAttribute.Size));
}
}

35
tests/CSharp/CSharp.h

@ -1508,6 +1508,41 @@ struct DLL_API ConversionFunctions @@ -1508,6 +1508,41 @@ struct DLL_API ConversionFunctions
short field = 100;
};
struct DLL_API ClassCustomTypeAlignment
{
struct alignas(1) Align1 { };
struct alignas(8) Align8 { };
struct alignas(16) Align16 {
double a;
double b;
};
bool boolean;
Align16 align16;
Align1 align1;
double dbl;
Align8 align8;
};
static constexpr const int ClassCustomTypeAlignmentOffsets[] {
offsetof(ClassCustomTypeAlignment, boolean),
offsetof(ClassCustomTypeAlignment, align16),
offsetof(ClassCustomTypeAlignment, align1),
offsetof(ClassCustomTypeAlignment, dbl),
offsetof(ClassCustomTypeAlignment, align8),
};
struct DLL_API ClassCustomObjectAligment
{
bool boolean;
alignas(alignof(ClassCustomTypeAlignment)) char charAligned8;
};
static constexpr const int ClassCustomObjectAligmentOffsets[] {
offsetof(ClassCustomObjectAligment, boolean),
offsetof(ClassCustomObjectAligment, charAligned8),
};
DLL_API const char* TestCSharpString(const char* in, CS_OUT const char** out);
DLL_API const wchar_t* TestCSharpStringWide(const wchar_t* in, CS_OUT const wchar_t** out);
DLL_API const char16_t* TestCSharpString16(const char16_t* in, CS_OUT const char16_t** out);

Loading…
Cancel
Save