summaryrefslogtreecommitdiff
path: root/src/library/scala/collection/generic/ParFactory.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/library/scala/collection/generic/ParFactory.scala')
-rw-r--r--src/library/scala/collection/generic/ParFactory.scala43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/library/scala/collection/generic/ParFactory.scala b/src/library/scala/collection/generic/ParFactory.scala
new file mode 100644
index 0000000000..a7ebb8c912
--- /dev/null
+++ b/src/library/scala/collection/generic/ParFactory.scala
@@ -0,0 +1,43 @@
+package scala.collection.generic
+
+
+import scala.collection.parallel.ParIterable
+import scala.collection.parallel.Combiner
+
+
+
+/** A template class for companion objects of `ParIterable` and subclasses thereof.
+ * This class extends `TraversableFactory` and provides a set of operations to create `$Coll` objects.
+ *
+ * @define $coll parallel collection
+ * @define $Coll ParIterable
+ */
+abstract class ParFactory[CC[X] <: ParIterable[X] with GenericParTemplate[X, CC]]
+extends TraversableFactory[CC]
+ with GenericParCompanion[CC] {
+
+ type EPC[T, C] = collection.parallel.EnvironmentPassingCombiner[T, C]
+
+ /**
+ * A generic implementation of the `CanCombineFrom` trait, which forwards all calls to
+ * `apply(from)` to the `genericParBuilder` method of the $coll `from`, and calls to `apply()`
+ * to this factory.
+ */
+ class GenericCanCombineFrom[A] extends GenericCanBuildFrom[A] with CanCombineFrom[CC[_], A, CC[A]] {
+ override def apply(from: Coll) = from.genericCombiner
+ override def apply() = newBuilder[A]
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+