org.eclipse.xtext.nodemodel
Interface BidiTreeIterable<E>

All Superinterfaces:
BidiIterable<E>, java.lang.Iterable<E>
All Known Implementing Classes:
AbstractNode, CompositeNode, CompositeNodeWithSemanticElement, CompositeNodeWithSemanticElementAndSyntaxError, CompositeNodeWithSyntaxError, HiddenLeafNode, HiddenLeafNodeWithSyntaxError, LeafNode, LeafNodeWithSyntaxError, ReversedBidiTreeIterable, RootNode, SyntheticCompositeNode

public interface BidiTreeIterable<E>
extends BidiIterable<E>

An iterable over a tree structure that is capable of being iterated in both directions - forwards and backwards. The tree iterator returned by iterator() is capable to prune some parts of the tree if clients are not interested in descending into them.

Author:
Sebastian Zarnekow - Initial contribution and API

Method Summary
 BidiTreeIterator<E> iterator()
          Returns a tree iterator that can be used forwards and backwards.
 BidiTreeIterable<E> reverse()
          

Returns a reverse version of this iterable that can be used forwards and backwards.

 

Method Detail

iterator

BidiTreeIterator<E> iterator()
Returns a tree iterator that can be used forwards and backwards.

Specified by:
iterator in interface BidiIterable<E>
Specified by:
iterator in interface java.lang.Iterable<E>
Returns:
an iterator. Never returns null.

reverse

BidiTreeIterable<E> reverse()

Returns a reverse version of this iterable that can be used forwards and backwards. In other words, an iterator provided by the reverse iterable will delegate its hasNext() and next() invocations to BidiIterator.hasPrevious() and BidiIterator.previous() respectively.

This allows clients to iterate backwards by means of the enhanced for-loop:

 for(T t: iterable.reverse()) {
   // do something with t
 }
 

Specified by:
reverse in interface BidiIterable<E>
Returns:
the reversed iterable. Never returns null.