From af47e5b433ea538bf096a176c88f3c91116e09cd Mon Sep 17 00:00:00 2001 From: Antonio Cunei Date: Tue, 25 Nov 2008 18:05:48 +0000 Subject: Merging everything from the 2.8.x development b... Merging everything from the 2.8.x development branch back to trunk. - If you were working on trunk, please keep working on trunk If you were - working on 2.8-devel, please switch to trunk now --- src/library/scalax/collection/SizedIterable.scala | 38 +++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/library/scalax/collection/SizedIterable.scala (limited to 'src/library/scalax/collection/SizedIterable.scala') diff --git a/src/library/scalax/collection/SizedIterable.scala b/src/library/scalax/collection/SizedIterable.scala new file mode 100644 index 0000000000..f4e13f3521 --- /dev/null +++ b/src/library/scalax/collection/SizedIterable.scala @@ -0,0 +1,38 @@ +/* __ *\ +** ________ ___ / / ___ Scala API ** +** / __/ __// _ | / / / _ | (c) 2002-2007, LAMP/EPFL ** +** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** +** /____/\___/_/ |_/____/_/ | | ** +** |/ ** +\* */ + +// $Id: Collection.scala 12340 2007-07-17 15:29:47Z mcdirmid $ + + +package scalax.collection + +/** Variant of Iterable which also demands + * implementation of a `size` method. + * Basically, this trait just adds size to Iterable, + * and provides an optimized implementation of toArray based on it. + * + * @author Martin Odersky + * @version 2.8 + */ +trait SizedIterable[+A] extends Iterable[A] { + + /** Returns the number of elements in this collection. + * + * @return number of collection elements. + */ + def size : Int + + /** Converts this iterable to a fresh Array with size elements. + */ + override def toArray[B >: A]: Array[B] = { + val result = new Array[B](size) + copyToArray(result, 0) + result + } +} + -- cgit v1.2.3