summaryrefslogtreecommitdiff
path: root/src/library/scalax/collection/generic/Builder.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/library/scalax/collection/generic/Builder.scala')
-rwxr-xr-xsrc/library/scalax/collection/generic/Builder.scala31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/library/scalax/collection/generic/Builder.scala b/src/library/scalax/collection/generic/Builder.scala
new file mode 100755
index 0000000000..155ca553fa
--- /dev/null
+++ b/src/library/scalax/collection/generic/Builder.scala
@@ -0,0 +1,31 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2003-2009, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id: ListBuffer.scala 14378 2008-03-13 11:39:05Z dragos $
+
+package scalax.collection.generic
+
+import generic._
+
+trait Builder[+CC[B], A] extends Growable[A] {
+ def +=(x: A)
+ def elements: Iterator[A]
+ def result: CC[A]
+
+ def mapResult[DD[B]](f: CC[A] => DD[A]) =
+ new Builder[DD, A] with Proxy {
+ val self = Builder.this
+ def +=(x: A) = self += x
+ def elements: Iterator[A] = self.elements
+ def clear() = self.clear()
+ override def ++=(xs: Iterator[A]) = self ++= xs
+ override def ++=(xs: collection.Iterable[A]) = self ++= xs
+ def result: DD[A] = f(Builder.this.result)
+ }
+}
+