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 9 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
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 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)] [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 _;
} }
namespace _
public unsafe partial struct _
{ {
[StructLayout(LayoutKind.Explicit, Size = 12)] [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)] [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)] [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)] [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 namespace Long
@ -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 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)] [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)] [FieldOffset(1)]
internal fixed sbyte __data_[11]; internal fixed sbyte __data_[11];
} }
namespace _
public unsafe partial struct _
{ {
[StructLayout(LayoutKind.Explicit, Size = 1)] [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)] [FieldOffset(0)]
internal byte __size_; internal byte __size_;
@ -790,6 +789,7 @@ namespace Std
} }
} }
} }
namespace Raw namespace Raw

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

@ -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 _; 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 namespace Long
@ -759,6 +776,20 @@ namespace Std
internal fixed sbyte __data_[23]; 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 namespace Raw

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

@ -271,19 +271,26 @@ namespace CppSharp.Generators.CSharp
GenerateClassInternals(specialization); GenerateClassInternals(specialization);
foreach (var group in generated.SelectMany(s => s.Classes).GroupBy(c => c.Name)) foreach (var group in generated.SelectMany(s => s.Classes).GroupBy(c => c.Name))
{ GenerateNestedInternals(group.Key, group);
WriteLine($"namespace {group.Key}");
WriteStartBraceIndent();
foreach (var nestedClass in group)
GenerateClassInternals(nestedClass);
WriteCloseBraceIndent();
NewLine();
}
WriteCloseBraceIndent(); WriteCloseBraceIndent();
PopBlock(NewLineKind.BeforeNextBlock); 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( private IEnumerable<ClassTemplateSpecialization> GetGenerated(
IList<ClassTemplateSpecialization> specializations) IList<ClassTemplateSpecialization> specializations)
{ {

Loading…
Cancel
Save