edu.rice.cs.plt.iter
Class TruncatedIterable<T>

java.lang.Object
  extended by edu.rice.cs.plt.iter.AbstractIterable<T>
      extended by edu.rice.cs.plt.iter.TruncatedIterable<T>
All Implemented Interfaces:
SizedIterable<T>, Composite, java.io.Serializable, java.lang.Iterable<T>
Direct Known Subclasses:
FiniteSequenceIterable

public class TruncatedIterable<T>
extends AbstractIterable<T>
implements SizedIterable<T>, Composite, java.io.Serializable

Contains, for some value size, the first size elements of a nested iterable. (If the nested list has less than size elements, this iterable is identical.) Changes made to the underlying list are reflected here.

See Also:
Serialized Form

Field Summary
protected  int _size
           
 
Constructor Summary
TruncatedIterable(java.lang.Iterable<? extends T> iterable, int size)
           
 
Method Summary
 int compositeHeight()
          Get the maximum path length from this node to a leaf.
 int compositeSize()
          Get the number of nodes in the tree rooted at this node.
 boolean hasFixedSize()
          true if this iterable is known to have a fixed size.
 boolean isEmpty()
          Whether the iterable does not contain any elements.
 boolean isInfinite()
          true if the iterable is known to have infinite size.
 boolean isStatic()
          true if this iterable is unchanging.
 TruncatedIterator<T> iterator()
           
static
<T> TruncatedIterable<T>
make(java.lang.Iterable<? extends T> iterable, int size)
          Call the constructor (allows T to be inferred)
static
<T> SnapshotIterable<T>
makeSnapshot(java.lang.Iterable<? extends T> iterable, int size)
          Create a TruncatedIterable and wrap it in a SnapshotIterable, forcing immediate traversal of the list.
 int size()
          Return size, unless the nested iterable is smaller than size; in that case, returns the iterable's size.
 int size(int bound)
          Compute the number of elements in the iterable, up to the given bound.
 
Methods inherited from class edu.rice.cs.plt.iter.AbstractIterable
equals, hashCode, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

_size

protected final int _size
Constructor Detail

TruncatedIterable

public TruncatedIterable(java.lang.Iterable<? extends T> iterable,
                         int size)
Method Detail

compositeHeight

public int compositeHeight()
Description copied from interface: Composite
Get the maximum path length from this node to a leaf.

Specified by:
compositeHeight in interface Composite

compositeSize

public int compositeSize()
Description copied from interface: Composite
Get the number of nodes in the tree rooted at this node. Always 1 or greater.

Specified by:
compositeSize in interface Composite

iterator

public TruncatedIterator<T> iterator()
Specified by:
iterator in interface java.lang.Iterable<T>

isEmpty

public boolean isEmpty()
Description copied from interface: SizedIterable
Whether the iterable does not contain any elements.

Specified by:
isEmpty in interface SizedIterable<T>

size

public int size()
Return size, unless the nested iterable is smaller than size; in that case, returns the iterable's size.

Specified by:
size in interface SizedIterable<T>

size

public int size(int bound)
Description copied from interface: SizedIterable
Compute the number of elements in the iterable, up to the given bound. If the size is infinite or greater than bound, bound is returned.

Specified by:
size in interface SizedIterable<T>
Parameters:
bound - Maximum result. Assumed to be nonnegative.

isInfinite

public boolean isInfinite()
Description copied from interface: SizedIterable
true if the iterable is known to have infinite size. If true, an iterator over the iterable in its current state will never return false from hasNext().

Specified by:
isInfinite in interface SizedIterable<T>

hasFixedSize

public boolean hasFixedSize()
Description copied from interface: SizedIterable
true if this iterable is known to have a fixed size. This is the case if the iterable is immutable, or if changes can only replace values, not remove or add them. An infinite iterable may be fixed if it is guaranteed to never become finite.

Specified by:
hasFixedSize in interface SizedIterable<T>

isStatic

public boolean isStatic()
Description copied from interface: SizedIterable
true if this iterable is unchanging. This implies that hasFixedSize() is true, and that iterator() will always return the same (either == or equal() and immutable) elements in the same order. ("Immutable" here means that equals() invocations are consistent over time -- if two objects are equal, they will never become inequal, and vice versa.)

Specified by:
isStatic in interface SizedIterable<T>

make

public static <T> TruncatedIterable<T> make(java.lang.Iterable<? extends T> iterable,
                                            int size)
Call the constructor (allows T to be inferred)


makeSnapshot

public static <T> SnapshotIterable<T> makeSnapshot(java.lang.Iterable<? extends T> iterable,
                                                   int size)
Create a TruncatedIterable and wrap it in a SnapshotIterable, forcing immediate traversal of the list.