summaryrefslogtreecommitdiff
path: root/src/library/scala/collection/mutable/Buffer.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2007-01-03 15:56:13 +0000
committerMartin Odersky <odersky@gmail.com>2007-01-03 15:56:13 +0000
commita961d3dcd6f93ee006cff1d386052bf62326739a (patch)
tree5af3312932236340708522dfd078f32beed20519 /src/library/scala/collection/mutable/Buffer.scala
parent02a45e20bb6f68808708dca377bc72ccaf5bba3d (diff)
downloadscala-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.scala106
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