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

36
src/Generator/Generators/CodeGenerator.cs

@ -262,11 +262,26 @@ namespace CppSharp.Generators
{ {
foreach (var decl in context.Declarations) 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) if (decl.IsGenerated)
decl.Visit(this); decl.Visit(this);
} }
if (VisitOptions.VisitNamespaceFunctions)
VisitDeclContextFunctions(context); VisitDeclContextFunctions(context);
return true; return true;
@ -304,25 +319,6 @@ namespace CppSharp.Generators
VisitClassConstructors(@class); VisitClassConstructors(@class);
VisitClassMethods(@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; return true;
} }

Loading…
Cancel
Save