diff --git a/src/Bridge/ASTVisitor.cs b/src/Bridge/ASTVisitor.cs index 15ccc924..cce3dc03 100644 --- a/src/Bridge/ASTVisitor.cs +++ b/src/Bridge/ASTVisitor.cs @@ -2,29 +2,38 @@ namespace Cxxi { + public interface IAstVisited + { + ISet Visited { get; } + + bool AlreadyVisited(Declaration decl); + bool AlreadyVisited(Type type); + } + /// /// Base class for AST visitors. /// You can override the methods to customize the behaviour, by default /// this will visit all the nodes in a default way that should be useful /// for a lot of applications. /// - public abstract class AstVisitor : ITypeVisitor, IDeclVisitor + public abstract class AstVisitor : ITypeVisitor, IDeclVisitor, + IAstVisited { - private readonly ISet visited; + public ISet Visited { get; private set; } protected AstVisitor() { - visited = new HashSet(); + Visited = new HashSet(); } public bool AlreadyVisited(Type type) { - return !visited.Add(type); + return !Visited.Add(type); } public bool AlreadyVisited(Declaration decl) { - return !visited.Add(decl); + return !Visited.Add(decl); } #region Type Visitors