mirror of https://github.com/icsharpcode/ILSpy.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
142 lines
4.1 KiB
142 lines
4.1 KiB
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) |
|
// This code is distributed under MIT X11 license (for details please see \doc\license.txt) |
|
|
|
using System; |
|
using System.Collections.Generic; |
|
using ICSharpCode.NRefactory.VB.Ast; |
|
|
|
namespace ICSharpCode.NRefactory.VB.PrettyPrinter |
|
{ |
|
// public class SpecialOutputVisitor : ISpecialVisitor |
|
// { |
|
// readonly IOutputFormatter formatter; |
|
// |
|
// public SpecialOutputVisitor(IOutputFormatter formatter) |
|
// { |
|
// this.formatter = formatter; |
|
// } |
|
// |
|
// public bool ForceWriteInPreviousLine; |
|
// |
|
// public object Visit(ISpecial special, object data) |
|
// { |
|
// Console.WriteLine("Warning: SpecialOutputVisitor.Visit(ISpecial) called with " + special); |
|
// return data; |
|
// } |
|
// |
|
// public object Visit(BlankLine special, object data) |
|
// { |
|
// formatter.PrintBlankLine(ForceWriteInPreviousLine); |
|
// return data; |
|
// } |
|
// |
|
// public object Visit(Comment special, object data) |
|
// { |
|
// formatter.PrintComment(special, ForceWriteInPreviousLine); |
|
// return data; |
|
// } |
|
// |
|
// public object Visit(PreprocessingDirective special, object data) |
|
// { |
|
// formatter.PrintPreprocessingDirective(special, ForceWriteInPreviousLine); |
|
// return data; |
|
// } |
|
// } |
|
// |
|
// /// <summary> |
|
// /// This class inserts specials between INodes. |
|
// /// </summary> |
|
// public sealed class SpecialNodesInserter : IDisposable |
|
// { |
|
// IEnumerator<ISpecial> enumerator; |
|
// SpecialOutputVisitor visitor; |
|
// bool available; // true when more specials are available |
|
// |
|
// public SpecialNodesInserter(IEnumerable<ISpecial> specials, SpecialOutputVisitor visitor) |
|
// { |
|
// if (specials == null) throw new ArgumentNullException("specials"); |
|
// if (visitor == null) throw new ArgumentNullException("visitor"); |
|
// enumerator = specials.GetEnumerator(); |
|
// this.visitor = visitor; |
|
// available = enumerator.MoveNext(); |
|
// } |
|
// |
|
// void WriteCurrent() |
|
// { |
|
// enumerator.Current.AcceptVisitor(visitor, null); |
|
// available = enumerator.MoveNext(); |
|
// } |
|
// |
|
// AttributedNode currentAttributedNode; |
|
// |
|
// /// <summary> |
|
// /// Writes all specials up to the start position of the node. |
|
// /// </summary> |
|
// public void AcceptNodeStart(INode node) |
|
// { |
|
// if (node is AttributedNode) { |
|
// currentAttributedNode = node as AttributedNode; |
|
// if (currentAttributedNode.Attributes.Count == 0) { |
|
// AcceptPoint(node.StartLocation); |
|
// currentAttributedNode = null; |
|
// } |
|
// } else { |
|
// AcceptPoint(node.StartLocation); |
|
// } |
|
// } |
|
// |
|
// /// <summary> |
|
// /// Writes all specials up to the end position of the node. |
|
// /// </summary> |
|
// public void AcceptNodeEnd(INode node) |
|
// { |
|
// visitor.ForceWriteInPreviousLine = true; |
|
// AcceptPoint(node.EndLocation); |
|
// visitor.ForceWriteInPreviousLine = false; |
|
// if (currentAttributedNode != null) { |
|
// if (node == currentAttributedNode.Attributes[currentAttributedNode.Attributes.Count - 1]) { |
|
// AcceptPoint(currentAttributedNode.StartLocation); |
|
// currentAttributedNode = null; |
|
// } |
|
// } |
|
// } |
|
// |
|
// /// <summary> |
|
// /// Writes all specials up to the specified location. |
|
// /// </summary> |
|
// public void AcceptPoint(Location loc) |
|
// { |
|
// while (available && enumerator.Current.StartPosition <= loc) { |
|
// WriteCurrent(); |
|
// } |
|
// } |
|
// |
|
// /// <summary> |
|
// /// Outputs all missing specials to the writer. |
|
// /// </summary> |
|
// public void Finish() |
|
// { |
|
// while (available) { |
|
// WriteCurrent(); |
|
// } |
|
// } |
|
// |
|
// void IDisposable.Dispose() |
|
// { |
|
// Finish(); |
|
// } |
|
// |
|
// /// <summary> |
|
// /// Registers a new SpecialNodesInserter with the output visitor. |
|
// /// Make sure to call Finish() (or Dispose()) on the returned SpecialNodesInserter |
|
// /// when the output is finished. |
|
// /// </summary> |
|
// public static SpecialNodesInserter Install(IEnumerable<ISpecial> specials, IOutputDomVisitor outputVisitor) |
|
// { |
|
// SpecialNodesInserter sni = new SpecialNodesInserter(specials, new SpecialOutputVisitor(outputVisitor.OutputFormatter)); |
|
// outputVisitor.BeforeNodeVisit += sni.AcceptNodeStart; |
|
// outputVisitor.AfterNodeVisit += sni.AcceptNodeEnd; |
|
// return sni; |
|
// } |
|
// } |
|
}
|
|
|