@@ -239,6 +239,32 @@ trait AnyStepper[A] extends Stepper[A] with java.util.Iterator[A] with Spliterat
239
239
def parStream : java.util.stream.Stream [A ] = java.util.stream.StreamSupport .stream(this , true )
240
240
}
241
241
242
+ object AnyStepper {
243
+ private [collectionImpl] class BoxedDoubleStepper (st : DoubleStepper ) extends AnyStepper [Double ] {
244
+ def hasNext (): Boolean = st.hasNext()
245
+ def next (): Double = st.next()
246
+ def characteristics (): Int = st.characteristics()
247
+ def estimateSize (): Long = st.estimateSize()
248
+ def substep (): AnyStepper [Double ] = new BoxedDoubleStepper (st.substep())
249
+ }
250
+
251
+ private [collectionImpl] class BoxedIntStepper (st : IntStepper ) extends AnyStepper [Int ] {
252
+ def hasNext (): Boolean = st.hasNext()
253
+ def next (): Int = st.next()
254
+ def characteristics (): Int = st.characteristics()
255
+ def estimateSize (): Long = st.estimateSize()
256
+ def substep (): AnyStepper [Int ] = new BoxedIntStepper (st.substep())
257
+ }
258
+
259
+ private [collectionImpl] class BoxedLongStepper (st : LongStepper ) extends AnyStepper [Long ] {
260
+ def hasNext (): Boolean = st.hasNext()
261
+ def next (): Long = st.next()
262
+ def characteristics (): Int = st.characteristics()
263
+ def estimateSize (): Long = st.estimateSize()
264
+ def substep (): AnyStepper [Long ] = new BoxedLongStepper (st.substep())
265
+ }
266
+ }
267
+
242
268
/** A `DoubleStepper` combines the functionality of a Java `PrimitiveIterator`, a Java `Spliterator`, and a `Stepper`, all specialized for `Double` values. */
243
269
trait DoubleStepper extends Stepper [Double ] with java.util.PrimitiveIterator .OfDouble with Spliterator .OfDouble with StepperLike [Double , DoubleStepper ] {
244
270
def forEachRemaining (c : java.util.function.Consumer [_ >: java.lang.Double ]) { while (hasNext) { c.accept(java.lang.Double .valueOf(nextDouble)) } }
@@ -512,6 +538,9 @@ object Stepper {
512
538
/** Creates a `Stepper` over a generic `Spliterator`. */
513
539
def ofSpliterator [A ](sp : Spliterator [A ]): AnyStepper [A ] = sp match {
514
540
case as : AnyStepper [A ] => as
541
+ case s : DoubleStepper => new AnyStepper .BoxedDoubleStepper (s).asInstanceOf [AnyStepper [A ]]
542
+ case s : IntStepper => new AnyStepper .BoxedIntStepper (s).asInstanceOf [AnyStepper [A ]]
543
+ case s : LongStepper => new AnyStepper .BoxedLongStepper (s).asInstanceOf [AnyStepper [A ]]
515
544
case _ => new OfSpliterator [A ](sp)
516
545
}
517
546
0 commit comments