summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormichelou <michelou@epfl.ch>2008-02-15 11:30:27 +0000
committermichelou <michelou@epfl.ch>2008-02-15 11:30:27 +0000
commitfa3861528dab4b304b4f74e507af5f40a59705e4 (patch)
tree6e30bedcbc412c7adc25037a43332a1002837ffe /src
parent1aad4cb6517f4c63968d11c29f8dfebd8232a49c (diff)
downloadscala-fa3861528dab4b304b4f74e507af5f40a59705e4.tar.gz
scala-fa3861528dab4b304b4f74e507af5f40a59705e4.tar.bz2
scala-fa3861528dab4b304b4f74e507af5f40a59705e4.zip
fixed #485
Diffstat (limited to 'src')
-rw-r--r--src/library/scala/collection/jcl/HashMap.scala6
-rw-r--r--src/library/scala/collection/jcl/HashSet.scala1
-rw-r--r--src/library/scala/collection/jcl/IdentityHashMap.scala12
-rw-r--r--src/library/scala/collection/jcl/LinkedHashMap.scala12
-rw-r--r--src/library/scala/collection/jcl/LinkedHashSet.scala8
-rw-r--r--src/library/scala/collection/jcl/MapWrapper.scala75
-rw-r--r--src/library/scala/collection/jcl/TreeMap.scala15
-rw-r--r--src/library/scala/collection/jcl/TreeSet.scala13
-rw-r--r--src/library/scala/collection/jcl/WeakHashMap.scala12
9 files changed, 88 insertions, 66 deletions
diff --git a/src/library/scala/collection/jcl/HashMap.scala b/src/library/scala/collection/jcl/HashMap.scala
index 85778ac5b3..e9c156f655 100644
--- a/src/library/scala/collection/jcl/HashMap.scala
+++ b/src/library/scala/collection/jcl/HashMap.scala
@@ -14,6 +14,8 @@ package scala.collection.jcl
*
* @author Sean McDirmid
*/
-class HashMap[K,E](override val underlying: java.util.HashMap[K,E]) extends MapWrapper[K,E] {
- def this() = this(new java.util.HashMap[K,E])
+class HashMap[K, E](override val underlying: java.util.HashMap[K, E]) extends MapWrapper[K, E] {
+ def this() = this(new java.util.HashMap[K, E])
+ override def clone: HashMap[K, E] =
+ new HashMap[K, E](underlying.clone().asInstanceOf[java.util.HashMap[K, E]])
}
diff --git a/src/library/scala/collection/jcl/HashSet.scala b/src/library/scala/collection/jcl/HashSet.scala
index 57ca333ec3..7d57278273 100644
--- a/src/library/scala/collection/jcl/HashSet.scala
+++ b/src/library/scala/collection/jcl/HashSet.scala
@@ -16,7 +16,6 @@ package scala.collection.jcl
*/
class HashSet[A](override val underlying: java.util.HashSet[A]) extends SetWrapper[A] {
def this() = this(new java.util.HashSet[A])
-
override def clone: HashSet[A] =
new HashSet[A](underlying.clone().asInstanceOf[java.util.HashSet[A]])
}
diff --git a/src/library/scala/collection/jcl/IdentityHashMap.scala b/src/library/scala/collection/jcl/IdentityHashMap.scala
index 6fdc7c827f..c3113388e9 100644
--- a/src/library/scala/collection/jcl/IdentityHashMap.scala
+++ b/src/library/scala/collection/jcl/IdentityHashMap.scala
@@ -1,14 +1,14 @@
/* __ *\
** ________ ___ / / ___ Scala API **
-** / __/ __// _ | / / / _ | (c) 2006-2007, LAMP/EPFL **
-** __\ \/ /__/ __ |/ /__/ __ | **
+** / __/ __// _ | / / / _ | (c) 2006-2008, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://www.scala-lang.org/ **
** /____/\___/_/ |_/____/_/ | | **
** |/ **
\* */
// $Id$
-package scala.collection.jcl;
+package scala.collection.jcl
/** A map that is backed by a Java identity hash map, which compares keys
* by their reference-based identity as opposed to using equals and hashCode.
@@ -17,6 +17,8 @@ package scala.collection.jcl;
*
* @author Sean McDirmid
*/
-class IdentityHashMap[K,E](override val underlying : java.util.IdentityHashMap[K,E]) extends MapWrapper[K,E] {
- def this() = this(new java.util.IdentityHashMap[K,E]);
+class IdentityHashMap[K, E](override val underlying : java.util.IdentityHashMap[K, E]) extends MapWrapper[K, E] {
+ def this() = this(new java.util.IdentityHashMap[K, E])
+ override def clone: IdentityHashMap[K, E] =
+ new IdentityHashMap[K, E](underlying.clone().asInstanceOf[java.util.IdentityHashMap[K, E]])
}
diff --git a/src/library/scala/collection/jcl/LinkedHashMap.scala b/src/library/scala/collection/jcl/LinkedHashMap.scala
index 0c895a7ff8..424043ba9a 100644
--- a/src/library/scala/collection/jcl/LinkedHashMap.scala
+++ b/src/library/scala/collection/jcl/LinkedHashMap.scala
@@ -1,20 +1,22 @@
/* __ *\
** ________ ___ / / ___ Scala API **
-** / __/ __// _ | / / / _ | (c) 2006-2007, LAMP/EPFL **
-** __\ \/ /__/ __ |/ /__/ __ | **
+** / __/ __// _ | / / / _ | (c) 2006-2008, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://www.scala-lang.org/ **
** /____/\___/_/ |_/____/_/ | | **
** |/ **
\* */
// $Id$
-package scala.collection.jcl;
+package scala.collection.jcl
/** A map that is backed by a Java linked hash map, which fixes iteration
* order in terms of insertion order.
*
* @author Sean McDirmid
*/
-class LinkedHashMap[K,E](override val underlying: java.util.LinkedHashMap[K,E]) extends MapWrapper[K,E] {
- def this() = this(new java.util.LinkedHashMap[K,E]);
+class LinkedHashMap[K, E](override val underlying: java.util.LinkedHashMap[K, E]) extends MapWrapper[K, E] {
+ def this() = this(new java.util.LinkedHashMap[K, E])
+ override def clone: LinkedHashMap[K, E] =
+ new LinkedHashMap[K, E](underlying.clone().asInstanceOf[java.util.LinkedHashMap[K, E]])
}
diff --git a/src/library/scala/collection/jcl/LinkedHashSet.scala b/src/library/scala/collection/jcl/LinkedHashSet.scala
index b5b7c11a39..2d0d1dddff 100644
--- a/src/library/scala/collection/jcl/LinkedHashSet.scala
+++ b/src/library/scala/collection/jcl/LinkedHashSet.scala
@@ -1,14 +1,14 @@
/* __ *\
** ________ ___ / / ___ Scala API **
-** / __/ __// _ | / / / _ | (c) 2006-2007, LAMP/EPFL **
-** __\ \/ /__/ __ |/ /__/ __ | **
+** / __/ __// _ | / / / _ | (c) 2006-2008, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://www.scala-lang.org/ **
** /____/\___/_/ |_/____/_/ | | **
** |/ **
\* */
// $Id$
-package scala.collection.jcl;
+package scala.collection.jcl
/** A set that is backed by a Java linked hash set, which fixes iteration
* order in terms of insertion order.
@@ -16,7 +16,7 @@ package scala.collection.jcl;
* @author Sean McDirmid
*/
class LinkedHashSet[A](override val underlying: java.util.LinkedHashSet[A]) extends SetWrapper[A] {
- def this() = this(new java.util.LinkedHashSet[A]);
+ def this() = this(new java.util.LinkedHashSet[A])
override def clone: LinkedHashSet[A] =
new LinkedHashSet[A](underlying.clone().asInstanceOf[java.util.LinkedHashSet[A]])
}
diff --git a/src/library/scala/collection/jcl/MapWrapper.scala b/src/library/scala/collection/jcl/MapWrapper.scala
index aacb5c4e9f..7fed4d2e8f 100644
--- a/src/library/scala/collection/jcl/MapWrapper.scala
+++ b/src/library/scala/collection/jcl/MapWrapper.scala
@@ -1,67 +1,76 @@
/* __ *\
** ________ ___ / / ___ Scala API **
-** / __/ __// _ | / / / _ | (c) 2006-2007, LAMP/EPFL **
-** __\ \/ /__/ __ |/ /__/ __ | **
+** / __/ __// _ | / / / _ | (c) 2006-2008, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://www.scala-lang.org/ **
** /____/\___/_/ |_/____/_/ | | **
** |/ **
\* */
// $Id$
-package scala.collection.jcl;
+package scala.collection.jcl
/** A wrapper around a Java map.
*
* @author Sean McDirmid
*/
-trait MapWrapper[K,E] extends jcl.Map[K,E] {
- def underlying : java.util.Map[K,E];
- override def size = underlying.size;
- override def isEmpty = underlying.isEmpty;
- override def clear() = underlying.clear;
- override def put(key : K, elem : E) = {
+trait MapWrapper[K, E] extends jcl.Map[K, E] {
+ def underlying: java.util.Map[K, E]
+ override def size = underlying.size
+ override def isEmpty = underlying.isEmpty
+ override def clear() = underlying.clear
+
+ override def put(key: K, elem: E) = {
//if (elem == null) throw new IllegalArgumentException;
- val ret = underlying.put(key,elem);
- if (ret == null) None else Some(ret.asInstanceOf[E]);
+ val ret = underlying.put(key, elem)
+ if (ret == null) None else Some(ret.asInstanceOf[E])
}
+
override def get(key : K) : Option[E] = {
val ret = underlying.get(key);
if (ret == null) None else Some(ret.asInstanceOf[E]);
}
override def ++=(that : Iterable[Tuple2[K,E]]) : Unit = that match {
- case that : MapWrapper[_,_] => underlying.putAll(that.underlying);
- case _ => super.++=(that);
+ case that : MapWrapper[_,_] => underlying.putAll(that.underlying);
+ case _ => super.++=(that)
}
- override def removeKey(key : K) = {
- val ret = underlying.remove(key);
- if (ret == null) None else Some(ret.asInstanceOf[E]);
+
+ override def removeKey(key: K) = {
+ val ret = underlying.remove(key)
+ if (ret == null) None else Some(ret.asInstanceOf[E])
}
- override def contains(key : K) = underlying.containsKey(key);
- override def keySet : Set.Projection[K] = new KeySet;
- override def valueSet : MutableIterable.Projection[E] = new ValueSet;
- override def elements : MutableIterator[Tuple2[K,E]] = new IteratorWrapper;
+
+ override def contains(key: K) = underlying.containsKey(key)
+ override def keySet: Set.Projection[K] = new KeySet
+ override def valueSet: MutableIterable.Projection[E] = new ValueSet
+ override def elements: MutableIterator[Tuple2[K,E]] = new IteratorWrapper
+
class IteratorWrapper extends MutableIterator[Tuple2[K,E]] {
- val underlying = MapWrapper.this.underlying.entrySet.iterator;
- def hasNext = underlying.hasNext;
- def remove = underlying.remove;
+ val underlying = MapWrapper.this.underlying.entrySet.iterator
+ def hasNext = underlying.hasNext
+ def remove = underlying.remove
def next = {
- val next = underlying.next.asInstanceOf[java.util.Map.Entry[K,E]];
- Tuple2(next.getKey.asInstanceOf[K],next.getValue.asInstanceOf[E]);
+ val next = underlying.next.asInstanceOf[java.util.Map.Entry[K,E]]
+ Tuple2(next.getKey.asInstanceOf[K],next.getValue.asInstanceOf[E])
}
}
+
class KeySet extends super.KeySet with SetWrapper[K] with Set.Projection[K] {
- val underlying = MapWrapper.this.underlying.keySet;
+ val underlying = MapWrapper.this.underlying.keySet
}
+
class ValueSet extends IterableWrapper[E] with MutableIterable.Projection[E] {
- override def size = MapWrapper.this.size;
- val underlying = MapWrapper.this.underlying.values;
- override def has(e : E) = MapWrapper.this.underlying.containsValue(e);
+ override def size = MapWrapper.this.size
+ val underlying = MapWrapper.this.underlying.values
+ override def has(e : E) = MapWrapper.this.underlying.containsValue(e)
}
- override def toString = underlying.toString;
- override def hashCode = underlying.hashCode;
+
+ override def toString = underlying.toString
+ override def hashCode = underlying.hashCode
+
override def equals(that : Any) = that match {
- case that: MapWrapper[_,_] => underlying == that.underlying;
- case _ => super.equals(that);
+ case that: MapWrapper[_,_] => underlying == that.underlying
+ case _ => super.equals(that)
}
}
diff --git a/src/library/scala/collection/jcl/TreeMap.scala b/src/library/scala/collection/jcl/TreeMap.scala
index a92d5b8c43..c01584851d 100644
--- a/src/library/scala/collection/jcl/TreeMap.scala
+++ b/src/library/scala/collection/jcl/TreeMap.scala
@@ -1,19 +1,24 @@
/* __ *\
** ________ ___ / / ___ Scala API **
-** / __/ __// _ | / / / _ | (c) 2006-2007, LAMP/EPFL **
-** __\ \/ /__/ __ |/ /__/ __ | **
+** / __/ __// _ | / / / _ | (c) 2006-2008, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://www.scala-lang.org/ **
** /____/\___/_/ |_/____/_/ | | **
** |/ **
\* */
// $Id$
-package scala.collection.jcl;
+package scala.collection.jcl
/** A sorted map that is backed by a Java tree map.
*
* @author Sean McDirmid
*/
-class TreeMap[K <% Ordered[K],E] extends SortedMapWrapper[K,E] {
- val underlying = (new java.util.TreeMap[K,E](new Comparator[K]));
+class TreeMap[K <% Ordered[K], E] extends SortedMapWrapper[K, E] { tm =>
+ val underlying = (new java.util.TreeMap[K, E](new Comparator[K]))
+ override def clone: TreeMap[K, E] =
+ new TreeMap[K, E] {
+ override val underlying =
+ tm.underlying.clone().asInstanceOf[java.util.TreeMap[K, E]]
+ }
}
diff --git a/src/library/scala/collection/jcl/TreeSet.scala b/src/library/scala/collection/jcl/TreeSet.scala
index 5c5be528ca..e708349763 100644
--- a/src/library/scala/collection/jcl/TreeSet.scala
+++ b/src/library/scala/collection/jcl/TreeSet.scala
@@ -1,22 +1,23 @@
/* __ *\
** ________ ___ / / ___ Scala API **
-** / __/ __// _ | / / / _ | (c) 2006-2007, LAMP/EPFL **
-** __\ \/ /__/ __ |/ /__/ __ | **
+** / __/ __// _ | / / / _ | (c) 2006-2008, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://www.scala-lang.org/ **
** /____/\___/_/ |_/____/_/ | | **
** |/ **
\* */
// $Id$
-package scala.collection.jcl;
+package scala.collection.jcl
-/** Creates a sorted set that is backed by an underlying Java tree set. Elements
- * of the sorted set are ordered with respect to the ordered view bound of A.
+/** Creates a sorted set that is backed by an underlying Java tree set.
+ * Elements of the sorted set are ordered with respect to the ordered
+ * view bound of <code>A</code>.
*
* @author Sean McDirmid
*/
class TreeSet[A <% Ordered[A]] extends SortedSetWrapper[A] { ts =>
- val underlying = new java.util.TreeSet[A](new Comparator[A]);
+ val underlying = new java.util.TreeSet[A](new Comparator[A])
override def clone: TreeSet[A] =
new TreeSet[A] {
override val underlying =
diff --git a/src/library/scala/collection/jcl/WeakHashMap.scala b/src/library/scala/collection/jcl/WeakHashMap.scala
index 35590a639c..1d8ff4207e 100644
--- a/src/library/scala/collection/jcl/WeakHashMap.scala
+++ b/src/library/scala/collection/jcl/WeakHashMap.scala
@@ -1,14 +1,14 @@
/* __ *\
** ________ ___ / / ___ Scala API **
-** / __/ __// _ | / / / _ | (c) 2006-2007, LAMP/EPFL **
-** __\ \/ /__/ __ |/ /__/ __ | **
+** / __/ __// _ | / / / _ | (c) 2006-2008, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://www.scala-lang.org/ **
** /____/\___/_/ |_/____/_/ | | **
** |/ **
\* */
// $Id$
-package scala.collection.jcl;
+package scala.collection.jcl
/** <p>
* A map that is backed by a Java weak hash map, whose keys are maintained
@@ -24,6 +24,8 @@ package scala.collection.jcl;
*
* @author Sean McDirmid
*/
-class WeakHashMap[K,E](override val underlying: java.util.WeakHashMap[K,E]) extends MapWrapper[K,E] {
- def this() = this(new java.util.WeakHashMap[K,E])
+class WeakHashMap[K, E](override val underlying: java.util.WeakHashMap[K, E]) extends MapWrapper[K, E] {
+ def this() = this(new java.util.WeakHashMap[K, E])
+ override def clone: WeakHashMap[K, E] =
+ throw new CloneNotSupportedException("The underlying map doesn't implement the Cloneable interface")
}