summaryrefslogtreecommitdiff
path: root/src/library/scala/runtime/BoxedByteArray.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/library/scala/runtime/BoxedByteArray.scala')
-rw-r--r--src/library/scala/runtime/BoxedByteArray.scala24
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
+ }
}