/* __ *\ ** ________ ___ / / ___ Scala API ** ** / __/ __// _ | / / / _ | (c) 2003-2009, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** \* */ // $Id: MapBuilder.scala 18387 2009-07-24 15:28:37Z odersky $ package scala.collection.generic import scala.collection._ // import collection.immutable.{List, Nil, ::} /** The canonical builder for immutable maps, working with the map's `+` method * to add new elements. * Collections are built from their `empty` element using this + method. * @param empty The empty element of the collection. */ class MapBuilder[A, B, Coll <: Map[A, B] with MapTemplate[A, B, Coll]](empty: Coll) extends Builder[(A, B), Coll] { protected var elems: Coll = empty def +=(x: (A, B)): this.type = { elems = (elems + x).asInstanceOf[Coll] // the cast is necessary because right now we cannot enforce statically that // for every map of type Coll, `+` yields again a Coll. With better support // for hk-types we might be able to enforce this in the future, though. this } def clear() { elems = empty } def result: Coll = elems }