diff options
author | Aleksandar Prokopec <axel22@gmail.com> | 2012-02-01 18:24:50 +0100 |
---|---|---|
committer | Aleksandar Prokopec <axel22@gmail.com> | 2012-02-01 18:24:50 +0100 |
commit | 8aa87f15e3887dbeb1a39bfea002b56cf68c445a (patch) | |
tree | eb76514b57160e1b7cbd2df0e009cbcdc2a5f922 /src/library/scala/collection/parallel/immutable/ParRange.scala | |
parent | fe289dc0fd8172012e4d57d09658e2dfd0a4cdcf (diff) | |
download | scala-8aa87f15e3887dbeb1a39bfea002b56cf68c445a.tar.gz scala-8aa87f15e3887dbeb1a39bfea002b56cf68c445a.tar.bz2 scala-8aa87f15e3887dbeb1a39bfea002b56cf68c445a.zip |
Remove ParIterator and SignalContextPassingIterator.
This unclutters the namespace and makes defining custom parallel
collections a lot easier.
Diffstat (limited to 'src/library/scala/collection/parallel/immutable/ParRange.scala')
-rw-r--r-- | src/library/scala/collection/parallel/immutable/ParRange.scala | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/library/scala/collection/parallel/immutable/ParRange.scala b/src/library/scala/collection/parallel/immutable/ParRange.scala index 350e64739f..64e07ce4ff 100644 --- a/src/library/scala/collection/parallel/immutable/ParRange.scala +++ b/src/library/scala/collection/parallel/immutable/ParRange.scala @@ -10,6 +10,7 @@ package scala.collection.parallel.immutable import scala.collection.immutable.Range import scala.collection.parallel.Combiner +import scala.collection.parallel.SeqSplitter import scala.collection.generic.CanCombineFrom import scala.collection.parallel.IterableSplitter import scala.collection.Iterator @@ -41,13 +42,10 @@ self => @inline final def apply(idx: Int) = range.apply(idx); - def splitter = new ParRangeIterator with SCPI - - type SCPI = SignalContextPassingIterator[ParRangeIterator] + def splitter = new ParRangeIterator class ParRangeIterator(range: Range = self.range) - extends ParIterator { - me: SignalContextPassingIterator[ParRangeIterator] => + extends SeqSplitter[Int] { override def toString = "ParRangeIterator(over: " + range + ")" private var ind = 0 private val len = range.length @@ -64,15 +62,15 @@ self => private def rangeleft = range.drop(ind) - def dup = new ParRangeIterator(rangeleft) with SCPI + def dup = new ParRangeIterator(rangeleft) def split = { val rleft = rangeleft val elemleft = rleft.length - if (elemleft < 2) Seq(new ParRangeIterator(rleft) with SCPI) + if (elemleft < 2) Seq(new ParRangeIterator(rleft)) else Seq( - new ParRangeIterator(rleft.take(elemleft / 2)) with SCPI, - new ParRangeIterator(rleft.drop(elemleft / 2)) with SCPI + new ParRangeIterator(rleft.take(elemleft / 2)), + new ParRangeIterator(rleft.drop(elemleft / 2)) ) } @@ -81,7 +79,7 @@ self => for (sz <- sizes) yield { val fronttaken = rleft.take(sz) rleft = rleft.drop(sz) - new ParRangeIterator(fronttaken) with SCPI + new ParRangeIterator(fronttaken) } } |