summaryrefslogtreecommitdiff
path: root/src/library/scalax/collection/Builder.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/library/scalax/collection/Builder.scala')
-rwxr-xr-xsrc/library/scalax/collection/Builder.scala14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/library/scalax/collection/Builder.scala b/src/library/scalax/collection/Builder.scala
index 87219c803b..2c80916d50 100755
--- a/src/library/scalax/collection/Builder.scala
+++ b/src/library/scalax/collection/Builder.scala
@@ -10,12 +10,22 @@
package scalax.collection
-
-trait Builder[+CC[B], A] extends mutable.Appendable[A] {
+trait Builder[+CC[B], A] extends generic.mutable.Growable[A] {
def +=(x: A)
def elements: Iterator[A]
def result: CC[A]
override def ++=(xs: Iterator[A]) { for (x <- xs) this += x }
override def ++=(xs: Iterable[A]) { for (x <- xs) this += x }
+
+ 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)
+ }
}