Skip to content

Commit 9071cd2

Browse files
Implement ClassTemplatePartialSpecialization::Parameters (#1809)
* Implement ClassTemplatePartialSpecialization::Parameters * Template.cs: Implement ClassTemplatePartialSpecialization.Parameters * GeneratorKind: fix bug introduced while migrating from enum to class * Implement native ClassTemplatePartialSpecialization.Parameters + ASTConverter * regenerated bindings (#1813) * regenerated bindings * regenerated bindings after rebase * Directory.Build.props: support C# 10.0 * Implement native ClassTemplatePartialSpecialization.Parameters + ASTConverter * Regenerated bindings * TestAST.cs: add TestASTClassTemplatePartialSpecialization
1 parent 2ecd952 commit 9071cd2

File tree

15 files changed

+379
-7
lines changed

15 files changed

+379
-7
lines changed

src/AST/Template.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,12 @@ public override string ToString()
304304
/// </summary>
305305
public class ClassTemplatePartialSpecialization : ClassTemplateSpecialization
306306
{
307+
public readonly List<Declaration> Parameters;
308+
309+
public ClassTemplatePartialSpecialization()
310+
{
311+
Parameters = new List<Declaration>();
312+
}
307313
}
308314

309315
/// <summary>

src/CppParser/AST.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -793,6 +793,8 @@ ClassTemplatePartialSpecialization::ClassTemplatePartialSpecialization()
793793

794794
ClassTemplatePartialSpecialization::~ClassTemplatePartialSpecialization() {}
795795

796+
DEF_VECTOR(ClassTemplatePartialSpecialization, Declaration*, Parameters)
797+
796798
FunctionTemplate::FunctionTemplate() : Template(DeclarationKind::FunctionTemplate) {}
797799

798800
FunctionTemplate::~FunctionTemplate() {}

src/CppParser/Bindings/CLI/Decl.cpp

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4514,6 +4514,26 @@ CppSharp::Parser::AST::ClassTemplatePartialSpecialization::ClassTemplatePartialS
45144514
NativePtr = new class ::CppSharp::CppParser::AST::ClassTemplatePartialSpecialization();
45154515
}
45164516

4517+
CppSharp::Parser::AST::Declaration^ CppSharp::Parser::AST::ClassTemplatePartialSpecialization::GetParameters(unsigned int i)
4518+
{
4519+
auto ___ret = ((class ::CppSharp::CppParser::AST::ClassTemplatePartialSpecialization*)NativePtr)->getParameters(i);
4520+
if (___ret == nullptr) return nullptr;
4521+
return (___ret == nullptr) ? nullptr : gcnew ::CppSharp::Parser::AST::Declaration((class ::CppSharp::CppParser::AST::Declaration*)___ret);
4522+
}
4523+
4524+
void CppSharp::Parser::AST::ClassTemplatePartialSpecialization::AddParameters(CppSharp::Parser::AST::Declaration^ s)
4525+
{
4526+
if (ReferenceEquals(s, nullptr))
4527+
throw gcnew ::System::ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
4528+
auto __arg0 = (class ::CppSharp::CppParser::AST::Declaration*)s->NativePtr;
4529+
((class ::CppSharp::CppParser::AST::ClassTemplatePartialSpecialization*)NativePtr)->addParameters(__arg0);
4530+
}
4531+
4532+
void CppSharp::Parser::AST::ClassTemplatePartialSpecialization::ClearParameters()
4533+
{
4534+
((class ::CppSharp::CppParser::AST::ClassTemplatePartialSpecialization*)NativePtr)->clearParameters();
4535+
}
4536+
45174537
CppSharp::Parser::AST::ClassTemplatePartialSpecialization::ClassTemplatePartialSpecialization(CppSharp::Parser::AST::ClassTemplatePartialSpecialization^ _0)
45184538
: CppSharp::Parser::AST::ClassTemplateSpecialization((::CppSharp::CppParser::AST::ClassTemplateSpecialization*)nullptr)
45194539
{
@@ -4524,6 +4544,35 @@ CppSharp::Parser::AST::ClassTemplatePartialSpecialization::ClassTemplatePartialS
45244544
NativePtr = new class ::CppSharp::CppParser::AST::ClassTemplatePartialSpecialization(__arg0);
45254545
}
45264546

4547+
::System::Collections::Generic::List<CppSharp::Parser::AST::Declaration^>^ CppSharp::Parser::AST::ClassTemplatePartialSpecialization::Parameters::get()
4548+
{
4549+
auto _tmp__Parameters = gcnew ::System::Collections::Generic::List<CppSharp::Parser::AST::Declaration^>();
4550+
auto __list0 = ((class ::CppSharp::CppParser::AST::ClassTemplatePartialSpecialization*)NativePtr)->Parameters;
4551+
for(auto _element : __list0)
4552+
{
4553+
auto _marshalElement = (_element == nullptr) ? nullptr : gcnew ::CppSharp::Parser::AST::Declaration((class ::CppSharp::CppParser::AST::Declaration*)_element);
4554+
_tmp__Parameters->Add(_marshalElement);
4555+
}
4556+
return _tmp__Parameters;
4557+
}
4558+
4559+
void CppSharp::Parser::AST::ClassTemplatePartialSpecialization::Parameters::set(::System::Collections::Generic::List<CppSharp::Parser::AST::Declaration^>^ value)
4560+
{
4561+
auto _tmpvalue = std::vector<::CppSharp::CppParser::AST::Declaration*>();
4562+
for each(CppSharp::Parser::AST::Declaration^ _element in value)
4563+
{
4564+
auto _marshalElement = (class ::CppSharp::CppParser::AST::Declaration*)_element->NativePtr;
4565+
_tmpvalue.push_back(_marshalElement);
4566+
}
4567+
((class ::CppSharp::CppParser::AST::ClassTemplatePartialSpecialization*)NativePtr)->Parameters = _tmpvalue;
4568+
}
4569+
4570+
unsigned int CppSharp::Parser::AST::ClassTemplatePartialSpecialization::ParametersCount::get()
4571+
{
4572+
auto ___ret = ((class ::CppSharp::CppParser::AST::ClassTemplatePartialSpecialization*)NativePtr)->getParametersCount();
4573+
return ___ret;
4574+
}
4575+
45274576
CppSharp::Parser::AST::FunctionTemplate::FunctionTemplate(class ::CppSharp::CppParser::AST::FunctionTemplate* native)
45284577
: CppSharp::Parser::AST::Template((::CppSharp::CppParser::AST::Template*)native)
45294578
{

src/CppParser/Bindings/CLI/Decl.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2205,6 +2205,23 @@ namespace CppSharp
22052205
ClassTemplatePartialSpecialization(CppSharp::Parser::AST::ClassTemplatePartialSpecialization^ _0);
22062206

22072207
~ClassTemplatePartialSpecialization();
2208+
2209+
property ::System::Collections::Generic::List<CppSharp::Parser::AST::Declaration^>^ Parameters
2210+
{
2211+
::System::Collections::Generic::List<CppSharp::Parser::AST::Declaration^>^ get();
2212+
void set(::System::Collections::Generic::List<CppSharp::Parser::AST::Declaration^>^);
2213+
}
2214+
2215+
property unsigned int ParametersCount
2216+
{
2217+
unsigned int get();
2218+
}
2219+
2220+
CppSharp::Parser::AST::Declaration^ GetParameters(unsigned int i);
2221+
2222+
void AddParameters(CppSharp::Parser::AST::Declaration^ s);
2223+
2224+
void ClearParameters();
22082225
};
22092226

22102227
public ref class FunctionTemplate : CppSharp::Parser::AST::Template

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

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13779,7 +13779,7 @@ public uint ArgumentsCount
1377913779

1378013780
public unsafe partial class ClassTemplatePartialSpecialization : global::CppSharp.Parser.AST.ClassTemplateSpecialization, IDisposable
1378113781
{
13782-
[StructLayout(LayoutKind.Sequential, Size = 328)]
13782+
[StructLayout(LayoutKind.Sequential, Size = 340)]
1378313783
public new partial struct __Internal
1378413784
{
1378513785
internal global::CppSharp.Parser.AST.DeclarationKind kind;
@@ -13834,6 +13834,7 @@ public unsafe partial class ClassTemplatePartialSpecialization : global::CppShar
1383413834
internal __IntPtr templatedDecl;
1383513835
internal global::Std.Vector.__Internalc__N_std_N___1_S_vector____N_CppSharp_N_CppParser_N_AST_S_TemplateArgument___N_std_N___1_S_allocator__S0_ Arguments;
1383613836
internal global::CppSharp.Parser.AST.TemplateSpecializationKind specializationKind;
13837+
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;
1383713838

1383813839
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST34ClassTemplatePartialSpecializationC2Ev", CallingConvention = __CallingConvention.Cdecl)]
1383913840
internal static extern void ctor(__IntPtr __instance);
@@ -13843,6 +13844,18 @@ public unsafe partial class ClassTemplatePartialSpecialization : global::CppShar
1384313844

1384413845
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST34ClassTemplatePartialSpecializationD2Ev", CallingConvention = __CallingConvention.Cdecl)]
1384513846
internal static extern void dtor(__IntPtr __instance);
13847+
13848+
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST34ClassTemplatePartialSpecialization13getParametersEj", CallingConvention = __CallingConvention.Cdecl)]
13849+
internal static extern __IntPtr GetParameters(__IntPtr __instance, uint i);
13850+
13851+
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST34ClassTemplatePartialSpecialization13addParametersERPNS1_11DeclarationE", CallingConvention = __CallingConvention.Cdecl)]
13852+
internal static extern void AddParameters(__IntPtr __instance, __IntPtr s);
13853+
13854+
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST34ClassTemplatePartialSpecialization15clearParametersEv", CallingConvention = __CallingConvention.Cdecl)]
13855+
internal static extern void ClearParameters(__IntPtr __instance);
13856+
13857+
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST34ClassTemplatePartialSpecialization18getParametersCountEv", CallingConvention = __CallingConvention.Cdecl)]
13858+
internal static extern uint GetParametersCount(__IntPtr __instance);
1384613859
}
1384713860

1384813861
internal static new ClassTemplatePartialSpecialization __CreateInstance(__IntPtr native, bool skipVTables = false)
@@ -13923,6 +13936,36 @@ internal protected override void Dispose(bool disposing, bool callNativeDtor)
1392313936
Marshal.FreeHGlobal(__Instance);
1392413937
__Instance = IntPtr.Zero;
1392513938
}
13939+
13940+
public global::CppSharp.Parser.AST.Declaration GetParameters(uint i)
13941+
{
13942+
var ___ret = __Internal.GetParameters(__Instance, i);
13943+
var __result0 = global::CppSharp.Parser.AST.Declaration.__GetOrCreateInstance(___ret, false);
13944+
return __result0;
13945+
}
13946+
13947+
public void AddParameters(global::CppSharp.Parser.AST.Declaration s)
13948+
{
13949+
if (ReferenceEquals(s, null))
13950+
throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
13951+
var ____arg0 = s.__Instance;
13952+
var __arg0 = new __IntPtr(&____arg0);
13953+
__Internal.AddParameters(__Instance, __arg0);
13954+
}
13955+
13956+
public void ClearParameters()
13957+
{
13958+
__Internal.ClearParameters(__Instance);
13959+
}
13960+
13961+
public uint ParametersCount
13962+
{
13963+
get
13964+
{
13965+
var ___ret = __Internal.GetParametersCount(__Instance);
13966+
return ___ret;
13967+
}
13968+
}
1392613969
}
1392713970

1392813971
public unsafe partial class FunctionTemplate : global::CppSharp.Parser.AST.Template, IDisposable

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

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13779,7 +13779,7 @@ public uint ArgumentsCount
1377913779

1378013780
public unsafe partial class ClassTemplatePartialSpecialization : global::CppSharp.Parser.AST.ClassTemplateSpecialization, IDisposable
1378113781
{
13782-
[StructLayout(LayoutKind.Sequential, Size = 360)]
13782+
[StructLayout(LayoutKind.Sequential, Size = 372)]
1378313783
public new partial struct __Internal
1378413784
{
1378513785
internal global::CppSharp.Parser.AST.DeclarationKind kind;
@@ -13834,6 +13834,7 @@ public unsafe partial class ClassTemplatePartialSpecialization : global::CppShar
1383413834
internal __IntPtr templatedDecl;
1383513835
internal global::Std.Vector.__Internalc__N_std_S_vector____N_CppSharp_N_CppParser_N_AST_S_TemplateArgument___N_std_S_allocator__S0_ Arguments;
1383613836
internal global::CppSharp.Parser.AST.TemplateSpecializationKind specializationKind;
13837+
internal global::Std.Vector.__Internalc__N_std_S_vector_____N_CppSharp_N_CppParser_N_AST_S_Declaration___N_std_S_allocator__S0_ Parameters;
1383713838

1383813839
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser.dll", EntryPoint = "??0ClassTemplatePartialSpecialization@AST@CppParser@CppSharp@@QAE@XZ", CallingConvention = __CallingConvention.ThisCall)]
1383913840
internal static extern __IntPtr ctor(__IntPtr __instance);
@@ -13843,6 +13844,18 @@ public unsafe partial class ClassTemplatePartialSpecialization : global::CppShar
1384313844

1384413845
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser.dll", EntryPoint = "??1ClassTemplatePartialSpecialization@AST@CppParser@CppSharp@@QAE@XZ", CallingConvention = __CallingConvention.ThisCall)]
1384513846
internal static extern void dtor(__IntPtr __instance);
13847+
13848+
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser.dll", EntryPoint = "?getParameters@ClassTemplatePartialSpecialization@AST@CppParser@CppSharp@@QAEPAVDeclaration@234@I@Z", CallingConvention = __CallingConvention.ThisCall)]
13849+
internal static extern __IntPtr GetParameters(__IntPtr __instance, uint i);
13850+
13851+
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser.dll", EntryPoint = "?addParameters@ClassTemplatePartialSpecialization@AST@CppParser@CppSharp@@QAEXAAPAVDeclaration@234@@Z", CallingConvention = __CallingConvention.ThisCall)]
13852+
internal static extern void AddParameters(__IntPtr __instance, __IntPtr s);
13853+
13854+
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser.dll", EntryPoint = "?clearParameters@ClassTemplatePartialSpecialization@AST@CppParser@CppSharp@@QAEXXZ", CallingConvention = __CallingConvention.ThisCall)]
13855+
internal static extern void ClearParameters(__IntPtr __instance);
13856+
13857+
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser.dll", EntryPoint = "?getParametersCount@ClassTemplatePartialSpecialization@AST@CppParser@CppSharp@@QAEIXZ", CallingConvention = __CallingConvention.ThisCall)]
13858+
internal static extern uint GetParametersCount(__IntPtr __instance);
1384613859
}
1384713860

1384813861
internal static new ClassTemplatePartialSpecialization __CreateInstance(__IntPtr native, bool skipVTables = false)
@@ -13923,6 +13936,36 @@ internal protected override void Dispose(bool disposing, bool callNativeDtor)
1392313936
Marshal.FreeHGlobal(__Instance);
1392413937
__Instance = IntPtr.Zero;
1392513938
}
13939+
13940+
public global::CppSharp.Parser.AST.Declaration GetParameters(uint i)
13941+
{
13942+
var ___ret = __Internal.GetParameters(__Instance, i);
13943+
var __result0 = global::CppSharp.Parser.AST.Declaration.__GetOrCreateInstance(___ret, false);
13944+
return __result0;
13945+
}
13946+
13947+
public void AddParameters(global::CppSharp.Parser.AST.Declaration s)
13948+
{
13949+
if (ReferenceEquals(s, null))
13950+
throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
13951+
var ____arg0 = s.__Instance;
13952+
var __arg0 = new __IntPtr(&____arg0);
13953+
__Internal.AddParameters(__Instance, __arg0);
13954+
}
13955+
13956+
public void ClearParameters()
13957+
{
13958+
__Internal.ClearParameters(__Instance);
13959+
}
13960+
13961+
public uint ParametersCount
13962+
{
13963+
get
13964+
{
13965+
var ___ret = __Internal.GetParametersCount(__Instance);
13966+
return ___ret;
13967+
}
13968+
}
1392613969
}
1392713970

1392813971
public unsafe partial class FunctionTemplate : global::CppSharp.Parser.AST.Template, IDisposable

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

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13778,7 +13778,7 @@ public uint ArgumentsCount
1377813778

1377913779
public unsafe partial class ClassTemplatePartialSpecialization : global::CppSharp.Parser.AST.ClassTemplateSpecialization, IDisposable
1378013780
{
13781-
[StructLayout(LayoutKind.Sequential, Size = 608)]
13781+
[StructLayout(LayoutKind.Sequential, Size = 632)]
1378213782
public new partial struct __Internal
1378313783
{
1378413784
internal global::CppSharp.Parser.AST.DeclarationKind kind;
@@ -13833,6 +13833,7 @@ public unsafe partial class ClassTemplatePartialSpecialization : global::CppShar
1383313833
internal __IntPtr templatedDecl;
1383413834
internal global::Std.Vector.__Internalc__N_std_N___1_S_vector____N_CppSharp_N_CppParser_N_AST_S_TemplateArgument___N_std_N___1_S_allocator__S0_ Arguments;
1383513835
internal global::CppSharp.Parser.AST.TemplateSpecializationKind specializationKind;
13836+
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;
1383613837

1383713838
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST34ClassTemplatePartialSpecializationC2Ev", CallingConvention = __CallingConvention.Cdecl)]
1383813839
internal static extern void ctor(__IntPtr __instance);
@@ -13842,6 +13843,18 @@ public unsafe partial class ClassTemplatePartialSpecialization : global::CppShar
1384213843

1384313844
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST34ClassTemplatePartialSpecializationD2Ev", CallingConvention = __CallingConvention.Cdecl)]
1384413845
internal static extern void dtor(__IntPtr __instance);
13846+
13847+
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST34ClassTemplatePartialSpecialization13getParametersEj", CallingConvention = __CallingConvention.Cdecl)]
13848+
internal static extern __IntPtr GetParameters(__IntPtr __instance, uint i);
13849+
13850+
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST34ClassTemplatePartialSpecialization13addParametersERPNS1_11DeclarationE", CallingConvention = __CallingConvention.Cdecl)]
13851+
internal static extern void AddParameters(__IntPtr __instance, __IntPtr s);
13852+
13853+
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST34ClassTemplatePartialSpecialization15clearParametersEv", CallingConvention = __CallingConvention.Cdecl)]
13854+
internal static extern void ClearParameters(__IntPtr __instance);
13855+
13856+
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST34ClassTemplatePartialSpecialization18getParametersCountEv", CallingConvention = __CallingConvention.Cdecl)]
13857+
internal static extern uint GetParametersCount(__IntPtr __instance);
1384513858
}
1384613859

1384713860
internal static new ClassTemplatePartialSpecialization __CreateInstance(__IntPtr native, bool skipVTables = false)
@@ -13922,6 +13935,36 @@ internal protected override void Dispose(bool disposing, bool callNativeDtor)
1392213935
Marshal.FreeHGlobal(__Instance);
1392313936
__Instance = IntPtr.Zero;
1392413937
}
13938+
13939+
public global::CppSharp.Parser.AST.Declaration GetParameters(uint i)
13940+
{
13941+
var ___ret = __Internal.GetParameters(__Instance, i);
13942+
var __result0 = global::CppSharp.Parser.AST.Declaration.__GetOrCreateInstance(___ret, false);
13943+
return __result0;
13944+
}
13945+
13946+
public void AddParameters(global::CppSharp.Parser.AST.Declaration s)
13947+
{
13948+
if (ReferenceEquals(s, null))
13949+
throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
13950+
var ____arg0 = s.__Instance;
13951+
var __arg0 = new __IntPtr(&____arg0);
13952+
__Internal.AddParameters(__Instance, __arg0);
13953+
}
13954+
13955+
public void ClearParameters()
13956+
{
13957+
__Internal.ClearParameters(__Instance);
13958+
}
13959+
13960+
public uint ParametersCount
13961+
{
13962+
get
13963+
{
13964+
var ___ret = __Internal.GetParametersCount(__Instance);
13965+
return ___ret;
13966+
}
13967+
}
1392513968
}
1392613969

1392713970
public unsafe partial class FunctionTemplate : global::CppSharp.Parser.AST.Template, IDisposable

0 commit comments

Comments
 (0)