summaryrefslogtreecommitdiff
path: root/src/library/scala/collection/immutable/SortedMap.scala
diff options
context:
space:
mode:
authorSean McDirmid <sean.mcdirmid@gmail.com>2007-02-26 13:56:20 +0000
committerSean McDirmid <sean.mcdirmid@gmail.com>2007-02-26 13:56:20 +0000
commit853b9424e5dbbcfccecc8b027dabbb460f1618c2 (patch)
tree43204dc4cf0362b5af520bae4b13c0cab6fb3ca1 /src/library/scala/collection/immutable/SortedMap.scala
parentb94b6f9af69aa73f1b2917414fdcdc2d007f2976 (diff)
downloadscala-853b9424e5dbbcfccecc8b027dabbb460f1618c2.tar.gz
scala-853b9424e5dbbcfccecc8b027dabbb460f1618c2.tar.bz2
scala-853b9424e5dbbcfccecc8b027dabbb460f1618c2.zip
Diffstat (limited to 'src/library/scala/collection/immutable/SortedMap.scala')
-rw-r--r--src/library/scala/collection/immutable/SortedMap.scala38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/library/scala/collection/immutable/SortedMap.scala b/src/library/scala/collection/immutable/SortedMap.scala
new file mode 100644
index 0000000000..a26f734755
--- /dev/null
+++ b/src/library/scala/collection/immutable/SortedMap.scala
@@ -0,0 +1,38 @@
+package scala.collection.immutable;
+
+trait SortedMap[A,+B] extends Map[A,B] with collection.SortedMap[A,B] {
+ override def rangeImpl(from : Option[A], until : Option[A]) : SortedMap[A,B];
+ override def from(from: A) = rangeImpl(Some(from), None);
+ override def until(until: A) = rangeImpl(None, Some(until));
+ override def range(from: A, until: A) = rangeImpl(Some(from),Some(until));
+ override def empty[C]: SortedMap[A, C]
+ override def update [B1 >: B] (key: A, value: B1): SortedMap[A, B1]
+ override def + [B1 >: B] (kv: Pair[A, B1]): SortedMap[A, B1] = update(kv._1, kv._2)
+
+ override def + [B1 >: B] (kv1: Pair[A, B1], kv2: Pair[A, B1], kvs: Pair[A, B1]*): SortedMap[A, B1] =
+ this + kv1 + kv2 ++ kvs
+ override def ++ [B1 >: B] (kvs: Iterable[Pair[A, B1]]): SortedMap[A, B1] =
+ ((this: SortedMap[A, B1]) /: kvs) ((m, kv) => m + kv)
+ override def ++ [B1 >: B] (kvs: Iterator[Pair[A, B1]]): SortedMap[A, B1] =
+ ((this: SortedMap[A, B1]) /: kvs) ((m, kv) => m + kv)
+ override def - (key: A): SortedMap[A, B]
+ override def - (key1: A, key2: A, keys: A*): SortedMap[A, B] =
+ this - key1 - key2 -- keys
+ override def -- (keys: Iterable[A]): SortedMap[A, B] = this -- keys.elements
+
+ override def -- (keys: Iterator[A]): SortedMap[A, B] =
+ (this /: keys) ((m, key) => m - key)
+
+ override def transform[C](f: (A, B) => C): SortedMap[A, C] = {
+ var res = empty[C]
+ foreach { case Pair(key, value) => res = res.update(key, f(key, value)) }
+ res
+ }
+ override def filter(p: Pair[A, B] => Boolean): SortedMap[A, B] = {
+ var res = this
+ foreach {
+ case kv @ Pair(key, _) => if (!p(kv)) { res = res - key }
+ }
+ res
+ }
+} \ No newline at end of file