Skip to content

Commit fe7afc3

Browse files
authored
Fix some template declarations not setting namespace (#1913)
* Fix some template declarations not setting namespace * throw on unsupported arch/platform * Update bindings
1 parent d53dfed commit fe7afc3

File tree

18 files changed

+243
-34
lines changed

18 files changed

+243
-34
lines changed

src/AST/Template.cs

+2
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,8 @@ public override T Visit<T>(IDeclVisitor<T> visitor)
180180
{
181181
return visitor.VisitTypeAliasTemplateDecl(this);
182182
}
183+
184+
public Declaration CanonicalDecl;
183185
}
184186

185187
/// <summary>

src/CLI/Generator.cs

+4
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ void SetupTargetTriple()
4040
case TargetArchitecture.WASM64:
4141
tripleBuilder.Append("wasm64-");
4242
break;
43+
default:
44+
throw new ArgumentOutOfRangeException(nameof(options.Architecture), "Unsupported target architecture.");
4345
}
4446

4547
switch (options.Platform)
@@ -71,6 +73,8 @@ void SetupTargetTriple()
7173
abi = CppAbi.Itanium;
7274
break;
7375
}
76+
default:
77+
throw new ArgumentOutOfRangeException(nameof(options.Platform), "Unsupported target platform.");
7478
}
7579

7680
triple = tripleBuilder.ToString();

src/CppParser/AST.h

+4-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@ enum class ArchType
2323
{
2424
UnknownArch,
2525
x86,
26-
x86_64
26+
x86_64,
27+
aarch64,
28+
aarch64_be,
29+
aarch64_32
2730
};
2831

2932
class CS_API NativeLibrary

src/CppParser/Bindings/CLI/Decl.cpp

+10
Original file line numberDiff line numberDiff line change
@@ -3915,6 +3915,16 @@ CppSharp::Parser::AST::TypeAliasTemplate::TypeAliasTemplate(CppSharp::Parser::AS
39153915
NativePtr = new class ::CppSharp::CppParser::AST::TypeAliasTemplate(__arg0);
39163916
}
39173917

3918+
CppSharp::Parser::AST::Declaration^ CppSharp::Parser::AST::TypeAliasTemplate::CanonicalDecl::get()
3919+
{
3920+
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);
3921+
}
3922+
3923+
void CppSharp::Parser::AST::TypeAliasTemplate::CanonicalDecl::set(CppSharp::Parser::AST::Declaration^ value)
3924+
{
3925+
((class ::CppSharp::CppParser::AST::TypeAliasTemplate*)NativePtr)->CanonicalDecl = (class ::CppSharp::CppParser::AST::Declaration*)value->NativePtr;
3926+
}
3927+
39183928
CppSharp::Parser::AST::TemplateParameter::TemplateParameter(class ::CppSharp::CppParser::AST::TemplateParameter* native)
39193929
: CppSharp::Parser::AST::Declaration((::CppSharp::CppParser::AST::Declaration*)native)
39203930
{

src/CppParser/Bindings/CLI/Decl.h

+6
Original file line numberDiff line numberDiff line change
@@ -1971,6 +1971,12 @@ namespace CppSharp
19711971
TypeAliasTemplate(CppSharp::Parser::AST::TypeAliasTemplate^ _0);
19721972

19731973
~TypeAliasTemplate();
1974+
1975+
property CppSharp::Parser::AST::Declaration^ CanonicalDecl
1976+
{
1977+
CppSharp::Parser::AST::Declaration^ get();
1978+
void set(CppSharp::Parser::AST::Declaration^);
1979+
}
19741980
};
19751981

19761982
public ref class TemplateParameter : CppSharp::Parser::AST::Declaration

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

+22-4
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,10 @@ public enum ArchType
5757
{
5858
UnknownArch = 0,
5959
X86 = 1,
60-
X86_64 = 2
60+
X86_64 = 2,
61+
Aarch64 = 3,
62+
Aarch64Be = 4,
63+
Aarch64_32 = 5
6164
}
6265

6366
public unsafe partial class NativeLibrary : IDisposable
@@ -12580,7 +12583,7 @@ public uint ParametersCount
1258012583

1258112584
public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Template, IDisposable
1258212585
{
12583-
[StructLayout(LayoutKind.Sequential, Size = 132)]
12586+
[StructLayout(LayoutKind.Sequential, Size = 136)]
1258412587
public new partial struct __Internal
1258512588
{
1258612589
internal global::CppSharp.Parser.AST.DeclarationKind kind;
@@ -12607,6 +12610,7 @@ public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Temp
1260712610
internal __IntPtr comment;
1260812611
internal __IntPtr TemplatedDecl;
1260912612
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;
12613+
internal __IntPtr CanonicalDecl;
1261012614

1261112615
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST17TypeAliasTemplateC2Ev", CallingConvention = __CallingConvention.Cdecl)]
1261212616
internal static extern void ctor(__IntPtr __instance);
@@ -12696,6 +12700,20 @@ internal protected override void Dispose(bool disposing, bool callNativeDtor)
1269612700
Marshal.FreeHGlobal(__Instance);
1269712701
__Instance = IntPtr.Zero;
1269812702
}
12703+
12704+
public global::CppSharp.Parser.AST.Declaration CanonicalDecl
12705+
{
12706+
get
12707+
{
12708+
var __result0 = global::CppSharp.Parser.AST.Declaration.__GetOrCreateInstance(((__Internal*)__Instance)->CanonicalDecl, false);
12709+
return __result0;
12710+
}
12711+
12712+
set
12713+
{
12714+
((__Internal*)__Instance)->CanonicalDecl = value is null ? __IntPtr.Zero : value.__Instance;
12715+
}
12716+
}
1269912717
}
1270012718

1270112719
public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Declaration, IDisposable
@@ -15793,7 +15811,7 @@ public partial struct __Internal
1579315811
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContextD2Ev", CallingConvention = __CallingConvention.Cdecl)]
1579415812
internal static extern void dtor(__IntPtr __instance);
1579515813

15796-
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext18FindOrCreateModuleENSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE", CallingConvention = __CallingConvention.Cdecl)]
15814+
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext18FindOrCreateModuleERKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE", CallingConvention = __CallingConvention.Cdecl)]
1579715815
internal static extern __IntPtr FindOrCreateModule(__IntPtr __instance, __IntPtr File);
1579815816

1579915817
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext19getTranslationUnitsEj", CallingConvention = __CallingConvention.Cdecl)]
@@ -15917,7 +15935,7 @@ internal protected virtual void Dispose(bool disposing, bool callNativeDtor)
1591715935
global::Std.BasicStringExtensions.Assign(__basicString0, File);
1591815936
var __arg0 = __basicString0.__Instance;
1591915937
var ___ret = __Internal.FindOrCreateModule(__Instance, __arg0);
15920-
__basicString0.Dispose(disposing: true, callNativeDtor:false);
15938+
__basicString0.Dispose();
1592115939
var __result0 = global::CppSharp.Parser.AST.TranslationUnit.__GetOrCreateInstance(___ret, false);
1592215940
return __result0;
1592315941
}

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

+20-2
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,10 @@ public enum ArchType
5757
{
5858
UnknownArch = 0,
5959
X86 = 1,
60-
X86_64 = 2
60+
X86_64 = 2,
61+
Aarch64 = 3,
62+
Aarch64Be = 4,
63+
Aarch64_32 = 5
6164
}
6265

6366
public unsafe partial class NativeLibrary : IDisposable
@@ -12580,7 +12583,7 @@ public uint ParametersCount
1258012583

1258112584
public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Template, IDisposable
1258212585
{
12583-
[StructLayout(LayoutKind.Sequential, Size = 192)]
12586+
[StructLayout(LayoutKind.Sequential, Size = 196)]
1258412587
public new partial struct __Internal
1258512588
{
1258612589
internal global::CppSharp.Parser.AST.DeclarationKind kind;
@@ -12607,6 +12610,7 @@ public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Temp
1260712610
internal __IntPtr comment;
1260812611
internal __IntPtr TemplatedDecl;
1260912612
internal global::Std.Vector.__Internalc__N_std_S_vector_____N_CppSharp_N_CppParser_N_AST_S_Declaration___N_std_S_allocator__S0_ Parameters;
12613+
internal __IntPtr CanonicalDecl;
1261012614

1261112615
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser.dll", EntryPoint = "??0TypeAliasTemplate@AST@CppParser@CppSharp@@QAE@XZ", CallingConvention = __CallingConvention.ThisCall)]
1261212616
internal static extern __IntPtr ctor(__IntPtr __instance);
@@ -12696,6 +12700,20 @@ internal protected override void Dispose(bool disposing, bool callNativeDtor)
1269612700
Marshal.FreeHGlobal(__Instance);
1269712701
__Instance = IntPtr.Zero;
1269812702
}
12703+
12704+
public global::CppSharp.Parser.AST.Declaration CanonicalDecl
12705+
{
12706+
get
12707+
{
12708+
var __result0 = global::CppSharp.Parser.AST.Declaration.__GetOrCreateInstance(((__Internal*)__Instance)->CanonicalDecl, false);
12709+
return __result0;
12710+
}
12711+
12712+
set
12713+
{
12714+
((__Internal*)__Instance)->CanonicalDecl = value is null ? __IntPtr.Zero : value.__Instance;
12715+
}
12716+
}
1269912717
}
1270012718

1270112719
public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Declaration, IDisposable

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

+20-2
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,10 @@ public enum ArchType
5757
{
5858
UnknownArch = 0,
5959
X86 = 1,
60-
X86_64 = 2
60+
X86_64 = 2,
61+
Aarch64 = 3,
62+
Aarch64Be = 4,
63+
Aarch64_32 = 5
6164
}
6265

6366
public unsafe partial class NativeLibrary : IDisposable
@@ -12580,7 +12583,7 @@ public uint ParametersCount
1258012583

1258112584
public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Template, IDisposable
1258212585
{
12583-
[StructLayout(LayoutKind.Sequential, Size = 168)]
12586+
[StructLayout(LayoutKind.Sequential, Size = 172)]
1258412587
public new partial struct __Internal
1258512588
{
1258612589
internal global::CppSharp.Parser.AST.DeclarationKind kind;
@@ -12607,6 +12610,7 @@ public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Temp
1260712610
internal __IntPtr comment;
1260812611
internal __IntPtr TemplatedDecl;
1260912612
internal global::Std.Vector.__Internalc__N_std_S_vector_____N_CppSharp_N_CppParser_N_AST_S_Declaration___N_std_S_allocator__S0_ Parameters;
12613+
internal __IntPtr CanonicalDecl;
1261012614

1261112615
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser.dll", EntryPoint = "??0TypeAliasTemplate@AST@CppParser@CppSharp@@QAE@XZ", CallingConvention = __CallingConvention.ThisCall)]
1261212616
internal static extern __IntPtr ctor(__IntPtr __instance);
@@ -12696,6 +12700,20 @@ internal protected override void Dispose(bool disposing, bool callNativeDtor)
1269612700
Marshal.FreeHGlobal(__Instance);
1269712701
__Instance = IntPtr.Zero;
1269812702
}
12703+
12704+
public global::CppSharp.Parser.AST.Declaration CanonicalDecl
12705+
{
12706+
get
12707+
{
12708+
var __result0 = global::CppSharp.Parser.AST.Declaration.__GetOrCreateInstance(((__Internal*)__Instance)->CanonicalDecl, false);
12709+
return __result0;
12710+
}
12711+
12712+
set
12713+
{
12714+
((__Internal*)__Instance)->CanonicalDecl = value is null ? __IntPtr.Zero : value.__Instance;
12715+
}
12716+
}
1269912717
}
1270012718

1270112719
public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Declaration, IDisposable

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

+22-4
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,10 @@ public enum ArchType
5757
{
5858
UnknownArch = 0,
5959
X86 = 1,
60-
X86_64 = 2
60+
X86_64 = 2,
61+
Aarch64 = 3,
62+
Aarch64Be = 4,
63+
Aarch64_32 = 5
6164
}
6265

6366
public unsafe partial class NativeLibrary : IDisposable
@@ -12579,7 +12582,7 @@ public uint ParametersCount
1257912582

1258012583
public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Template, IDisposable
1258112584
{
12582-
[StructLayout(LayoutKind.Sequential, Size = 232)]
12585+
[StructLayout(LayoutKind.Sequential, Size = 240)]
1258312586
public new partial struct __Internal
1258412587
{
1258512588
internal global::CppSharp.Parser.AST.DeclarationKind kind;
@@ -12606,6 +12609,7 @@ public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Temp
1260612609
internal __IntPtr comment;
1260712610
internal __IntPtr TemplatedDecl;
1260812611
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;
12612+
internal __IntPtr CanonicalDecl;
1260912613

1261012614
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST17TypeAliasTemplateC2Ev", CallingConvention = __CallingConvention.Cdecl)]
1261112615
internal static extern void ctor(__IntPtr __instance);
@@ -12695,6 +12699,20 @@ internal protected override void Dispose(bool disposing, bool callNativeDtor)
1269512699
Marshal.FreeHGlobal(__Instance);
1269612700
__Instance = IntPtr.Zero;
1269712701
}
12702+
12703+
public global::CppSharp.Parser.AST.Declaration CanonicalDecl
12704+
{
12705+
get
12706+
{
12707+
var __result0 = global::CppSharp.Parser.AST.Declaration.__GetOrCreateInstance(((__Internal*)__Instance)->CanonicalDecl, false);
12708+
return __result0;
12709+
}
12710+
12711+
set
12712+
{
12713+
((__Internal*)__Instance)->CanonicalDecl = value is null ? __IntPtr.Zero : value.__Instance;
12714+
}
12715+
}
1269812716
}
1269912717

1270012718
public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Declaration, IDisposable
@@ -15792,7 +15810,7 @@ public partial struct __Internal
1579215810
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContextD2Ev", CallingConvention = __CallingConvention.Cdecl)]
1579315811
internal static extern void dtor(__IntPtr __instance);
1579415812

15795-
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext18FindOrCreateModuleENSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE", CallingConvention = __CallingConvention.Cdecl)]
15813+
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext18FindOrCreateModuleERKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE", CallingConvention = __CallingConvention.Cdecl)]
1579615814
internal static extern __IntPtr FindOrCreateModule(__IntPtr __instance, __IntPtr File);
1579715815

1579815816
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext19getTranslationUnitsEj", CallingConvention = __CallingConvention.Cdecl)]
@@ -15916,7 +15934,7 @@ internal protected virtual void Dispose(bool disposing, bool callNativeDtor)
1591615934
global::Std.BasicStringExtensions.Assign(__basicString0, File);
1591715935
var __arg0 = __basicString0.__Instance;
1591815936
var ___ret = __Internal.FindOrCreateModule(__Instance, __arg0);
15919-
__basicString0.Dispose(disposing: true, callNativeDtor:false);
15937+
__basicString0.Dispose();
1592015938
var __result0 = global::CppSharp.Parser.AST.TranslationUnit.__GetOrCreateInstance(___ret, false);
1592115939
return __result0;
1592215940
}

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

+22-4
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,10 @@ public enum ArchType
5757
{
5858
UnknownArch = 0,
5959
X86 = 1,
60-
X86_64 = 2
60+
X86_64 = 2,
61+
Aarch64 = 3,
62+
Aarch64Be = 4,
63+
Aarch64_32 = 5
6164
}
6265

6366
public unsafe partial class NativeLibrary : IDisposable
@@ -12579,7 +12582,7 @@ public uint ParametersCount
1257912582

1258012583
public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Template, IDisposable
1258112584
{
12582-
[StructLayout(LayoutKind.Sequential, Size = 256)]
12585+
[StructLayout(LayoutKind.Sequential, Size = 264)]
1258312586
public new partial struct __Internal
1258412587
{
1258512588
internal global::CppSharp.Parser.AST.DeclarationKind kind;
@@ -12606,6 +12609,7 @@ public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Temp
1260612609
internal __IntPtr comment;
1260712610
internal __IntPtr TemplatedDecl;
1260812611
internal global::Std.Vector.__Internal Parameters;
12612+
internal __IntPtr CanonicalDecl;
1260912613

1261012614
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST17TypeAliasTemplateC2Ev", CallingConvention = __CallingConvention.Cdecl)]
1261112615
internal static extern void ctor(__IntPtr __instance);
@@ -12695,6 +12699,20 @@ internal protected override void Dispose(bool disposing, bool callNativeDtor)
1269512699
Marshal.FreeHGlobal(__Instance);
1269612700
__Instance = IntPtr.Zero;
1269712701
}
12702+
12703+
public global::CppSharp.Parser.AST.Declaration CanonicalDecl
12704+
{
12705+
get
12706+
{
12707+
var __result0 = global::CppSharp.Parser.AST.Declaration.__GetOrCreateInstance(((__Internal*)__Instance)->CanonicalDecl, false);
12708+
return __result0;
12709+
}
12710+
12711+
set
12712+
{
12713+
((__Internal*)__Instance)->CanonicalDecl = value is null ? __IntPtr.Zero : value.__Instance;
12714+
}
12715+
}
1269812716
}
1269912717

1270012718
public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Declaration, IDisposable
@@ -15792,7 +15810,7 @@ public partial struct __Internal
1579215810
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContextD2Ev", CallingConvention = __CallingConvention.Cdecl)]
1579315811
internal static extern void dtor(__IntPtr __instance);
1579415812

15795-
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext18FindOrCreateModuleENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", CallingConvention = __CallingConvention.Cdecl)]
15813+
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext18FindOrCreateModuleERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", CallingConvention = __CallingConvention.Cdecl)]
1579615814
internal static extern __IntPtr FindOrCreateModule(__IntPtr __instance, __IntPtr File);
1579715815

1579815816
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST10ASTContext19getTranslationUnitsEj", CallingConvention = __CallingConvention.Cdecl)]
@@ -15916,7 +15934,7 @@ internal protected virtual void Dispose(bool disposing, bool callNativeDtor)
1591615934
global::Std.BasicStringExtensions.Assign(__basicString0, File);
1591715935
var __arg0 = __basicString0.__Instance;
1591815936
var ___ret = __Internal.FindOrCreateModule(__Instance, __arg0);
15919-
__basicString0.Dispose(disposing: true, callNativeDtor:false);
15937+
__basicString0.Dispose();
1592015938
var __result0 = global::CppSharp.Parser.AST.TranslationUnit.__GetOrCreateInstance(___ret, false);
1592115939
return __result0;
1592215940
}

0 commit comments

Comments
 (0)