summaryrefslogtreecommitdiff
path: root/sources
diff options
context:
space:
mode:
authorMatthias Zenger <mzenger@gmail.com>2003-06-19 10:59:18 +0000
committerMatthias Zenger <mzenger@gmail.com>2003-06-19 10:59:18 +0000
commite99f07aac31e252c30ec683c164795c27603ad57 (patch)
treef3341b870a050e081e3585661e55ebf014a1eba4 /sources
parent5d1b310ad7880c0e67a28a91c0597ab754f3ffc7 (diff)
downloadscala-e99f07aac31e252c30ec683c164795c27603ad57.tar.gz
scala-e99f07aac31e252c30ec683c164795c27603ad57.tar.bz2
scala-e99f07aac31e252c30ec683c164795c27603ad57.zip
Renamed ListBuffer to Buffer.
Diffstat (limited to 'sources')
-rw-r--r--sources/scala/Buffer.scala82
1 files changed, 82 insertions, 0 deletions
diff --git a/sources/scala/Buffer.scala b/sources/scala/Buffer.scala
new file mode 100644
index 0000000000..62efe1b7c4
--- /dev/null
+++ b/sources/scala/Buffer.scala
@@ -0,0 +1,82 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2003, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+** $Id$
+\* */
+
+package scala;
+
+
+class Buffer[A] with MutableList[A] {
+
+ def prepend(elem: A) = prependElem(elem);
+
+ def append(elems: A*) = (this += elems);
+
+ def +=(elem: A) = appendElem(elem);
+
+ def +=(iter: Iterable[A]) = iter.elements.foreach(e => appendElem(e));
+
+ def update(n: Int, newelem: A): Unit = {
+ var elem = first;
+ var i = n;
+ while (i > 0) {
+ elem = elem.next;
+ if (elem == null)
+ error("cannot update element " + n + " in Buffer");
+ i = i - 1;
+ }
+ elem.elem = newelem;
+ }
+
+ def insert(n: Int, newelem: A): Unit = {
+ if (n == 0)
+ prepend(newelem);
+ else if (n >= len)
+ append(newelem);
+ else {
+ var elem = first;
+ var i = n;
+ while (i > 1) {
+ elem = elem.next;
+ if (elem == null)
+ error("cannot insert element " + n + " in Buffer");
+ i = i - 1;
+ }
+ val old = elem.next;
+ elem.next = new LinkedList[A];
+ elem.next.elem = newelem;
+ elem.next.next = old;
+ }
+ }
+
+ def remove(n: Int): A = {
+ val old = apply(n);
+ if (n >= len)
+ error("cannot remove element " + n + " in Buffer");
+ if ((n == 0) && (len == 1)) {
+ first = null;
+ last = null;
+ } else if (n == 0) {
+ first = first.next;
+ } else {
+ var elem = first;
+ var i = n;
+ while (i > 1) {
+ elem = elem.next;
+ i = i - 1;
+ }
+ elem.next = elem.next.next;
+ if (n == (len - 1)) {
+ last = elem.next;
+ }
+ }
+ len = len - 1;
+ old;
+ }
+
+ def clear: Unit = reset;
+}