// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using System; namespace ICSharpCode.NRefactory.VB { /// /// Interface for all specials. /// public interface ISpecial { Location StartPosition { get; } Location EndPosition { get; } object AcceptVisitor(ISpecialVisitor visitor, object data); } public interface ISpecialVisitor { object Visit(ISpecial special, object data); object Visit(BlankLine special, object data); object Visit(Comment special, object data); object Visit(PreprocessingDirective special, object data); } public abstract class AbstractSpecial : ISpecial { public abstract object AcceptVisitor(ISpecialVisitor visitor, object data); protected AbstractSpecial(Location position) { this.StartPosition = position; this.EndPosition = position; } protected AbstractSpecial(Location startPosition, Location endPosition) { this.StartPosition = startPosition; this.EndPosition = endPosition; } public Location StartPosition { get; set; } public Location EndPosition { get; set; } public override string ToString() { return String.Format("[{0}: Start = {1}, End = {2}]", GetType().Name, StartPosition, EndPosition); } } }