Browse Source

Get rid of custom Flatten() implementation, use the one from NR instead.

newNRvisualizers
Daniel Grunwald 14 years ago
parent
commit
44a37d06a6
  1. 1
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/ICSharpCode.AvalonEdit.csproj
  2. 2
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Xml/AXmlContainer.cs
  3. 47
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Xml/ExtensionMethods.cs

1
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/ICSharpCode.AvalonEdit.csproj

@ -366,7 +366,6 @@ @@ -366,7 +366,6 @@
<Compile Include="Xml\TrackedSegmentCollection.cs">
<DependentUpon>AXmlParser.cs</DependentUpon>
</Compile>
<Compile Include="Xml\ExtensionMethods.cs" />
<Compile Include="Xml\FilteredCollection.cs" />
<Compile Include="Xml\IAXmlVisitor.cs" />
<Compile Include="Xml\MergedCollection.cs" />

2
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Xml/AXmlContainer.cs

@ -60,7 +60,7 @@ namespace ICSharpCode.AvalonEdit.Xml @@ -60,7 +60,7 @@ namespace ICSharpCode.AvalonEdit.Xml
/// <inheritdoc/>
public override IEnumerable<AXmlObject> GetSelfAndAllChildren()
{
return (new AXmlObject[] { this }).Flatten(
return NRefactory.Utils.TreeTraversal.PreOrder(this,
delegate(AXmlObject i) {
AXmlContainer container = i as AXmlContainer;
if (container != null)

47
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Xml/ExtensionMethods.cs

@ -1,47 +0,0 @@ @@ -1,47 +0,0 @@
// 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;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.Diagnostics;
using System.Linq;
using ICSharpCode.AvalonEdit.Document;
namespace ICSharpCode.AvalonEdit.Xml
{
static class ExtensionMethods
{
// Copied from ICSharpCode.SharpDevelop.Dom.ExtensionMethods
/// <summary>
/// Converts a recursive data structure into a flat list.
/// </summary>
/// <param name="input">The root elements of the recursive data structure.</param>
/// <param name="recursion">The function that gets the children of an element.</param>
/// <returns>Iterator that enumerates the tree structure in preorder.</returns>
public static IEnumerable<T> Flatten<T>(this IEnumerable<T> input, Func<T, IEnumerable<T>> recursion)
{
Stack<IEnumerator<T>> stack = new Stack<IEnumerator<T>>();
try {
stack.Push(input.GetEnumerator());
while (stack.Count > 0) {
while (stack.Peek().MoveNext()) {
T element = stack.Peek().Current;
yield return element;
IEnumerable<T> children = recursion(element);
if (children != null) {
stack.Push(children.GetEnumerator());
}
}
stack.Pop().Dispose();
}
} finally {
while (stack.Count > 0) {
stack.Pop().Dispose();
}
}
}
}
}
Loading…
Cancel
Save