Browse Source

Clean up template declarations visiting behavior.

pull/685/head
Joao Matos 9 years ago
parent
commit
4b8bb474fa
  1. 24
      src/AST/ASTVisitor.cs
  2. 7
      src/AST/Declaration.cs
  3. 5
      src/AST/Template.cs

24
src/AST/ASTVisitor.cs

@ -311,11 +311,6 @@ namespace CppSharp.AST @@ -311,11 +311,6 @@ namespace CppSharp.AST
return true;
}
public virtual bool VisitClassTemplateSpecializationDecl(ClassTemplateSpecialization specialization)
{
return VisitClassDecl(specialization);
}
public virtual bool VisitFieldDecl(Field field)
{
if (!VisitDeclaration(field))
@ -440,9 +435,16 @@ namespace CppSharp.AST @@ -440,9 +435,16 @@ namespace CppSharp.AST
foreach (var specialization in template.Specializations)
specialization.Visit(this);
template.TemplatedClass.Visit(this);
return true;
}
public virtual bool VisitClassTemplateSpecializationDecl(ClassTemplateSpecialization specialization)
{
return VisitClassDecl(specialization);
}
public virtual bool VisitFunctionTemplateDecl(FunctionTemplate template)
{
if (!VisitDeclaration(template))
@ -451,7 +453,17 @@ namespace CppSharp.AST @@ -451,7 +453,17 @@ namespace CppSharp.AST
foreach (var templateParameter in template.Parameters)
templateParameter.Visit(this);
return template.TemplatedFunction.Visit(this);
foreach (var specialization in template.Specializations)
specialization.Visit(this);
template.TemplatedFunction.Visit(this);
return true;
}
public virtual bool VisitFunctionTemplateSpecializationDecl(FunctionTemplateSpecialization specialization)
{
return specialization.SpecializedFunction.Visit(this);
}
public virtual bool VisitMacroDefinition(MacroDefinition macro)

7
src/AST/Declaration.cs

@ -401,7 +401,6 @@ namespace CppSharp.AST @@ -401,7 +401,6 @@ namespace CppSharp.AST
{
T VisitDeclaration(Declaration decl);
T VisitClassDecl(Class @class);
T VisitClassTemplateSpecializationDecl(ClassTemplateSpecialization specialization);
T VisitFieldDecl(Field field);
T VisitFunctionDecl(Function function);
T VisitMethodDecl(Method method);
@ -411,13 +410,15 @@ namespace CppSharp.AST @@ -411,13 +410,15 @@ namespace CppSharp.AST
T VisitEnumDecl(Enumeration @enum);
T VisitEnumItemDecl(Enumeration.Item item);
T VisitVariableDecl(Variable variable);
T VisitClassTemplateDecl(ClassTemplate template);
T VisitFunctionTemplateDecl(FunctionTemplate template);
T VisitMacroDefinition(MacroDefinition macro);
T VisitNamespace(Namespace @namespace);
T VisitEvent(Event @event);
T VisitProperty(Property @property);
T VisitFriend(Friend friend);
T VisitClassTemplateDecl(ClassTemplate template);
T VisitClassTemplateSpecializationDecl(ClassTemplateSpecialization specialization);
T VisitFunctionTemplateDecl(FunctionTemplate template);
T VisitFunctionTemplateSpecializationDecl(FunctionTemplateSpecialization specialization);
T VisitTemplateTemplateParameterDecl(TemplateTemplateParameter templateTemplateParameter);
T VisitTemplateParameterDecl(TypeTemplateParameter templateParameter);
T VisitNonTypeTemplateParameterDecl(NonTypeTemplateParameter nonTypeTemplateParameter);

5
src/AST/Template.cs

@ -372,5 +372,10 @@ namespace CppSharp.AST @@ -372,5 +372,10 @@ namespace CppSharp.AST
SpecializedFunction = fts.SpecializedFunction;
SpecializationKind = fts.SpecializationKind;
}
public T Visit<T>(IDeclVisitor<T> visitor)
{
return visitor.VisitFunctionTemplateSpecializationDecl(this);
}
}
}

Loading…
Cancel
Save