summaryrefslogtreecommitdiff
path: root/src/library/scala/collection/IndexedSeqLike.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-11-24 01:24:28 +0000
committerPaul Phillips <paulp@improving.org>2011-11-24 01:24:28 +0000
commit60fb9ec19b50cd8059122ccffd72014b3eefc51f (patch)
tree47f47b7b9ad13fb79df825e4e42864a9f53d7035 /src/library/scala/collection/IndexedSeqLike.scala
parent4cfca8a7f6763fbbaab37a3473d74118b3ec52bc (diff)
downloadscala-60fb9ec19b50cd8059122ccffd72014b3eefc51f.tar.gz
scala-60fb9ec19b50cd8059122ccffd72014b3eefc51f.tar.bz2
scala-60fb9ec19b50cd8059122ccffd72014b3eefc51f.zip
Refinements of "def seq" and murmurhash.
Trying to make hashcodes faster. Didn't achieve much on that front, so redirected into structural/consistency issues. The latter was lacking in terms of how/where "def seq" was defined. The documentation I can find doesn't give me much hint that the sequential form of my sequential collection might be a single-use iterator! (As in StringOps, ArrayOps.) If that's intentional it should be in huge letters. I'm assuming for now that it wasn't. Also, there was this: GenMapLike: def seq: Map[A, B] GenSetLike: def seq: Set[A] GenSeqLike: // nothing, returns Traversable So I added some def seqs where I needed the more specific types for my hashcode work. Hashcodewise, I broke the MurmurHash3 object into a reusable class and a collections-specific object, and I deprecated the methods which took GenTraversableOnce in favor of ones taking TraversableOnce, because there's no reason the hashcode library should have to know about things like "make sure to call seq before you traverse or you'll be sorry." Exclude things by their type and you can never make a mistake. End transmission.
Diffstat (limited to 'src/library/scala/collection/IndexedSeqLike.scala')
-rw-r--r--src/library/scala/collection/IndexedSeqLike.scala6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/library/scala/collection/IndexedSeqLike.scala b/src/library/scala/collection/IndexedSeqLike.scala
index b743174260..baf5606ab5 100644
--- a/src/library/scala/collection/IndexedSeqLike.scala
+++ b/src/library/scala/collection/IndexedSeqLike.scala
@@ -6,8 +6,6 @@
** |/ **
\* */
-
-
package scala.collection
import generic._
@@ -42,6 +40,9 @@ import scala.annotation.tailrec
trait IndexedSeqLike[+A, +Repr] extends SeqLike[A, Repr] {
self =>
+ def seq: IndexedSeq[A]
+ override def hashCode() = util.MurmurHash3.seqHash(seq) // TODO - can we get faster via "indexedSeqHash" ?
+
override protected[this] def thisCollection: IndexedSeq[A] = this.asInstanceOf[IndexedSeq[A]]
override protected[this] def toCollection(repr: Repr): IndexedSeq[A] = repr.asInstanceOf[IndexedSeq[A]]
@@ -96,4 +97,3 @@ trait IndexedSeqLike[+A, +Repr] extends SeqLike[A, Repr] {
result
}
}
-