Make sequence implementations private.

This commit is contained in:
Ilya Gorbunov
2015-06-26 00:23:29 +03:00
parent 4660b07687
commit 34f939a476
@@ -63,8 +63,7 @@ private object EmptySequence : Sequence<Nothing> {
* @param sendWhen If `true`, values for which the predicate returns `true` are returned. Otherwise,
* values for which the predicate returns `false` are returned
*/
deprecated("This class is an implementation detail and shall be made internal soon. Use sequence.filter() or sequence.filterNot() instead.")
public class FilteringSequence<T>(private val sequence: Sequence<T>,
private class FilteringSequence<T>(private val sequence: Sequence<T>,
private val sendWhen: Boolean = true,
private val predicate: (T) -> Boolean
) : Sequence<T> {
@@ -109,9 +108,8 @@ public class FilteringSequence<T>(private val sequence: Sequence<T>,
* A sequence which returns the results of applying the given [transformer] function to the values
* in the underlying [sequence].
*/
deprecated("This class is an implementation detail and shall be made internal soon. Use sequence.map() instead.")
public class TransformingSequence<T, R>
deprecated("This class is an implementation detail and shall be made internal soon.", ReplaceWith("sequence.map(transformer)"))
private class TransformingSequence<T, R>
constructor(private val sequence: Sequence<T>, private val transformer: (T) -> R) : Sequence<R> {
override fun iterator(): Iterator<R> = object : Iterator<R> {
val iterator = sequence.iterator()
@@ -130,9 +128,7 @@ constructor(private val sequence: Sequence<T>, private val transformer: (T) -> R
* in the underlying [sequence], where the transformer function takes the index of the value in the underlying
* sequence along with the value itself.
*/
deprecated("This class is an implementation detail and shall be made internal soon. Use sequence.mapIndexed() instead.")
public class TransformingIndexedSequence<T, R>
deprecated("This class is an implementation detail and shall be made internal soon.", ReplaceWith("sequence.mapIndexed(transformer)"))
private class TransformingIndexedSequence<T, R>
constructor(private val sequence: Sequence<T>, private val transformer: (Int, T) -> R) : Sequence<R> {
override fun iterator(): Iterator<R> = object : Iterator<R> {
val iterator = sequence.iterator()
@@ -151,9 +147,7 @@ constructor(private val sequence: Sequence<T>, private val transformer: (Int, T)
* A sequence which combines values from the underlying [sequence] with their indices and returns them as
* [IndexedValue] objects.
*/
deprecated("This class is an implementation detail and shall be made internal soon. Use sequence.withIndex() instead.")
public class IndexingSequence<T>
deprecated("This class is an implementation detail and shall be made internal soon.", ReplaceWith("sequence.withIndex()"))
private class IndexingSequence<T>
constructor(private val sequence: Sequence<T>) : Sequence<IndexedValue<T>> {
override fun iterator(): Iterator<IndexedValue<T>> = object : Iterator<IndexedValue<T>> {
val iterator = sequence.iterator()
@@ -173,9 +167,7 @@ constructor(private val sequence: Sequence<T>) : Sequence<IndexedValue<T>> {
* [transform] function and returns the values returned by that function. The sequence stops returning
* values as soon as one of the underlying sequences stops returning values.
*/
deprecated("This class is an implementation detail and shall be made internal soon. Use sequence.merge() instead.")
public class MergingSequence<T1, T2, V>
deprecated("This class is an implementation detail and shall be made internal soon.", ReplaceWith("sequence1.merge(sequence2, transform)"))
private class MergingSequence<T1, T2, V>
constructor(private val sequence1: Sequence<T1>,
private val sequence2: Sequence<T2>,
private val transform: (T1, T2) -> V
@@ -193,9 +185,7 @@ deprecated("This class is an implementation detail and shall be made internal so
}
}
deprecated("This class is an implementation detail and shall be made internal soon. Use sequence.flatMap() instead.")
public class FlatteningSequence<T, R>
deprecated("This class is an implementation detail and shall be made internal soon.", ReplaceWith("sequence.flatMap(transformer)"))
private class FlatteningSequence<T, R>
constructor(private val sequence: Sequence<T>,
private val transformer: (T) -> Sequence<R>
) : Sequence<R> {
@@ -234,9 +224,7 @@ deprecated("This class is an implementation detail and shall be made internal so
}
}
deprecated("This class is an implementation detail and shall be made internal soon. Use sequence.flatten() instead.")
public class MultiSequence<T>
deprecated("This class is an implementation detail and shall be made internal soon.", ReplaceWith("sequence.flatten()"))
private class MultiSequence<T>
constructor(private val sequence: Sequence<Sequence<T>>) : Sequence<T> {
override fun iterator(): Iterator<T> = object : Iterator<T> {
val iterator = sequence.iterator()
@@ -277,9 +265,7 @@ constructor(private val sequence: Sequence<Sequence<T>>) : Sequence<T> {
* A sequence that returns at most [count] values from the underlying [sequence], and stops returning values
* as soon as that count is reached.
*/
deprecated("This class is an implementation detail and shall be made internal soon. Use sequence.take() instead.")
public class TakeSequence<T>
deprecated("This class is an implementation detail and shall be made internal soon.", ReplaceWith("sequence.take(count)"))
private class TakeSequence<T>
constructor(private val sequence: Sequence<T>,
private val count: Int
) : Sequence<T> {
@@ -308,9 +294,7 @@ deprecated("This class is an implementation detail and shall be made internal so
* A sequence that returns values from the underlying [sequence] while the [predicate] function returns
* `true`, and stops returning values once the function returns `false` for the next element.
*/
deprecated("This class is an implementation detail and shall be made internal soon. Use sequence.takeWhile() instead.")
public class TakeWhileSequence<T>
deprecated("This class is an implementation detail and shall be made internal soon.", ReplaceWith("sequence.takeWhile(predicate)"))
private class TakeWhileSequence<T>
constructor(private val sequence: Sequence<T>,
private val predicate: (T) -> Boolean
) : Sequence<T> {
@@ -356,9 +340,7 @@ deprecated("This class is an implementation detail and shall be made internal so
* A sequence that skips the specified number of values from the underlying [sequence] and returns
* all values after that.
*/
deprecated("This class is an implementation detail and shall be made internal soon. Use sequence.drop() instead.")
public class DropSequence<T>
deprecated("This class is an implementation detail and shall be made internal soon.", ReplaceWith("sequence.drop(count)"))
private class DropSequence<T>
constructor(private val sequence: Sequence<T>,
private val count: Int
) : Sequence<T> {
@@ -394,9 +376,7 @@ deprecated("This class is an implementation detail and shall be made internal so
* A sequence that skips the values from the underlying [sequence] while the given [predicate] returns `true` and returns
* all values after that.
*/
deprecated("This class is an implementation detail and shall be made internal soon. Use sequence.dropWhile() instead.")
public class DropWhileSequence<T>
deprecated("This class is an implementation detail and shall be made internal soon.", ReplaceWith("sequence.dropWhile(predicate)"))
private class DropWhileSequence<T>
constructor(private val sequence: Sequence<T>,
private val predicate: (T) -> Boolean
) : Sequence<T> {
@@ -462,49 +442,6 @@ private class DistinctIterator<T, K>(private val source : Iterator<T>, private v
}
/**
* A sequence which repeatedly calls the specified [producer] function and returns its return values, until
* `null` is returned from [producer].
*/
deprecated("This class is an implementation detail and shall be made internal soon. Use function sequence(nextFunction: () -> T?) instead.")
public class FunctionSequence<T : Any>
deprecated("This class is an implementation detail and shall be made internal soon.", ReplaceWith("sequence(producer)"))
constructor(private val producer: () -> T?) : Sequence<T> {
override fun iterator(): Iterator<T> = object : Iterator<T> {
var nextState: Int = -1 // -1 for unknown, 0 for done, 1 for continue
var nextItem: T? = null
private fun calcNext() {
val item = producer()
if (item == null) {
nextState = 0
} else {
nextState = 1
nextItem = item
}
}
override fun next(): T {
if (nextState == -1)
calcNext()
if (nextState == 0)
throw NoSuchElementException()
val result = nextItem as T
// Clean next to avoid keeping reference on yielded instance
nextItem = null
nextState = -1
return result
}
override fun hasNext(): Boolean {
if (nextState == -1)
calcNext()
return nextState == 1
}
}
}
private class GeneratorSequence<T: Any>(private val getInitialValue: () -> T?, private val getNextValue: (T) -> T?): Sequence<T> {
override fun iterator(): Iterator<T> = object : Iterator<T> {
var nextItem: T? = getInitialValue()