diff options
author | Martin Odersky <odersky@gmail.com> | 2007-01-03 15:56:13 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2007-01-03 15:56:13 +0000 |
commit | a961d3dcd6f93ee006cff1d386052bf62326739a (patch) | |
tree | 5af3312932236340708522dfd078f32beed20519 /src/library/scala/collection/mutable/Buffer.scala | |
parent | 02a45e20bb6f68808708dca377bc72ccaf5bba3d (diff) | |
download | scala-a961d3dcd6f93ee006cff1d386052bf62326739a.tar.gz scala-a961d3dcd6f93ee006cff1d386052bf62326739a.tar.bz2 scala-a961d3dcd6f93ee006cff1d386052bf62326739a.zip |
1.
Diffstat (limited to 'src/library/scala/collection/mutable/Buffer.scala')
-rw-r--r-- | src/library/scala/collection/mutable/Buffer.scala | 106 |
1 files changed, 57 insertions, 49 deletions
diff --git a/src/library/scala/collection/mutable/Buffer.scala b/src/library/scala/collection/mutable/Buffer.scala index 02e5a2ad42..4bf49e3c57 100644 --- a/src/library/scala/collection/mutable/Buffer.scala +++ b/src/library/scala/collection/mutable/Buffer.scala @@ -28,97 +28,105 @@ trait Buffer[A] extends AnyRef with Scriptable[Message[Pair[Location, A]]] { - /** Append a single element to this buffer and return - * the identity of the buffer. + /** Append a single element to this buffer. * * @param elem the element to append. */ - def +(elem: A): Buffer[A] = { - this += elem - this - } + def +=(elem: A): Unit - /** Append a single element to this buffer. + /** Append a single element to this buffer and return + * the identity of the buffer. * * @param elem the element to append. */ - def +=(elem: A): Unit + def +(elem: A): Buffer[A] = { this += elem; this } - /** Appends a number of elements provided by an iterable object - * via its <code>elements</code> method. The identity of the - * buffer is returned. + /** Prepend a single element to this buffer and return + * the identity of the buffer. * - * @param iter the iterable object. - * @return the updated buffer. + * @param elem the element to append. */ - def ++(elems: Iterable[A]): Buffer[A] = this ++ elems.elements + def +:(elem: A): Buffer[A] - /** Appends a number of elements provided by an iterable object - * via its <code>elements</code> method. The identity of the - * buffer is returned. + /** Appends a number of elements provided by an iterator * - * @param iter the iterable object. - * @return the updated buffer. + * @param iter the iterator. */ - def ++(iter: Iterator[A]): Buffer[A] = { - iter.foreach(e => this += e) - this - } + def ++=(iter: Iterator[A]): Unit = iter foreach += /** Appends a number of elements provided by an iterable object * via its <code>elements</code> method. * * @param iter the iterable object. */ - def ++=(elems: Iterable[A]): Unit = this ++ elems.elements + def ++=(iter: Iterable[A]): Unit = ++=(iter.elements) - /** Appends a number of elements provided by an iterable object - * via its <code>elements</code> method. + /** Appends a number of elements in an array * - * @param iter the iterable object. + * @param src the array + * @param start the first element to append + * @param len the number of elements to append */ - def ++=(it: Iterator[A]): Unit = this ++ it + def ++=(src: Array[A], start: int, len: int): Unit = { + var i = start + val end = i + len + while (i < end) { + this += src(i) + i = i + 1 + } + } - /** Appends a sequence of elements to this buffer. + /** Appends a number of elements provided by an iterable object + * via its <code>elements</code> method. The identity of the + * buffer is returned. * - * @param elems the elements to append. + * @param iter the iterable object. + * @return the updated buffer. */ - def append(elems: A*): Unit = this ++ elems + def ++(iter: Iterable[A]): Buffer[A] = { this ++= iter; this } - /** Appends a number of elements provided by an iterable object - * via its <code>elements</code> method. + /** Appends a number of elements provided by an iterator + * via its <code>elements</code> method. The identity of the + * buffer is returned. * - * @param iter the iterable object. + * @param iter the iterator + * @return the updated buffer. */ - def appendAll(iter: Iterable[A]): Unit = this ++ iter + def ++(iter: Iterator[A]): Buffer[A] = { this ++= iter; this } - /** Prepend a single element to this buffer and return - * the identity of the buffer. + /** Prepends a number of elements provided by an iterable object + * via its <code>elements</code> method. The identity of the + * buffer is returned. * - * @param elem the element to append. + * @param iter the iterable object. */ - def +:(elem: A): Buffer[A] + def ++:(iter: Iterable[A]): Buffer[A] = { + iter.elements.toList.reverse.foreach(e => e +: this) + this + } /** Removes a single element from this buffer, at its first occurrence. * If the list does not contain that element, it is unchanged * * @param x the element to remove. */ - def -= (x: A): unit = { + def -= (x: A): Unit = { val i = indexOf(x) if(i != -1) remove(i) } - /** Prepends a number of elements provided by an iterable object - * via its <code>elements</code> method. The identity of the - * buffer is returned. + /** Appends a sequence of elements to this buffer. + * + * @param elems the elements to append. + */ + def append(elems: A*): Unit = this ++= elems + + /** Appends a number of elements provided by an iterable object + * via its <code>elements</code> method. * * @param iter the iterable object. */ - def ++:(iter: Iterable[A]): Buffer[A] = { - iter.elements.toList.reverse.foreach(e => e +: this) - this - } + def appendAll(iter: Iterable[A]): Unit = this ++= iter /** Prepend an element to this list. * @@ -132,7 +140,7 @@ trait Buffer[A] extends AnyRef * * @param iter the iterable object. */ - def prependAll(elems: Iterable[A]): Unit = elems ++: this + def prependAll(iter: Iterable[A]): Unit = iter ++: this /** Inserts new elements at the index <code>n</code>. Opposed to method * <code>update</code>, this method will not replace an element with a @@ -148,7 +156,7 @@ trait Buffer[A] extends AnyRef * one. Instead, it will insert a new element at index <code>n</code>. * * @param n the index where a new element will be inserted. - * @param iter the iterable object providing all elements to insert. + * @param iter the iterable object providing all elements to insert. */ def insertAll(n: Int, iter: Iterable[A]): Unit |