diff options
author | Aleksandar Pokopec <aleksandar.prokopec@epfl.ch> | 2010-12-09 10:08:24 +0000 |
---|---|---|
committer | Aleksandar Pokopec <aleksandar.prokopec@epfl.ch> | 2010-12-09 10:08:24 +0000 |
commit | 11dfc5a64dd8bbcb7fca7d608a23b513316de6cc (patch) | |
tree | c951c2e3730ad2a88de39e9d5ca40303e22d2c91 /src/library/scala/collection/parallel/UnrolledBuffer.scala | |
parent | f2ecbd04691b1914e2f77c60afc2b296aa6826ae (diff) | |
download | scala-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.scala | 29 |
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" } |