Browse Source

Convert the visiting options to an enum

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/1521/head
Dimitar Dobrev 5 years ago
parent
commit
0e38947e07
  1. 89
      src/AST/ASTVisitor.cs
  2. 3
      src/Generator/Generators/C/CCodeGenerator.cs
  3. 6
      src/Generator/Generators/CSharp/CSharpMarshal.cs
  4. 4
      src/Generator/Generators/CodeGenerator.cs
  5. 15
      src/Generator/Passes/CheckFlagEnumsPass.cs
  6. 17
      src/Generator/Passes/CheckOperatorsOverloads.cs
  7. 4
      src/Generator/Passes/CheckStaticClass.cs
  8. 9
      src/Generator/Passes/CleanCommentsPass.cs
  9. 10
      src/Generator/Passes/CleanInvalidDeclNamesPass.cs
  10. 12
      src/Generator/Passes/DelegatesPass.cs
  11. 15
      src/Generator/Passes/EqualiseAccessOfOverrideAndBasePass.cs
  12. 16
      src/Generator/Passes/FieldToPropertyPass.cs
  13. 14
      src/Generator/Passes/FindSymbolsPass.cs
  14. 18
      src/Generator/Passes/FlattenAnonymousTypesToFields.cs
  15. 16
      src/Generator/Passes/GenerateAbstractImplementationsPass.cs
  16. 16
      src/Generator/Passes/GenerateSymbolsPass.cs
  17. 14
      src/Generator/Passes/GetterSetterToPropertyPass.cs
  18. 4
      src/Generator/Passes/HandleDefaultParamValuesPass.cs
  19. 17
      src/Generator/Passes/IgnoreSystemDeclarationsPass.cs
  20. 15
      src/Generator/Passes/MakeProtectedNestedTypesPublicPass.cs
  21. 15
      src/Generator/Passes/MarkUsedClassInternalsPass.cs
  22. 17
      src/Generator/Passes/MarshalPrimitivePointersAsRefTypePass.cs
  23. 11
      src/Generator/Passes/MoveFunctionToClassPass.cs
  24. 13
      src/Generator/Passes/MultipleInheritancePass.cs
  25. 17
      src/Generator/Passes/ParamTypeToInterfacePass.cs
  26. 14
      src/Generator/Passes/RenamePass.cs
  27. 7
      src/Generator/Passes/ResolveIncompleteDeclsPass.cs
  28. 17
      src/Generator/Passes/SpecializationMethodsWithDependentPointersPass.cs
  29. 16
      src/Generator/Passes/StripUnusedSystemTypesPass.cs
  30. 20
      src/Generator/Passes/TrimSpecializationsPass.cs
  31. 16
      src/Generator/Passes/ValidateOperatorsPass.cs
  32. 3
      src/Generator/Types/TypeIgnoreChecker.cs

89
src/AST/ASTVisitor.cs

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Linq;
namespace CppSharp.AST
@ -17,25 +18,68 @@ namespace CppSharp.AST @@ -17,25 +18,68 @@ namespace CppSharp.AST
AstVisitorOptions VisitOptions { get; }
}
[Flags]
public enum VisitFlags
{
/// <summary>
/// We always visit classes, functions and declaration contexts.
/// </summary>
Default = 0,
ClassBases = 1 << 0,
ClassFields = 1 << 1,
ClassProperties = 1 << 2,
ClassMethods = 1 << 3,
ClassTemplateSpecializations = 1 << 4,
PropertyAccessors = 1 << 5,
NamespaceEnums = 1 << 6,
NamespaceTemplates = 1 << 7,
NamespaceTypedefs = 1 << 8,
NamespaceEvents = 1 << 9,
NamespaceVariables = 1 << 10,
FunctionReturnType = 1 << 11,
FunctionParameters = 1 << 12,
EventParameters = 1 << 13,
TemplateArguments = 1 << 14,
Any = ClassBases | ClassFields | ClassProperties | ClassMethods |
ClassTemplateSpecializations | PropertyAccessors |
NamespaceEnums | NamespaceTemplates | NamespaceTypedefs |
NamespaceEvents | NamespaceVariables |
FunctionReturnType | FunctionParameters |
EventParameters | TemplateArguments
}
public class AstVisitorOptions
{
public bool VisitClassBases = true;
public bool VisitClassFields = true;
public bool VisitClassProperties = true;
public bool VisitClassMethods = true;
public bool VisitClassTemplateSpecializations { get; set; } = true;
public bool VisitPropertyAccessors = false;
public bool VisitNamespaceEnums = true;
public bool VisitNamespaceTemplates = true;
public bool VisitNamespaceTypedefs = true;
public bool VisitNamespaceEvents = true;
public bool VisitNamespaceVariables = true;
public bool VisitFunctionReturnType = true;
public bool VisitFunctionParameters = true;
public bool VisitEventParameters = true;
public bool VisitTemplateArguments = true;
public AstVisitorOptions(VisitFlags flags)
=> this.flags = flags;
public bool VisitClassBases => (flags & VisitFlags.ClassBases) != 0;
public bool VisitClassFields => (flags & VisitFlags.ClassFields) != 0;
public bool VisitClassProperties => (flags & VisitFlags.ClassProperties) != 0;
public bool VisitClassMethods => (flags & VisitFlags.ClassMethods) != 0;
public bool VisitClassTemplateSpecializations => (flags & VisitFlags.ClassTemplateSpecializations) != 0;
public bool VisitPropertyAccessors => (flags & VisitFlags.PropertyAccessors) != 0;
public bool VisitNamespaceEnums => (flags & VisitFlags.NamespaceEnums) != 0;
public bool VisitNamespaceTemplates => (flags & VisitFlags.NamespaceTemplates) != 0;
public bool VisitNamespaceTypedefs => (flags & VisitFlags.NamespaceTypedefs) != 0;
public bool VisitNamespaceEvents => (flags & VisitFlags.NamespaceEvents) != 0;
public bool VisitNamespaceVariables => (flags & VisitFlags.NamespaceVariables) != 0;
public bool VisitFunctionReturnType => (flags & VisitFlags.FunctionReturnType) != 0;
public bool VisitFunctionParameters => (flags & VisitFlags.FunctionParameters) != 0;
public bool VisitEventParameters => (flags & VisitFlags.EventParameters) != 0;
public bool VisitTemplateArguments => (flags & VisitFlags.TemplateArguments) != 0;
public void SetFlags(VisitFlags flags) => this.flags |= flags;
public void ResetFlags(VisitFlags flags) => this.flags = flags;
public void ClearFlags(VisitFlags flags) => this.flags &= ~flags;
private VisitFlags flags;
}
/// <summary>
@ -46,14 +90,9 @@ namespace CppSharp.AST @@ -46,14 +90,9 @@ namespace CppSharp.AST
/// </summary>
public abstract partial class AstVisitor : IAstVisitor<bool>, IAstVisited
{
public ISet<object> Visited { get; private set; }
public ISet<object> Visited { get; private set; } = new HashSet<object>();
public AstVisitorOptions VisitOptions { get; private set; }
protected AstVisitor()
{
Visited = new HashSet<object>();
VisitOptions = new AstVisitorOptions();
}
= new AstVisitorOptions(VisitFlags.Any & ~VisitFlags.PropertyAccessors);
public bool AlreadyVisited(Type type)
{

3
src/Generator/Generators/C/CCodeGenerator.cs

@ -1,5 +1,4 @@ @@ -1,5 +1,4 @@
using CppSharp.AST;
using CppSharp.AST.Extensions;
using System.Collections.Generic;
using System.Linq;
@ -32,7 +31,7 @@ namespace CppSharp.Generators.C @@ -32,7 +31,7 @@ namespace CppSharp.Generators.C
IEnumerable<TranslationUnit> units = null)
: base(context, units)
{
VisitOptions.VisitPropertyAccessors = true;
VisitOptions.SetFlags(VisitFlags.PropertyAccessors);
typePrinter = new CppTypePrinter(context);
}

6
src/Generator/Generators/CSharp/CSharpMarshal.cs

@ -1,6 +1,4 @@ @@ -1,6 +1,4 @@
using System;
using System.Linq;
using System.Text;
using CppSharp.AST;
using CppSharp.AST.Extensions;
using CppSharp.Generators.C;
@ -28,8 +26,8 @@ namespace CppSharp.Generators.CSharp @@ -28,8 +26,8 @@ namespace CppSharp.Generators.CSharp
protected CSharpMarshalPrinter(CSharpMarshalContext context)
: base(context)
{
VisitOptions.VisitFunctionParameters = false;
VisitOptions.VisitTemplateArguments = false;
VisitOptions.ClearFlags(VisitFlags.FunctionParameters |
VisitFlags.TemplateArguments);
}
public override bool VisitMemberPointerType(MemberPointerType member,

4
src/Generator/Generators/CodeGenerator.cs

@ -45,8 +45,8 @@ namespace CppSharp.Generators @@ -45,8 +45,8 @@ namespace CppSharp.Generators
public virtual CommentKind DocumentationCommentKind => CommentKind.BCPLSlash;
public ISet<object> Visited { get; } = new HashSet<object>();
public AstVisitorOptions VisitOptions { get; } = new AstVisitorOptions();
public AstVisitorOptions VisitOptions { get; }
= new AstVisitorOptions(VisitFlags.Any & ~VisitFlags.PropertyAccessors);
protected CodeGenerator(BindingContext context)
{

15
src/Generator/Passes/CheckFlagEnumsPass.cs

@ -9,20 +9,9 @@ namespace CppSharp.Passes @@ -9,20 +9,9 @@ namespace CppSharp.Passes
public class CheckFlagEnumsPass : TranslationUnitPass
{
public CheckFlagEnumsPass()
{
VisitOptions.VisitClassBases = false;
VisitOptions.VisitClassProperties = false;
VisitOptions.VisitEventParameters = false;
VisitOptions.VisitFunctionParameters = false;
VisitOptions.VisitFunctionReturnType = false;
VisitOptions.VisitNamespaceEvents = false;
VisitOptions.VisitNamespaceTemplates = false;
VisitOptions.VisitNamespaceTypedefs = false;
VisitOptions.VisitNamespaceVariables = false;
VisitOptions.VisitTemplateArguments = false;
}
=> VisitOptions.ResetFlags(VisitFlags.NamespaceEnums);
static bool IsFlagEnum(Enumeration @enum)
private static bool IsFlagEnum(Enumeration @enum)
{
// If the enumeration only has power of two values, assume it's
// a flags enum.

17
src/Generator/Passes/CheckOperatorsOverloads.cs

@ -10,20 +10,9 @@ namespace CppSharp.Passes @@ -10,20 +10,9 @@ namespace CppSharp.Passes
/// </summary>
public class CheckOperatorsOverloadsPass : TranslationUnitPass
{
public CheckOperatorsOverloadsPass() =>
VisitOptions.VisitClassBases =
VisitOptions.VisitClassFields =
VisitOptions.VisitEventParameters =
VisitOptions.VisitFunctionParameters =
VisitOptions.VisitFunctionReturnType =
VisitOptions.VisitClassMethods =
VisitOptions.VisitNamespaceEnums =
VisitOptions.VisitNamespaceEvents =
VisitOptions.VisitNamespaceTemplates =
VisitOptions.VisitNamespaceTypedefs =
VisitOptions.VisitNamespaceVariables =
VisitOptions.VisitPropertyAccessors =
VisitOptions.VisitTemplateArguments = false;
public CheckOperatorsOverloadsPass() => VisitOptions.ResetFlags(
VisitFlags.ClassMethods | VisitFlags.ClassProperties |
VisitFlags.ClassTemplateSpecializations);
public override bool VisitClassDecl(Class @class)
{

4
src/Generator/Passes/CheckStaticClass.cs

@ -10,9 +10,7 @@ namespace CppSharp.Passes @@ -10,9 +10,7 @@ namespace CppSharp.Passes
public class CheckStaticClass : TranslationUnitPass
{
public CheckStaticClass()
{
VisitOptions.VisitClassBases = false;
}
=> VisitOptions.ResetFlags(VisitFlags.ClassMethods);
public override bool VisitDeclaration(Declaration decl)
{

9
src/Generator/Passes/CleanCommentsPass.cs

@ -7,12 +7,9 @@ namespace CppSharp.Passes @@ -7,12 +7,9 @@ namespace CppSharp.Passes
{
public class CleanCommentsPass : TranslationUnitPass, ICommentVisitor<bool>
{
public CleanCommentsPass()
{
VisitOptions.VisitClassBases = false;
VisitOptions.VisitFunctionReturnType = false;
VisitOptions.VisitTemplateArguments = false;
}
public CleanCommentsPass() => VisitOptions.ResetFlags(
VisitFlags.ClassBases | VisitFlags.FunctionReturnType |
VisitFlags.TemplateArguments);
public bool VisitBlockCommand(BlockCommandComment comment) => true;

10
src/Generator/Passes/CleanInvalidDeclNamesPass.cs

@ -9,13 +9,9 @@ namespace CppSharp.Passes @@ -9,13 +9,9 @@ namespace CppSharp.Passes
{
public class CleanInvalidDeclNamesPass : TranslationUnitPass
{
public CleanInvalidDeclNamesPass()
{
VisitOptions.VisitClassBases = false;
VisitOptions.VisitEventParameters = false;
VisitOptions.VisitFunctionReturnType = false;
VisitOptions.VisitTemplateArguments = false;
}
public CleanInvalidDeclNamesPass() => VisitOptions.ClearFlags(
VisitFlags.ClassBases | VisitFlags.EventParameters |
VisitFlags.FunctionReturnType | VisitFlags.TemplateArguments);
public override bool VisitClassDecl(Class @class)
{

12
src/Generator/Passes/DelegatesPass.cs

@ -9,14 +9,10 @@ namespace CppSharp.Passes @@ -9,14 +9,10 @@ namespace CppSharp.Passes
{
public class DelegatesPass : TranslationUnitPass
{
public DelegatesPass()
{
VisitOptions.VisitClassBases = false;
VisitOptions.VisitFunctionReturnType = false;
VisitOptions.VisitNamespaceEnums = false;
VisitOptions.VisitNamespaceTemplates = false;
VisitOptions.VisitTemplateArguments = false;
}
public DelegatesPass() => VisitOptions.ClearFlags(
VisitFlags.ClassBases | VisitFlags.FunctionReturnType |
VisitFlags.NamespaceEnums | VisitFlags.NamespaceTemplates |
VisitFlags.TemplateArguments);
public override bool VisitASTContext(ASTContext context)
{

15
src/Generator/Passes/EqualiseAccessOfOverrideAndBasePass.cs

@ -6,19 +6,8 @@ namespace CppSharp.Passes @@ -6,19 +6,8 @@ namespace CppSharp.Passes
{
public class EqualiseAccessOfOverrideAndBasePass : TranslationUnitPass
{
public EqualiseAccessOfOverrideAndBasePass()
{
VisitOptions.VisitClassBases = false;
VisitOptions.VisitClassFields = false;
VisitOptions.VisitClassProperties = false;
VisitOptions.VisitEventParameters = false;
VisitOptions.VisitFunctionParameters = false;
VisitOptions.VisitFunctionReturnType = false;
VisitOptions.VisitNamespaceEnums = false;
VisitOptions.VisitNamespaceEvents = false;
VisitOptions.VisitNamespaceVariables = false;
VisitOptions.VisitTemplateArguments = false;
}
public EqualiseAccessOfOverrideAndBasePass() => VisitOptions.ResetFlags(
VisitFlags.ClassMethods | VisitFlags.ClassTemplateSpecializations);
public override bool VisitASTContext(ASTContext context)
{

16
src/Generator/Passes/FieldToPropertyPass.cs

@ -8,20 +8,8 @@ namespace CppSharp.Passes @@ -8,20 +8,8 @@ namespace CppSharp.Passes
{
public class FieldToPropertyPass : TranslationUnitPass
{
public FieldToPropertyPass()
{
VisitOptions.VisitClassBases = false;
VisitOptions.VisitClassProperties = false;
VisitOptions.VisitEventParameters = false;
VisitOptions.VisitFunctionParameters = false;
VisitOptions.VisitFunctionReturnType = false;
VisitOptions.VisitNamespaceEnums = false;
VisitOptions.VisitNamespaceEvents = false;
VisitOptions.VisitNamespaceTemplates = false;
VisitOptions.VisitNamespaceTypedefs = false;
VisitOptions.VisitNamespaceVariables = false;
VisitOptions.VisitTemplateArguments = false;
}
public FieldToPropertyPass() => VisitOptions.ResetFlags(
VisitFlags.ClassFields | VisitFlags.ClassTemplateSpecializations);
public override bool VisitClassDecl(Class @class)
{

14
src/Generator/Passes/FindSymbolsPass.cs

@ -6,18 +6,8 @@ namespace CppSharp.Passes @@ -6,18 +6,8 @@ namespace CppSharp.Passes
{
public class FindSymbolsPass : TranslationUnitPass
{
public FindSymbolsPass()
{
VisitOptions.VisitClassBases = false;
VisitOptions.VisitClassTemplateSpecializations = false;
VisitOptions.VisitFunctionParameters = false;
VisitOptions.VisitFunctionReturnType = false;
VisitOptions.VisitNamespaceEnums = false;
VisitOptions.VisitNamespaceTemplates = false;
VisitOptions.VisitNamespaceTypedefs = false;
VisitOptions.VisitTemplateArguments = false;
VisitOptions.VisitClassFields = false;
}
public FindSymbolsPass() => VisitOptions.ResetFlags(
VisitFlags.ClassMethods | VisitFlags.ClassProperties);
public bool Wait
{

18
src/Generator/Passes/FlattenAnonymousTypesToFields.cs

@ -11,22 +11,8 @@ namespace CppSharp.Passes @@ -11,22 +11,8 @@ namespace CppSharp.Passes
/// </summary>
public class FlattenAnonymousTypesToFields : TranslationUnitPass
{
public FlattenAnonymousTypesToFields()
{
VisitOptions.VisitClassBases = false;
VisitOptions.VisitClassFields = false;
VisitOptions.VisitClassMethods = false;
VisitOptions.VisitClassProperties = false;
VisitOptions.VisitEventParameters = false;
VisitOptions.VisitFunctionParameters = false;
VisitOptions.VisitFunctionReturnType = false;
VisitOptions.VisitNamespaceEnums = false;
VisitOptions.VisitNamespaceTemplates = false;
VisitOptions.VisitNamespaceTypedefs = false;
VisitOptions.VisitNamespaceVariables = false;
VisitOptions.VisitPropertyAccessors = false;
VisitOptions.VisitTemplateArguments = false;
}
public FlattenAnonymousTypesToFields() =>
VisitOptions.ResetFlags(VisitFlags.ClassTemplateSpecializations);
public override bool VisitClassDecl(Class @class)
{

16
src/Generator/Passes/GenerateAbstractImplementationsPass.cs

@ -13,21 +13,7 @@ namespace CppSharp.Passes @@ -13,21 +13,7 @@ namespace CppSharp.Passes
public class GenerateAbstractImplementationsPass : TranslationUnitPass
{
public GenerateAbstractImplementationsPass()
{
VisitOptions.VisitClassBases = false;
VisitOptions.VisitClassFields = false;
VisitOptions.VisitClassProperties = false;
VisitOptions.VisitClassTemplateSpecializations = false;
VisitOptions.VisitEventParameters = false;
VisitOptions.VisitFunctionParameters = false;
VisitOptions.VisitFunctionReturnType = false;
VisitOptions.VisitNamespaceEnums = false;
VisitOptions.VisitNamespaceEvents = false;
VisitOptions.VisitNamespaceTemplates = false;
VisitOptions.VisitNamespaceTypedefs = false;
VisitOptions.VisitNamespaceVariables = false;
VisitOptions.VisitTemplateArguments = false;
}
=> VisitOptions.ResetFlags(VisitFlags.Default);
/// <summary>
/// Collects all internal implementations in a unit to be added at

16
src/Generator/Passes/GenerateSymbolsPass.cs

@ -11,19 +11,9 @@ namespace CppSharp.Passes @@ -11,19 +11,9 @@ namespace CppSharp.Passes
{
public class GenerateSymbolsPass : TranslationUnitPass
{
public GenerateSymbolsPass()
{
VisitOptions.VisitClassBases = false;
VisitOptions.VisitClassFields = false;
VisitOptions.VisitEventParameters = false;
VisitOptions.VisitFunctionParameters = false;
VisitOptions.VisitFunctionReturnType = false;
VisitOptions.VisitNamespaceEnums = false;
VisitOptions.VisitNamespaceEvents = false;
VisitOptions.VisitNamespaceTemplates = false;
VisitOptions.VisitNamespaceTypedefs = false;
VisitOptions.VisitTemplateArguments = false;
}
public GenerateSymbolsPass() => VisitOptions.ResetFlags(
VisitFlags.ClassMethods | VisitFlags.ClassProperties |
VisitFlags.ClassTemplateSpecializations | VisitFlags.NamespaceVariables);
public override bool VisitASTContext(ASTContext context)
{

14
src/Generator/Passes/GetterSetterToPropertyPass.cs

@ -43,19 +43,7 @@ namespace CppSharp.Passes @@ -43,19 +43,7 @@ namespace CppSharp.Passes
}
public GetterSetterToPropertyPass()
{
VisitOptions.VisitClassBases = false;
VisitOptions.VisitClassFields = false;
VisitOptions.VisitClassProperties = false;
VisitOptions.VisitClassMethods = false;
VisitOptions.VisitNamespaceEnums = false;
VisitOptions.VisitNamespaceTemplates = false;
VisitOptions.VisitNamespaceTypedefs = false;
VisitOptions.VisitNamespaceEvents = false;
VisitOptions.VisitNamespaceVariables = false;
VisitOptions.VisitFunctionParameters = false;
VisitOptions.VisitTemplateArguments = false;
}
=> VisitOptions.ResetFlags(VisitFlags.ClassTemplateSpecializations);
public override bool VisitClassDecl(Class @class)
{

4
src/Generator/Passes/HandleDefaultParamValuesPass.cs

@ -12,9 +12,7 @@ namespace CppSharp.Passes @@ -12,9 +12,7 @@ namespace CppSharp.Passes
new Dictionary<DeclarationContext, List<Function>>();
public HandleDefaultParamValuesPass()
{
VisitOptions.VisitFunctionParameters = false;
}
=> VisitOptions.ResetFlags(VisitFlags.ClassMethods);
public override bool VisitTranslationUnit(TranslationUnit unit)
{

17
src/Generator/Passes/IgnoreSystemDeclarationsPass.cs

@ -1,5 +1,4 @@ @@ -1,5 +1,4 @@
using System.Collections.Generic;
using System.Linq;
using System.Linq;
using CppSharp.AST;
using CppSharp.AST.Extensions;
@ -8,19 +7,7 @@ namespace CppSharp.Passes @@ -8,19 +7,7 @@ namespace CppSharp.Passes
public class IgnoreSystemDeclarationsPass : TranslationUnitPass
{
public IgnoreSystemDeclarationsPass()
{
VisitOptions.VisitClassBases = false;
VisitOptions.VisitClassTemplateSpecializations = false;
VisitOptions.VisitClassFields = false;
VisitOptions.VisitClassMethods = false;
VisitOptions.VisitClassProperties = false;
VisitOptions.VisitFunctionParameters = false;
VisitOptions.VisitFunctionReturnType = false;
VisitOptions.VisitNamespaceEvents = false;
VisitOptions.VisitNamespaceTemplates = false;
VisitOptions.VisitNamespaceTypedefs = false;
VisitOptions.VisitTemplateArguments = false;
}
=> VisitOptions.ResetFlags(VisitFlags.NamespaceEnums);
public override bool VisitTranslationUnit(TranslationUnit unit)
{

15
src/Generator/Passes/MakeProtectedNestedTypesPublicPass.cs

@ -7,20 +7,7 @@ namespace CppSharp.Passes @@ -7,20 +7,7 @@ namespace CppSharp.Passes
public class MakeProtectedNestedTypesPublicPass : TranslationUnitPass
{
public MakeProtectedNestedTypesPublicPass()
{
VisitOptions.VisitClassBases = false;
VisitOptions.VisitClassFields = false;
VisitOptions.VisitClassTemplateSpecializations = false;
VisitOptions.VisitEventParameters = false;
VisitOptions.VisitFunctionParameters = false;
VisitOptions.VisitFunctionReturnType = false;
VisitOptions.VisitNamespaceEnums = false;
VisitOptions.VisitNamespaceEvents = false;
VisitOptions.VisitNamespaceTemplates = false;
VisitOptions.VisitNamespaceTypedefs = false;
VisitOptions.VisitNamespaceVariables = false;
VisitOptions.VisitTemplateArguments = false;
}
=> VisitOptions.ResetFlags(VisitFlags.Default);
public override bool VisitClassDecl(Class @class)
{

15
src/Generator/Passes/MarkUsedClassInternalsPass.cs

@ -8,20 +8,7 @@ namespace CppSharp.Passes @@ -8,20 +8,7 @@ namespace CppSharp.Passes
public class MarkUsedClassInternalsPass : TranslationUnitPass
{
public MarkUsedClassInternalsPass()
{
VisitOptions.VisitClassBases = false;
VisitOptions.VisitClassFields = false;
VisitOptions.VisitClassMethods = false;
VisitOptions.VisitClassProperties = false;
VisitOptions.VisitEventParameters = false;
VisitOptions.VisitFunctionReturnType = false;
VisitOptions.VisitFunctionParameters = false;
VisitOptions.VisitNamespaceEnums = false;
VisitOptions.VisitNamespaceEvents = false;
VisitOptions.VisitNamespaceTemplates = false;
VisitOptions.VisitNamespaceVariables = false;
VisitOptions.VisitTemplateArguments = false;
}
=> VisitOptions.ResetFlags(VisitFlags.ClassTemplateSpecializations);
public override bool VisitClassDecl(Class @class)
{

17
src/Generator/Passes/MarshalPrimitivePointersAsRefTypePass.cs

@ -7,21 +7,8 @@ namespace CppSharp.Passes @@ -7,21 +7,8 @@ namespace CppSharp.Passes
{
public class MarshalPrimitivePointersAsRefTypePass : TranslationUnitPass
{
public MarshalPrimitivePointersAsRefTypePass()
{
VisitOptions.VisitClassBases = false;
VisitOptions.VisitClassFields = false;
VisitOptions.VisitClassProperties = false;
VisitOptions.VisitEventParameters = false;
VisitOptions.VisitFunctionParameters = false;
VisitOptions.VisitFunctionReturnType = false;
VisitOptions.VisitNamespaceEnums = false;
VisitOptions.VisitNamespaceEvents = false;
VisitOptions.VisitNamespaceTemplates = false;
VisitOptions.VisitNamespaceTypedefs = false;
VisitOptions.VisitNamespaceVariables = false;
VisitOptions.VisitTemplateArguments = false;
}
public MarshalPrimitivePointersAsRefTypePass() => VisitOptions.ResetFlags(
VisitFlags.ClassMethods | VisitFlags.ClassTemplateSpecializations);
public override bool VisitFunctionDecl(Function function)
{

11
src/Generator/Passes/MoveFunctionToClassPass.cs

@ -6,16 +6,7 @@ namespace CppSharp.Passes @@ -6,16 +6,7 @@ namespace CppSharp.Passes
public class MoveFunctionToClassPass : TranslationUnitPass
{
public MoveFunctionToClassPass()
{
VisitOptions.VisitClassBases = VisitOptions.VisitClassFields =
VisitOptions.VisitClassMethods = VisitOptions.VisitClassProperties =
VisitOptions.VisitClassTemplateSpecializations = VisitOptions.VisitEventParameters =
VisitOptions.VisitFunctionParameters = VisitOptions.VisitFunctionReturnType =
VisitOptions.VisitNamespaceEnums = VisitOptions.VisitNamespaceEvents =
VisitOptions.VisitNamespaceTemplates = VisitOptions.VisitNamespaceTypedefs =
VisitOptions.VisitNamespaceVariables = VisitOptions.VisitPropertyAccessors =
VisitOptions.VisitTemplateArguments = false;
}
=> VisitOptions.ResetFlags(VisitFlags.Default);
public override bool VisitFunctionDecl(Function function)
{

13
src/Generator/Passes/MultipleInheritancePass.cs

@ -16,21 +16,12 @@ namespace CppSharp.Passes @@ -16,21 +16,12 @@ namespace CppSharp.Passes
private readonly HashSet<Class> interfaces = new HashSet<Class>();
/// <summary>
/// Change and implement secondaryy bases at the end to avoid processing implementations.
/// Change and implement secondary bases at the end to avoid processing implementations.
/// </summary>
private readonly HashSet<Class> classesWithSecondaryBases = new HashSet<Class>();
public MultipleInheritancePass()
{
VisitOptions.VisitClassFields = false;
VisitOptions.VisitNamespaceEnums = false;
VisitOptions.VisitNamespaceVariables = false;
VisitOptions.VisitTemplateArguments = false;
VisitOptions.VisitClassMethods = false;
VisitOptions.VisitClassProperties = false;
VisitOptions.VisitFunctionReturnType = false;
VisitOptions.VisitFunctionParameters = false;
}
=> VisitOptions.ResetFlags(VisitFlags.Default);
public override bool VisitASTContext(ASTContext context)
{

17
src/Generator/Passes/ParamTypeToInterfacePass.cs

@ -11,20 +11,9 @@ namespace CppSharp.Passes @@ -11,20 +11,9 @@ namespace CppSharp.Passes
/// </summary>
public class ParamTypeToInterfacePass : TranslationUnitPass
{
public ParamTypeToInterfacePass()
{
VisitOptions.VisitClassBases = false;
VisitOptions.VisitClassFields = false;
VisitOptions.VisitEventParameters = false;
VisitOptions.VisitFunctionParameters = false;
VisitOptions.VisitFunctionReturnType = false;
VisitOptions.VisitNamespaceEnums = false;
VisitOptions.VisitNamespaceEvents = false;
VisitOptions.VisitNamespaceTemplates = false;
VisitOptions.VisitNamespaceTypedefs = false;
VisitOptions.VisitNamespaceVariables = false;
VisitOptions.VisitTemplateArguments = false;
}
public ParamTypeToInterfacePass() => VisitOptions.ResetFlags(
VisitFlags.ClassMethods | VisitFlags.ClassProperties |
VisitFlags.ClassTemplateSpecializations);
public override bool VisitFunctionDecl(Function function)
{

14
src/Generator/Passes/RenamePass.cs

@ -28,16 +28,12 @@ namespace CppSharp.Passes @@ -28,16 +28,12 @@ namespace CppSharp.Passes
public RenameTargets Targets = RenameTargets.Any;
protected RenamePass()
{
VisitOptions.VisitFunctionParameters = false;
VisitOptions.VisitFunctionReturnType = false;
VisitOptions.VisitTemplateArguments = false;
protected RenamePass() => VisitOptions.ClearFlags(
VisitFlags.FunctionParameters | VisitFlags.FunctionReturnType |
VisitFlags.TemplateArguments |
// these need to be visited but in a different order (see VisitClassDecl) so disable the default order
VisitOptions.VisitClassProperties = false;
VisitOptions.VisitClassMethods = false;
VisitOptions.VisitNamespaceEvents = false;
}
VisitFlags.ClassProperties | VisitFlags.ClassMethods |
VisitFlags.NamespaceEvents);
protected RenamePass(RenameTargets targets)
: this()

7
src/Generator/Passes/ResolveIncompleteDeclsPass.cs

@ -6,11 +6,8 @@ namespace CppSharp.Passes @@ -6,11 +6,8 @@ namespace CppSharp.Passes
{
public class ResolveIncompleteDeclsPass : TranslationUnitPass
{
public ResolveIncompleteDeclsPass()
{
VisitOptions.VisitFunctionParameters = false;
VisitOptions.VisitClassMethods = false;
}
public ResolveIncompleteDeclsPass() => VisitOptions.ClearFlags(
VisitFlags.FunctionParameters | VisitFlags.ClassMethods);
public override bool VisitClassDecl(Class @class)
{

17
src/Generator/Passes/SpecializationMethodsWithDependentPointersPass.cs

@ -26,22 +26,7 @@ namespace CppSharp.Passes @@ -26,22 +26,7 @@ namespace CppSharp.Passes
public class SpecializationMethodsWithDependentPointersPass : TranslationUnitPass
{
public SpecializationMethodsWithDependentPointersPass()
{
VisitOptions.VisitClassBases = false;
VisitOptions.VisitClassFields = false;
VisitOptions.VisitClassMethods = false;
VisitOptions.VisitClassProperties = false;
VisitOptions.VisitClassTemplateSpecializations = false;
VisitOptions.VisitEventParameters = false;
VisitOptions.VisitFunctionParameters = false;
VisitOptions.VisitFunctionReturnType = false;
VisitOptions.VisitNamespaceEnums = false;
VisitOptions.VisitNamespaceEvents = false;
VisitOptions.VisitNamespaceTemplates = false;
VisitOptions.VisitNamespaceTypedefs = false;
VisitOptions.VisitNamespaceVariables = false;
VisitOptions.VisitTemplateArguments = false;
}
=> VisitOptions.ResetFlags(VisitFlags.Default);
public override bool VisitASTContext(ASTContext context)
{

16
src/Generator/Passes/StripUnusedSystemTypesPass.cs

@ -7,19 +7,9 @@ namespace CppSharp.Passes @@ -7,19 +7,9 @@ namespace CppSharp.Passes
{
public class StripUnusedSystemTypesPass : TranslationUnitPass
{
public StripUnusedSystemTypesPass()
{
VisitOptions.VisitClassBases = false;
VisitOptions.VisitClassMethods = false;
VisitOptions.VisitClassProperties = false;
VisitOptions.VisitEventParameters = false;
VisitOptions.VisitFunctionParameters = false;
VisitOptions.VisitFunctionReturnType = false;
VisitOptions.VisitNamespaceEnums = false;
VisitOptions.VisitNamespaceEvents = false;
VisitOptions.VisitNamespaceVariables = false;
VisitOptions.VisitTemplateArguments = false;
}
public StripUnusedSystemTypesPass() => VisitOptions.ResetFlags(
VisitFlags.ClassFields | VisitFlags.ClassTemplateSpecializations |
VisitFlags.NamespaceTemplates | VisitFlags.NamespaceTypedefs);
public override bool VisitASTContext(ASTContext context)
{

20
src/Generator/Passes/TrimSpecializationsPass.cs

@ -1,28 +1,16 @@ @@ -1,28 +1,16 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using System.Linq;
using CppSharp.AST;
using CppSharp.AST.Extensions;
using CppSharp.Types;
using CppSharp.Utils;
namespace CppSharp.Passes
{
public class TrimSpecializationsPass : TranslationUnitPass
{
public TrimSpecializationsPass()
{
VisitOptions.VisitClassBases = false;
VisitOptions.VisitClassTemplateSpecializations = false;
VisitOptions.VisitEventParameters = false;
VisitOptions.VisitFunctionParameters = false;
VisitOptions.VisitFunctionReturnType = false;
VisitOptions.VisitNamespaceEnums = false;
VisitOptions.VisitNamespaceEvents = false;
VisitOptions.VisitNamespaceTemplates = false;
VisitOptions.VisitNamespaceTypedefs = false;
VisitOptions.VisitTemplateArguments = false;
}
public TrimSpecializationsPass() => VisitOptions.ResetFlags(
VisitFlags.ClassFields | VisitFlags.ClassMethods |
VisitFlags.ClassProperties | VisitFlags.NamespaceVariables);
public override bool VisitASTContext(ASTContext context)
{

16
src/Generator/Passes/ValidateOperatorsPass.cs

@ -10,19 +10,9 @@ namespace CppSharp.Passes @@ -10,19 +10,9 @@ namespace CppSharp.Passes
/// </summary>
public class ValidateOperatorsPass : TranslationUnitPass
{
public ValidateOperatorsPass() =>
VisitOptions.VisitClassBases =
VisitOptions.VisitClassFields =
VisitOptions.VisitEventParameters =
VisitOptions.VisitFunctionParameters =
VisitOptions.VisitFunctionReturnType =
VisitOptions.VisitNamespaceEnums =
VisitOptions.VisitNamespaceEvents =
VisitOptions.VisitNamespaceTemplates =
VisitOptions.VisitNamespaceTypedefs =
VisitOptions.VisitNamespaceVariables =
VisitOptions.VisitPropertyAccessors =
VisitOptions.VisitTemplateArguments = false;
public ValidateOperatorsPass() => VisitOptions.ResetFlags(
VisitFlags.ClassMethods | VisitFlags.ClassProperties |
VisitFlags.ClassTemplateSpecializations);
public override bool VisitMethodDecl(Method method)
{

3
src/Generator/Types/TypeIgnoreChecker.cs

@ -17,8 +17,7 @@ namespace CppSharp @@ -17,8 +17,7 @@ namespace CppSharp
GeneratorKind generatorKind = GeneratorKind.CSharp)
{
TypeMapDatabase = database;
VisitOptions.VisitClassBases = false;
VisitOptions.VisitTemplateArguments = false;
VisitOptions.ClearFlags(VisitFlags.ClassBases | VisitFlags.TemplateArguments);
this.generatorKind = generatorKind;
}

Loading…
Cancel
Save