Browse Source

Improve visiting options implementation in CodeGenerator.

instantiate-types-nested-templates
Joao Matos 4 years ago committed by João Matos
parent
commit
bcc6fd887d
  1. 8
      src/AST/ASTVisitor.cs
  2. 36
      src/Generator/Generators/CodeGenerator.cs

8
src/AST/ASTVisitor.cs

@ -21,7 +21,7 @@ namespace CppSharp.AST @@ -21,7 +21,7 @@ namespace CppSharp.AST
public enum VisitFlags
{
/// <summary>
/// We always visit classes, functions and declaration contexts.
/// We always visit declaration contexts.
/// </summary>
Default = 0,
@ -37,6 +37,8 @@ namespace CppSharp.AST @@ -37,6 +37,8 @@ namespace CppSharp.AST
NamespaceTypedefs = 1 << 8,
NamespaceEvents = 1 << 9,
NamespaceVariables = 1 << 10,
NamespaceClasses = 1 << 15,
NamespaceFunctions = 1 << 16,
FunctionReturnType = 1 << 11,
FunctionParameters = 1 << 12,
@ -46,7 +48,7 @@ namespace CppSharp.AST @@ -46,7 +48,7 @@ namespace CppSharp.AST
Any = ClassBases | ClassFields | ClassProperties | ClassMethods |
ClassTemplateSpecializations | PropertyAccessors |
NamespaceEnums | NamespaceTemplates | NamespaceTypedefs |
NamespaceEvents | NamespaceVariables |
NamespaceEvents | NamespaceVariables | NamespaceClasses | NamespaceFunctions |
FunctionReturnType | FunctionParameters |
EventParameters | TemplateArguments
}
@ -63,7 +65,9 @@ namespace CppSharp.AST @@ -63,7 +65,9 @@ namespace CppSharp.AST
public bool VisitClassTemplateSpecializations => (flags & VisitFlags.ClassTemplateSpecializations) != 0;
public bool VisitPropertyAccessors => (flags & VisitFlags.PropertyAccessors) != 0;
public bool VisitNamespaceClasses => (flags & VisitFlags.NamespaceClasses) != 0;
public bool VisitNamespaceEnums => (flags & VisitFlags.NamespaceEnums) != 0;
public bool VisitNamespaceFunctions => (flags & VisitFlags.NamespaceFunctions) != 0;
public bool VisitNamespaceTemplates => (flags & VisitFlags.NamespaceTemplates) != 0;
public bool VisitNamespaceTypedefs => (flags & VisitFlags.NamespaceTypedefs) != 0;
public bool VisitNamespaceEvents => (flags & VisitFlags.NamespaceEvents) != 0;

36
src/Generator/Generators/CodeGenerator.cs

@ -262,11 +262,26 @@ namespace CppSharp.Generators @@ -262,11 +262,26 @@ namespace CppSharp.Generators
{
foreach (var decl in context.Declarations)
{
if (decl is Function) continue;
if (decl is Function)
continue;
if (decl is Class && !VisitOptions.VisitNamespaceClasses)
continue;
if (decl is Enumeration && !VisitOptions.VisitNamespaceEnums)
continue;
if (decl is Event && !VisitOptions.VisitNamespaceEvents)
continue;
if (decl is Variable && !VisitOptions.VisitNamespaceVariables)
continue;
if (decl.IsGenerated)
decl.Visit(this);
}
if (VisitOptions.VisitNamespaceFunctions)
VisitDeclContextFunctions(context);
return true;
@ -304,25 +319,6 @@ namespace CppSharp.Generators @@ -304,25 +319,6 @@ namespace CppSharp.Generators
VisitClassConstructors(@class);
VisitClassMethods(@class);
foreach (var @event in @class.Events)
{
if (!@event.IsGenerated)
continue;
@event.Visit(this);
}
foreach (var variable in @class.Variables)
{
if (!variable.IsGenerated)
continue;
if (variable.Access != AccessSpecifier.Public)
continue;
variable.Visit(this);
}
return true;
}

Loading…
Cancel
Save