Browse Source

Fix some template declarations not setting namespace (#1913)

* Fix some template declarations not setting namespace

* throw on unsupported arch/platform

* Update bindings
pull/1916/head
Jelle 4 months ago committed by GitHub
parent
commit
fe7afc3b05
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      src/AST/Template.cs
  2. 4
      src/CLI/Generator.cs
  3. 5
      src/CppParser/AST.h
  4. 10
      src/CppParser/Bindings/CLI/Decl.cpp
  5. 6
      src/CppParser/Bindings/CLI/Decl.h
  6. 26
      src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs
  7. 22
      src/CppParser/Bindings/CSharp/i686-pc-win32-msvc-d/CppSharp.CppParser.cs
  8. 22
      src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs
  9. 26
      src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs
  10. 26
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs
  11. 26
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs
  12. 22
      src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc-d/CppSharp.CppParser.cs
  13. 22
      src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs
  14. 2
      src/CppParser/Decl.h
  15. 48
      src/CppParser/Parser.cpp
  16. 1
      src/CppParser/Parser.h
  17. 6
      src/Generator/Driver.cs
  18. 1
      src/Parser/ASTConverter.cs

2
src/AST/Template.cs

@ -180,6 +180,8 @@ namespace CppSharp.AST
{ {
return visitor.VisitTypeAliasTemplateDecl(this); return visitor.VisitTypeAliasTemplateDecl(this);
} }
public Declaration CanonicalDecl;
} }
/// <summary> /// <summary>

4
src/CLI/Generator.cs

@ -40,6 +40,8 @@ namespace CppSharp
case TargetArchitecture.WASM64: case TargetArchitecture.WASM64:
tripleBuilder.Append("wasm64-"); tripleBuilder.Append("wasm64-");
break; break;
default:
throw new ArgumentOutOfRangeException(nameof(options.Architecture), "Unsupported target architecture.");
} }
switch (options.Platform) switch (options.Platform)
@ -71,6 +73,8 @@ namespace CppSharp
abi = CppAbi.Itanium; abi = CppAbi.Itanium;
break; break;
} }
default:
throw new ArgumentOutOfRangeException(nameof(options.Platform), "Unsupported target platform.");
} }
triple = tripleBuilder.ToString(); triple = tripleBuilder.ToString();

5
src/CppParser/AST.h

@ -23,7 +23,10 @@ enum class ArchType
{ {
UnknownArch, UnknownArch,
x86, x86,
x86_64 x86_64,
aarch64,
aarch64_be,
aarch64_32
}; };
class CS_API NativeLibrary class CS_API NativeLibrary

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

@ -3915,6 +3915,16 @@ CppSharp::Parser::AST::TypeAliasTemplate::TypeAliasTemplate(CppSharp::Parser::AS
NativePtr = new class ::CppSharp::CppParser::AST::TypeAliasTemplate(__arg0); NativePtr = new class ::CppSharp::CppParser::AST::TypeAliasTemplate(__arg0);
} }
CppSharp::Parser::AST::Declaration^ CppSharp::Parser::AST::TypeAliasTemplate::CanonicalDecl::get()
{
return (((class ::CppSharp::CppParser::AST::TypeAliasTemplate*)NativePtr)->CanonicalDecl == nullptr) ? nullptr : gcnew ::CppSharp::Parser::AST::Declaration((class ::CppSharp::CppParser::AST::Declaration*)((class ::CppSharp::CppParser::AST::TypeAliasTemplate*)NativePtr)->CanonicalDecl);
}
void CppSharp::Parser::AST::TypeAliasTemplate::CanonicalDecl::set(CppSharp::Parser::AST::Declaration^ value)
{
((class ::CppSharp::CppParser::AST::TypeAliasTemplate*)NativePtr)->CanonicalDecl = (class ::CppSharp::CppParser::AST::Declaration*)value->NativePtr;
}
CppSharp::Parser::AST::TemplateParameter::TemplateParameter(class ::CppSharp::CppParser::AST::TemplateParameter* native) CppSharp::Parser::AST::TemplateParameter::TemplateParameter(class ::CppSharp::CppParser::AST::TemplateParameter* native)
: CppSharp::Parser::AST::Declaration((::CppSharp::CppParser::AST::Declaration*)native) : CppSharp::Parser::AST::Declaration((::CppSharp::CppParser::AST::Declaration*)native)
{ {

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

@ -1971,6 +1971,12 @@ namespace CppSharp
TypeAliasTemplate(CppSharp::Parser::AST::TypeAliasTemplate^ _0); TypeAliasTemplate(CppSharp::Parser::AST::TypeAliasTemplate^ _0);
~TypeAliasTemplate(); ~TypeAliasTemplate();
property CppSharp::Parser::AST::Declaration^ CanonicalDecl
{
CppSharp::Parser::AST::Declaration^ get();
void set(CppSharp::Parser::AST::Declaration^);
}
}; };
public ref class TemplateParameter : CppSharp::Parser::AST::Declaration public ref class TemplateParameter : CppSharp::Parser::AST::Declaration

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

@ -57,7 +57,10 @@ namespace CppSharp
{ {
UnknownArch = 0, UnknownArch = 0,
X86 = 1, X86 = 1,
X86_64 = 2 X86_64 = 2,
Aarch64 = 3,
Aarch64Be = 4,
Aarch64_32 = 5
} }
public unsafe partial class NativeLibrary : IDisposable public unsafe partial class NativeLibrary : IDisposable
@ -12580,7 +12583,7 @@ namespace CppSharp
public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Template, IDisposable public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Template, IDisposable
{ {
[StructLayout(LayoutKind.Sequential, Size = 132)] [StructLayout(LayoutKind.Sequential, Size = 136)]
public new partial struct __Internal public new partial struct __Internal
{ {
internal global::CppSharp.Parser.AST.DeclarationKind kind; internal global::CppSharp.Parser.AST.DeclarationKind kind;
@ -12607,6 +12610,7 @@ namespace CppSharp
internal __IntPtr comment; internal __IntPtr comment;
internal __IntPtr TemplatedDecl; internal __IntPtr TemplatedDecl;
internal global::Std.Vector.__Internalc__N_std_N___1_S_vector_____N_CppSharp_N_CppParser_N_AST_S_Declaration___N_std_N___1_S_allocator__S0_ Parameters; internal global::Std.Vector.__Internalc__N_std_N___1_S_vector_____N_CppSharp_N_CppParser_N_AST_S_Declaration___N_std_N___1_S_allocator__S0_ Parameters;
internal __IntPtr CanonicalDecl;
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST17TypeAliasTemplateC2Ev", CallingConvention = __CallingConvention.Cdecl)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST17TypeAliasTemplateC2Ev", CallingConvention = __CallingConvention.Cdecl)]
internal static extern void ctor(__IntPtr __instance); internal static extern void ctor(__IntPtr __instance);
@ -12696,6 +12700,20 @@ namespace CppSharp
Marshal.FreeHGlobal(__Instance); Marshal.FreeHGlobal(__Instance);
__Instance = IntPtr.Zero; __Instance = IntPtr.Zero;
} }
public global::CppSharp.Parser.AST.Declaration CanonicalDecl
{
get
{
var __result0 = global::CppSharp.Parser.AST.Declaration.__GetOrCreateInstance(((__Internal*)__Instance)->CanonicalDecl, false);
return __result0;
}
set
{
((__Internal*)__Instance)->CanonicalDecl = value is null ? __IntPtr.Zero : value.__Instance;
}
}
} }
public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Declaration, IDisposable public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Declaration, IDisposable
@ -15793,7 +15811,7 @@ namespace CppSharp
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContextD2Ev", CallingConvention = __CallingConvention.Cdecl)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContextD2Ev", CallingConvention = __CallingConvention.Cdecl)]
internal static extern void dtor(__IntPtr __instance); internal static extern void dtor(__IntPtr __instance);
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext18FindOrCreateModuleENSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE", CallingConvention = __CallingConvention.Cdecl)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext18FindOrCreateModuleERKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE", CallingConvention = __CallingConvention.Cdecl)]
internal static extern __IntPtr FindOrCreateModule(__IntPtr __instance, __IntPtr File); internal static extern __IntPtr FindOrCreateModule(__IntPtr __instance, __IntPtr File);
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext19getTranslationUnitsEj", CallingConvention = __CallingConvention.Cdecl)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext19getTranslationUnitsEj", CallingConvention = __CallingConvention.Cdecl)]
@ -15917,7 +15935,7 @@ namespace CppSharp
global::Std.BasicStringExtensions.Assign(__basicString0, File); global::Std.BasicStringExtensions.Assign(__basicString0, File);
var __arg0 = __basicString0.__Instance; var __arg0 = __basicString0.__Instance;
var ___ret = __Internal.FindOrCreateModule(__Instance, __arg0); var ___ret = __Internal.FindOrCreateModule(__Instance, __arg0);
__basicString0.Dispose(disposing: true, callNativeDtor:false); __basicString0.Dispose();
var __result0 = global::CppSharp.Parser.AST.TranslationUnit.__GetOrCreateInstance(___ret, false); var __result0 = global::CppSharp.Parser.AST.TranslationUnit.__GetOrCreateInstance(___ret, false);
return __result0; return __result0;
} }

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

@ -57,7 +57,10 @@ namespace CppSharp
{ {
UnknownArch = 0, UnknownArch = 0,
X86 = 1, X86 = 1,
X86_64 = 2 X86_64 = 2,
Aarch64 = 3,
Aarch64Be = 4,
Aarch64_32 = 5
} }
public unsafe partial class NativeLibrary : IDisposable public unsafe partial class NativeLibrary : IDisposable
@ -12580,7 +12583,7 @@ namespace CppSharp
public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Template, IDisposable public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Template, IDisposable
{ {
[StructLayout(LayoutKind.Sequential, Size = 192)] [StructLayout(LayoutKind.Sequential, Size = 196)]
public new partial struct __Internal public new partial struct __Internal
{ {
internal global::CppSharp.Parser.AST.DeclarationKind kind; internal global::CppSharp.Parser.AST.DeclarationKind kind;
@ -12607,6 +12610,7 @@ namespace CppSharp
internal __IntPtr comment; internal __IntPtr comment;
internal __IntPtr TemplatedDecl; internal __IntPtr TemplatedDecl;
internal global::Std.Vector.__Internalc__N_std_S_vector_____N_CppSharp_N_CppParser_N_AST_S_Declaration___N_std_S_allocator__S0_ Parameters; internal global::Std.Vector.__Internalc__N_std_S_vector_____N_CppSharp_N_CppParser_N_AST_S_Declaration___N_std_S_allocator__S0_ Parameters;
internal __IntPtr CanonicalDecl;
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser.dll", EntryPoint = "??0TypeAliasTemplate@AST@CppParser@CppSharp@@QAE@XZ", CallingConvention = __CallingConvention.ThisCall)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser.dll", EntryPoint = "??0TypeAliasTemplate@AST@CppParser@CppSharp@@QAE@XZ", CallingConvention = __CallingConvention.ThisCall)]
internal static extern __IntPtr ctor(__IntPtr __instance); internal static extern __IntPtr ctor(__IntPtr __instance);
@ -12696,6 +12700,20 @@ namespace CppSharp
Marshal.FreeHGlobal(__Instance); Marshal.FreeHGlobal(__Instance);
__Instance = IntPtr.Zero; __Instance = IntPtr.Zero;
} }
public global::CppSharp.Parser.AST.Declaration CanonicalDecl
{
get
{
var __result0 = global::CppSharp.Parser.AST.Declaration.__GetOrCreateInstance(((__Internal*)__Instance)->CanonicalDecl, false);
return __result0;
}
set
{
((__Internal*)__Instance)->CanonicalDecl = value is null ? __IntPtr.Zero : value.__Instance;
}
}
} }
public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Declaration, IDisposable public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Declaration, IDisposable

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

@ -57,7 +57,10 @@ namespace CppSharp
{ {
UnknownArch = 0, UnknownArch = 0,
X86 = 1, X86 = 1,
X86_64 = 2 X86_64 = 2,
Aarch64 = 3,
Aarch64Be = 4,
Aarch64_32 = 5
} }
public unsafe partial class NativeLibrary : IDisposable public unsafe partial class NativeLibrary : IDisposable
@ -12580,7 +12583,7 @@ namespace CppSharp
public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Template, IDisposable public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Template, IDisposable
{ {
[StructLayout(LayoutKind.Sequential, Size = 168)] [StructLayout(LayoutKind.Sequential, Size = 172)]
public new partial struct __Internal public new partial struct __Internal
{ {
internal global::CppSharp.Parser.AST.DeclarationKind kind; internal global::CppSharp.Parser.AST.DeclarationKind kind;
@ -12607,6 +12610,7 @@ namespace CppSharp
internal __IntPtr comment; internal __IntPtr comment;
internal __IntPtr TemplatedDecl; internal __IntPtr TemplatedDecl;
internal global::Std.Vector.__Internalc__N_std_S_vector_____N_CppSharp_N_CppParser_N_AST_S_Declaration___N_std_S_allocator__S0_ Parameters; internal global::Std.Vector.__Internalc__N_std_S_vector_____N_CppSharp_N_CppParser_N_AST_S_Declaration___N_std_S_allocator__S0_ Parameters;
internal __IntPtr CanonicalDecl;
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser.dll", EntryPoint = "??0TypeAliasTemplate@AST@CppParser@CppSharp@@QAE@XZ", CallingConvention = __CallingConvention.ThisCall)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser.dll", EntryPoint = "??0TypeAliasTemplate@AST@CppParser@CppSharp@@QAE@XZ", CallingConvention = __CallingConvention.ThisCall)]
internal static extern __IntPtr ctor(__IntPtr __instance); internal static extern __IntPtr ctor(__IntPtr __instance);
@ -12696,6 +12700,20 @@ namespace CppSharp
Marshal.FreeHGlobal(__Instance); Marshal.FreeHGlobal(__Instance);
__Instance = IntPtr.Zero; __Instance = IntPtr.Zero;
} }
public global::CppSharp.Parser.AST.Declaration CanonicalDecl
{
get
{
var __result0 = global::CppSharp.Parser.AST.Declaration.__GetOrCreateInstance(((__Internal*)__Instance)->CanonicalDecl, false);
return __result0;
}
set
{
((__Internal*)__Instance)->CanonicalDecl = value is null ? __IntPtr.Zero : value.__Instance;
}
}
} }
public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Declaration, IDisposable public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Declaration, IDisposable

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

@ -57,7 +57,10 @@ namespace CppSharp
{ {
UnknownArch = 0, UnknownArch = 0,
X86 = 1, X86 = 1,
X86_64 = 2 X86_64 = 2,
Aarch64 = 3,
Aarch64Be = 4,
Aarch64_32 = 5
} }
public unsafe partial class NativeLibrary : IDisposable public unsafe partial class NativeLibrary : IDisposable
@ -12579,7 +12582,7 @@ namespace CppSharp
public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Template, IDisposable public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Template, IDisposable
{ {
[StructLayout(LayoutKind.Sequential, Size = 232)] [StructLayout(LayoutKind.Sequential, Size = 240)]
public new partial struct __Internal public new partial struct __Internal
{ {
internal global::CppSharp.Parser.AST.DeclarationKind kind; internal global::CppSharp.Parser.AST.DeclarationKind kind;
@ -12606,6 +12609,7 @@ namespace CppSharp
internal __IntPtr comment; internal __IntPtr comment;
internal __IntPtr TemplatedDecl; internal __IntPtr TemplatedDecl;
internal global::Std.Vector.__Internalc__N_std_N___1_S_vector_____N_CppSharp_N_CppParser_N_AST_S_Declaration___N_std_N___1_S_allocator__S0_ Parameters; internal global::Std.Vector.__Internalc__N_std_N___1_S_vector_____N_CppSharp_N_CppParser_N_AST_S_Declaration___N_std_N___1_S_allocator__S0_ Parameters;
internal __IntPtr CanonicalDecl;
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST17TypeAliasTemplateC2Ev", CallingConvention = __CallingConvention.Cdecl)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST17TypeAliasTemplateC2Ev", CallingConvention = __CallingConvention.Cdecl)]
internal static extern void ctor(__IntPtr __instance); internal static extern void ctor(__IntPtr __instance);
@ -12695,6 +12699,20 @@ namespace CppSharp
Marshal.FreeHGlobal(__Instance); Marshal.FreeHGlobal(__Instance);
__Instance = IntPtr.Zero; __Instance = IntPtr.Zero;
} }
public global::CppSharp.Parser.AST.Declaration CanonicalDecl
{
get
{
var __result0 = global::CppSharp.Parser.AST.Declaration.__GetOrCreateInstance(((__Internal*)__Instance)->CanonicalDecl, false);
return __result0;
}
set
{
((__Internal*)__Instance)->CanonicalDecl = value is null ? __IntPtr.Zero : value.__Instance;
}
}
} }
public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Declaration, IDisposable public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Declaration, IDisposable
@ -15792,7 +15810,7 @@ namespace CppSharp
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContextD2Ev", CallingConvention = __CallingConvention.Cdecl)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContextD2Ev", CallingConvention = __CallingConvention.Cdecl)]
internal static extern void dtor(__IntPtr __instance); internal static extern void dtor(__IntPtr __instance);
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext18FindOrCreateModuleENSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE", CallingConvention = __CallingConvention.Cdecl)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext18FindOrCreateModuleERKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE", CallingConvention = __CallingConvention.Cdecl)]
internal static extern __IntPtr FindOrCreateModule(__IntPtr __instance, __IntPtr File); internal static extern __IntPtr FindOrCreateModule(__IntPtr __instance, __IntPtr File);
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext19getTranslationUnitsEj", CallingConvention = __CallingConvention.Cdecl)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext19getTranslationUnitsEj", CallingConvention = __CallingConvention.Cdecl)]
@ -15916,7 +15934,7 @@ namespace CppSharp
global::Std.BasicStringExtensions.Assign(__basicString0, File); global::Std.BasicStringExtensions.Assign(__basicString0, File);
var __arg0 = __basicString0.__Instance; var __arg0 = __basicString0.__Instance;
var ___ret = __Internal.FindOrCreateModule(__Instance, __arg0); var ___ret = __Internal.FindOrCreateModule(__Instance, __arg0);
__basicString0.Dispose(disposing: true, callNativeDtor:false); __basicString0.Dispose();
var __result0 = global::CppSharp.Parser.AST.TranslationUnit.__GetOrCreateInstance(___ret, false); var __result0 = global::CppSharp.Parser.AST.TranslationUnit.__GetOrCreateInstance(___ret, false);
return __result0; return __result0;
} }

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

@ -57,7 +57,10 @@ namespace CppSharp
{ {
UnknownArch = 0, UnknownArch = 0,
X86 = 1, X86 = 1,
X86_64 = 2 X86_64 = 2,
Aarch64 = 3,
Aarch64Be = 4,
Aarch64_32 = 5
} }
public unsafe partial class NativeLibrary : IDisposable public unsafe partial class NativeLibrary : IDisposable
@ -12579,7 +12582,7 @@ namespace CppSharp
public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Template, IDisposable public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Template, IDisposable
{ {
[StructLayout(LayoutKind.Sequential, Size = 256)] [StructLayout(LayoutKind.Sequential, Size = 264)]
public new partial struct __Internal public new partial struct __Internal
{ {
internal global::CppSharp.Parser.AST.DeclarationKind kind; internal global::CppSharp.Parser.AST.DeclarationKind kind;
@ -12606,6 +12609,7 @@ namespace CppSharp
internal __IntPtr comment; internal __IntPtr comment;
internal __IntPtr TemplatedDecl; internal __IntPtr TemplatedDecl;
internal global::Std.Vector.__Internal Parameters; internal global::Std.Vector.__Internal Parameters;
internal __IntPtr CanonicalDecl;
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST17TypeAliasTemplateC2Ev", CallingConvention = __CallingConvention.Cdecl)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST17TypeAliasTemplateC2Ev", CallingConvention = __CallingConvention.Cdecl)]
internal static extern void ctor(__IntPtr __instance); internal static extern void ctor(__IntPtr __instance);
@ -12695,6 +12699,20 @@ namespace CppSharp
Marshal.FreeHGlobal(__Instance); Marshal.FreeHGlobal(__Instance);
__Instance = IntPtr.Zero; __Instance = IntPtr.Zero;
} }
public global::CppSharp.Parser.AST.Declaration CanonicalDecl
{
get
{
var __result0 = global::CppSharp.Parser.AST.Declaration.__GetOrCreateInstance(((__Internal*)__Instance)->CanonicalDecl, false);
return __result0;
}
set
{
((__Internal*)__Instance)->CanonicalDecl = value is null ? __IntPtr.Zero : value.__Instance;
}
}
} }
public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Declaration, IDisposable public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Declaration, IDisposable
@ -15792,7 +15810,7 @@ namespace CppSharp
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContextD2Ev", CallingConvention = __CallingConvention.Cdecl)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContextD2Ev", CallingConvention = __CallingConvention.Cdecl)]
internal static extern void dtor(__IntPtr __instance); internal static extern void dtor(__IntPtr __instance);
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext18FindOrCreateModuleENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", CallingConvention = __CallingConvention.Cdecl)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext18FindOrCreateModuleERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", CallingConvention = __CallingConvention.Cdecl)]
internal static extern __IntPtr FindOrCreateModule(__IntPtr __instance, __IntPtr File); internal static extern __IntPtr FindOrCreateModule(__IntPtr __instance, __IntPtr File);
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext19getTranslationUnitsEj", CallingConvention = __CallingConvention.Cdecl)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext19getTranslationUnitsEj", CallingConvention = __CallingConvention.Cdecl)]
@ -15916,7 +15934,7 @@ namespace CppSharp
global::Std.BasicStringExtensions.Assign(__basicString0, File); global::Std.BasicStringExtensions.Assign(__basicString0, File);
var __arg0 = __basicString0.__Instance; var __arg0 = __basicString0.__Instance;
var ___ret = __Internal.FindOrCreateModule(__Instance, __arg0); var ___ret = __Internal.FindOrCreateModule(__Instance, __arg0);
__basicString0.Dispose(disposing: true, callNativeDtor:false); __basicString0.Dispose();
var __result0 = global::CppSharp.Parser.AST.TranslationUnit.__GetOrCreateInstance(___ret, false); var __result0 = global::CppSharp.Parser.AST.TranslationUnit.__GetOrCreateInstance(___ret, false);
return __result0; return __result0;
} }

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

@ -57,7 +57,10 @@ namespace CppSharp
{ {
UnknownArch = 0, UnknownArch = 0,
X86 = 1, X86 = 1,
X86_64 = 2 X86_64 = 2,
Aarch64 = 3,
Aarch64Be = 4,
Aarch64_32 = 5
} }
public unsafe partial class NativeLibrary : IDisposable public unsafe partial class NativeLibrary : IDisposable
@ -12579,7 +12582,7 @@ namespace CppSharp
public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Template, IDisposable public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Template, IDisposable
{ {
[StructLayout(LayoutKind.Sequential, Size = 184)] [StructLayout(LayoutKind.Sequential, Size = 192)]
public new partial struct __Internal public new partial struct __Internal
{ {
internal global::CppSharp.Parser.AST.DeclarationKind kind; internal global::CppSharp.Parser.AST.DeclarationKind kind;
@ -12606,6 +12609,7 @@ namespace CppSharp
internal __IntPtr comment; internal __IntPtr comment;
internal __IntPtr TemplatedDecl; internal __IntPtr TemplatedDecl;
internal global::Std.Vector.__Internal Parameters; internal global::Std.Vector.__Internal Parameters;
internal __IntPtr CanonicalDecl;
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST17TypeAliasTemplateC2Ev", CallingConvention = __CallingConvention.Cdecl)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST17TypeAliasTemplateC2Ev", CallingConvention = __CallingConvention.Cdecl)]
internal static extern void ctor(__IntPtr __instance); internal static extern void ctor(__IntPtr __instance);
@ -12695,6 +12699,20 @@ namespace CppSharp
Marshal.FreeHGlobal(__Instance); Marshal.FreeHGlobal(__Instance);
__Instance = IntPtr.Zero; __Instance = IntPtr.Zero;
} }
public global::CppSharp.Parser.AST.Declaration CanonicalDecl
{
get
{
var __result0 = global::CppSharp.Parser.AST.Declaration.__GetOrCreateInstance(((__Internal*)__Instance)->CanonicalDecl, false);
return __result0;
}
set
{
((__Internal*)__Instance)->CanonicalDecl = value is null ? __IntPtr.Zero : value.__Instance;
}
}
} }
public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Declaration, IDisposable public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Declaration, IDisposable
@ -15792,7 +15810,7 @@ namespace CppSharp
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContextD2Ev", CallingConvention = __CallingConvention.Cdecl)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContextD2Ev", CallingConvention = __CallingConvention.Cdecl)]
internal static extern void dtor(__IntPtr __instance); internal static extern void dtor(__IntPtr __instance);
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext18FindOrCreateModuleESs", CallingConvention = __CallingConvention.Cdecl)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext18FindOrCreateModuleERKSs", CallingConvention = __CallingConvention.Cdecl)]
internal static extern __IntPtr FindOrCreateModule(__IntPtr __instance, __IntPtr File); internal static extern __IntPtr FindOrCreateModule(__IntPtr __instance, __IntPtr File);
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext19getTranslationUnitsEj", CallingConvention = __CallingConvention.Cdecl)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext19getTranslationUnitsEj", CallingConvention = __CallingConvention.Cdecl)]
@ -15916,7 +15934,7 @@ namespace CppSharp
global::Std.BasicStringExtensions.Assign(__basicString0, File); global::Std.BasicStringExtensions.Assign(__basicString0, File);
var __arg0 = __basicString0.__Instance; var __arg0 = __basicString0.__Instance;
var ___ret = __Internal.FindOrCreateModule(__Instance, __arg0); var ___ret = __Internal.FindOrCreateModule(__Instance, __arg0);
__basicString0.Dispose(disposing: true, callNativeDtor:false); __basicString0.Dispose();
var __result0 = global::CppSharp.Parser.AST.TranslationUnit.__GetOrCreateInstance(___ret, false); var __result0 = global::CppSharp.Parser.AST.TranslationUnit.__GetOrCreateInstance(___ret, false);
return __result0; return __result0;
} }

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

@ -57,7 +57,10 @@ namespace CppSharp
{ {
UnknownArch = 0, UnknownArch = 0,
X86 = 1, X86 = 1,
X86_64 = 2 X86_64 = 2,
Aarch64 = 3,
Aarch64Be = 4,
Aarch64_32 = 5
} }
public unsafe partial class NativeLibrary : IDisposable public unsafe partial class NativeLibrary : IDisposable
@ -12581,7 +12584,7 @@ namespace CppSharp
public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Template, IDisposable public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Template, IDisposable
{ {
[StructLayout(LayoutKind.Sequential, Size = 304)] [StructLayout(LayoutKind.Sequential, Size = 312)]
public new partial struct __Internal public new partial struct __Internal
{ {
internal global::CppSharp.Parser.AST.DeclarationKind kind; internal global::CppSharp.Parser.AST.DeclarationKind kind;
@ -12608,6 +12611,7 @@ namespace CppSharp
internal __IntPtr comment; internal __IntPtr comment;
internal __IntPtr TemplatedDecl; internal __IntPtr TemplatedDecl;
internal global::Std.Vector.__Internalc__N_std_S_vector_____N_CppSharp_N_CppParser_N_AST_S_Declaration___N_std_S_allocator__S0_ Parameters; internal global::Std.Vector.__Internalc__N_std_S_vector_____N_CppSharp_N_CppParser_N_AST_S_Declaration___N_std_S_allocator__S0_ Parameters;
internal __IntPtr CanonicalDecl;
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser.dll", EntryPoint = "??0TypeAliasTemplate@AST@CppParser@CppSharp@@QEAA@XZ", CallingConvention = __CallingConvention.Cdecl)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser.dll", EntryPoint = "??0TypeAliasTemplate@AST@CppParser@CppSharp@@QEAA@XZ", CallingConvention = __CallingConvention.Cdecl)]
internal static extern __IntPtr ctor(__IntPtr __instance); internal static extern __IntPtr ctor(__IntPtr __instance);
@ -12697,6 +12701,20 @@ namespace CppSharp
Marshal.FreeHGlobal(__Instance); Marshal.FreeHGlobal(__Instance);
__Instance = IntPtr.Zero; __Instance = IntPtr.Zero;
} }
public global::CppSharp.Parser.AST.Declaration CanonicalDecl
{
get
{
var __result0 = global::CppSharp.Parser.AST.Declaration.__GetOrCreateInstance(((__Internal*)__Instance)->CanonicalDecl, false);
return __result0;
}
set
{
((__Internal*)__Instance)->CanonicalDecl = value is null ? __IntPtr.Zero : value.__Instance;
}
}
} }
public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Declaration, IDisposable public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Declaration, IDisposable

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

@ -57,7 +57,10 @@ namespace CppSharp
{ {
UnknownArch = 0, UnknownArch = 0,
X86 = 1, X86 = 1,
X86_64 = 2 X86_64 = 2,
Aarch64 = 3,
Aarch64Be = 4,
Aarch64_32 = 5
} }
public unsafe partial class NativeLibrary : IDisposable public unsafe partial class NativeLibrary : IDisposable
@ -12581,7 +12584,7 @@ namespace CppSharp
public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Template, IDisposable public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Template, IDisposable
{ {
[StructLayout(LayoutKind.Sequential, Size = 256)] [StructLayout(LayoutKind.Sequential, Size = 264)]
public new partial struct __Internal public new partial struct __Internal
{ {
internal global::CppSharp.Parser.AST.DeclarationKind kind; internal global::CppSharp.Parser.AST.DeclarationKind kind;
@ -12608,6 +12611,7 @@ namespace CppSharp
internal __IntPtr comment; internal __IntPtr comment;
internal __IntPtr TemplatedDecl; internal __IntPtr TemplatedDecl;
internal global::Std.Vector.__Internalc__N_std_S_vector_____N_CppSharp_N_CppParser_N_AST_S_Declaration___N_std_S_allocator__S0_ Parameters; internal global::Std.Vector.__Internalc__N_std_S_vector_____N_CppSharp_N_CppParser_N_AST_S_Declaration___N_std_S_allocator__S0_ Parameters;
internal __IntPtr CanonicalDecl;
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser.dll", EntryPoint = "??0TypeAliasTemplate@AST@CppParser@CppSharp@@QEAA@XZ", CallingConvention = __CallingConvention.Cdecl)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser.dll", EntryPoint = "??0TypeAliasTemplate@AST@CppParser@CppSharp@@QEAA@XZ", CallingConvention = __CallingConvention.Cdecl)]
internal static extern __IntPtr ctor(__IntPtr __instance); internal static extern __IntPtr ctor(__IntPtr __instance);
@ -12697,6 +12701,20 @@ namespace CppSharp
Marshal.FreeHGlobal(__Instance); Marshal.FreeHGlobal(__Instance);
__Instance = IntPtr.Zero; __Instance = IntPtr.Zero;
} }
public global::CppSharp.Parser.AST.Declaration CanonicalDecl
{
get
{
var __result0 = global::CppSharp.Parser.AST.Declaration.__GetOrCreateInstance(((__Internal*)__Instance)->CanonicalDecl, false);
return __result0;
}
set
{
((__Internal*)__Instance)->CanonicalDecl = value is null ? __IntPtr.Zero : value.__Instance;
}
}
} }
public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Declaration, IDisposable public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Declaration, IDisposable

2
src/CppParser/Decl.h

@ -632,6 +632,8 @@ namespace CppSharp
public: public:
TypeAliasTemplate(); TypeAliasTemplate();
~TypeAliasTemplate(); ~TypeAliasTemplate();
Declaration* CanonicalDecl = nullptr;
}; };
class CS_API TemplateParameter : public Declaration class CS_API TemplateParameter : public Declaration

48
src/CppParser/Parser.cpp

@ -1474,12 +1474,17 @@ TemplateTemplateParameter* Parser::WalkTemplateTemplateParameter(const clang::Te
if (TP) if (TP)
return TP; return TP;
auto NS = GetNamespace(TTP);
assertm(NS, "Expected a valid namespace!\n");
TP = new TemplateTemplateParameter(); TP = new TemplateTemplateParameter();
HandleDeclaration(TTP, TP); HandleDeclaration(TTP, TP);
TP->_namespace = NS;
TP->Parameters = WalkTemplateParameterList(TTP->getTemplateParameters()); TP->Parameters = WalkTemplateParameterList(TTP->getTemplateParameters());
TP->isParameterPack = TTP->isParameterPack(); TP->isParameterPack = TTP->isParameterPack();
TP->isPackExpansion = TTP->isPackExpansion(); TP->isPackExpansion = TTP->isPackExpansion();
TP->isExpandedParameterPack = TTP->isExpandedParameterPack(); TP->isExpandedParameterPack = TTP->isExpandedParameterPack();
if (TTP->getTemplatedDecl()) if (TTP->getTemplatedDecl())
{ {
auto TD = WalkDeclaration(TTP->getTemplatedDecl()); auto TD = WalkDeclaration(TTP->getTemplatedDecl());
@ -1499,6 +1504,10 @@ TypeTemplateParameter* Parser::WalkTypeTemplateParameter(const clang::TemplateTy
TP = new TypeTemplateParameter(); TP = new TypeTemplateParameter();
TP->name = GetDeclName(TTPD); TP->name = GetDeclName(TTPD);
auto NS = GetNamespace(TTPD);
assertm(NS, "Expected a valid namespace!\n");
TP->_namespace = NS;
HandleDeclaration(TTPD, TP); HandleDeclaration(TTPD, TP);
if (TTPD->hasDefaultArgument()) if (TTPD->hasDefaultArgument())
TP->defaultArgument = GetQualifiedType(TTPD->getDefaultArgument()); TP->defaultArgument = GetQualifiedType(TTPD->getDefaultArgument());
@ -1519,6 +1528,10 @@ NonTypeTemplateParameter* Parser::WalkNonTypeTemplateParameter(const clang::NonT
NTP = new NonTypeTemplateParameter(); NTP = new NonTypeTemplateParameter();
NTP->name = GetDeclName(NTTPD); NTP->name = GetDeclName(NTTPD);
auto NS = GetNamespace(NTTPD);
assertm(NS, "Expected a valid namespace!\n");
NTP->_namespace = NS;
HandleDeclaration(NTTPD, NTP); HandleDeclaration(NTTPD, NTP);
if (NTTPD->hasDefaultArgument()) if (NTTPD->hasDefaultArgument())
NTP->defaultArgument = WalkExpressionObsolete(NTTPD->getDefaultArgument()); NTP->defaultArgument = WalkExpressionObsolete(NTTPD->getDefaultArgument());
@ -1677,8 +1690,9 @@ TypeAliasTemplate* Parser::WalkTypeAliasTemplate(
HandleDeclaration(TD, TA); HandleDeclaration(TD, TA);
TA->name = GetDeclName(TD); TA->name = GetDeclName(TD);
TA->_namespace = NS;
NS->Templates.push_back(TA); NS->Templates.push_back(TA);
TA->CanonicalDecl = WalkDeclaration(TD->getCanonicalDecl());
TA->TemplatedDecl = WalkDeclaration(TD->getTemplatedDecl()); TA->TemplatedDecl = WalkDeclaration(TD->getTemplatedDecl());
TA->Parameters = WalkTemplateParameterList(TD->getTemplateParameters()); TA->Parameters = WalkTemplateParameterList(TD->getTemplateParameters());
@ -2119,6 +2133,10 @@ DeclarationContext* Parser::GetNamespace(const clang::Decl* D,
if (Context->isTranslationUnit()) if (Context->isTranslationUnit())
return GetTranslationUnit(D); return GetTranslationUnit(D);
auto NS = walkedNamespaces[Context];
if (NS)
return NS;
TranslationUnit* Unit = GetTranslationUnit(cast<Decl>(Context)); TranslationUnit* Unit = GetTranslationUnit(cast<Decl>(Context));
// Else we need to do a more expensive check to get all the namespaces, // Else we need to do a more expensive check to get all the namespaces,
@ -2138,19 +2156,27 @@ DeclarationContext* Parser::GetNamespace(const clang::Decl* D,
{ {
const auto* Ctx = *I; const auto* Ctx = *I;
auto CtxNS = walkedNamespaces[Ctx];
if (CtxNS)
{
DC = CtxNS;
continue;
}
switch(Ctx->getDeclKind()) switch(Ctx->getDeclKind())
{ {
case Decl::Namespace: case Decl::Namespace:
{ {
auto ND = cast<NamespaceDecl>(Ctx); auto ND = cast<NamespaceDecl>(Ctx);
if (ND->isAnonymousNamespace()) if (ND->isAnonymousNamespace())
continue; break;
auto Name = ND->getName(); auto Name = ND->getName();
DC = DC->FindCreateNamespace(Name.str()); DC = DC->FindCreateNamespace(Name.str());
((Namespace*)DC)->isAnonymous = ND->isAnonymousNamespace(); ((Namespace*)DC)->isAnonymous = ND->isAnonymousNamespace();
((Namespace*)DC)->isInline = ND->isInline(); ((Namespace*)DC)->isInline = ND->isInline();
HandleDeclaration(ND, DC); HandleDeclaration(ND, DC);
continue; break;
} }
case Decl::LinkageSpec: case Decl::LinkageSpec:
{ {
@ -2161,7 +2187,7 @@ DeclarationContext* Parser::GetNamespace(const clang::Decl* D,
{ {
auto RD = cast<CXXRecordDecl>(Ctx); auto RD = cast<CXXRecordDecl>(Ctx);
DC = WalkRecordCXX(RD); DC = WalkRecordCXX(RD);
continue; break;
} }
case Decl::CXXDeductionGuide: case Decl::CXXDeductionGuide:
{ {
@ -2172,9 +2198,13 @@ DeclarationContext* Parser::GetNamespace(const clang::Decl* D,
auto D = cast<Decl>(Ctx); auto D = cast<Decl>(Ctx);
auto Decl = WalkDeclaration(D); auto Decl = WalkDeclaration(D);
DC = static_cast<DeclarationContext*>(Decl); DC = static_cast<DeclarationContext*>(Decl);
break;
} } } }
walkedNamespaces[Ctx] = DC;
} }
walkedNamespaces[Context] = DC;
return DC; return DC;
} }
@ -4637,8 +4667,16 @@ static ArchType ConvertArchType(unsigned int archType)
return ArchType::x86; return ArchType::x86;
case llvm::Triple::ArchType::x86_64: case llvm::Triple::ArchType::x86_64:
return ArchType::x86_64; return ArchType::x86_64;
case llvm::Triple::ArchType::aarch64:
return ArchType::aarch64;
case llvm::Triple::ArchType::aarch64_be:
return ArchType::aarch64_be;
case llvm::Triple::ArchType::aarch64_32:
return ArchType::aarch64_32;
default:
assertm(0, "Unsupported architecture type!\n");
return ArchType::UnknownArch;
} }
return ArchType::UnknownArch;
} }
template<class ELFT> template<class ELFT>

1
src/CppParser/Parser.h

@ -187,6 +187,7 @@ private:
std::unique_ptr<llvm::Module> LLVMModule; std::unique_ptr<llvm::Module> LLVMModule;
std::unique_ptr<clang::CodeGen::CodeGenModule> CGM; std::unique_ptr<clang::CodeGen::CodeGenModule> CGM;
std::unique_ptr<clang::CodeGen::CodeGenTypes> codeGenTypes; std::unique_ptr<clang::CodeGen::CodeGenTypes> codeGenTypes;
std::unordered_map<const clang::DeclContext*, AST::DeclarationContext*> walkedNamespaces;
std::unordered_map<const clang::TemplateTypeParmDecl*, AST::TypeTemplateParameter*> walkedTypeTemplateParameters; std::unordered_map<const clang::TemplateTypeParmDecl*, AST::TypeTemplateParameter*> walkedTypeTemplateParameters;
std::unordered_map<const clang::TemplateTemplateParmDecl*, AST::TemplateTemplateParameter*> walkedTemplateTemplateParameters; std::unordered_map<const clang::TemplateTemplateParmDecl*, AST::TemplateTemplateParameter*> walkedTemplateTemplateParameters;
std::unordered_map<const clang::NonTypeTemplateParmDecl*, AST::NonTypeTemplateParameter*> walkedNonTypeTemplateParameters; std::unordered_map<const clang::NonTypeTemplateParmDecl*, AST::NonTypeTemplateParameter*> walkedNonTypeTemplateParameters;

6
src/Generator/Driver.cs

@ -28,16 +28,14 @@ namespace CppSharp
void ValidateOptions() void ValidateOptions()
{ {
if (!Options.Compilation.Platform.HasValue) Options.Compilation.Platform ??= Platform.Host;
Options.Compilation.Platform = Platform.Host;
foreach (var module in Options.Modules) foreach (var module in Options.Modules)
{ {
if (string.IsNullOrWhiteSpace(module.LibraryName)) if (string.IsNullOrWhiteSpace(module.LibraryName))
throw new InvalidOptionException("One of your modules has no library name."); throw new InvalidOptionException("One of your modules has no library name.");
if (module.OutputNamespace == null) module.OutputNamespace ??= module.LibraryName;
module.OutputNamespace = module.LibraryName;
for (int i = 0; i < module.IncludeDirs.Count; i++) for (int i = 0; i < module.IncludeDirs.Count; i++)
{ {

1
src/Parser/ASTConverter.cs

@ -1818,6 +1818,7 @@ namespace CppSharp
{ {
var _decl = new AST.TypeAliasTemplate(); var _decl = new AST.TypeAliasTemplate();
VisitTemplate(decl, _decl); VisitTemplate(decl, _decl);
_decl.CanonicalDecl = Visit(decl.CanonicalDecl);
return _decl; return _decl;
} }

Loading…
Cancel
Save