summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorDavid MacIver <david.maciver@gmail.com>2009-06-01 13:36:53 +0000
committerDavid MacIver <david.maciver@gmail.com>2009-06-01 13:36:53 +0000
commitd161b8bcf25b24883e4adaec7058af44f83b3427 (patch)
tree891968e60cf1cf3874aa377aebce6978823f9a1a /src/library
parent26e953fc6b6295be28e3dc6558c3d76270bae877 (diff)
downloadscala-d161b8bcf25b24883e4adaec7058af44f83b3427.tar.gz
scala-d161b8bcf25b24883e4adaec7058af44f83b3427.tar.bz2
scala-d161b8bcf25b24883e4adaec7058af44f83b3427.zip
Some work towards fixing ticket #2030.
Diffstat (limited to 'src/library')
-rw-r--r--src/library/scala/collection/generic/ImmutableSortedSetFactory.scala7
-rw-r--r--src/library/scala/collection/generic/SortedSetFactory.scala19
-rw-r--r--src/library/scala/collection/immutable/TreeSet.scala6
3 files changed, 27 insertions, 5 deletions
diff --git a/src/library/scala/collection/generic/ImmutableSortedSetFactory.scala b/src/library/scala/collection/generic/ImmutableSortedSetFactory.scala
new file mode 100644
index 0000000000..94284b505e
--- /dev/null
+++ b/src/library/scala/collection/generic/ImmutableSortedSetFactory.scala
@@ -0,0 +1,7 @@
+package scala.collection.generic
+
+/** A template for companion objects of mutable.Map and subclasses thereof.
+ */
+abstract class ImmutableSortedSetFactory[CC[A] <: immutable.SortedSet[A] with SortedSetTemplate[A, CC[A]]] extends SortedSetFactory[CC]{
+ def newBuilder[A](implicit ord: Ordering[A]): Builder[A, CC[A]] = new SetBuilder[A, CC[A]](empty)
+}
diff --git a/src/library/scala/collection/generic/SortedSetFactory.scala b/src/library/scala/collection/generic/SortedSetFactory.scala
new file mode 100644
index 0000000000..3fdcea64fb
--- /dev/null
+++ b/src/library/scala/collection/generic/SortedSetFactory.scala
@@ -0,0 +1,19 @@
+package scala.collection.generic
+
+/** A template for companion objects of Set and subclasses thereof.
+ */
+abstract class SortedSetFactory[CC[A] <: SortedSet[A] with SortedSetTemplate[A, CC[A]]] {
+ type Coll = CC[_]
+
+ def newBuilder[A](implicit ord: Ordering[A]): Builder[A, CC[A]]
+
+ def empty[A](implicit ord: Ordering[A]): CC[A]
+
+ def apply[A](elems: A*)(implicit ord: Ordering[A]): CC[A] = (newBuilder[A](ord) ++= elems).result
+
+ implicit def newBuilderFactory[A](implicit ord : Ordering[A]) : BuilderFactory[A, CC[A], Coll] = new SortedSetBuilderFactory()(ord);
+
+ class SortedSetBuilderFactory[A](implicit ord: Ordering[A]) extends BuilderFactory[A, CC[A], Coll] {
+ def apply(from: Coll) = newBuilder[A](ord)
+ }
+}
diff --git a/src/library/scala/collection/immutable/TreeSet.scala b/src/library/scala/collection/immutable/TreeSet.scala
index ddddf7bab0..36e4fc98c4 100644
--- a/src/library/scala/collection/immutable/TreeSet.scala
+++ b/src/library/scala/collection/immutable/TreeSet.scala
@@ -14,9 +14,8 @@ package scala.collection.immutable
import generic._
/** The canonical factory of <a href="TreeSet.html">TreeSet</a>'s. */
-object TreeSet {
+object TreeSet extends SortedSetFactory[TreeSet]{
- type Coll = TreeSet[_]
implicit def implicitBuilder[A](implicit ordering : Ordering[A]) : Builder[A, TreeSet[A]] = newBuilder[A](ordering)
def newBuilder[A](implicit ordering : Ordering[A]) : Builder[A, TreeSet[A]] = new AddingBuilder(empty[A](ordering))
@@ -24,9 +23,6 @@ object TreeSet {
*/
def empty[A](implicit ordering : Ordering[A]) = new TreeSet[A]
- /** The canonical factory for this type
- */
- def apply[A](elems: A*)(implicit ordering : Ordering[A]) : TreeSet[A] = empty[A] ++ elems
}
/** This class implements immutable sets using a tree.