summaryrefslogtreecommitdiff
path: root/src/library/scala/collection/mutable
diff options
context:
space:
mode:
Diffstat (limited to 'src/library/scala/collection/mutable')
-rw-r--r--src/library/scala/collection/mutable/ArrayBuffer.scala5
-rw-r--r--src/library/scala/collection/mutable/ArraySeq.scala20
-rw-r--r--src/library/scala/collection/mutable/HashMap.scala7
-rw-r--r--src/library/scala/collection/mutable/HashSet.scala4
-rw-r--r--src/library/scala/collection/mutable/WrappedArray.scala14
5 files changed, 43 insertions, 7 deletions
diff --git a/src/library/scala/collection/mutable/ArrayBuffer.scala b/src/library/scala/collection/mutable/ArrayBuffer.scala
index 2fe5f23a46..83109d0255 100644
--- a/src/library/scala/collection/mutable/ArrayBuffer.scala
+++ b/src/library/scala/collection/mutable/ArrayBuffer.scala
@@ -175,6 +175,11 @@ class ArrayBuffer[A](override protected val initialSize: Int)
/** Defines the prefix of the string representation.
*/
override def stringPrefix: String = "ArrayBuffer"
+
+ override def toParIterable = par
+
+ override def toParSeq = par
+
}
/** Factory object for the `ArrayBuffer` class.
diff --git a/src/library/scala/collection/mutable/ArraySeq.scala b/src/library/scala/collection/mutable/ArraySeq.scala
index 3fc45eaa5f..91bc864224 100644
--- a/src/library/scala/collection/mutable/ArraySeq.scala
+++ b/src/library/scala/collection/mutable/ArraySeq.scala
@@ -12,6 +12,7 @@ package scala.collection
package mutable
import generic._
+import parallel.mutable.ParArray
/** A class for polymorphic arrays of elements that's represented
* internally by an array of objects. This means that elements of
@@ -42,12 +43,16 @@ import generic._
class ArraySeq[A](override val length: Int)
extends IndexedSeq[A]
with GenericTraversableTemplate[A, ArraySeq]
- with IndexedSeqOptimized[A, ArraySeq[A]] {
+ with IndexedSeqOptimized[A, ArraySeq[A]]
+ with Parallelizable[ParArray[A]]
+{
override def companion: GenericCompanion[ArraySeq] = ArraySeq
val array: Array[AnyRef] = new Array[AnyRef](length)
+ def par = ParArray.handoff(array.asInstanceOf[Array[A]])
+
def apply(idx: Int): A = {
if (idx >= length) throw new IndexOutOfBoundsException(idx.toString)
array(idx).asInstanceOf[A]
@@ -75,10 +80,15 @@ extends IndexedSeq[A]
* @param start starting index.
* @param len number of elements to copy
*/
- override def copyToArray[B >: A](xs: Array[B], start: Int, len: Int) {
- val len1 = len min (xs.length - start) min length
- Array.copy(array, 0, xs, start, len1)
- }
+ override def copyToArray[B >: A](xs: Array[B], start: Int, len: Int) {
+ val len1 = len min (xs.length - start) min length
+ Array.copy(array, 0, xs, start, len1)
+ }
+
+ override def toParIterable = par
+
+ override def toParSeq = par
+
}
/** $factoryInfo
diff --git a/src/library/scala/collection/mutable/HashMap.scala b/src/library/scala/collection/mutable/HashMap.scala
index 44461eaf74..3960af763b 100644
--- a/src/library/scala/collection/mutable/HashMap.scala
+++ b/src/library/scala/collection/mutable/HashMap.scala
@@ -56,7 +56,7 @@ extends Map[A, B]
def this() = this(null)
- def par = new ParHashMap[A, B](contents)
+ def par = new ParHashMap[A, B](hashTableContents)
def get(key: A): Option[B] = {
val e = findEntry(key)
@@ -129,6 +129,11 @@ extends Map[A, B]
init[B](in, new Entry(_, _))
}
+ override def toParIterable = par
+
+ private type C = (A, B)
+ override def toParMap[D, E](implicit ev: C <:< (D, E)) = par.asInstanceOf[ParHashMap[D, E]]
+
}
/** $factoryInfo
diff --git a/src/library/scala/collection/mutable/HashSet.scala b/src/library/scala/collection/mutable/HashSet.scala
index a7b1fb477c..377f58e74e 100644
--- a/src/library/scala/collection/mutable/HashSet.scala
+++ b/src/library/scala/collection/mutable/HashSet.scala
@@ -92,6 +92,10 @@ extends Set[A]
if (!isSizeMapDefined) sizeMapInitAndRebuild
} else sizeMapDisable
+ override def toParIterable = par
+
+ override def toParSet[B >: A] = par.asInstanceOf[ParHashSet[B]]
+
}
/** $factoryInfo
diff --git a/src/library/scala/collection/mutable/WrappedArray.scala b/src/library/scala/collection/mutable/WrappedArray.scala
index 6aea49ec9d..4246a59bf8 100644
--- a/src/library/scala/collection/mutable/WrappedArray.scala
+++ b/src/library/scala/collection/mutable/WrappedArray.scala
@@ -13,6 +13,7 @@ package mutable
import scala.reflect.ClassManifest
import scala.collection.generic._
+import scala.collection.parallel.mutable.ParArray
/**
* A class representing `Array[T]`.
@@ -29,7 +30,11 @@ import scala.collection.generic._
* @define mayNotTerminateInf
* @define willNotTerminateInf
*/
-abstract class WrappedArray[T] extends IndexedSeq[T] with ArrayLike[T, WrappedArray[T]] {
+abstract class WrappedArray[T]
+extends IndexedSeq[T]
+ with ArrayLike[T, WrappedArray[T]]
+ with Parallelizable[ParArray[T]]
+{
override protected[this] def thisCollection: WrappedArray[T] = this
override protected[this] def toCollection(repr: WrappedArray[T]): WrappedArray[T] = repr
@@ -49,6 +54,8 @@ abstract class WrappedArray[T] extends IndexedSeq[T] with ArrayLike[T, WrappedAr
/** The underlying array */
def array: Array[T]
+ def par = ParArray.handoff(array)
+
override def toArray[U >: T : ClassManifest]: Array[U] =
if (implicitly[ClassManifest[U]].erasure eq array.getClass.getComponentType)
array.asInstanceOf[Array[U]]
@@ -64,6 +71,11 @@ abstract class WrappedArray[T] extends IndexedSeq[T] with ArrayLike[T, WrappedAr
*/
override protected[this] def newBuilder: Builder[T, WrappedArray[T]] =
new WrappedArrayBuilder[T](elemManifest)
+
+ override def toParIterable = par
+
+ override def toParSeq = par
+
}
/** A companion object used to create instances of `WrappedArray`.