Browse Source

Ignored the unused methods in system class templates.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/787/head
Dimitar Dobrev 9 years ago
parent
commit
a1cd57667b
  1. 28
      src/Generator/Passes/IgnoreSystemDeclarationsPass.cs

28
src/Generator/Passes/IgnoreSystemDeclarationsPass.cs

@ -51,6 +51,8 @@ namespace CppSharp.Passes @@ -51,6 +51,8 @@ namespace CppSharp.Passes
switch (@class.Name)
{
case "basic_string":
foreach (var method in @class.Methods.Where(m => m.OriginalName != "c_str"))
method.ExplicitlyIgnore();
foreach (var specialization in @class.Specializations.Where(s => !s.Ignore))
{
foreach (var method in specialization.Methods.Where(m => m.OriginalName != "c_str"))
@ -62,10 +64,32 @@ namespace CppSharp.Passes @@ -62,10 +64,32 @@ namespace CppSharp.Passes
foreach (var parameter in ctor.Parameters)
parameter.DefaultArgument = null;
}
foreach (var ctor in @class.Methods.Where(m =>
{
if (!m.IsConstructor || m.Parameters.Count != 2)
return false;
for (int i = 0; i < m.Parameters.Count; i++)
{
var type = m.Parameters[i].Type.Desugar();
var templateParameter = (type.GetFinalPointee() ?? type) as TemplateParameterType;
if (templateParameter == null ||
@class.TemplateParameters.All(t => t.Name != templateParameter.Parameter.Name))
return false;
}
return true;
}))
{
ctor.GenerationKind = GenerationKind.Generate;
foreach (var parameter in ctor.Parameters)
parameter.DefaultArgument = null;
}
break;
case "allocator":
foreach (var specialization in @class.Specializations.Where(s => !s.Ignore))
foreach (var method in specialization.Methods.Where(m => !m.IsConstructor || m.Parameters.Any()))
foreach (var method in @class.Methods.Where(m => !m.IsConstructor || m.Parameters.Any()))
method.ExplicitlyIgnore();
foreach (var specialization in @class.Specializations)
foreach (var method in specialization.Methods.Where(
m => !m.IsConstructor || m.Parameters.Any()))
method.ExplicitlyIgnore();
break;
}

Loading…
Cancel
Save