From 0a1f4d6088bd7c621bb49c191fe550b1b913aba4 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Sat, 19 Dec 2015 02:11:49 +0300 Subject: [PATCH] Deprecate IndexingIterable and IndexingIterator and provide Iterator.withIndex() instead of the latter. --- libraries/stdlib/src/kotlin/collections/IndexingIterator.kt | 6 +++++- libraries/stdlib/src/kotlin/collections/Iterators.kt | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/libraries/stdlib/src/kotlin/collections/IndexingIterator.kt b/libraries/stdlib/src/kotlin/collections/IndexingIterator.kt index 07c83c8e83e..39bf33f4bd6 100644 --- a/libraries/stdlib/src/kotlin/collections/IndexingIterator.kt +++ b/libraries/stdlib/src/kotlin/collections/IndexingIterator.kt @@ -12,6 +12,7 @@ public data class IndexedValue(public val index: Int, public val value: T * A wrapper over another [Iterable] (or any other object that can produce an [Iterator]) that returns * an indexing iterator. */ +@Deprecated("This implementation class will become internal soon. Use Iterable> instead.", ReplaceWith("Iterable>")) public class IndexingIterable(private val iteratorFactory: () -> Iterator) : Iterable> { override fun iterator(): Iterator> = IndexingIterator(iteratorFactory()) } @@ -19,7 +20,10 @@ public class IndexingIterable(private val iteratorFactory: () -> Iterator /** * Iterator transforming original `iterator` into iterator of [IndexedValue], counting index from zero. */ -public class IndexingIterator(private val iterator: Iterator) : Iterator> { +@Deprecated("This implementation class will become internal soon. Use Iterator> instead.", ReplaceWith("Iterator>")) +public class IndexingIterator +@Deprecated("This implementation class will become internal soon. Use iterator.withIndex() instead.", ReplaceWith("iterator.withIndex()")) +constructor(private val iterator: Iterator) : Iterator> { private var index = 0 final override fun hasNext(): Boolean = iterator.hasNext() final override fun next(): IndexedValue = IndexedValue(index++, iterator.next()) diff --git a/libraries/stdlib/src/kotlin/collections/Iterators.kt b/libraries/stdlib/src/kotlin/collections/Iterators.kt index 798aaebac4e..1345e6789e2 100644 --- a/libraries/stdlib/src/kotlin/collections/Iterators.kt +++ b/libraries/stdlib/src/kotlin/collections/Iterators.kt @@ -19,6 +19,12 @@ public operator fun Enumeration.iterator(): Iterator = object : Iterat */ public operator fun Iterator.iterator(): Iterator = this +/** + * Returns an [Iterator] wrapping each value produced by this [Iterator] with the [IndexedValue], + * containing value and it's index. + */ +public fun Iterator.withIndex(): Iterator> = IndexingIterator(this) + /** * Performs the given [operation] on each element of this [Iterator]. */