diff options
Diffstat (limited to 'src/library/scala/runtime/BoxedByteArray.scala')
-rw-r--r-- | src/library/scala/runtime/BoxedByteArray.scala | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/library/scala/runtime/BoxedByteArray.scala b/src/library/scala/runtime/BoxedByteArray.scala index fa429af1e6..d5195da463 100644 --- a/src/library/scala/runtime/BoxedByteArray.scala +++ b/src/library/scala/runtime/BoxedByteArray.scala @@ -31,5 +31,29 @@ final class BoxedByteArray(val value: Array[Byte]) extends BoxedArray { ); override def hashCode(): Int = value.hashCode(); + + def subArray(start: Int, end: Int): Array[Byte] = { + val result = new Array[Byte](end - start); + Array.copy(value, 0, result, 0, end - start) + result + } + + def filter(p: Any => Boolean): Array[Byte] = { + val include = new Array[Boolean](value.length); + var len = 0; + var i = 0; + while (i < value.length) { + if (p(value(i))) { include(i) = true; len = len + 1 } + i = i + 1 + } + val result = new Array[Byte](len); + len = 0; + i = 0; + while (len < result.length) { + if (include(i)) { result(len) = value(i); len = len + 1 } + i = i + 1 + } + result + } } |