|
|
|
@ -50,7 +50,7 @@ namespace CppSharp.Passes |
|
|
|
symbolsCodeGenerator.NewLine(); |
|
|
|
symbolsCodeGenerator.NewLine(); |
|
|
|
foreach (var specialization in specializations[module]) |
|
|
|
foreach (var specialization in specializations[module]) |
|
|
|
foreach (var method in specialization.Methods.Where( |
|
|
|
foreach (var method in specialization.Methods.Where( |
|
|
|
m => m.IsGenerated && !m.IsDependent && !m.IsImplicit)) |
|
|
|
m => m.IsGenerated && !m.IsDependent && !m.IsImplicit && !m.IsDeleted)) |
|
|
|
symbolsCodeGenerator.VisitMethodDecl(method); |
|
|
|
symbolsCodeGenerator.VisitMethodDecl(method); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -79,12 +79,7 @@ namespace CppSharp.Passes |
|
|
|
s => s.IsExplicitlyGenerated)) |
|
|
|
s => s.IsExplicitlyGenerated)) |
|
|
|
specialization.Visit(this); |
|
|
|
specialization.Visit(this); |
|
|
|
else |
|
|
|
else |
|
|
|
foreach (var @base in @class.Bases.Where(b => b.IsClass)) |
|
|
|
CheckBasesForSpecialization(@class); |
|
|
|
{ |
|
|
|
|
|
|
|
var specialization = @base.Class as ClassTemplateSpecialization; |
|
|
|
|
|
|
|
if (specialization != null && !specialization.IsExplicitlyGenerated) |
|
|
|
|
|
|
|
Add(specialization); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -195,6 +190,18 @@ namespace CppSharp.Passes |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void CheckBasesForSpecialization(Class @class) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
foreach (var @base in @class.Bases.Where(b => b.IsClass)) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var specialization = @base.Class as ClassTemplateSpecialization; |
|
|
|
|
|
|
|
if (specialization != null && !specialization.IsExplicitlyGenerated && |
|
|
|
|
|
|
|
specialization.SpecializationKind != TemplateSpecializationKind.ExplicitSpecialization) |
|
|
|
|
|
|
|
Add(specialization); |
|
|
|
|
|
|
|
CheckBasesForSpecialization(@base.Class); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void Add(ClassTemplateSpecialization specialization) |
|
|
|
private void Add(ClassTemplateSpecialization specialization) |
|
|
|
{ |
|
|
|
{ |
|
|
|
ICollection<ClassTemplateSpecialization> specs; |
|
|
|
ICollection<ClassTemplateSpecialization> specs; |
|
|
|
|