org.eclipse.xtext.nodemodel
Interface BidiIterable<T>

All Superinterfaces:
java.lang.Iterable<T>
All Known Subinterfaces:
BidiTreeIterable<E>
All Known Implementing Classes:
AbstractNode, BasicNodeIterable, CompositeNode, CompositeNodeWithSemanticElement, CompositeNodeWithSemanticElementAndSyntaxError, CompositeNodeWithSyntaxError, EmptyBidiIterable, HiddenLeafNode, HiddenLeafNodeWithSyntaxError, LeafNode, LeafNodeWithSyntaxError, NodeIterable, ReversedBidiIterable, ReversedBidiTreeIterable, RootNode, SingletonBidiIterable, SyntheticCompositeNode

public interface BidiIterable<T>
extends java.lang.Iterable<T>

An iterable that is capable of being iterated in both directions - forwards and backwards.

Author:
Sebastian Zarnekow - Initial contribution and API

Method Summary
 BidiIterator<T> iterator()
          Returns an iterator that can be used forwards and backwards.
 BidiIterable<T> reverse()
          Returns a reverse version of this iterable that can be used forwards and backwards.
 

Method Detail

iterator

BidiIterator<T> iterator()
Returns an iterator that can be used forwards and backwards.

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

reverse

BidiIterable<T> 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
 }
 

Returns:
the reversed iterable. Never returns null.