Browse Source

Don't generate or move ignored specializations

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/1641/head
Dimitar Dobrev 4 years ago
parent
commit
ac8bbee379
  1. 5
      src/Generator/Driver.cs
  2. 1
      src/Generator/Generators/CSharp/CSharpSourcesExtensions.cs
  3. 7
      src/Generator/Passes/CheckIgnoredDecls.cs
  4. 4
      src/Generator/Passes/TrimSpecializationsPass.cs

5
src/Generator/Driver.cs

@ -221,6 +221,8 @@ namespace CppSharp @@ -221,6 +221,8 @@ namespace CppSharp
TranslationUnitPasses.AddPass(new EqualiseAccessOfOverrideAndBasePass());
TranslationUnitPasses.AddPass(new CheckIgnoredDeclsPass());
TranslationUnitPasses.AddPass(new FlattenAnonymousTypesToFields());
TranslationUnitPasses.AddPass(new MarkUsedClassInternalsPass());
if (Options.IsCSharpGenerator)
{
@ -260,7 +262,6 @@ namespace CppSharp @@ -260,7 +262,6 @@ namespace CppSharp
Generator.SetupPasses();
TranslationUnitPasses.AddPass(new FlattenAnonymousTypesToFields());
TranslationUnitPasses.AddPass(new CleanInvalidDeclNamesPass());
TranslationUnitPasses.AddPass(new FastDelegateToDelegatesPass());
TranslationUnitPasses.AddPass(new FieldToPropertyPass());
@ -290,8 +291,6 @@ namespace CppSharp @@ -290,8 +291,6 @@ namespace CppSharp
TranslationUnitPasses.AddPass(new CheckDuplicatedNamesPass());
TranslationUnitPasses.AddPass(new MarkUsedClassInternalsPass());
if (Options.IsCLIGenerator || Options.IsCSharpGenerator)
{
TranslationUnitPasses.RenameDeclsUpperCase(RenameTargets.Any & ~RenameTargets.Parameter);

1
src/Generator/Generators/CSharp/CSharpSourcesExtensions.cs

@ -41,6 +41,7 @@ namespace CppSharp.Generators.CSharp @@ -41,6 +41,7 @@ namespace CppSharp.Generators.CSharp
static bool allPointers(TemplateArgument a) => a.Type.Type?.Desugar().IsAddress() == true;
var groups = (from @class in specializations
let spec = @class.GetParentSpecialization()
where !spec.Ignore
orderby spec.IsGenerated descending
group @class by spec.Arguments.All(allPointers)
into @group

7
src/Generator/Passes/CheckIgnoredDecls.cs

@ -51,10 +51,12 @@ namespace CppSharp.Passes @@ -51,10 +51,12 @@ namespace CppSharp.Passes
if (!base.VisitClassTemplateSpecializationDecl(specialization))
return false;
if (specialization.GenerationKind == GenerationKind.Internal)
return false;
TypeMap typeMap;
if (!Options.GenerateClassTemplates &&
!specialization.IsExplicitlyGenerated &&
specialization.GenerationKind != GenerationKind.Internal &&
!Context.TypeMaps.FindTypeMap(specialization, out typeMap))
{
specialization.ExplicitlyIgnore();
@ -594,7 +596,8 @@ namespace CppSharp.Passes @@ -594,7 +596,8 @@ namespace CppSharp.Passes
else if (specialization.GenerationKind != GenerationKind.Internal)
specialization.ExplicitlyIgnore();
if (!hasExplicitlyGeneratedSpecializations)
if (!hasExplicitlyGeneratedSpecializations &&
@class.GenerationKind != GenerationKind.Internal)
@class.ExplicitlyIgnore();
}

4
src/Generator/Passes/TrimSpecializationsPass.cs

@ -151,6 +151,10 @@ namespace CppSharp.Passes @@ -151,6 +151,10 @@ namespace CppSharp.Passes
for (int i = template.Specializations.Count - 1; i >= 0; i--)
{
var specialization = template.Specializations[i];
if (specialization.Ignore)
{
continue;
}
var modules = (from arg in specialization.Arguments
where arg.Type.Type != null
&& ASTUtils.IsTypeExternal(

Loading…
Cancel
Save