diff options
author | Martin Odersky <odersky@gmail.com> | 2009-09-25 16:20:13 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2009-09-25 16:20:13 +0000 |
commit | 4a727f3b01d0fa27ef51f7dba472116e021e3445 (patch) | |
tree | c9ab55ea7fe6051455271b23e9fbfc2f313015c0 /src/library/scala/collection/mutable/LazyBuilder.scala | |
parent | e31f18094dfba97c80871869a037172ff2c9c1c2 (diff) | |
download | scala-4a727f3b01d0fa27ef51f7dba472116e021e3445.tar.gz scala-4a727f3b01d0fa27ef51f7dba472116e021e3445.tar.bz2 scala-4a727f3b01d0fa27ef51f7dba472116e021e3445.zip |
Collections refactoring.
Diffstat (limited to 'src/library/scala/collection/mutable/LazyBuilder.scala')
-rw-r--r-- | src/library/scala/collection/mutable/LazyBuilder.scala | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/library/scala/collection/mutable/LazyBuilder.scala b/src/library/scala/collection/mutable/LazyBuilder.scala new file mode 100644 index 0000000000..7ddcb4a1f1 --- /dev/null +++ b/src/library/scala/collection/mutable/LazyBuilder.scala @@ -0,0 +1,25 @@ +/* __ *\ +** ________ ___ / / ___ Scala API ** +** / __/ __// _ | / / / _ | (c) 2003-2009, LAMP/EPFL ** +** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** +** /____/\___/_/ |_/____/_/ | | ** +** |/ ** +\* */ + +// $Id$ + +package scala.collection +package mutable + +/** A builder that constructs its result lazily. Iterators or iterables to + * be added to this builder with `++=` are not evaluated until `result` is called. + */ +abstract class LazyBuilder[Elem, +To] extends Builder[Elem, To] { + /** The different segments of elements to be added to the builder, represented as iterators */ + protected var parts = new ListBuffer[scala.collection.Traversable[Elem]] + def +=(x: Elem): this.type = { parts += List(x); this } + override def ++=(xs: Iterator[Elem]): this.type = { parts += xs.toStream; this } + override def ++=(xs: scala.collection.Traversable[Elem]): this.type = { parts += xs; this } + def result(): To + def clear() { parts.clear() } +} |