summaryrefslogtreecommitdiff
path: root/src/library/scala/collection/parallel/UnrolledBuffer.scala
diff options
context:
space:
mode:
authorAleksandar Pokopec <aleksandar.prokopec@epfl.ch>2010-12-09 10:08:24 +0000
committerAleksandar Pokopec <aleksandar.prokopec@epfl.ch>2010-12-09 10:08:24 +0000
commit11dfc5a64dd8bbcb7fca7d608a23b513316de6cc (patch)
treec951c2e3730ad2a88de39e9d5ca40303e22d2c91 /src/library/scala/collection/parallel/UnrolledBuffer.scala
parentf2ecbd04691b1914e2f77c60afc2b296aa6826ae (diff)
downloadscala-11dfc5a64dd8bbcb7fca7d608a23b513316de6cc.tar.gz
scala-11dfc5a64dd8bbcb7fca7d608a23b513316de6cc.tar.bz2
scala-11dfc5a64dd8bbcb7fca7d608a23b513316de6cc.zip
Made parallel collections serializable.
No review.
Diffstat (limited to 'src/library/scala/collection/parallel/UnrolledBuffer.scala')
-rw-r--r--src/library/scala/collection/parallel/UnrolledBuffer.scala29
1 files changed, 26 insertions, 3 deletions
diff --git a/src/library/scala/collection/parallel/UnrolledBuffer.scala b/src/library/scala/collection/parallel/UnrolledBuffer.scala
index c7a8b388bd..7f81cf779d 100644
--- a/src/library/scala/collection/parallel/UnrolledBuffer.scala
+++ b/src/library/scala/collection/parallel/UnrolledBuffer.scala
@@ -38,17 +38,19 @@ import annotation.tailrec
* @coll unrolled buffer
* @Coll UnrolledBuffer
*/
+@SerialVersionUID(1L)
class UnrolledBuffer[T](implicit val manifest: ClassManifest[T])
extends collection.mutable.Buffer[T]
with collection.mutable.BufferLike[T, UnrolledBuffer[T]]
with GenericClassManifestTraversableTemplate[T, UnrolledBuffer]
with collection.mutable.Builder[T, UnrolledBuffer[T]]
+ with Serializable
{
import UnrolledBuffer.Unrolled
- private var headptr = newUnrolled
- private var lastptr = headptr
- private var sz = 0
+ @transient private var headptr = newUnrolled
+ @transient private var lastptr = headptr
+ @transient private var sz = 0
private[parallel] def headPtr = headptr
private[parallel] def headPtr_=(head: Unrolled[T]) = headptr = head
@@ -146,6 +148,27 @@ extends collection.mutable.Buffer[T]
sz += elems.size
} else outofbounds(idx)
+ private def writeObject(out: java.io.ObjectOutputStream) {
+ out.defaultWriteObject
+ out.writeInt(sz)
+ for (elem <- this) out.writeObject(elem)
+ }
+
+ private def readObject(in: java.io.ObjectInputStream) {
+ in.defaultReadObject
+
+ val num = in.readInt
+
+ headPtr = newUnrolled
+ lastPtr = headPtr
+ sz = 0
+ var i = 0
+ while (i < num) {
+ this += in.readObject.asInstanceOf[T]
+ i += 1
+ }
+ }
+
override def stringPrefix = "UnrolledBuffer"
}