|
|
|
@ -51,6 +51,8 @@ namespace CppSharp.Passes |
|
|
|
switch (@class.Name) |
|
|
|
switch (@class.Name) |
|
|
|
{ |
|
|
|
{ |
|
|
|
case "basic_string": |
|
|
|
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 specialization in @class.Specializations.Where(s => !s.Ignore)) |
|
|
|
{ |
|
|
|
{ |
|
|
|
foreach (var method in specialization.Methods.Where(m => m.OriginalName != "c_str")) |
|
|
|
foreach (var method in specialization.Methods.Where(m => m.OriginalName != "c_str")) |
|
|
|
@ -62,10 +64,32 @@ namespace CppSharp.Passes |
|
|
|
foreach (var parameter in ctor.Parameters) |
|
|
|
foreach (var parameter in ctor.Parameters) |
|
|
|
parameter.DefaultArgument = null; |
|
|
|
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; |
|
|
|
break; |
|
|
|
case "allocator": |
|
|
|
case "allocator": |
|
|
|
foreach (var specialization in @class.Specializations.Where(s => !s.Ignore)) |
|
|
|
foreach (var method in @class.Methods.Where(m => !m.IsConstructor || m.Parameters.Any())) |
|
|
|
foreach (var method in specialization.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(); |
|
|
|
method.ExplicitlyIgnore(); |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|