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

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

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

import language.implicitConversions

import scala.compat.java8.collectionImpl._
import scala.compat.java8.runtime._

trait AccumulatesFromStepper[@specialized(Double, Int, Long) A, Acc <: AccumulatorLike[A, Acc]] {
  def apply(stepper: Stepper[A]): Acc
}

final class CollectionCanAccumulate[A](private val underlying: TraversableOnce[A]) extends AnyVal {
  def accumulate: Accumulator[A] = {
    val a = new Accumulator[A]
    underlying.foreach(a += _)
    a
  }
}

final class AccumulateDoubleCollection(private val underlying: TraversableOnce[Double]) extends AnyVal {
  def accumulate: DoubleAccumulator = {
    val da = new DoubleAccumulator
    underlying.foreach(da += _)
    da
  }
}

final class AccumulateIntCollection(private val underlying: TraversableOnce[Int]) extends AnyVal {
  def accumulate: IntAccumulator = {
    val da = new IntAccumulator
    underlying.foreach(da += _)
    da
  }
}

final class AccumulateLongCollection(private val underlying: TraversableOnce[Long]) extends AnyVal {
  def accumulate: LongAccumulator = {
    val da = new LongAccumulator
    underlying.foreach(da += _)
    da
  }
}

final class AccumulateAnyArray[A](private val underlying: Array[A]) extends AnyVal {
  def accumulate: Accumulator[A] = {
    val a = new Accumulator[A]
    var i = 0
    while (i < underlying.length) { a += underlying(i); i += 1 }
    a
  }
}

final class AccumulateDoubleArray(private val underlying: Array[Double]) extends AnyVal {
  def accumulate: DoubleAccumulator = {
    val da = new DoubleAccumulator
    var i = 0
    while (i < underlying.length) { da += underlying(i); i += 1 }
    da
  }
}

final class AccumulateIntArray(private val underlying: Array[Int]) extends AnyVal {
  def accumulate: IntAccumulator = {
    val da = new IntAccumulator
    var i = 0
    while (i < underlying.length) { da += underlying(i); i += 1 }
    da
  }
}

final class AccumulateLongArray(private val underlying: Array[Long]) extends AnyVal {
  def accumulate: LongAccumulator = {
    val da = new LongAccumulator
    var i = 0
    while (i < underlying.length) { da += underlying(i); i += 1 }
    da
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy