From 7812eb8a09f19a3af482e1834ff5094c534f214a Mon Sep 17 00:00:00 2001 From: triton Date: Wed, 30 Jan 2013 14:42:23 +0000 Subject: [PATCH] Added IAstVisited interface and use it in AstVisitor. --- src/Bridge/ASTVisitor.cs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) 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