Skip to content

Commit

Permalink
Remove TimelineEnumerator/TimelineTreeEnumerator dead code (#9858)
Browse files Browse the repository at this point in the history
  • Loading branch information
h3xds1nz authored Oct 21, 2024
1 parent 4f274d5 commit 13c81c7
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 298 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -267,151 +267,4 @@ internal Clock Current

#endregion // Data
}

/// <summary>
/// An object that enumerates the timelines of a tree of Timeline
/// objects.
/// </summary>
internal struct TimelineTreeEnumerator
{
#region Constructor
/// <summary>
/// Creates an enumerator that iterates over a subtree of timelines
/// in prefix order.
/// </summary>
/// <param name="root">
/// The timeline that is the root of the subtree to enumerate.
/// </param>
/// <param name="processRoot">
/// True to include the root in the enumeration, false otherwise.
/// </param>
internal TimelineTreeEnumerator(Timeline root, bool processRoot)
{
_rootTimeline = root;
_flags = processRoot ? (SubtreeFlag.Reset | SubtreeFlag.ProcessRoot) : SubtreeFlag.Reset;

// Start with stacks of capacity 10. That's relatively small, yet
// it covers very large trees without reallocation of stack data.
// Note that given the way we use the stacks we need one less entry
// for indices than for timelines, as we don't care what the index
// of the root timeline is.
_indexStack = new Stack(9);
_timelineStack = new Stack<Timeline>(10);
}
#endregion // Constructor

#region Methods

/// <summary>
/// Causes the enumerator to not enumerate the timelines in the subtree rooted
/// at the current timeline.
/// </summary>
internal void SkipSubtree()
{
_flags |= SubtreeFlag.SkipSubtree;
}

/// <summary>
/// Advances the enumerator to the next element of the collection.
/// </summary>
/// <returns>
/// true if the enumerator was successfully advanced to the next element,
/// false if the enumerator has passed the end of the collection.
/// </returns>
public bool MoveNext()
{
TimelineCollection children;

// Get the iteration started in the right place, if we are just starting
if ((_flags & SubtreeFlag.Reset) != 0)
{
// The reset flag takes effect only once
_flags &= ~SubtreeFlag.Reset;

// We are just getting started. The first timeline is the root
_timelineStack.Push(_rootTimeline);

// If we are not supposed to return the root, simply skip it
if ((_flags & SubtreeFlag.ProcessRoot) == 0)
{
MoveNext();
}
}
else if (_timelineStack.Count > 0)
{
// Only TimelineGroup can have children
TimelineGroup timelineGroup = _timelineStack.Peek() as TimelineGroup;

// The next timeline is possibly the first child of the current timeline
// If we have children move to the first one, unless we were
// asked to skip the subtree
if ( ((_flags & SubtreeFlag.SkipSubtree) == 0)
&& timelineGroup != null
&& (children = timelineGroup.Children) != null
&& children.Count > 0
)
{
_timelineStack.Push(children[0]);
_indexStack.Push((int)0);
}
else
{
// The skip subtree flag takes effect only once
_flags &= ~SubtreeFlag.SkipSubtree;

// Move to the first ancestor that has unvisited children,
// then move to the first unvisited child. If we get to
// the root it means we are done.
_timelineStack.Pop();
while (_timelineStack.Count > 0)
{
timelineGroup = _timelineStack.Peek() as TimelineGroup;

// This has to be non-null since we already went down the tree
children = timelineGroup.Children;

int index = (int)_indexStack.Pop() + 1;

if (index < children.Count)
{
// Move to the next child, and we are done
_timelineStack.Push(children[index]);
_indexStack.Push(index);
break;
}

_timelineStack.Pop();
}
}
}

return _timelineStack.Count > 0;
}

#endregion // Methods

#region Properties

/// <summary>
/// Gets the current element in the collection.
/// </summary>
internal Timeline Current
{
get
{
return _timelineStack.Peek();
}
}

#endregion // Properties

#region Data

private Timeline _rootTimeline;
private SubtreeFlag _flags;
private Stack _indexStack;
private Stack<Timeline> _timelineStack;

#endregion // Data
}
}

This file was deleted.

0 comments on commit 13c81c7

Please # to comment.