diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2008-03-20 22:55:19 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2008-03-20 22:55:19 +0000 |
commit | 53d25a4ed0f0623113c0605346f7a48bbeb2470e (patch) | |
tree | be5113f139898ac9f78352e57b8c11f20e0ea859 /src | |
parent | 75b4429e15e88c1b94407b8f1824861bf3125d14 (diff) | |
download | scala-53d25a4ed0f0623113c0605346f7a48bbeb2470e.tar.gz scala-53d25a4ed0f0623113c0605346f7a48bbeb2470e.tar.bz2 scala-53d25a4ed0f0623113c0605346f7a48bbeb2470e.zip |
Added overloaded toArray methods to avoid boxin...
Added overloaded toArray methods to avoid boxing when implementing Seq
with a concrete type
Diffstat (limited to 'src')
-rw-r--r-- | src/library/scala/CharSequence.scala | 17 | ||||
-rw-r--r-- | src/library/scala/runtime/RichString.scala | 6 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/library/scala/CharSequence.scala b/src/library/scala/CharSequence.scala index da776256a6..651650471c 100644 --- a/src/library/scala/CharSequence.scala +++ b/src/library/scala/CharSequence.scala @@ -114,6 +114,17 @@ trait CharSequence extends java.lang.CharSequence with Seq[Char] { * @return The resulting string */ def replaceFirst(regex: Regex, replacement: String): String = regex replaceFirstIn (this, replacement) + + def toArray: Array[Char] = { + val len = length + val result = new Array[Char](len) + var i = 0 + while (i < len) { + result(i) = charAt(i) + i += 1 + } + result + } } /** The CharSequence object defines variance implementations of character sequences @@ -150,6 +161,12 @@ object CharSequence { def subSequence(_start: Int, _end: Int) = new AsArray(source, start + _start, start + _end) + override def toArray: Array[Char] = { + val result = new Array[Char](length) + compat.Platform.arraycopy(source, start, result, 0, length) + result + } + override def toString = new String(source, start, end - start) } } diff --git a/src/library/scala/runtime/RichString.scala b/src/library/scala/runtime/RichString.scala index 9c7facd1a7..192cf62ebb 100644 --- a/src/library/scala/runtime/RichString.scala +++ b/src/library/scala/runtime/RichString.scala @@ -219,6 +219,12 @@ final class RichString(val self: String) extends Proxy with CharSequence with Ra def toLong: Long = java.lang.Long.parseLong(self) def toFloat: Float = java.lang.Float.parseFloat(self) def toDouble: Double = java.lang.Double.parseDouble(self) + + override def toArray: Array[Char] = { + val result = new Array[Char](length) + self.getChars(0, length, result, 0) + result + } } object RichString { |