Browse Source

Handled any level of nesting when generating internals for specialisations in C#.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/998/head
Dimitar Dobrev 8 years ago
parent
commit
310f1110df
  1. 22
      src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/Std.cs
  2. 31
      src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/Std.cs
  3. 23
      src/Generator/Generators/CSharp/CSharpSources.cs

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

@ -725,26 +725,26 @@ namespace Std @@ -725,26 +725,26 @@ namespace Std
public unsafe partial struct __Internalc__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C
{
[FieldOffset(0)]
internal global::Std.BasicString.Rep._.__Internal _;
internal global::Std.BasicString.Rep._.__Internalc__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C _;
}
public unsafe partial struct _
namespace _
{
[StructLayout(LayoutKind.Explicit, Size = 12)]
public partial struct __Internal
public unsafe partial struct __Internalc__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C
{
[FieldOffset(0)]
internal global::Std.BasicString.Long.__Internal __l;
internal global::Std.BasicString.Long.__Internalc__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C __l;
[FieldOffset(0)]
internal global::Std.BasicString.Short.__Internal __s;
internal global::Std.BasicString.Short.__Internalc__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C __s;
[FieldOffset(0)]
internal global::Std.BasicString.Raw.__Internal __r;
internal global::Std.BasicString.Raw.__Internalc__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C __r;
}
}
}
namespace Long
@ -770,17 +770,16 @@ namespace Std @@ -770,17 +770,16 @@ namespace Std
public unsafe partial struct __Internalc__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C
{
[FieldOffset(0)]
internal global::Std.BasicString.Short._.__Internal _;
internal global::Std.BasicString.Short._.__Internalc__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C _;
[FieldOffset(1)]
internal fixed sbyte __data_[11];
}
public unsafe partial struct _
namespace _
{
[StructLayout(LayoutKind.Explicit, Size = 1)]
public partial struct __Internal
public unsafe partial struct __Internalc__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C
{
[FieldOffset(0)]
internal byte __size_;
@ -790,6 +789,7 @@ namespace Std @@ -790,6 +789,7 @@ namespace Std
}
}
}
namespace Raw

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

@ -728,6 +728,23 @@ namespace Std @@ -728,6 +728,23 @@ namespace Std
internal global::Std.BasicString.Rep._.__Internalc__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C _;
}
namespace _
{
[StructLayout(LayoutKind.Explicit, Size = 24)]
public unsafe partial struct __Internalc__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C
{
[FieldOffset(0)]
internal global::Std.BasicString.Long.__Internalc__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C __l;
[FieldOffset(0)]
internal global::Std.BasicString.Short.__Internalc__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C __s;
[FieldOffset(0)]
internal global::Std.BasicString.Raw.__Internalc__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C __r;
}
}
}
namespace Long
@ -759,6 +776,20 @@ namespace Std @@ -759,6 +776,20 @@ namespace Std
internal fixed sbyte __data_[23];
}
namespace _
{
[StructLayout(LayoutKind.Explicit, Size = 1)]
public unsafe partial struct __Internalc__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C
{
[FieldOffset(0)]
internal byte __size_;
[FieldOffset(0)]
internal sbyte __lx;
}
}
}
namespace Raw

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

@ -271,19 +271,26 @@ namespace CppSharp.Generators.CSharp @@ -271,19 +271,26 @@ namespace CppSharp.Generators.CSharp
GenerateClassInternals(specialization);
foreach (var group in generated.SelectMany(s => s.Classes).GroupBy(c => c.Name))
{
WriteLine($"namespace {group.Key}");
WriteStartBraceIndent();
foreach (var nestedClass in group)
GenerateClassInternals(nestedClass);
WriteCloseBraceIndent();
NewLine();
}
GenerateNestedInternals(group.Key, group);
WriteCloseBraceIndent();
PopBlock(NewLineKind.BeforeNextBlock);
}
private void GenerateNestedInternals(string name, IEnumerable<Class> nestedClasses)
{
WriteLine($"namespace {name}");
WriteStartBraceIndent();
foreach (var nestedClass in nestedClasses)
{
GenerateClassInternals(nestedClass);
foreach (var nestedInNested in nestedClass.Classes)
GenerateNestedInternals(nestedInNested.Name, new[] { nestedInNested });
}
WriteCloseBraceIndent();
NewLine();
}
private IEnumerable<ClassTemplateSpecialization> GetGenerated(
IList<ClassTemplateSpecialization> specializations)
{

Loading…
Cancel
Save