Browse Source

Made only really used classes internal.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/982/head
Dimitar Dobrev 8 years ago
parent
commit
7623adc9fb
  1. 163
      src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/Std.cs
  2. 163
      src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/Std.cs
  3. 294
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/Std.cs
  4. 310
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu/Std.cs
  5. 40
      src/Generator/Passes/MarkUsedClassInternalsPass.cs
  6. 8
      src/Generator/Passes/TrimSpecializationsPass.cs

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

@ -158,169 +158,6 @@ namespace Std @@ -158,169 +158,6 @@ namespace Std
}
}
public unsafe partial class DarwinFpControl
{
[StructLayout(LayoutKind.Explicit, Size = 2)]
public partial struct __Internal
{
[FieldOffset(0)]
internal ushort __invalid;
[FieldOffset(0)]
internal ushort __denorm;
[FieldOffset(0)]
internal ushort __zdiv;
[FieldOffset(0)]
internal ushort __ovrfl;
[FieldOffset(0)]
internal ushort __undfl;
[FieldOffset(0)]
internal ushort __precis;
[FieldOffset(0)]
internal ushort _;
[FieldOffset(1)]
internal ushort __pc;
[FieldOffset(1)]
internal ushort __rc;
[FieldOffset(1)]
internal ushort _1;
[FieldOffset(1)]
internal ushort _2;
}
}
public unsafe partial class DarwinFpStatus
{
[StructLayout(LayoutKind.Explicit, Size = 2)]
public partial struct __Internal
{
[FieldOffset(0)]
internal ushort __invalid;
[FieldOffset(0)]
internal ushort __denorm;
[FieldOffset(0)]
internal ushort __zdiv;
[FieldOffset(0)]
internal ushort __ovrfl;
[FieldOffset(0)]
internal ushort __undfl;
[FieldOffset(0)]
internal ushort __precis;
[FieldOffset(0)]
internal ushort __stkflt;
[FieldOffset(0)]
internal ushort __errsumm;
[FieldOffset(1)]
internal ushort __c0;
[FieldOffset(1)]
internal ushort __c1;
[FieldOffset(1)]
internal ushort __c2;
[FieldOffset(1)]
internal ushort __tos;
[FieldOffset(1)]
internal ushort __c3;
[FieldOffset(1)]
internal ushort __busy;
}
}
public unsafe partial class DarwinMmstReg
{
[StructLayout(LayoutKind.Explicit, Size = 16)]
public partial struct __Internal
{
[FieldOffset(0)]
internal fixed sbyte __mmst_reg[10];
[FieldOffset(10)]
internal fixed sbyte __mmst_rsrv[6];
}
}
public unsafe partial class DarwinXmmReg
{
[StructLayout(LayoutKind.Explicit, Size = 16)]
public partial struct __Internal
{
[FieldOffset(0)]
internal fixed sbyte __xmm_reg[16];
}
}
public unsafe partial struct Wait
{
[StructLayout(LayoutKind.Explicit, Size = 4)]
public partial struct __Internal
{
[FieldOffset(0)]
internal int w_status;
[FieldOffset(0)]
internal global::Wait._.__Internal w_T;
[FieldOffset(0)]
internal global::Wait.__.__Internal w_S;
}
public unsafe partial class _
{
[StructLayout(LayoutKind.Explicit, Size = 4)]
public partial struct __Internal
{
[FieldOffset(0)]
internal uint w_Termsig;
[FieldOffset(0)]
internal uint w_Coredump;
[FieldOffset(1)]
internal uint w_Retcode;
[FieldOffset(2)]
internal uint w_Filler;
}
}
public unsafe partial class __
{
[StructLayout(LayoutKind.Explicit, Size = 4)]
public partial struct __Internal
{
[FieldOffset(0)]
internal uint w_Stopval;
[FieldOffset(1)]
internal uint w_Stopsig;
[FieldOffset(2)]
internal uint w_Filler;
}
}
}
namespace Std
{
}

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

@ -158,169 +158,6 @@ namespace Std @@ -158,169 +158,6 @@ namespace Std
}
}
public unsafe partial class DarwinFpControl
{
[StructLayout(LayoutKind.Explicit, Size = 2)]
public partial struct __Internal
{
[FieldOffset(0)]
internal ushort __invalid;
[FieldOffset(0)]
internal ushort __denorm;
[FieldOffset(0)]
internal ushort __zdiv;
[FieldOffset(0)]
internal ushort __ovrfl;
[FieldOffset(0)]
internal ushort __undfl;
[FieldOffset(0)]
internal ushort __precis;
[FieldOffset(0)]
internal ushort _;
[FieldOffset(1)]
internal ushort __pc;
[FieldOffset(1)]
internal ushort __rc;
[FieldOffset(1)]
internal ushort _1;
[FieldOffset(1)]
internal ushort _2;
}
}
public unsafe partial class DarwinFpStatus
{
[StructLayout(LayoutKind.Explicit, Size = 2)]
public partial struct __Internal
{
[FieldOffset(0)]
internal ushort __invalid;
[FieldOffset(0)]
internal ushort __denorm;
[FieldOffset(0)]
internal ushort __zdiv;
[FieldOffset(0)]
internal ushort __ovrfl;
[FieldOffset(0)]
internal ushort __undfl;
[FieldOffset(0)]
internal ushort __precis;
[FieldOffset(0)]
internal ushort __stkflt;
[FieldOffset(0)]
internal ushort __errsumm;
[FieldOffset(1)]
internal ushort __c0;
[FieldOffset(1)]
internal ushort __c1;
[FieldOffset(1)]
internal ushort __c2;
[FieldOffset(1)]
internal ushort __tos;
[FieldOffset(1)]
internal ushort __c3;
[FieldOffset(1)]
internal ushort __busy;
}
}
public unsafe partial class DarwinMmstReg
{
[StructLayout(LayoutKind.Explicit, Size = 16)]
public partial struct __Internal
{
[FieldOffset(0)]
internal fixed sbyte __mmst_reg[10];
[FieldOffset(10)]
internal fixed sbyte __mmst_rsrv[6];
}
}
public unsafe partial class DarwinXmmReg
{
[StructLayout(LayoutKind.Explicit, Size = 16)]
public partial struct __Internal
{
[FieldOffset(0)]
internal fixed sbyte __xmm_reg[16];
}
}
public unsafe partial struct Wait
{
[StructLayout(LayoutKind.Explicit, Size = 4)]
public partial struct __Internal
{
[FieldOffset(0)]
internal int w_status;
[FieldOffset(0)]
internal global::Wait._.__Internal w_T;
[FieldOffset(0)]
internal global::Wait.__.__Internal w_S;
}
public unsafe partial class _
{
[StructLayout(LayoutKind.Explicit, Size = 4)]
public partial struct __Internal
{
[FieldOffset(0)]
internal uint w_Termsig;
[FieldOffset(0)]
internal uint w_Coredump;
[FieldOffset(1)]
internal uint w_Retcode;
[FieldOffset(2)]
internal uint w_Filler;
}
}
public unsafe partial class __
{
[StructLayout(LayoutKind.Explicit, Size = 4)]
public partial struct __Internal
{
[FieldOffset(0)]
internal uint w_Stopval;
[FieldOffset(1)]
internal uint w_Stopsig;
[FieldOffset(2)]
internal uint w_Filler;
}
}
}
namespace Std
{
}

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

@ -180,18 +180,6 @@ namespace Std @@ -180,18 +180,6 @@ namespace Std
namespace Std
{
public unsafe partial class BitIterator
{
[StructLayout(LayoutKind.Explicit, Size = 16)]
public partial struct __Internal
{
[FieldOffset(0)]
internal global::System.IntPtr _M_p;
[FieldOffset(8)]
internal uint _M_offset;
}
}
}
namespace Std
@ -324,32 +312,6 @@ namespace Std @@ -324,32 +312,6 @@ namespace Std
{
}
public unsafe partial class MbstateT
{
[StructLayout(LayoutKind.Explicit, Size = 8)]
public partial struct __Internal
{
[FieldOffset(0)]
internal int __count;
[FieldOffset(4)]
internal global::MbstateT._.__Internal __value;
}
public unsafe partial struct _
{
[StructLayout(LayoutKind.Explicit, Size = 4)]
public partial struct __Internal
{
[FieldOffset(0)]
internal uint __wch;
[FieldOffset(0)]
internal fixed sbyte __wchb[4];
}
}
}
namespace Std
{
namespace CharTraits
@ -427,172 +389,6 @@ namespace Std @@ -427,172 +389,6 @@ namespace Std
{
}
public unsafe partial class PthreadInternalList
{
[StructLayout(LayoutKind.Explicit, Size = 16)]
public partial struct __Internal
{
[FieldOffset(0)]
internal global::System.IntPtr __prev;
[FieldOffset(8)]
internal global::System.IntPtr __next;
}
}
public unsafe partial struct PthreadMutexT
{
[StructLayout(LayoutKind.Explicit, Size = 40)]
public partial struct __Internal
{
[FieldOffset(0)]
internal global::PthreadMutexT.PthreadMutexS.__Internal __data;
[FieldOffset(0)]
internal fixed sbyte __size[40];
[FieldOffset(0)]
internal long __align;
}
public unsafe partial class PthreadMutexS
{
[StructLayout(LayoutKind.Explicit, Size = 40)]
public partial struct __Internal
{
[FieldOffset(0)]
internal int __lock;
[FieldOffset(4)]
internal uint __count;
[FieldOffset(8)]
internal int __owner;
[FieldOffset(12)]
internal uint __nusers;
[FieldOffset(16)]
internal int __kind;
[FieldOffset(20)]
internal short __spins;
[FieldOffset(22)]
internal short __elision;
[FieldOffset(24)]
internal global::PthreadInternalList.__Internal __list;
}
}
}
public unsafe partial struct PthreadCondT
{
[StructLayout(LayoutKind.Explicit, Size = 48)]
public partial struct __Internal
{
[FieldOffset(0)]
internal global::PthreadCondT._.__Internal __data;
[FieldOffset(0)]
internal fixed sbyte __size[48];
[FieldOffset(0)]
internal long __align;
}
public unsafe partial class _
{
[StructLayout(LayoutKind.Explicit, Size = 48)]
public partial struct __Internal
{
[FieldOffset(0)]
internal int __lock;
[FieldOffset(4)]
internal uint __futex;
[FieldOffset(8)]
internal ulong __total_seq;
[FieldOffset(16)]
internal ulong __wakeup_seq;
[FieldOffset(24)]
internal ulong __woken_seq;
[FieldOffset(32)]
internal global::System.IntPtr __mutex;
[FieldOffset(40)]
internal uint __nwaiters;
[FieldOffset(44)]
internal uint __broadcast_seq;
}
}
}
public unsafe partial struct PthreadRwlockT
{
[StructLayout(LayoutKind.Explicit, Size = 56)]
public partial struct __Internal
{
[FieldOffset(0)]
internal global::PthreadRwlockT._.__Internal __data;
[FieldOffset(0)]
internal fixed sbyte __size[56];
[FieldOffset(0)]
internal long __align;
}
public unsafe partial class _
{
[StructLayout(LayoutKind.Explicit, Size = 56)]
public partial struct __Internal
{
[FieldOffset(0)]
internal int __lock;
[FieldOffset(4)]
internal uint __nr_readers;
[FieldOffset(8)]
internal uint __readers_wakeup;
[FieldOffset(12)]
internal uint __writer_wakeup;
[FieldOffset(16)]
internal uint __nr_readers_queued;
[FieldOffset(20)]
internal uint __nr_writers_queued;
[FieldOffset(24)]
internal int __writer;
[FieldOffset(28)]
internal int __shared;
[FieldOffset(32)]
internal sbyte __rwelision;
[FieldOffset(33)]
internal fixed byte __pad1[7];
[FieldOffset(40)]
internal ulong __pad2;
[FieldOffset(48)]
internal uint __flags;
}
}
}
namespace Std
{
public unsafe static partial class BasicStringExtensions
@ -761,106 +557,16 @@ namespace Std @@ -761,106 +557,16 @@ namespace Std
}
}
public unsafe partial struct Wait
{
[StructLayout(LayoutKind.Explicit, Size = 4)]
public partial struct __Internal
{
[FieldOffset(0)]
internal int w_status;
[FieldOffset(0)]
internal global::Wait._.__Internal __wait_terminated;
[FieldOffset(0)]
internal global::Wait.__.__Internal __wait_stopped;
}
public unsafe partial class _
{
[StructLayout(LayoutKind.Explicit, Size = 4)]
public partial struct __Internal
{
[FieldOffset(0)]
internal uint __w_termsig;
[FieldOffset(0)]
internal uint __w_coredump;
[FieldOffset(1)]
internal uint __w_retcode;
[FieldOffset(2)]
internal uint __;
}
}
public unsafe partial class __
{
[StructLayout(LayoutKind.Explicit, Size = 4)]
public partial struct __Internal
{
[FieldOffset(0)]
internal uint __w_stopval;
[FieldOffset(1)]
internal uint __w_stopsig;
[FieldOffset(2)]
internal uint __;
}
}
}
namespace Std
{
}
namespace Std
{
public unsafe partial class CowString
{
[StructLayout(LayoutKind.Explicit, Size = 8)]
public partial struct __Internal
{
[FieldOffset(0)]
internal global::Std.CowString._.__Internal _;
}
public unsafe partial struct _
{
[StructLayout(LayoutKind.Explicit, Size = 8)]
public partial struct __Internal
{
[FieldOffset(0)]
internal global::System.IntPtr _M_p;
[FieldOffset(0)]
internal fixed sbyte _M_bytes[8];
}
}
}
}
namespace Std
{
public unsafe partial class UsesAlloc0
{
[StructLayout(LayoutKind.Explicit, Size = 1)]
public partial struct __Internal
{
[FieldOffset(0)]
internal global::Std.UsesAlloc0.Sink.__Internal _M_a;
}
public unsafe partial class Sink
{
[StructLayout(LayoutKind.Explicit, Size = 0)]
public partial struct __Internal
{
}
}
}
}
namespace Std

310
src/CppParser/Bindings/CSharp/x86_64-linux-gnu/Std.cs

@ -189,18 +189,6 @@ namespace Std @@ -189,18 +189,6 @@ namespace Std
namespace Std
{
public unsafe partial class BitIterator
{
[StructLayout(LayoutKind.Explicit, Size = 16)]
public partial struct __Internal
{
[FieldOffset(0)]
internal global::System.IntPtr _M_p;
[FieldOffset(8)]
internal uint _M_offset;
}
}
}
namespace Std
@ -333,32 +321,6 @@ namespace Std @@ -333,32 +321,6 @@ namespace Std
{
}
public unsafe partial class MbstateT
{
[StructLayout(LayoutKind.Explicit, Size = 8)]
public partial struct __Internal
{
[FieldOffset(0)]
internal int __count;
[FieldOffset(4)]
internal global::MbstateT._.__Internal __value;
}
public unsafe partial struct _
{
[StructLayout(LayoutKind.Explicit, Size = 4)]
public partial struct __Internal
{
[FieldOffset(0)]
internal uint __wch;
[FieldOffset(0)]
internal fixed sbyte __wchb[4];
}
}
}
namespace Std
{
namespace CharTraits
@ -428,172 +390,6 @@ namespace Std @@ -428,172 +390,6 @@ namespace Std
}
}
public unsafe partial class PthreadInternalList
{
[StructLayout(LayoutKind.Explicit, Size = 16)]
public partial struct __Internal
{
[FieldOffset(0)]
internal global::System.IntPtr __prev;
[FieldOffset(8)]
internal global::System.IntPtr __next;
}
}
public unsafe partial struct PthreadMutexT
{
[StructLayout(LayoutKind.Explicit, Size = 40)]
public partial struct __Internal
{
[FieldOffset(0)]
internal global::PthreadMutexT.PthreadMutexS.__Internal __data;
[FieldOffset(0)]
internal fixed sbyte __size[40];
[FieldOffset(0)]
internal long __align;
}
public unsafe partial class PthreadMutexS
{
[StructLayout(LayoutKind.Explicit, Size = 40)]
public partial struct __Internal
{
[FieldOffset(0)]
internal int __lock;
[FieldOffset(4)]
internal uint __count;
[FieldOffset(8)]
internal int __owner;
[FieldOffset(12)]
internal uint __nusers;
[FieldOffset(16)]
internal int __kind;
[FieldOffset(20)]
internal short __spins;
[FieldOffset(22)]
internal short __elision;
[FieldOffset(24)]
internal global::PthreadInternalList.__Internal __list;
}
}
}
public unsafe partial struct PthreadCondT
{
[StructLayout(LayoutKind.Explicit, Size = 48)]
public partial struct __Internal
{
[FieldOffset(0)]
internal global::PthreadCondT._.__Internal __data;
[FieldOffset(0)]
internal fixed sbyte __size[48];
[FieldOffset(0)]
internal long __align;
}
public unsafe partial class _
{
[StructLayout(LayoutKind.Explicit, Size = 48)]
public partial struct __Internal
{
[FieldOffset(0)]
internal int __lock;
[FieldOffset(4)]
internal uint __futex;
[FieldOffset(8)]
internal ulong __total_seq;
[FieldOffset(16)]
internal ulong __wakeup_seq;
[FieldOffset(24)]
internal ulong __woken_seq;
[FieldOffset(32)]
internal global::System.IntPtr __mutex;
[FieldOffset(40)]
internal uint __nwaiters;
[FieldOffset(44)]
internal uint __broadcast_seq;
}
}
}
public unsafe partial struct PthreadRwlockT
{
[StructLayout(LayoutKind.Explicit, Size = 56)]
public partial struct __Internal
{
[FieldOffset(0)]
internal global::PthreadRwlockT._.__Internal __data;
[FieldOffset(0)]
internal fixed sbyte __size[56];
[FieldOffset(0)]
internal long __align;
}
public unsafe partial class _
{
[StructLayout(LayoutKind.Explicit, Size = 56)]
public partial struct __Internal
{
[FieldOffset(0)]
internal int __lock;
[FieldOffset(4)]
internal uint __nr_readers;
[FieldOffset(8)]
internal uint __readers_wakeup;
[FieldOffset(12)]
internal uint __writer_wakeup;
[FieldOffset(16)]
internal uint __nr_readers_queued;
[FieldOffset(20)]
internal uint __nr_writers_queued;
[FieldOffset(24)]
internal int __writer;
[FieldOffset(28)]
internal int __shared;
[FieldOffset(32)]
internal sbyte __rwelision;
[FieldOffset(33)]
internal fixed byte __pad1[7];
[FieldOffset(40)]
internal ulong __pad2;
[FieldOffset(48)]
internal uint __flags;
}
}
}
namespace Std
{
public unsafe static partial class BasicStringExtensions
@ -771,122 +567,16 @@ namespace Std @@ -771,122 +567,16 @@ namespace Std
}
}
public unsafe partial struct Wait
{
[StructLayout(LayoutKind.Explicit, Size = 4)]
public partial struct __Internal
{
[FieldOffset(0)]
internal int w_status;
[FieldOffset(0)]
internal global::Wait._.__Internal __wait_terminated;
[FieldOffset(0)]
internal global::Wait.__.__Internal __wait_stopped;
}
public unsafe partial class _
{
[StructLayout(LayoutKind.Explicit, Size = 4)]
public partial struct __Internal
{
[FieldOffset(0)]
internal uint __w_termsig;
[FieldOffset(0)]
internal uint __w_coredump;
[FieldOffset(1)]
internal uint __w_retcode;
[FieldOffset(2)]
internal uint __;
}
}
public unsafe partial class __
{
[StructLayout(LayoutKind.Explicit, Size = 4)]
public partial struct __Internal
{
[FieldOffset(0)]
internal uint __w_stopval;
[FieldOffset(1)]
internal uint __w_stopsig;
[FieldOffset(2)]
internal uint __;
}
}
}
namespace Std
{
}
namespace Std
{
public unsafe partial class SsoString
{
[StructLayout(LayoutKind.Explicit, Size = 32)]
public partial struct __Internal
{
[FieldOffset(0)]
internal global::Std.SsoString._.__Internal _;
}
public unsafe partial struct _
{
[StructLayout(LayoutKind.Explicit, Size = 32)]
public partial struct __Internal
{
[FieldOffset(0)]
internal global::Std.SsoString.Str.__Internal _M_s;
[FieldOffset(0)]
internal fixed sbyte _M_bytes[32];
}
}
public unsafe partial class Str
{
[StructLayout(LayoutKind.Explicit, Size = 32)]
public partial struct __Internal
{
[FieldOffset(0)]
internal global::System.IntPtr _M_p;
[FieldOffset(8)]
internal ulong _M_string_length;
[FieldOffset(16)]
internal fixed sbyte _M_local_buf[16];
}
}
}
}
namespace Std
{
public unsafe partial class UsesAlloc0
{
[StructLayout(LayoutKind.Explicit, Size = 1)]
public partial struct __Internal
{
[FieldOffset(0)]
internal global::Std.UsesAlloc0.Sink.__Internal _M_a;
}
public unsafe partial class Sink
{
[StructLayout(LayoutKind.Explicit, Size = 0)]
public partial struct __Internal
{
}
}
}
}
namespace Std

40
src/Generator/Passes/MarkUsedClassInternalsPass.cs

@ -1,4 +1,6 @@ @@ -1,4 +1,6 @@
using CppSharp.AST;
using System.Collections.Generic;
using System.Linq;
using CppSharp.AST;
using CppSharp.AST.Extensions;
namespace CppSharp.Passes
@ -8,6 +10,7 @@ namespace CppSharp.Passes @@ -8,6 +10,7 @@ namespace CppSharp.Passes
public MarkUsedClassInternalsPass()
{
VisitOptions.VisitClassBases = false;
VisitOptions.VisitClassFields = false;
VisitOptions.VisitClassMethods = false;
VisitOptions.VisitClassProperties = false;
VisitOptions.VisitEventParameters = false;
@ -20,28 +23,43 @@ namespace CppSharp.Passes @@ -20,28 +23,43 @@ namespace CppSharp.Passes
VisitOptions.VisitTemplateArguments = false;
}
public override bool VisitFieldDecl(Field field)
public override bool VisitClassDecl(Class @class)
{
if (!base.VisitDeclaration(field))
if (!base.VisitClassDecl(@class) || @class.Ignore || @class.IsDependent)
return false;
Class @class;
if (field.Type.TryGetClass(out @class) && @class.Ignore)
MarkUsedFieldTypes(@class, new HashSet<Class>());
return true;
}
private static void MarkUsedFieldTypes(Class @class, HashSet<Class> visitedClasses)
{
if (visitedClasses.Contains(@class))
return;
visitedClasses.Add(@class);
Class type = null;
foreach (var field in @class.Layout.Fields.Where(
f => f.QualifiedType.Type.TryGetClass(out type)))
{
DeclarationContext declarationContext = @class;
DeclarationContext declarationContext = type;
do
{
if (declarationContext.Ignore)
{
declarationContext.GenerationKind = GenerationKind.Internal;
var specialization = declarationContext as ClassTemplateSpecialization;
if (specialization?.TemplatedDecl.TemplatedClass.Ignore == true)
specialization.TemplatedDecl.TemplatedClass.GenerationKind = GenerationKind.Internal;
}
declarationContext = declarationContext.Namespace;
} while (declarationContext != null);
var specialization = @class as ClassTemplateSpecialization;
if (specialization?.TemplatedDecl.TemplatedClass.Ignore == true)
specialization.TemplatedDecl.TemplatedClass.GenerationKind = GenerationKind.Internal;
MarkUsedFieldTypes(type, visitedClasses);
}
return true;
}
}
}

8
src/Generator/Passes/TrimSpecializationsPass.cs

@ -95,11 +95,13 @@ namespace CppSharp.Passes @@ -95,11 +95,13 @@ namespace CppSharp.Passes
!specializations.Contains(s) && !internalSpecializations.Contains(s));
foreach (var specialization in template.Specializations.Where(
s => !s.IsExplicitlyGenerated &&
(s is ClassTemplatePartialSpecialization ||
internalSpecializations.Contains(s))))
s => s is ClassTemplatePartialSpecialization))
specialization.ExplicitlyIgnore();
foreach (var specialization in template.Specializations.Where(
s => !s.IsExplicitlyGenerated && internalSpecializations.Contains(s)))
specialization.GenerationKind = GenerationKind.Internal;
Func<TemplateArgument, bool> allPointers =
a => a.Type.Type != null && a.Type.Type.IsAddress();
var groups = (from specialization in template.Specializations

Loading…
Cancel
Save