rcf.core.util.groups
Class ImmutableSingleton.Iterator<A>

java.lang.Object
  extended by rcf.core.util.groups.ImmutableSingleton.Iterator<A>
Type Parameters:
A - The type of the content element in each singleton.
All Implemented Interfaces:
rcf.core.util.collection.iterator.ImmutableFixedUniIterator<Singleton<A>>, rcf.core.util.collection.position.ImmutableFixedUniPosition<Singleton<A>>, rcf.core.util.Copyable, ImmutableSingletonInterface<Singleton<A>>, ImmutableIterator<Singleton<A>>, ImmutablePosition<Singleton<A>>
Enclosing class:
ImmutableSingleton<A>

public static class ImmutableSingleton.Iterator<A>
extends Object
implements rcf.core.util.collection.iterator.ImmutableFixedUniIterator<Singleton<A>>

TODO: Javadoc Wrap a single immutable iterator, create an immutable iterator over singletons of elements.

Version:
$Revision: 1.27 $
Author:
Greg Gibeling

Field Summary
protected  Singleton<A> curr
          TODO: Javadoc The current singleton created from the wrapped iterator.
protected  ImmutableSingleton.Iterable<A> iterable
          TODO: Javadoc
protected  rcf.core.util.collection.iterator.ImmutableFixedUniIterator<A> x
          TODO: Javadoc The immutable iterator which is being wrapped.
 
Constructor Summary
ImmutableSingleton.Iterator(ImmutableSingleton.Iterable<A> _iterable, rcf.core.util.collection.iterator.ImmutableFixedUniIterator<A> _a)
          TODO: Javadoc Create an immutable iterator of singletons from an immutable iterable object.
 
Method Summary
 rcf.core.util.collection.position.ImmutableFixedUniPosition<Singleton<A>> asAbstract()
           
 ImmutableSingleton.Iterator<A> copy()
          TODO: Javadoc Return a new iterator which is currently at the same position as this iterator.
 boolean equals(Object o)
          Determine if the specified object is an instance of ImmutablPposition which represents the same position in the same abstract data structure, as this object.
 Singleton<A> get()
          TODO: Javadoc Get the content element of this singleton.
 int hashCode()
           
 boolean isCompatible(ImmutablePosition<Singleton<A>> p)
          Determine if this position is compatible to, i.e.
 boolean isPost()
           
 boolean isPre()
           
 boolean isSentinel()
          Determine if this position is a sentinel; i.e.
 ImmutableSingleton.Iterable<A> iterable()
          TODO: Javadoc
 ImmutableSingleton.Iterator<A> next(rcf.core.util.filter.Filter<Singleton<A>> filter)
           
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

curr

protected Singleton<A> curr
TODO: Javadoc The current singleton created from the wrapped iterator.


iterable

protected final ImmutableSingleton.Iterable<A> iterable
TODO: Javadoc


x

protected final rcf.core.util.collection.iterator.ImmutableFixedUniIterator<A> x
TODO: Javadoc The immutable iterator which is being wrapped.

Constructor Detail

ImmutableSingleton.Iterator

public ImmutableSingleton.Iterator(ImmutableSingleton.Iterable<A> _iterable,
                                   rcf.core.util.collection.iterator.ImmutableFixedUniIterator<A> _a)
TODO: Javadoc Create an immutable iterator of singletons from an immutable iterable object. TODO: Javadoc

Parameters:
_iterable -
_a - The iterator object which is to be wrapped and iterated.
Method Detail

asAbstract

public rcf.core.util.collection.position.ImmutableFixedUniPosition<Singleton<A>> asAbstract()
Specified by:
asAbstract in interface rcf.core.util.collection.position.ImmutableFixedUniPosition<Singleton<A>>

copy

public ImmutableSingleton.Iterator<A> copy()
Description copied from interface: ImmutableIterator
TODO: Javadoc Return a new iterator which is currently at the same position as this iterator. That is, this method will return an iterator i such that this.equals(i) && this.isCompatible(i) (notice that equals is symmetric but isCompatible is not). Note that a call to e.g. ImmutableFixedUniIterator.next(rcf.core.util.filter.Filter) on this must not affect i and vice-versa.

This method is extremely useful in conjunction with position based collections where iteration is expensive or positions have algorithmic importance or higher level semantics.

Specified by:
copy in interface rcf.core.util.collection.iterator.ImmutableFixedUniIterator<Singleton<A>>
Specified by:
copy in interface rcf.core.util.Copyable
Specified by:
copy in interface ImmutableIterator<Singleton<A>>
Returns:
A new iterator i such that this.equals(i).

equals

public boolean equals(Object o)
Description copied from interface: ImmutablePosition
Determine if the specified object is an instance of ImmutablPposition which represents the same position in the same abstract data structure, as this object. Notice that for positions p and q, p.equals(q) implies p.isCompatible(q) && q.isCompatible(p).

Specified by:
equals in interface ImmutablePosition<Singleton<A>>
Overrides:
equals in class Object
Parameters:
o - The object to compare this one to, for equality.
Returns:
true if this position and the one specified represent the same position, in the same abstract data structure.

get

public Singleton<A> get()
Description copied from interface: ImmutableSingletonInterface
TODO: Javadoc Get the content element of this singleton.

Specified by:
get in interface ImmutableSingletonInterface<Singleton<A>>
Returns:
The content element of this singleton.

hashCode

public int hashCode()
Overrides:
hashCode in class Object

isCompatible

public boolean isCompatible(ImmutablePosition<Singleton<A>> p)
Description copied from interface: ImmutablePosition
Determine if this position is compatible to, i.e. indicates a position in the same abstract data structure as, the specfied position (should return true even for sentinel positions). This method should never throw exceptions (especially IncompatiblePositionException) as it is a test to avoid them.

Specified by:
isCompatible in interface ImmutablePosition<Singleton<A>>
Parameters:
p - The position to determine if this one is compatible to.
Returns:
true indicates that this position and the specified one belong to the same abstract data structure.

isPost

public boolean isPost()
Specified by:
isPost in interface rcf.core.util.collection.position.ImmutableFixedUniPosition<Singleton<A>>

isPre

public boolean isPre()
Specified by:
isPre in interface rcf.core.util.collection.position.ImmutableFixedUniPosition<Singleton<A>>

isSentinel

public boolean isSentinel()
Description copied from interface: ImmutablePosition
Determine if this position is a sentinel; i.e. a position which does not contain an element in the backing abstract data structure, but which instead marks the start or end of an iteration or some other boundary condition.

Specified by:
isSentinel in interface ImmutablePosition<Singleton<A>>
Returns:
true if this is a sentinel position.

iterable

public ImmutableSingleton.Iterable<A> iterable()
Description copied from interface: ImmutableIterator
TODO: Javadoc

Specified by:
iterable in interface rcf.core.util.collection.iterator.ImmutableFixedUniIterator<Singleton<A>>
Specified by:
iterable in interface ImmutableIterator<Singleton<A>>
Returns:

next

public ImmutableSingleton.Iterator<A> next(rcf.core.util.filter.Filter<Singleton<A>> filter)
Specified by:
next in interface rcf.core.util.collection.iterator.ImmutableFixedUniIterator<Singleton<A>>

toString

public String toString()
Overrides:
toString in class Object