Index: runtime/lib/byte_array.dart |
=================================================================== |
--- runtime/lib/byte_array.dart (revision 3706) |
+++ runtime/lib/byte_array.dart (working copy) |
@@ -96,7 +96,12 @@ |
} |
void operator[]=(int index, int value) { |
- setUint8(index, value); |
+ if (value is int && value >= 0 && value <= 255) { |
+ setUint8(index, value); |
+ } else { |
+ throw const IllegalArgumentException( |
+ "value is not an integer in byte range"); |
Søren Gjesse
2012/02/01 08:16:08
"in byte range" -> "in the byte range"
Start mess
Anders Johnsen
2012/02/01 18:54:53
Done.
|
+ } |
} |
void set length(int newLength) { |
@@ -141,9 +146,36 @@ |
return this[length - 1]; |
} |
+ void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
+ if (length < 0) { |
+ throw new IllegalArgumentException("negative length $length"); |
+ } |
+ if (from is ByteArray) { |
+ _setRange(start, length, from, startFrom); |
+ } else { |
+ Arrays.copy(from, startFrom, this, start, length); |
+ } |
+ } |
+ |
+ List getRange(int start, int length) { |
+ if (length == 0) return []; |
+ Arrays.rangeCheck(this, start, length); |
+ ByteArray list = new ByteArray(length); |
+ list._setRange(0, length, this, start); |
+ return list; |
+ } |
+ |
+ |
// Implementation |
int _length() native "ByteArray_getLength"; |
+ |
+ void _setRange(int start, |
+ int length, |
+ ByteArray from, |
+ int startFrom) |
Søren Gjesse
2012/02/01 08:16:08
I think the parameter list can fit on a single lin
Anders Johnsen
2012/02/01 18:54:53
Done.
|
+ native "ByteArray_setRange"; |
+ |
} |