All Downloads are FREE. Search and download functionalities are using the official Maven repository.

scala.compat.java8.converterImpl.AccumulatorConverters.scala Maven / Gradle / Ivy

The newest version!
package scala.compat.java8.converterImpl

import language.implicitConversions

import scala.compat.java8.collectionImpl._

trait Priority3AccumulatorConverters {
  implicit def collectionCanAccumulate[A](underlying: TraversableOnce[A]) = new CollectionCanAccumulate[A](underlying)
}

trait Priority2AccumulatorConverters extends Priority3AccumulatorConverters {
  implicit def accumulateDoubleCollection(underlying: TraversableOnce[Double]) = new AccumulateDoubleCollection(underlying)
  implicit def accumulateIntCollection(underlying: TraversableOnce[Int]) = new AccumulateIntCollection(underlying)
  implicit def accumulateLongCollection(underlying: TraversableOnce[Long]) = new AccumulateLongCollection(underlying)
  implicit def accumulateAnyArray[A](underlying: Array[A]) = new AccumulateAnyArray(underlying)
}

trait Priority1AccumulatorConverters extends Priority2AccumulatorConverters {
  implicit def accumulateDoubleArray(underlying: Array[Double]) = new AccumulateDoubleArray(underlying)
  implicit def accumulateIntArray(underlying: Array[Int]) = new AccumulateIntArray(underlying)
  implicit def accumulateLongArray(underlying: Array[Long]) = new AccumulateLongArray(underlying)

  implicit def accumulateAnyStepper[A]: AccumulatesFromStepper[A, Accumulator[A]] =
    PrivateAccumulatorConverters.genericAccumulateAnyStepper.asInstanceOf[AccumulatesFromStepper[A, Accumulator[A]]]
}

private[java8] object PrivateAccumulatorConverters {
  val genericAccumulateAnyStepper: AccumulatesFromStepper[Any, Accumulator[Any]] = new AccumulatesFromStepper[Any, Accumulator[Any]] {
    def apply(stepper: Stepper[Any]) = {
      val a = new Accumulator[Any]
      while (stepper.hasStep) a += stepper.nextStep
      a
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy