From 73006bc163947638aecd20d1b0be31467625751f Mon Sep 17 00:00:00 2001 From: stepancheg Date: Fri, 27 Jun 2008 09:22:09 +0000 Subject: Add RandomAccessSeqProxy --- src/library/scala/IterableProxy.scala | 2 +- src/library/scala/RandomAccessSeqProxy.scala | 33 ++++++++++++++++++++++ src/library/scala/SeqProxy.scala | 2 +- .../collection/mutable/PriorityQueueProxy.scala | 6 +--- 4 files changed, 36 insertions(+), 7 deletions(-) create mode 100644 src/library/scala/RandomAccessSeqProxy.scala (limited to 'src') diff --git a/src/library/scala/IterableProxy.scala b/src/library/scala/IterableProxy.scala index 1c51ca627a..361113a7a4 100644 --- a/src/library/scala/IterableProxy.scala +++ b/src/library/scala/IterableProxy.scala @@ -23,7 +23,7 @@ import scala.collection.mutable.Buffer */ trait IterableProxy[+A] extends Iterable[A] with Proxy { - def self: Iterable[A] + override def self: Iterable[A] override def elements: Iterator[A] = self.elements @deprecated override def concat [B >: A](that: Iterable[B]): Collection[B] = self concat that diff --git a/src/library/scala/RandomAccessSeqProxy.scala b/src/library/scala/RandomAccessSeqProxy.scala new file mode 100644 index 0000000000..a5fb245f97 --- /dev/null +++ b/src/library/scala/RandomAccessSeqProxy.scala @@ -0,0 +1,33 @@ +/* __ *\ +** ________ ___ / / ___ Scala API ** +** / __/ __// _ | / / / _ | (c) 2003-2008, LAMP/EPFL ** +** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** +** /____/\___/_/ |_/____/_/ | | ** +** |/ ** +\* */ + +// $Id$ + + +package scala + +/** This class implements a proxy for random access sequences. It forwards + * all calls to a different sequence object. + * + * @author Stepan Koltsov + * @version 1.0, 27/06/2008 + */ +trait RandomAccessSeqProxy[+A] extends RandomAccessSeq[A] with SeqProxy[A] { + override def self: RandomAccessSeq[A] + + override def drop(from: Int): RandomAccessSeq[A] = self.drop(from) + override def take(until: Int): RandomAccessSeq[A] = self.take(until) + override def slice(from: Int, until: Int) : RandomAccessSeq[A] = self.slice(from, until) + override def partition(p: A => Boolean): (RandomAccessSeq[A], RandomAccessSeq[A]) = + self.partition(p) + // XXX: def patch, reverse, should not return projection + override def ++[B >: A](that: Iterable[B]): RandomAccessSeq[B] = self ++ that + override def toStream: Stream[A] = self.toStream +} + +// vim: set ts=2 sw=2 et: diff --git a/src/library/scala/SeqProxy.scala b/src/library/scala/SeqProxy.scala index 28878f7d18..b9385139fa 100644 --- a/src/library/scala/SeqProxy.scala +++ b/src/library/scala/SeqProxy.scala @@ -21,7 +21,7 @@ package scala */ trait SeqProxy[+A] extends Seq[A] with IterableProxy[A] { - def self: Seq[A] + override def self: Seq[A] override def apply(i: Int): A = self(i) override def length: Int = self.length diff --git a/src/library/scala/collection/mutable/PriorityQueueProxy.scala b/src/library/scala/collection/mutable/PriorityQueueProxy.scala index 83b84cef07..ac0742cfc0 100644 --- a/src/library/scala/collection/mutable/PriorityQueueProxy.scala +++ b/src/library/scala/collection/mutable/PriorityQueueProxy.scala @@ -20,7 +20,7 @@ package scala.collection.mutable * @version 1.0, 03/05/2004 */ abstract class PriorityQueueProxy[A <% Ordered[A]] extends PriorityQueue[A] - with SeqProxy[A] + with RandomAccessSeqProxy[A] { def self: PriorityQueue[A] @@ -90,10 +90,6 @@ abstract class PriorityQueueProxy[A <% Ordered[A]] extends PriorityQueue[A] */ override def toQueue: Queue[A] = self.toQueue - override def take(until : Int) = self take until - override def drop(from : Int) = self drop from - override def slice(from : Int, until : Int) = self.slice(from, until) - /** This method clones the priority queue. * * @return a priority queue with the same elements. -- cgit v1.2.3