EsCLDTStreamIterator
Description
An adapter class to adapt the atEnd/next style of the CLDT Stream to the moveNext/current style of an @Iterator
This is created from Stream>>iterator
Instance state
• stream: <Stream> CLDT Stream
• current:<Object> or nil
Class Methods
on:
Answer a new iterator over @aStream
Arguments:
aStream - <Stream>
Answers:
<EsCLDTStreamIterator>
Instance Methods
current
The current element.
If the iterator has not yet been moved to the first element (#moveNext has not been called yet),
or if the iterator has been moved past the last element. (#moveNext has answered false),
then @current is unspecified.
The #current getter should keep its value until the next call to #moveNext, even if an underlying CLDT stream changes.
After a successful call to #moveNext, the user doesn't need to cache the current value, but can keep reading it from the iterator.
Answers:
<Object>
moveNext
Advances the iterator to the next element of the CLDT Stream.
Should be called before reading @current.
If the call to #moveNext answers `true`,
then @current will contain the next element of the CLDT Stream
until #moveNext is called again.
If the call answers `false`, there are no further elements
and @current should not be used any more.
It is safe to call #moveNext after it has already answered `false`,
but it must keep returning `false` and not have any other effect.
A call to #moveNext may raise an exception for various reasons,
including a concurrent change to an underlying CLDT stream.
If that happens, the iterator may be in an inconsistent
state, and any further behavior of the iterator is unspecified,
including the effect of reading @current.
Answers:
<Boolean>
Last modified date: 04/21/2022