summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2008-03-20 22:55:19 +0000
committerIulian Dragos <jaguarul@gmail.com>2008-03-20 22:55:19 +0000
commit53d25a4ed0f0623113c0605346f7a48bbeb2470e (patch)
treebe5113f139898ac9f78352e57b8c11f20e0ea859 /src
parent75b4429e15e88c1b94407b8f1824861bf3125d14 (diff)
downloadscala-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.scala17
-rw-r--r--src/library/scala/runtime/RichString.scala6
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 {