diff options
author | Sean McDirmid <sean.mcdirmid@gmail.com> | 2007-09-13 13:53:11 +0000 |
---|---|---|
committer | Sean McDirmid <sean.mcdirmid@gmail.com> | 2007-09-13 13:53:11 +0000 |
commit | d2c1b74f0f4e51245af91b50c72b1ef1d7d2adae (patch) | |
tree | 14c2bb161575c658cc4b548087e4c3a38d218329 /src | |
parent | 6900f59041b0077620a09f71f4378a1cf96b3066 (diff) | |
download | scala-d2c1b74f0f4e51245af91b50c72b1ef1d7d2adae.tar.gz scala-d2c1b74f0f4e51245af91b50c72b1ef1d7d2adae.tar.bz2 scala-d2c1b74f0f4e51245af91b50c72b1ef1d7d2adae.zip |
Re-adding serialization code that was I think a...
Re-adding serialization code that was I think accidentally nuked in last
merge.
Diffstat (limited to 'src')
-rw-r--r-- | src/library/scala/List.scala | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/src/library/scala/List.scala b/src/library/scala/List.scala index 8cc9e4e419..6e06b8e93f 100644 --- a/src/library/scala/List.scala +++ b/src/library/scala/List.scala @@ -1219,8 +1219,31 @@ case object Nil extends List[Nothing] { * @version 1.0, 15/07/2003 */ @SerialVersionUID(0L - 8476791151983527571L) -final case class ::[B](hd: B, private[scala] var tl: List[B]) extends List[B] { - def head = hd - def tail = tl +final case class ::[B](private var hd: B, private[scala] var tl: List[B]) extends List[B] { + def head : B = hd + def tail : List[B] = tl override def isEmpty: Boolean = false + + import java.io._ + + private def writeObject(out : ObjectOutputStream) = { + val i = elements + while (i.hasNext) out.writeObject(i.next) + out.writeObject(ListSerializeEnd) + } + private def readObject(in : ObjectInputStream) : Unit = { + hd = in.readObject.asInstanceOf[B] + assert(hd != ListSerializeEnd) + var current : ::[B] = this + while (true) in.readObject match { + case ListSerializeEnd => current.tl = Nil; return + case a : Any => + val list : ::[B] = new ::(a.asInstanceOf[B], Nil) + current.tl = list + current = list + } + } } +/** Only used for list serialization */ +@SerialVersionUID(0L - 8476791151975527571L) +private[scala] case object ListSerializeEnd |