Reapply "[typed_data] Deprecate UnmodifiableUint8ListView and friends"

This reverts commit 4918d3ef8c.

`@Deprecated` annotations have been commented out.

CoreLibraryReviewExempt: reviewed as https://dart-review.googlesource.com/c/sdk/+/321922
TEST=ci
Bug: #53785
Change-Id: I3239251c2aba5f188aa947f0ff0208271d6be5cc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/331741
Commit-Queue: Stephen Adams <sra@google.com>
Reviewed-by: Lasse Nielsen <lrn@google.com>
Reviewed-by: Derek Xu <derekx@google.com>
This commit is contained in:
Stephen Adams 2023-10-23 18:14:33 +00:00 committed by Commit Queue
parent fa7c42a84d
commit 0a436b7005
14 changed files with 844 additions and 55 deletions

View file

@ -1,5 +1,31 @@
## 3.3.0
### Libraries
#### `dart:typed_data`
- **BREAKING CHANGE** (https://github.com/dart-lang/sdk/issues/53218) The
unmodifiable view classes for typed data are deprecated. Instead of using the
constructors for these classes to create an unmodifiable view, e.g.
```dart
Uint8List data = ...
final readOnlyView = UnmodifableUint8ListView(data);
```
use the new `asUnmodifiableView()` method:
```dart
Uint8List data = ...
final readOnlyView = data.asUnmodifiableView();
```
The reason for this change is to allow more flexibility in the implementation
of typed data so the native and web platforms can use different strategies
for ensuring typed data has good performance.
The deprecated types will be removed in the next Dart version.
### Tools
#### Dart command line

View file

@ -264,6 +264,8 @@ final class _UnmodifiableByteDataView
_UnmodifiableByteDataView(ByteData data) : _data = data;
ByteData asUnmodifiableView() => this;
int getInt8(int byteOffset) => _data.getInt8(byteOffset);
void setInt8(int byteOffset, int value) => _unsupported();
@ -372,6 +374,8 @@ final class _UnmodifiableUint8ListView extends UnmodifiableListBase<int>
final Uint8List _list;
_UnmodifiableUint8ListView(Uint8List list) : _list = list;
Uint8List asUnmodifiableView() => this;
Uint8List _createList(int length) => Uint8List(length);
}
@ -385,6 +389,8 @@ final class _UnmodifiableInt8ListView extends UnmodifiableListBase<int>
final Int8List _list;
_UnmodifiableInt8ListView(Int8List list) : _list = list;
Int8List asUnmodifiableView() => this;
Int8List _createList(int length) => Int8List(length);
}
@ -398,6 +404,8 @@ final class _UnmodifiableUint8ClampedListView extends UnmodifiableListBase<int>
final Uint8ClampedList _list;
_UnmodifiableUint8ClampedListView(Uint8ClampedList list) : _list = list;
Uint8ClampedList asUnmodifiableView() => this;
Uint8ClampedList _createList(int length) => Uint8ClampedList(length);
}
@ -411,6 +419,8 @@ final class _UnmodifiableUint16ListView extends UnmodifiableListBase<int>
final Uint16List _list;
_UnmodifiableUint16ListView(Uint16List list) : _list = list;
Uint16List asUnmodifiableView() => this;
Uint16List _createList(int length) => Uint16List(length);
}
@ -424,6 +434,8 @@ final class _UnmodifiableInt16ListView extends UnmodifiableListBase<int>
final Int16List _list;
_UnmodifiableInt16ListView(Int16List list) : _list = list;
Int16List asUnmodifiableView() => this;
Int16List _createList(int length) => Int16List(length);
}
@ -437,6 +449,8 @@ final class _UnmodifiableUint32ListView extends UnmodifiableListBase<int>
final Uint32List _list;
_UnmodifiableUint32ListView(Uint32List list) : _list = list;
Uint32List asUnmodifiableView() => this;
Uint32List _createList(int length) => Uint32List(length);
}
@ -450,6 +464,8 @@ final class _UnmodifiableInt32ListView extends UnmodifiableListBase<int>
final Int32List _list;
_UnmodifiableInt32ListView(Int32List list) : _list = list;
Int32List asUnmodifiableView() => this;
Int32List _createList(int length) => Int32List(length);
}
@ -463,6 +479,8 @@ final class _UnmodifiableUint64ListView extends UnmodifiableListBase<int>
final Uint64List _list;
_UnmodifiableUint64ListView(Uint64List list) : _list = list;
Uint64List asUnmodifiableView() => this;
Uint64List _createList(int length) => Uint64List(length);
}
@ -476,6 +494,8 @@ final class _UnmodifiableInt64ListView extends UnmodifiableListBase<int>
final Int64List _list;
_UnmodifiableInt64ListView(Int64List list) : _list = list;
Int64List asUnmodifiableView() => this;
Int64List _createList(int length) => Int64List(length);
}
@ -489,6 +509,8 @@ final class _UnmodifiableInt32x4ListView extends UnmodifiableListBase<Int32x4>
final Int32x4List _list;
_UnmodifiableInt32x4ListView(Int32x4List list) : _list = list;
Int32x4List asUnmodifiableView() => this;
Int32x4List _createList(int length) => Int32x4List(length);
}
@ -503,6 +525,8 @@ final class _UnmodifiableFloat32x4ListView
final Float32x4List _list;
_UnmodifiableFloat32x4ListView(Float32x4List list) : _list = list;
Float32x4List asUnmodifiableView() => this;
Float32x4List _createList(int length) => Float32x4List(length);
}
@ -517,6 +541,8 @@ final class _UnmodifiableFloat64x2ListView
final Float64x2List _list;
_UnmodifiableFloat64x2ListView(Float64x2List list) : _list = list;
Float64x2List asUnmodifiableView() => this;
Float64x2List _createList(int length) => Float64x2List(length);
}
@ -530,6 +556,8 @@ final class _UnmodifiableFloat32ListView extends UnmodifiableListBase<double>
final Float32List _list;
_UnmodifiableFloat32ListView(Float32List list) : _list = list;
Float32List asUnmodifiableView() => this;
Float32List _createList(int length) => Float32List(length);
}
@ -543,6 +571,8 @@ final class _UnmodifiableFloat64ListView extends UnmodifiableListBase<double>
final Float64List _list;
_UnmodifiableFloat64ListView(Float64List list) : _list = list;
Float64List asUnmodifiableView() => this;
Float64List _createList(int length) => Float64List(length);
}

View file

@ -162,6 +162,8 @@ final class NativeFloat32x4List extends Object
_storage[(index * 4) + 3] = value.w;
}
Float32x4List asUnmodifiableView() => UnmodifiableFloat32x4ListView(this);
Float32x4List sublist(int start, [int? end]) {
var stop = _checkValidRange(start, end, this.length);
return NativeFloat32x4List._externalStorage(
@ -234,6 +236,8 @@ final class NativeInt32x4List extends Object
_storage[(index * 4) + 3] = value.w;
}
Int32x4List asUnmodifiableView() => UnmodifiableInt32x4ListView(this);
Int32x4List sublist(int start, [int? end]) {
var stop = _checkValidRange(start, end, this.length);
return NativeInt32x4List._externalStorage(
@ -300,6 +304,8 @@ final class NativeFloat64x2List extends Object
_storage[(index * 2) + 1] = value.y;
}
Float64x2List asUnmodifiableView() => UnmodifiableFloat64x2ListView(this);
Float64x2List sublist(int start, [int? end]) {
var stop = _checkValidRange(start, end, this.length);
return NativeFloat64x2List._externalStorage(
@ -407,6 +413,8 @@ final class NativeByteData extends NativeTypedData implements ByteData {
int get elementSizeInBytes => 1;
ByteData asUnmodifiableView() => UnmodifiableByteDataView(this);
/// Returns the floating point number represented by the four bytes at
/// the specified [byteOffset] in this object, in IEEE 754
/// single-precision binary floating-point format (binary32).
@ -757,6 +765,8 @@ final class NativeFloat32List extends NativeTypedArrayOfDouble
Type get runtimeType => Float32List;
Float32List asUnmodifiableView() => UnmodifiableFloat32ListView(this);
Float32List sublist(int start, [int? end]) {
var stop = _checkValidRange(start, end, this.length);
var source =
@ -789,6 +799,8 @@ final class NativeFloat64List extends NativeTypedArrayOfDouble
Type get runtimeType => Float64List;
Float64List asUnmodifiableView() => UnmodifiableFloat64ListView(this);
Float64List sublist(int start, [int? end]) {
var stop = _checkValidRange(start, end, this.length);
var source = JS('NativeFloat64List', '#.subarray(#, #)', this, start, stop);
@ -824,6 +836,8 @@ final class NativeInt16List extends NativeTypedArrayOfInt implements Int16List {
return JS<int>('!', '#[#]', this, index);
}
Int16List asUnmodifiableView() => UnmodifiableInt16ListView(this);
Int16List sublist(int start, [int? end]) {
var stop = _checkValidRange(start, end, this.length);
var source = JS('NativeInt16List', '#.subarray(#, #)', this, start, stop);
@ -859,6 +873,8 @@ final class NativeInt32List extends NativeTypedArrayOfInt implements Int32List {
return JS<int>('!', '#[#]', this, index);
}
Int32List asUnmodifiableView() => UnmodifiableInt32ListView(this);
Int32List sublist(int start, [int? end]) {
var stop = _checkValidRange(start, end, this.length);
var source =
@ -895,6 +911,8 @@ final class NativeInt8List extends NativeTypedArrayOfInt implements Int8List {
return JS<int>('!', '#[#]', this, index);
}
Int8List asUnmodifiableView() => UnmodifiableInt8ListView(this);
Int8List sublist(int start, [int? end]) {
var stop = _checkValidRange(start, end, this.length);
var source = JS<NativeInt8List>('!', '#.subarray(#, #)', this, start, stop);
@ -934,6 +952,8 @@ final class NativeUint16List extends NativeTypedArrayOfInt
return JS<int>('!', '#[#]', this, index);
}
Uint16List asUnmodifiableView() => UnmodifiableUint16ListView(this);
Uint16List sublist(int start, [int? end]) {
var stop = _checkValidRange(start, end, this.length);
var source =
@ -971,6 +991,8 @@ final class NativeUint32List extends NativeTypedArrayOfInt
return JS<int>('!', '#[#]', this, index);
}
Uint32List asUnmodifiableView() => UnmodifiableUint32ListView(this);
Uint32List sublist(int start, [int? end]) {
var stop = _checkValidRange(start, end, this.length);
var source =
@ -1010,6 +1032,9 @@ final class NativeUint8ClampedList extends NativeTypedArrayOfInt
return JS<int>('!', '#[#]', this, index);
}
Uint8ClampedList asUnmodifiableView() =>
UnmodifiableUint8ClampedListView(this);
Uint8ClampedList sublist(int start, [int? end]) {
var stop = _checkValidRange(start, end, this.length);
var source =
@ -1060,6 +1085,8 @@ final class NativeUint8List extends NativeTypedArrayOfInt implements Uint8List {
return JS<int>('!', '#[#]', this, index);
}
Uint8List asUnmodifiableView() => UnmodifiableUint8ListView(this);
Uint8List sublist(int start, [int? end]) {
var stop = _checkValidRange(start, end, this.length);
var source =

View file

@ -8,6 +8,7 @@ library dart.typed_data.implementation;
import 'dart:collection' show ListMixin;
import 'dart:_internal' show FixedLengthListMixin hide Symbol;
import "dart:_internal" show UnmodifiableListBase;
import 'dart:_interceptors'
show JavaScriptObject, JSIndexable, JSUInt32, JSUInt31;
import 'dart:_js_helper'
@ -167,6 +168,8 @@ final class NativeFloat32x4List extends Object
_storage[(index * 4) + 3] = value.w;
}
Float32x4List asUnmodifiableView() => UnmodifiableFloat32x4ListView(this);
Float32x4List sublist(int start, [int? end]) {
var stop = _checkValidRange(start, end, this.length);
return NativeFloat32x4List._externalStorage(
@ -239,6 +242,8 @@ final class NativeInt32x4List extends Object
_storage[(index * 4) + 3] = value.w;
}
Int32x4List asUnmodifiableView() => UnmodifiableInt32x4ListView(this);
Int32x4List sublist(int start, [int? end]) {
var stop = _checkValidRange(start, end, this.length);
return NativeInt32x4List._externalStorage(
@ -305,6 +310,8 @@ final class NativeFloat64x2List extends Object
_storage[(index * 2) + 1] = value.y;
}
Float64x2List asUnmodifiableView() => UnmodifiableFloat64x2ListView(this);
Float64x2List sublist(int start, [int? end]) {
var stop = _checkValidRange(start, end, this.length);
return NativeFloat64x2List._externalStorage(
@ -413,6 +420,8 @@ final class NativeByteData extends NativeTypedData
int get elementSizeInBytes => 1;
ByteData asUnmodifiableView() => UnmodifiableByteDataView(this);
/// Returns the floating point number represented by the four bytes at
/// the specified [byteOffset] in this object, in IEEE 754
/// single-precision binary floating-point format (binary32).
@ -759,6 +768,8 @@ final class NativeFloat32List extends NativeTypedArrayOfDouble
Type get runtimeType => Float32List;
Float32List asUnmodifiableView() => UnmodifiableFloat32ListView(this);
Float32List sublist(int start, [int? end]) {
var stop = _checkValidRange(start, end, this.length);
var source = JS('NativeFloat32List', '#.subarray(#, #)', this, start, stop);
@ -795,6 +806,8 @@ final class NativeFloat64List extends NativeTypedArrayOfDouble
Type get runtimeType => Float64List;
Float64List asUnmodifiableView() => UnmodifiableFloat64ListView(this);
Float64List sublist(int start, [int? end]) {
var stop = _checkValidRange(start, end, this.length);
var source = JS('NativeFloat64List', '#.subarray(#, #)', this, start, stop);
@ -836,6 +849,8 @@ final class NativeInt16List extends NativeTypedArrayOfInt
return JS('int', '#[#]', this, index);
}
Int16List asUnmodifiableView() => UnmodifiableInt16ListView(this);
Int16List sublist(int start, [int? end]) {
var stop = _checkValidRange(start, end, this.length);
var source = JS('NativeInt16List', '#.subarray(#, #)', this, start, stop);
@ -877,6 +892,8 @@ final class NativeInt32List extends NativeTypedArrayOfInt
return JS('int', '#[#]', this, index);
}
Int32List asUnmodifiableView() => UnmodifiableInt32ListView(this);
Int32List sublist(int start, [int? end]) {
var stop = _checkValidRange(start, end, this.length);
var source = JS('NativeInt32List', '#.subarray(#, #)', this, start, stop);
@ -918,6 +935,8 @@ final class NativeInt8List extends NativeTypedArrayOfInt
return JS('int', '#[#]', this, index);
}
Int8List asUnmodifiableView() => UnmodifiableInt8ListView(this);
Int8List sublist(int start, [int? end]) {
var stop = _checkValidRange(start, end, this.length);
var source = JS('NativeInt8List', '#.subarray(#, #)', this, start, stop);
@ -962,6 +981,8 @@ final class NativeUint16List extends NativeTypedArrayOfInt
return JS('JSUInt31', '#[#]', this, index);
}
Uint16List asUnmodifiableView() => UnmodifiableUint16ListView(this);
Uint16List sublist(int start, [int? end]) {
var stop = _checkValidRange(start, end, this.length);
var source = JS('NativeUint16List', '#.subarray(#, #)', this, start, stop);
@ -1003,6 +1024,8 @@ final class NativeUint32List extends NativeTypedArrayOfInt
return JS('JSUInt32', '#[#]', this, index);
}
Uint32List asUnmodifiableView() => UnmodifiableUint32ListView(this);
Uint32List sublist(int start, [int? end]) {
var stop = _checkValidRange(start, end, this.length);
var source = JS('NativeUint32List', '#.subarray(#, #)', this, start, stop);
@ -1047,6 +1070,9 @@ final class NativeUint8ClampedList extends NativeTypedArrayOfInt
return JS('JSUInt31', '#[#]', this, index);
}
Uint8ClampedList asUnmodifiableView() =>
UnmodifiableUint8ClampedListView(this);
Uint8ClampedList sublist(int start, [int? end]) {
var stop = _checkValidRange(start, end, this.length);
var source =
@ -1102,6 +1128,8 @@ final class NativeUint8List extends NativeTypedArrayOfInt
return JS('JSUInt31', '#[#]', this, index);
}
Uint8List asUnmodifiableView() => UnmodifiableUint8ListView(this);
Uint8List sublist(int start, [int? end]) {
var stop = _checkValidRange(start, end, this.length);
var source = JS('NativeUint8List', '#.subarray(#, #)', this, start, stop);

View file

@ -264,6 +264,8 @@ final class _UnmodifiableByteDataView
_UnmodifiableByteDataView(ByteData data) : _data = data;
ByteData asUnmodifiableView() => this;
int getInt8(int byteOffset) => _data.getInt8(byteOffset);
void setInt8(int byteOffset, int value) => _unsupported();
@ -372,6 +374,8 @@ final class _UnmodifiableUint8ListView extends UnmodifiableListBase<int>
final Uint8List _list;
_UnmodifiableUint8ListView(Uint8List list) : _list = list;
Uint8List asUnmodifiableView() => this;
Uint8List _createList(int length) => Uint8List(length);
}
@ -385,6 +389,8 @@ final class _UnmodifiableInt8ListView extends UnmodifiableListBase<int>
final Int8List _list;
_UnmodifiableInt8ListView(Int8List list) : _list = list;
Int8List asUnmodifiableView() => this;
Int8List _createList(int length) => Int8List(length);
}
@ -398,6 +404,8 @@ final class _UnmodifiableUint8ClampedListView extends UnmodifiableListBase<int>
final Uint8ClampedList _list;
_UnmodifiableUint8ClampedListView(Uint8ClampedList list) : _list = list;
Uint8ClampedList asUnmodifiableView() => this;
Uint8ClampedList _createList(int length) => Uint8ClampedList(length);
}
@ -411,6 +419,8 @@ final class _UnmodifiableUint16ListView extends UnmodifiableListBase<int>
final Uint16List _list;
_UnmodifiableUint16ListView(Uint16List list) : _list = list;
Uint16List asUnmodifiableView() => this;
Uint16List _createList(int length) => Uint16List(length);
}
@ -424,6 +434,8 @@ final class _UnmodifiableInt16ListView extends UnmodifiableListBase<int>
final Int16List _list;
_UnmodifiableInt16ListView(Int16List list) : _list = list;
Int16List asUnmodifiableView() => this;
Int16List _createList(int length) => Int16List(length);
}
@ -437,6 +449,8 @@ final class _UnmodifiableUint32ListView extends UnmodifiableListBase<int>
final Uint32List _list;
_UnmodifiableUint32ListView(Uint32List list) : _list = list;
Uint32List asUnmodifiableView() => this;
Uint32List _createList(int length) => Uint32List(length);
}
@ -450,6 +464,8 @@ final class _UnmodifiableInt32ListView extends UnmodifiableListBase<int>
final Int32List _list;
_UnmodifiableInt32ListView(Int32List list) : _list = list;
Int32List asUnmodifiableView() => this;
Int32List _createList(int length) => Int32List(length);
}
@ -463,6 +479,8 @@ final class _UnmodifiableUint64ListView extends UnmodifiableListBase<int>
final Uint64List _list;
_UnmodifiableUint64ListView(Uint64List list) : _list = list;
Uint64List asUnmodifiableView() => this;
Uint64List _createList(int length) => Uint64List(length);
}
@ -476,6 +494,8 @@ final class _UnmodifiableInt64ListView extends UnmodifiableListBase<int>
final Int64List _list;
_UnmodifiableInt64ListView(Int64List list) : _list = list;
Int64List asUnmodifiableView() => this;
Int64List _createList(int length) => Int64List(length);
}
@ -489,6 +509,8 @@ final class _UnmodifiableInt32x4ListView extends UnmodifiableListBase<Int32x4>
final Int32x4List _list;
_UnmodifiableInt32x4ListView(Int32x4List list) : _list = list;
Int32x4List asUnmodifiableView() => this;
Int32x4List _createList(int length) => Int32x4List(length);
}
@ -503,6 +525,8 @@ final class _UnmodifiableFloat32x4ListView
final Float32x4List _list;
_UnmodifiableFloat32x4ListView(Float32x4List list) : _list = list;
Float32x4List asUnmodifiableView() => this;
Float32x4List _createList(int length) => Float32x4List(length);
}
@ -517,6 +541,8 @@ final class _UnmodifiableFloat64x2ListView
final Float64x2List _list;
_UnmodifiableFloat64x2ListView(Float64x2List list) : _list = list;
Float64x2List asUnmodifiableView() => this;
Float64x2List _createList(int length) => Float64x2List(length);
}
@ -530,6 +556,8 @@ final class _UnmodifiableFloat32ListView extends UnmodifiableListBase<double>
final Float32List _list;
_UnmodifiableFloat32ListView(Float32List list) : _list = list;
Float32List asUnmodifiableView() => this;
Float32List _createList(int length) => Float32List(length);
}
@ -543,6 +571,8 @@ final class _UnmodifiableFloat64ListView extends UnmodifiableListBase<double>
final Float64List _list;
_UnmodifiableFloat64ListView(Float64List list) : _list = list;
Float64List asUnmodifiableView() => this;
Float64List _createList(int length) => Float64List(length);
}

View file

@ -132,7 +132,7 @@ abstract final class _TypedListBase {
return _slowSetRange(start, end, from, skipCount);
}
// Method(s) implementing Object interface.
// Method(s) implementing the Object interface.
String toString() => ListBase.listToString(this as List);
// Internal utility methods.
@ -2190,7 +2190,7 @@ final class _Int8List extends _TypedList
throw "Unreachable";
}
// Method(s) implementing List interface.
// Method(s) implementing the List interface.
@pragma("vm:recognized", "graph-intrinsic")
@pragma("vm:exact-result-type", "dart:core#_Smi")
int operator [](int index) {
@ -2210,11 +2210,14 @@ final class _Int8List extends _TypedList
_setInt8(index, _toInt8(value));
}
// Method(s) implementing TypedData interface.
// Method(s) implementing the TypedData interface.
int get elementSizeInBytes {
return Int8List.bytesPerElement;
}
// Method(s) implementing the Int8List interface.
Int8List asUnmodifiableView() => UnmodifiableInt8ListView(this);
// Internal utility methods.
Int8List _createList(int length) {
return new Int8List(length);
@ -2249,7 +2252,7 @@ final class _Uint8List extends _TypedList
throw "Unreachable";
}
// Methods implementing List interface.
// Method(s) implementing the List interface.
@pragma("vm:recognized", "graph-intrinsic")
@pragma("vm:exact-result-type", "dart:core#_Smi")
int operator [](int index) {
@ -2269,11 +2272,14 @@ final class _Uint8List extends _TypedList
_setUint8(index, _toUint8(value));
}
// Methods implementing TypedData interface.
// Method(s) implementing the TypedData interface.
int get elementSizeInBytes {
return Uint8List.bytesPerElement;
}
// Method(s) implementing the Uint8List interface.
Uint8List asUnmodifiableView() => UnmodifiableUint8ListView(this);
// Internal utility methods.
Uint8List _createList(int length) {
return new Uint8List(length);
@ -2311,7 +2317,7 @@ final class _Uint8ClampedList extends _TypedList
throw "Unreachable";
}
// Methods implementing List interface.
// Method(s) implementing the List interface.
@pragma("vm:recognized", "graph-intrinsic")
@pragma("vm:exact-result-type", "dart:core#_Smi")
int operator [](int index) {
@ -2331,11 +2337,15 @@ final class _Uint8ClampedList extends _TypedList
_setUint8(index, _toClampedUint8(value));
}
// Methods implementing TypedData interface.
// Method(s) implementing the TypedData interface.
int get elementSizeInBytes {
return Uint8List.bytesPerElement;
}
// Method(s) implementing the Uint8ClampedList interface.
Uint8ClampedList asUnmodifiableView() =>
UnmodifiableUint8ClampedListView(this);
// Internal utility methods.
Uint8ClampedList _createList(int length) {
return new Uint8ClampedList(length);
@ -2375,7 +2385,7 @@ final class _Int16List extends _TypedList
throw "Unreachable";
}
// Method(s) implementing List interface.
// Method(s) implementing the List interface.
@pragma("vm:recognized", "graph-intrinsic")
@pragma("vm:exact-result-type", "dart:core#_Smi")
int operator [](int index) {
@ -2407,11 +2417,14 @@ final class _Int16List extends _TypedList
}
}
// Method(s) implementing TypedData interface.
// Method(s) implementing the TypedData interface.
int get elementSizeInBytes {
return Int16List.bytesPerElement;
}
// Method(s) implementing the Int16List interface.
Int16List asUnmodifiableView() => UnmodifiableInt16ListView(this);
// Internal utility methods.
Int16List _createList(int length) {
return new Int16List(length);
@ -2491,6 +2504,9 @@ final class _Uint16List extends _TypedList
return Uint16List.bytesPerElement;
}
// Method(s) implementing the Uint16List interface.
Uint16List asUnmodifiableView() => UnmodifiableUint16ListView(this);
// Internal utility methods.
Uint16List _createList(int length) {
return new Uint16List(length);
@ -2552,11 +2568,14 @@ final class _Int32List extends _TypedList
_setIndexedInt32(index, _toInt32(value));
}
// Method(s) implementing TypedData interface.
// Method(s) implementing the TypedData interface.
int get elementSizeInBytes {
return Int32List.bytesPerElement;
}
// Method(s) implementing the Int32List interface.
Int32List asUnmodifiableView() => UnmodifiableInt32ListView(this);
// Internal utility methods.
Int32List _createList(int length) {
return new Int32List(length);
@ -2623,6 +2642,9 @@ final class _Uint32List extends _TypedList
return Uint32List.bytesPerElement;
}
// Method(s) implementing the Uint32List interface.
Uint32List asUnmodifiableView() => UnmodifiableUint32ListView(this);
// Internal utility methods.
Uint32List _createList(int length) {
return new Uint32List(length);
@ -2689,6 +2711,9 @@ final class _Int64List extends _TypedList
return Int64List.bytesPerElement;
}
// Method(s) implementing the Int64List interface.
Int64List asUnmodifiableView() => UnmodifiableInt64ListView(this);
// Internal utility methods.
Int64List _createList(int length) {
return new Int64List(length);
@ -2755,6 +2780,9 @@ final class _Uint64List extends _TypedList
return Uint64List.bytesPerElement;
}
// Method(s) implementing the Uint64List interface.
Uint64List asUnmodifiableView() => UnmodifiableUint64ListView(this);
// Internal utility methods.
Uint64List _createList(int length) {
return new Uint64List(length);
@ -2822,6 +2850,9 @@ final class _Float32List extends _TypedList
return Float32List.bytesPerElement;
}
// Method(s) implementing the Float32List interface.
Float32List asUnmodifiableView() => UnmodifiableFloat32ListView(this);
// Internal utility methods.
Float32List _createList(int length) {
return new Float32List(length);
@ -2889,6 +2920,9 @@ final class _Float64List extends _TypedList
return Float64List.bytesPerElement;
}
// Method(s) implementing the Float64List interface.
Float64List asUnmodifiableView() => UnmodifiableFloat64ListView(this);
// Internal utility methods.
Float64List _createList(int length) {
return new Float64List(length);
@ -2955,6 +2989,9 @@ final class _Float32x4List extends _TypedList
return Float32x4List.bytesPerElement;
}
// Method(s) implementing the Float32x4List interface.
Float32x4List asUnmodifiableView() => UnmodifiableFloat32x4ListView(this);
// Internal utility methods.
Float32x4List _createList(int length) {
return new Float32x4List(length);
@ -3021,6 +3058,9 @@ final class _Int32x4List extends _TypedList
return Int32x4List.bytesPerElement;
}
// Method(s) implementing the Int32x4List interface.
Int32x4List asUnmodifiableView() => UnmodifiableInt32x4ListView(this);
// Internal utility methods.
Int32x4List _createList(int length) {
return new Int32x4List(length);
@ -3087,6 +3127,9 @@ final class _Float64x2List extends _TypedList
return Float64x2List.bytesPerElement;
}
// Method(s) implementing the Float64x2List interface.
Float64x2List asUnmodifiableView() => UnmodifiableFloat64x2ListView(this);
// Internal utility methods.
Float64x2List _createList(int length) {
return new Float64x2List(length);
@ -3136,6 +3179,9 @@ final class _ExternalInt8Array extends _TypedList
return Int8List.bytesPerElement;
}
// Method(s) implementing the Int8List interface.
Int8List asUnmodifiableView() => UnmodifiableInt8ListView(this);
// Internal utility methods.
Int8List _createList(int length) {
return new Int8List(length);
@ -3180,6 +3226,9 @@ final class _ExternalUint8Array extends _TypedList
return Uint8List.bytesPerElement;
}
// Method(s) implementing the Uint8ClampedList interface.
Uint8List asUnmodifiableView() => UnmodifiableUint8ListView(this);
// Internal utility methods.
Uint8List _createList(int length) {
return new Uint8List(length);
@ -3227,6 +3276,10 @@ final class _ExternalUint8ClampedArray extends _TypedList
return Uint8List.bytesPerElement;
}
// Method(s) implementing the Uint8ClampedList interface.
Uint8ClampedList asUnmodifiableView() =>
UnmodifiableUint8ClampedListView(this);
// Internal utility methods.
Uint8ClampedList _createList(int length) {
return new Uint8ClampedList(length);
@ -3273,6 +3326,9 @@ final class _ExternalInt16Array extends _TypedList
return Int16List.bytesPerElement;
}
// Method(s) implementing the Int16List interface.
Int16List asUnmodifiableView() => UnmodifiableInt16ListView(this);
// Internal utility methods.
Int16List _createList(int length) {
return new Int16List(length);
@ -3322,6 +3378,9 @@ final class _ExternalUint16Array extends _TypedList
return Uint16List.bytesPerElement;
}
// Method(s) implementing the Uint16List interface.
Uint16List asUnmodifiableView() => UnmodifiableUint16ListView(this);
// Internal utility methods.
Uint16List _createList(int length) {
return new Uint16List(length);
@ -3371,6 +3430,9 @@ final class _ExternalInt32Array extends _TypedList
return Int32List.bytesPerElement;
}
// Method(s) implementing the Int32List interface.
Int32List asUnmodifiableView() => UnmodifiableInt32ListView(this);
// Internal utility methods.
Int32List _createList(int length) {
return new Int32List(length);
@ -3420,6 +3482,9 @@ final class _ExternalUint32Array extends _TypedList
return Uint32List.bytesPerElement;
}
// Method(s) implementing the Uint32List interface.
Uint32List asUnmodifiableView() => UnmodifiableUint32ListView(this);
// Internal utility methods.
Uint32List _createList(int length) {
return new Uint32List(length);
@ -3469,6 +3534,9 @@ final class _ExternalInt64Array extends _TypedList
return Int64List.bytesPerElement;
}
// Method(s) implementing the Int64List interface.
Int64List asUnmodifiableView() => UnmodifiableInt64ListView(this);
// Internal utility methods.
Int64List _createList(int length) {
return new Int64List(length);
@ -3518,6 +3586,9 @@ final class _ExternalUint64Array extends _TypedList
return Uint64List.bytesPerElement;
}
// Method(s) implementing the Uint64List interface.
Uint64List asUnmodifiableView() => UnmodifiableUint64ListView(this);
// Internal utility methods.
Uint64List _createList(int length) {
return new Uint64List(length);
@ -3567,6 +3638,9 @@ final class _ExternalFloat32Array extends _TypedList
return Float32List.bytesPerElement;
}
// Method(s) implementing the Float32List interface.
Float32List asUnmodifiableView() => UnmodifiableFloat32ListView(this);
// Internal utility methods.
Float32List _createList(int length) {
return new Float32List(length);
@ -3616,6 +3690,9 @@ final class _ExternalFloat64Array extends _TypedList
return Float64List.bytesPerElement;
}
// Method(s) implementing the Float64List interface.
Float64List asUnmodifiableView() => UnmodifiableFloat64ListView(this);
// Internal utility methods.
Float64List _createList(int length) {
return new Float64List(length);
@ -3665,6 +3742,9 @@ final class _ExternalFloat32x4Array extends _TypedList
return Float32x4List.bytesPerElement;
}
// Method(s) implementing the Float32x4 interface.
Float32x4List asUnmodifiableView() => UnmodifiableFloat32x4ListView(this);
// Internal utility methods.
Float32x4List _createList(int length) {
return new Float32x4List(length);
@ -3714,6 +3794,9 @@ final class _ExternalInt32x4Array extends _TypedList
return Int32x4List.bytesPerElement;
}
// Method(s) implementing the Int32x4List interface.
Int32x4List asUnmodifiableView() => UnmodifiableInt32x4ListView(this);
// Internal utility methods.
Int32x4List _createList(int length) {
return new Int32x4List(length);
@ -3763,6 +3846,9 @@ final class _ExternalFloat64x2Array extends _TypedList
return Float64x2List.bytesPerElement;
}
// Method(s) implementing the Float64x2List interface.
Float64x2List asUnmodifiableView() => UnmodifiableFloat64x2ListView(this);
// Internal utility methods.
Float64x2List _createList(int length) {
return new Float64x2List(length);
@ -4344,7 +4430,7 @@ final class _Int8ArrayView extends _TypedListView
external factory _Int8ArrayView._(
_TypedList buffer, int offsetInBytes, int length);
// Method(s) implementing List interface.
// Method(s) implementing the List interface.
@pragma("vm:prefer-inline")
int operator [](int index) {
if (index < 0 || index >= length) {
@ -4365,11 +4451,14 @@ final class _Int8ArrayView extends _TypedListView
offsetInBytes + (index * Int8List.bytesPerElement), _toInt8(value));
}
// Method(s) implementing TypedData interface.
// Method(s) implementing the TypedData interface.
int get elementSizeInBytes {
return Int8List.bytesPerElement;
}
// Method(s) implementing the Int8List interface.
Int8List asUnmodifiableView() => UnmodifiableInt8ListView(this);
// Internal utility methods.
Int8List _createList(int length) {
return new Int8List(length);
@ -4393,7 +4482,7 @@ final class _Uint8ArrayView extends _TypedListView
external factory _Uint8ArrayView._(
_TypedList buffer, int offsetInBytes, int length);
// Method(s) implementing List interface.
// Method(s) implementing the List interface.
@pragma("vm:prefer-inline")
int operator [](int index) {
if (index < 0 || index >= length) {
@ -4414,11 +4503,14 @@ final class _Uint8ArrayView extends _TypedListView
offsetInBytes + (index * Uint8List.bytesPerElement), _toUint8(value));
}
// Method(s) implementing TypedData interface.
// Method(s) implementing the TypedData interface.
int get elementSizeInBytes {
return Uint8List.bytesPerElement;
}
// Method(s) implementing the Uint8List interface.
Uint8List asUnmodifiableView() => UnmodifiableUint8ListView(this);
// Internal utility methods.
Uint8List _createList(int length) {
return new Uint8List(length);
@ -4445,7 +4537,7 @@ final class _Uint8ClampedArrayView extends _TypedListView
external factory _Uint8ClampedArrayView._(
_TypedList buffer, int offsetInBytes, int length);
// Method(s) implementing List interface.
// Method(s) implementing the List interface.
@pragma("vm:prefer-inline")
int operator [](int index) {
if (index < 0 || index >= length) {
@ -4466,11 +4558,15 @@ final class _Uint8ClampedArrayView extends _TypedListView
_toClampedUint8(value));
}
// Method(s) implementing TypedData interface.
// Method(s) implementing the TypedData interface.
int get elementSizeInBytes {
return Uint8List.bytesPerElement;
}
// Method(s) implementing the Uint8ClampedList interface.
Uint8ClampedList asUnmodifiableView() =>
UnmodifiableUint8ClampedListView(this);
// Internal utility methods.
Uint8ClampedList _createList(int length) {
return new Uint8ClampedList(length);
@ -4499,7 +4595,7 @@ final class _Int16ArrayView extends _TypedListView
external factory _Int16ArrayView._(
_TypedList buffer, int offsetInBytes, int length);
// Method(s) implementing List interface.
// Method(s) implementing the List interface.
@pragma("vm:prefer-inline")
int operator [](int index) {
if (index < 0 || index >= length) {
@ -4532,12 +4628,15 @@ final class _Int16ArrayView extends _TypedListView
}
}
// Method(s) implementing TypedData interface.
// Method(s) implementing the TypedData interface.
int get elementSizeInBytes {
return Int16List.bytesPerElement;
}
// Method(s) implementing the Int16List interface.
Int16List asUnmodifiableView() => UnmodifiableInt16ListView(this);
// Internal utility methods.
Int16List _createList(int length) {
return new Int16List(length);
@ -4561,7 +4660,7 @@ final class _Uint16ArrayView extends _TypedListView
external factory _Uint16ArrayView._(
_TypedList buffer, int offsetInBytes, int length);
// Method(s) implementing List interface.
// Method(s) implementing the List interface.
@pragma("vm:prefer-inline")
int operator [](int index) {
if (index < 0 || index >= length) {
@ -4594,14 +4693,16 @@ final class _Uint16ArrayView extends _TypedListView
}
}
// Method(s) implementing TypedData interface.
// Method(s) implementing the TypedData interface.
int get elementSizeInBytes {
return Uint16List.bytesPerElement;
}
// Internal utility methods.
// Method(s) implementing the Uint16List interface.
Uint16List asUnmodifiableView() => UnmodifiableUint16ListView(this);
// Internal utility methods.
Uint16List _createList(int length) {
return new Uint16List(length);
}
@ -4624,7 +4725,7 @@ final class _Int32ArrayView extends _TypedListView
external factory _Int32ArrayView._(
_TypedList buffer, int offsetInBytes, int length);
// Method(s) implementing List interface.
// Method(s) implementing the List interface.
@pragma("vm:prefer-inline")
int operator [](int index) {
if (index < 0 || index >= length) {
@ -4645,11 +4746,14 @@ final class _Int32ArrayView extends _TypedListView
offsetInBytes + (index * Int32List.bytesPerElement), _toInt32(value));
}
// Method(s) implementing TypedData interface.
// Method(s) implementing the TypedData interface.
int get elementSizeInBytes {
return Int32List.bytesPerElement;
}
// Method(s) implementing the Int32List interface.
Int32List asUnmodifiableView() => UnmodifiableInt32ListView(this);
// Internal utility methods.
Int32List _createList(int length) {
return new Int32List(length);
@ -4673,7 +4777,7 @@ final class _Uint32ArrayView extends _TypedListView
external factory _Uint32ArrayView._(
_TypedList buffer, int offsetInBytes, int length);
// Method(s) implementing List interface.
// Method(s) implementing the List interface.
@pragma("vm:prefer-inline")
int operator [](int index) {
if (index < 0 || index >= length) {
@ -4694,11 +4798,14 @@ final class _Uint32ArrayView extends _TypedListView
offsetInBytes + (index * Uint32List.bytesPerElement), _toUint32(value));
}
// Method(s) implementing TypedData interface.
// Method(s) implementing the TypedData interface.
int get elementSizeInBytes {
return Uint32List.bytesPerElement;
}
// Method(s) implementing the Uint32List interface.
Uint32List asUnmodifiableView() => UnmodifiableUint32ListView(this);
// Internal utility methods.
Uint32List _createList(int length) {
return new Uint32List(length);
@ -4722,7 +4829,7 @@ final class _Int64ArrayView extends _TypedListView
external factory _Int64ArrayView._(
_TypedList buffer, int offsetInBytes, int length);
// Method(s) implementing List interface.
// Method(s) implementing the List interface.
@pragma("vm:prefer-inline")
int operator [](int index) {
if (index < 0 || index >= length) {
@ -4743,11 +4850,14 @@ final class _Int64ArrayView extends _TypedListView
offsetInBytes + (index * Int64List.bytesPerElement), value);
}
// Method(s) implementing TypedData interface.
// Method(s) implementing the TypedData interface.
int get elementSizeInBytes {
return Int64List.bytesPerElement;
}
// Method(s) implementing the Int16List interface.
Int64List asUnmodifiableView() => UnmodifiableInt64ListView(this);
// Internal utility methods.
Int64List _createList(int length) {
return new Int64List(length);
@ -4771,7 +4881,7 @@ final class _Uint64ArrayView extends _TypedListView
external factory _Uint64ArrayView._(
_TypedList buffer, int offsetInBytes, int length);
// Method(s) implementing List interface.
// Method(s) implementing the List interface.
@pragma("vm:prefer-inline")
int operator [](int index) {
if (index < 0 || index >= length) {
@ -4792,11 +4902,14 @@ final class _Uint64ArrayView extends _TypedListView
offsetInBytes + (index * Uint64List.bytesPerElement), value);
}
// Method(s) implementing TypedData interface.
// Method(s) implementing the TypedData interface.
int get elementSizeInBytes {
return Uint64List.bytesPerElement;
}
// Method(s) implementing the Uint64List interface.
Uint64List asUnmodifiableView() => UnmodifiableUint64ListView(this);
// Internal utility methods.
Uint64List _createList(int length) {
return new Uint64List(length);
@ -4820,7 +4933,7 @@ final class _Float32ArrayView extends _TypedListView
external factory _Float32ArrayView._(
_TypedList buffer, int offsetInBytes, int length);
// Method(s) implementing List interface.
// Method(s) implementing the List interface.
@pragma("vm:prefer-inline")
double operator [](int index) {
if (index < 0 || index >= length) {
@ -4841,11 +4954,14 @@ final class _Float32ArrayView extends _TypedListView
offsetInBytes + (index * Float32List.bytesPerElement), value);
}
// Method(s) implementing TypedData interface.
// Method(s) implementing the TypedData interface.
int get elementSizeInBytes {
return Float32List.bytesPerElement;
}
// Method(s) implementing the Float32List interface.
Float32List asUnmodifiableView() => UnmodifiableFloat32ListView(this);
// Internal utility methods.
Float32List _createList(int length) {
return new Float32List(length);
@ -4869,7 +4985,7 @@ final class _Float64ArrayView extends _TypedListView
external factory _Float64ArrayView._(
_TypedList buffer, int offsetInBytes, int length);
// Method(s) implementing List interface.
// Method(s) implementing the List interface.
@pragma("vm:prefer-inline")
double operator [](int index) {
if (index < 0 || index >= length) {
@ -4890,11 +5006,14 @@ final class _Float64ArrayView extends _TypedListView
offsetInBytes + (index * Float64List.bytesPerElement), value);
}
// Method(s) implementing TypedData interface.
// Method(s) implementing the TypedData interface.
int get elementSizeInBytes {
return Float64List.bytesPerElement;
}
// Method(s) implementing the Float64List interface.
Float64List asUnmodifiableView() => UnmodifiableFloat64ListView(this);
// Internal utility methods.
Float64List _createList(int length) {
return new Float64List(length);
@ -4918,7 +5037,7 @@ final class _Float32x4ArrayView extends _TypedListView
external factory _Float32x4ArrayView._(
_TypedList buffer, int offsetInBytes, int length);
// Method(s) implementing List interface.
// Method(s) implementing the List interface.
Float32x4 operator [](int index) {
if (index < 0 || index >= length) {
throw new IndexError.withLength(index, length,
@ -4937,11 +5056,14 @@ final class _Float32x4ArrayView extends _TypedListView
offsetInBytes + (index * Float32x4List.bytesPerElement), value);
}
// Method(s) implementing TypedData interface.
// Method(s) implementing the TypedData interface.
int get elementSizeInBytes {
return Float32x4List.bytesPerElement;
}
// Method(s) implementing the Float32x4List interface.
Float32x4List asUnmodifiableView() => UnmodifiableFloat32x4ListView(this);
// Internal utility methods.
Float32x4List _createList(int length) {
return new Float32x4List(length);
@ -4965,7 +5087,7 @@ final class _Int32x4ArrayView extends _TypedListView
external factory _Int32x4ArrayView._(
_TypedList buffer, int offsetInBytes, int length);
// Method(s) implementing List interface.
// Method(s) implementing the List interface.
Int32x4 operator [](int index) {
if (index < 0 || index >= length) {
throw new IndexError.withLength(index, length,
@ -4984,11 +5106,14 @@ final class _Int32x4ArrayView extends _TypedListView
offsetInBytes + (index * Int32x4List.bytesPerElement), value);
}
// Method(s) implementing TypedData interface.
// Method(s) implementing the TypedData interface.
int get elementSizeInBytes {
return Int32x4List.bytesPerElement;
}
// Method(s) implementing the Int32x4List interface.
Int32x4List asUnmodifiableView() => UnmodifiableInt32x4ListView(this);
// Internal utility methods.
Int32x4List _createList(int length) {
return new Int32x4List(length);
@ -5012,7 +5137,7 @@ final class _Float64x2ArrayView extends _TypedListView
external factory _Float64x2ArrayView._(
_TypedList buffer, int offsetInBytes, int length);
// Method(s) implementing List interface.
// Method(s) implementing the List interface.
Float64x2 operator [](int index) {
if (index < 0 || index >= length) {
throw new IndexError.withLength(index, length,
@ -5031,11 +5156,14 @@ final class _Float64x2ArrayView extends _TypedListView
offsetInBytes + (index * Float64x2List.bytesPerElement), value);
}
// Method(s) implementing TypedData interface.
// Method(s) implementing the TypedData interface.
int get elementSizeInBytes {
return Float64x2List.bytesPerElement;
}
// Method(s) implementing the Float64x2List interface.
Float64x2List asUnmodifiableView() => UnmodifiableFloat64x2ListView(this);
// Internal utility methods.
Float64x2List _createList(int length) {
return new Float64x2List(length);
@ -5056,7 +5184,7 @@ final class _ByteDataView implements ByteData {
external factory _ByteDataView._(
_TypedList buffer, int offsetInBytes, int length);
// Method(s) implementing TypedData interface.
// Method(s) implementing the TypedData interface.
_ByteBuffer get buffer {
return _typedData.buffer;
}
@ -5069,7 +5197,8 @@ final class _ByteDataView implements ByteData {
return 1;
}
// Method(s) implementing ByteData interface.
// Method(s) implementing the ByteData interface.
ByteData asUnmodifiableView() => UnmodifiableByteDataView(this);
@pragma("vm:prefer-inline")
int getInt8(int byteOffset) {
@ -5622,6 +5751,8 @@ final class _UnmodifiableInt8ArrayView extends _Int8ArrayView
}
_ByteBuffer get buffer => new _UnmodifiableByteBufferView(_typedData.buffer);
Int8List asUnmodifiableView() => this;
}
@pragma("vm:entry-point")
@ -5639,6 +5770,8 @@ final class _UnmodifiableUint8ArrayView extends _Uint8ArrayView
}
_ByteBuffer get buffer => new _UnmodifiableByteBufferView(_typedData.buffer);
Uint8List asUnmodifiableView() => this;
}
@pragma("vm:entry-point")
@ -5656,6 +5789,8 @@ final class _UnmodifiableUint8ClampedArrayView extends _Uint8ClampedArrayView
}
_ByteBuffer get buffer => new _UnmodifiableByteBufferView(_typedData.buffer);
Uint8ClampedList asUnmodifiableView() => this;
}
@pragma("vm:entry-point")
@ -5673,6 +5808,8 @@ final class _UnmodifiableInt16ArrayView extends _Int16ArrayView
}
_ByteBuffer get buffer => new _UnmodifiableByteBufferView(_typedData.buffer);
Int16List asUnmodifiableView() => this;
}
@pragma("vm:entry-point")
@ -5690,6 +5827,8 @@ final class _UnmodifiableUint16ArrayView extends _Uint16ArrayView
}
_ByteBuffer get buffer => new _UnmodifiableByteBufferView(_typedData.buffer);
Uint16List asUnmodifiableView() => this;
}
@pragma("vm:entry-point")
@ -5707,6 +5846,8 @@ final class _UnmodifiableInt32ArrayView extends _Int32ArrayView
}
_ByteBuffer get buffer => new _UnmodifiableByteBufferView(_typedData.buffer);
Int32List asUnmodifiableView() => this;
}
@pragma("vm:entry-point")
@ -5724,6 +5865,8 @@ final class _UnmodifiableUint32ArrayView extends _Uint32ArrayView
}
_ByteBuffer get buffer => new _UnmodifiableByteBufferView(_typedData.buffer);
Uint32List asUnmodifiableView() => this;
}
@pragma("vm:entry-point")
@ -5741,6 +5884,8 @@ final class _UnmodifiableInt64ArrayView extends _Int64ArrayView
}
_ByteBuffer get buffer => new _UnmodifiableByteBufferView(_typedData.buffer);
Int64List asUnmodifiableView() => this;
}
@pragma("vm:entry-point")
@ -5758,6 +5903,8 @@ final class _UnmodifiableUint64ArrayView extends _Uint64ArrayView
}
_ByteBuffer get buffer => new _UnmodifiableByteBufferView(_typedData.buffer);
Uint64List asUnmodifiableView() => this;
}
@pragma("vm:entry-point")
@ -5775,6 +5922,8 @@ final class _UnmodifiableFloat32ArrayView extends _Float32ArrayView
}
_ByteBuffer get buffer => new _UnmodifiableByteBufferView(_typedData.buffer);
Float32List asUnmodifiableView() => this;
}
@pragma("vm:entry-point")
@ -5792,6 +5941,8 @@ final class _UnmodifiableFloat64ArrayView extends _Float64ArrayView
}
_ByteBuffer get buffer => new _UnmodifiableByteBufferView(_typedData.buffer);
Float64List asUnmodifiableView() => this;
}
@pragma("vm:entry-point")
@ -5809,6 +5960,8 @@ final class _UnmodifiableFloat32x4ArrayView extends _Float32x4ArrayView
}
_ByteBuffer get buffer => new _UnmodifiableByteBufferView(_typedData.buffer);
Float32x4List asUnmodifiableView() => this;
}
@pragma("vm:entry-point")
@ -5826,6 +5979,8 @@ final class _UnmodifiableInt32x4ArrayView extends _Int32x4ArrayView
}
_ByteBuffer get buffer => new _UnmodifiableByteBufferView(_typedData.buffer);
Int32x4List asUnmodifiableView() => this;
}
@pragma("vm:entry-point")
@ -5843,6 +5998,8 @@ final class _UnmodifiableFloat64x2ArrayView extends _Float64x2ArrayView
}
_ByteBuffer get buffer => new _UnmodifiableByteBufferView(_typedData.buffer);
Float64x2List asUnmodifiableView() => this;
}
@pragma("vm:entry-point")
@ -5901,6 +6058,8 @@ final class _UnmodifiableByteDataView extends _ByteDataView
}
_ByteBuffer get buffer => new _UnmodifiableByteBufferView(_typedData.buffer);
ByteData asUnmodifiableView() => this;
}
final class _UnmodifiableByteBufferView extends _ByteBuffer

View file

@ -132,6 +132,9 @@ final class JSDataViewImpl extends JSArrayBufferViewImpl implements ByteData {
@override
int get elementSizeInBytes => 1;
@override
ByteData asUnmodifiableView() => UnmodifiableByteDataView(this);
double getFloat32(int byteOffset, [Endian endian = Endian.big]) =>
js.JS<double>('(b, o, e) => b.getFloat32(o, e)', toExternRef,
byteOffset.toDouble(), Endian.little == endian);
@ -299,6 +302,9 @@ final class JSUint8ArrayImpl extends JSIntArrayImpl implements Uint8List {
return JSUint8ArrayImpl(jsBuffer);
}
@override
Uint8List asUnmodifiableView() => UnmodifiableUint8ListView(this);
@override
Uint8List sublist(int start, [int? end]) {
final stop = RangeError.checkValidRange(start, end, length);
@ -327,6 +333,9 @@ final class JSInt8ArrayImpl extends JSIntArrayImpl implements Int8List {
return JSInt8ArrayImpl(jsBuffer);
}
@override
Int8List asUnmodifiableView() => UnmodifiableInt8ListView(this);
@override
Int8List sublist(int start, [int? end]) {
final stop = RangeError.checkValidRange(start, end, length);
@ -359,6 +368,10 @@ final class JSUint8ClampedArrayImpl extends JSIntArrayImpl
return JSUint8ClampedArrayImpl(jsBuffer);
}
@override
Uint8ClampedList asUnmodifiableView() =>
UnmodifiableUint8ClampedListView(this);
@override
Uint8ClampedList sublist(int start, [int? end]) {
final stop = RangeError.checkValidRange(start, end, length);
@ -386,6 +399,9 @@ final class JSUint16ArrayImpl extends JSIntArrayImpl implements Uint16List {
return JSUint16ArrayImpl(jsBuffer);
}
@override
Uint16List asUnmodifiableView() => UnmodifiableUint16ListView(this);
@override
Uint16List sublist(int start, [int? end]) {
final stop = RangeError.checkValidRange(start, end, length);
@ -413,6 +429,9 @@ final class JSInt16ArrayImpl extends JSIntArrayImpl implements Int16List {
return JSInt16ArrayImpl(jsBuffer);
}
@override
Int16List asUnmodifiableView() => UnmodifiableInt16ListView(this);
@override
Int16List sublist(int start, [int? end]) {
final stop = RangeError.checkValidRange(start, end, length);
@ -440,6 +459,9 @@ final class JSUint32ArrayImpl extends JSIntArrayImpl implements Uint32List {
return JSUint32ArrayImpl(jsBuffer);
}
@override
Uint32List asUnmodifiableView() => UnmodifiableUint32ListView(this);
@override
Uint32List sublist(int start, [int? end]) {
final stop = RangeError.checkValidRange(start, end, length);
@ -467,6 +489,9 @@ final class JSInt32ArrayImpl extends JSIntArrayImpl implements Int32List {
return JSInt32ArrayImpl(jsBuffer);
}
@override
Int32List asUnmodifiableView() => UnmodifiableInt32ListView(this);
@override
Int32List sublist(int start, [int? end]) {
final stop = RangeError.checkValidRange(start, end, length);
@ -523,6 +548,9 @@ final class JSInt32x4ArrayImpl
_storage[(index * 4) + 3] = value.w;
}
@override
Int32x4List asUnmodifiableView() => UnmodifiableInt32x4ListView(this);
@override
Int32x4List sublist(int start, [int? end]) {
final stop = RangeError.checkValidRange(start, end, length);
@ -565,6 +593,9 @@ final class JSBigUint64ArrayImpl extends JSBigIntArrayImpl
return JSBigUint64ArrayImpl(jsBuffer);
}
@override
Uint64List asUnmodifiableView() => UnmodifiableUint64ListView(this);
@override
Uint64List sublist(int start, [int? end]) {
final stop = RangeError.checkValidRange(start, end, length);
@ -592,6 +623,9 @@ final class JSBigInt64ArrayImpl extends JSBigIntArrayImpl implements Int64List {
return JSBigInt64ArrayImpl(jsBuffer);
}
@override
Int64List asUnmodifiableView() => UnmodifiableInt64ListView(this);
@override
Int64List sublist(int start, [int? end]) {
final stop = RangeError.checkValidRange(start, end, length);
@ -676,6 +710,9 @@ final class JSFloat32ArrayImpl extends JSFloatArrayImpl implements Float32List {
return JSFloat32ArrayImpl(jsBuffer);
}
@override
Float32List asUnmodifiableView() => UnmodifiableFloat32ListView(this);
@override
Float32List sublist(int start, [int? end]) {
final stop = RangeError.checkValidRange(start, end, length);
@ -704,6 +741,9 @@ final class JSFloat64ArrayImpl extends JSFloatArrayImpl implements Float64List {
return JSFloat64ArrayImpl(jsBuffer);
}
@override
Float64List asUnmodifiableView() => UnmodifiableFloat64ListView(this);
@override
Float64List sublist(int start, [int? end]) {
final stop = RangeError.checkValidRange(start, end, length);
@ -760,6 +800,9 @@ final class JSFloat32x4ArrayImpl
_storage[(index * 4) + 3] = value.w;
}
@override
Float32x4List asUnmodifiableView() => UnmodifiableFloat32x4ListView(this);
@override
Float32x4List sublist(int start, [int? end]) {
final stop = RangeError.checkValidRange(start, end, length);
@ -808,6 +851,9 @@ final class JSFloat64x2ArrayImpl
_storage[(index * 2) + 1] = value.y;
}
@override
Float64x2List asUnmodifiableView() => UnmodifiableFloat64x2ListView(this);
@override
Float64x2List sublist(int start, [int? end]) {
final stop = RangeError.checkValidRange(start, end, length);

View file

@ -66,6 +66,8 @@ final class NaiveInt32x4List extends Object
_storage[(index * 4) + 3] = value.w;
}
Int32x4List asUnmodifiableView() => UnmodifiableInt32x4ListView(this);
Int32x4List sublist(int start, [int? end]) {
int stop = RangeError.checkValidRange(start, end, length);
return NaiveInt32x4List.externalStorage(
@ -146,6 +148,8 @@ final class NaiveFloat32x4List extends Object
_storage[(index * 4) + 3] = value.w;
}
Float32x4List asUnmodifiableView() => UnmodifiableFloat32x4ListView(this);
Float32x4List sublist(int start, [int? end]) {
int stop = RangeError.checkValidRange(start, end, length);
return NaiveFloat32x4List.externalStorage(
@ -220,6 +224,8 @@ final class NaiveFloat64x2List extends Object
_storage[(index * 2) + 1] = value.y;
}
Float64x2List asUnmodifiableView() => UnmodifiableFloat64x2ListView(this);
Float64x2List sublist(int start, [int? end]) {
int stop = RangeError.checkValidRange(start, end, length);
return NaiveFloat64x2List.externalStorage(

View file

@ -102,6 +102,9 @@ abstract class ByteDataBase implements ByteData {
UnmodifiableByteDataView immutable();
@override
ByteData asUnmodifiableView() => immutable();
void _offsetRangeCheck(int byteOffset, int size) {
if (byteOffset < 0 || byteOffset + size > lengthInBytes) {
throw IndexError.withLength(byteOffset, lengthInBytes - offsetInBytes,
@ -2404,6 +2407,9 @@ class I8List extends _WasmI8ArrayBase
? I8List._(buffer, offsetInBytes, length)
: UnmodifiableI8List._(buffer, offsetInBytes, length);
@override
Int8List asUnmodifiableView() => UnmodifiableInt8ListView(this);
@override
I8List _createList(int length) => I8List(length);
@ -2447,6 +2453,9 @@ class U8List extends _WasmI8ArrayBase
? U8List._(buffer, offsetInBytes, length)
: UnmodifiableU8List._(buffer, offsetInBytes, length);
@override
Uint8List asUnmodifiableView() => UnmodifiableUint8ListView(this);
@override
U8List _createList(int length) => U8List(length);
@ -2488,6 +2497,10 @@ class U8ClampedList extends _WasmI8ArrayBase
? U8ClampedList._(buffer, offsetInBytes, length)
: UnmodifiableU8ClampedList._(buffer, offsetInBytes, length);
@override
Uint8ClampedList asUnmodifiableView() =>
UnmodifiableUint8ClampedListView(this);
@override
U8ClampedList _createList(int length) => U8ClampedList(length);
@ -2529,6 +2542,9 @@ class I16List extends _WasmI16ArrayBase
? I16List._(buffer, offsetInBytes, length)
: UnmodifiableI16List._(buffer, offsetInBytes, length);
@override
Int16List asUnmodifiableView() => UnmodifiableInt16ListView(this);
@override
I16List _createList(int length) => I16List(length);
@ -2570,6 +2586,9 @@ class U16List extends _WasmI16ArrayBase
? U16List._(buffer, offsetInBytes, length)
: UnmodifiableU16List._(buffer, offsetInBytes, length);
@override
Uint16List asUnmodifiableView() => UnmodifiableUint16ListView(this);
@override
U16List _createList(int length) => U16List(length);
@ -2611,6 +2630,9 @@ class I32List extends _WasmI32ArrayBase
? I32List._(buffer, offsetInBytes, length)
: UnmodifiableI32List._(buffer, offsetInBytes, length);
@override
Int32List asUnmodifiableView() => UnmodifiableInt32ListView(this);
@override
I32List _createList(int length) => I32List(length);
@ -2652,6 +2674,9 @@ class U32List extends _WasmI32ArrayBase
? U32List._(buffer, offsetInBytes, length)
: UnmodifiableU32List._(buffer, offsetInBytes, length);
@override
Uint32List asUnmodifiableView() => UnmodifiableUint32ListView(this);
@override
U32List _createList(int length) => U32List(length);
@ -2693,6 +2718,9 @@ class I64List extends _WasmI64ArrayBase
? I64List._(buffer, offsetInBytes, length)
: UnmodifiableI64List._(buffer, offsetInBytes, length);
@override
Int64List asUnmodifiableView() => UnmodifiableInt64ListView(this);
@override
I64List _createList(int length) => I64List(length);
@ -2734,6 +2762,9 @@ class U64List extends _WasmI64ArrayBase
? U64List._(buffer, offsetInBytes, length)
: UnmodifiableU64List._(buffer, offsetInBytes, length);
@override
Uint64List asUnmodifiableView() => UnmodifiableUint64ListView(this);
@override
U64List _createList(int length) => U64List(length);
@ -2775,6 +2806,9 @@ class F32List extends _WasmF32ArrayBase
? F32List._(buffer, offsetInBytes, length)
: UnmodifiableF32List._(buffer, offsetInBytes, length);
@override
Float32List asUnmodifiableView() => UnmodifiableFloat32ListView(this);
@override
F32List _createList(int length) => F32List(length);
@ -2816,6 +2850,9 @@ class F64List extends _WasmF64ArrayBase
? F64List._(buffer, offsetInBytes, length)
: UnmodifiableF64List._(buffer, offsetInBytes, length);
@override
Float64List asUnmodifiableView() => UnmodifiableFloat64ListView(this);
@override
F64List _createList(int length) => F64List(length);
@ -3035,6 +3072,9 @@ class _SlowI8List extends _SlowListBase
? _SlowI8List._(buffer, offsetInBytes, length)
: UnmodifiableSlowI8List._(buffer, offsetInBytes, length);
@override
Int8List asUnmodifiableView() => UnmodifiableInt8ListView(this);
@override
I8List _createList(int length) => I8List(length);
@ -3069,6 +3109,9 @@ class _SlowU8List extends _SlowListBase
? _SlowU8List._(buffer, offsetInBytes, length)
: UnmodifiableSlowU8List._(buffer, offsetInBytes, length);
@override
Uint8List asUnmodifiableView() => UnmodifiableUint8ListView(this);
@override
U8List _createList(int length) => U8List(length);
@ -3103,6 +3146,10 @@ class _SlowU8ClampedList extends _SlowListBase
? _SlowU8ClampedList._(buffer, offsetInBytes, length)
: UnmodifiableSlowU8ClampedList._(buffer, offsetInBytes, length);
@override
Uint8ClampedList asUnmodifiableView() =>
UnmodifiableUint8ClampedListView(this);
@override
U8ClampedList _createList(int length) => U8ClampedList(length);
@ -3138,6 +3185,9 @@ class _SlowI16List extends _SlowListBase
? _SlowI16List._(buffer, offsetInBytes, length)
: UnmodifiableSlowI16List._(buffer, offsetInBytes, length);
@override
Int16List asUnmodifiableView() => UnmodifiableInt16ListView(this);
@override
I16List _createList(int length) => I16List(length);
@ -3174,6 +3224,9 @@ class _SlowU16List extends _SlowListBase
? _SlowU16List._(buffer, offsetInBytes, length)
: UnmodifiableSlowU16List._(buffer, offsetInBytes, length);
@override
Uint16List asUnmodifiableView() => UnmodifiableUint16ListView(this);
@override
U16List _createList(int length) => U16List(length);
@ -3210,6 +3263,9 @@ class _SlowI32List extends _SlowListBase
? _SlowI32List._(buffer, offsetInBytes, length)
: UnmodifiableSlowI32List._(buffer, offsetInBytes, length);
@override
Int32List asUnmodifiableView() => UnmodifiableInt32ListView(this);
@override
I32List _createList(int length) => I32List(length);
@ -3246,6 +3302,9 @@ class _SlowU32List extends _SlowListBase
? _SlowU32List._(buffer, offsetInBytes, length)
: UnmodifiableSlowU32List._(buffer, offsetInBytes, length);
@override
Uint32List asUnmodifiableView() => UnmodifiableUint32ListView(this);
@override
U32List _createList(int length) => U32List(length);
@ -3282,6 +3341,9 @@ class _SlowI64List extends _SlowListBase
? _SlowI64List._(buffer, offsetInBytes, length)
: UnmodifiableSlowI64List._(buffer, offsetInBytes, length);
@override
Int64List asUnmodifiableView() => UnmodifiableInt64ListView(this);
@override
I64List _createList(int length) => I64List(length);
@ -3318,6 +3380,9 @@ class _SlowU64List extends _SlowListBase
? _SlowU64List._(buffer, offsetInBytes, length)
: UnmodifiableSlowU64List._(buffer, offsetInBytes, length);
@override
Uint64List asUnmodifiableView() => UnmodifiableUint64ListView(this);
@override
U64List _createList(int length) => U64List(length);
@ -3354,6 +3419,9 @@ class _SlowF32List extends _SlowListBase
? _SlowF32List._(buffer, offsetInBytes, length)
: UnmodifiableSlowF32List._(buffer, offsetInBytes, length);
@override
Float32List asUnmodifiableView() => UnmodifiableFloat32ListView(this);
@override
F32List _createList(int length) => F32List(length);
@ -3390,6 +3458,9 @@ class SlowF64List extends _SlowListBase
? SlowF64List._(buffer, offsetInBytes, length)
: UnmodifiableSlowF64List._(buffer, offsetInBytes, length);
@override
Float64List asUnmodifiableView() => UnmodifiableFloat64ListView(this);
@override
F64List _createList(int length) => F64List(length);

View file

@ -80,6 +80,9 @@ final class _UnmodifiableByteDataViewImpl
_UnmodifiableByteDataViewImpl(ByteData data) : _data = data;
@override
ByteData asUnmodifiableView() => this;
int getInt8(int byteOffset) => _data.getInt8(byteOffset);
void setInt8(int byteOffset, int value) => _unsupported();
@ -185,6 +188,9 @@ final class _UnmodifiableUint8ListViewImpl extends UnmodifiableListBase<int>
final Uint8List _list;
_UnmodifiableUint8ListViewImpl(Uint8List list) : _list = list;
@override
Uint8List asUnmodifiableView() => this;
@override
Uint8List createList(int length) => Uint8List(length);
}
@ -199,6 +205,9 @@ final class _UnmodifiableInt8ListViewImpl extends UnmodifiableListBase<int>
final Int8List _list;
_UnmodifiableInt8ListViewImpl(Int8List list) : _list = list;
@override
Int8List asUnmodifiableView() => this;
@override
Int8List createList(int length) => Int8List(length);
}
@ -214,6 +223,9 @@ final class _UnmodifiableUint8ClampedListViewImpl
final Uint8ClampedList _list;
_UnmodifiableUint8ClampedListViewImpl(Uint8ClampedList list) : _list = list;
@override
Uint8ClampedList asUnmodifiableView() => this;
@override
Uint8ClampedList createList(int length) => Uint8ClampedList(length);
}
@ -228,6 +240,9 @@ final class _UnmodifiableUint16ListViewImpl extends UnmodifiableListBase<int>
final Uint16List _list;
_UnmodifiableUint16ListViewImpl(Uint16List list) : _list = list;
@override
Uint16List asUnmodifiableView() => this;
@override
Uint16List createList(int length) => Uint16List(length);
}
@ -242,6 +257,9 @@ final class _UnmodifiableInt16ListViewImpl extends UnmodifiableListBase<int>
final Int16List _list;
_UnmodifiableInt16ListViewImpl(Int16List list) : _list = list;
@override
Int16List asUnmodifiableView() => this;
@override
Int16List createList(int length) => Int16List(length);
}
@ -256,6 +274,9 @@ final class _UnmodifiableUint32ListViewImpl extends UnmodifiableListBase<int>
final Uint32List _list;
_UnmodifiableUint32ListViewImpl(Uint32List list) : _list = list;
@override
Uint32List asUnmodifiableView() => this;
@override
Uint32List createList(int length) => Uint32List(length);
}
@ -270,6 +291,9 @@ final class _UnmodifiableInt32ListViewImpl extends UnmodifiableListBase<int>
final Int32List _list;
_UnmodifiableInt32ListViewImpl(Int32List list) : _list = list;
@override
Int32List asUnmodifiableView() => this;
@override
Int32List createList(int length) => Int32List(length);
}
@ -284,6 +308,9 @@ final class _UnmodifiableUint64ListViewImpl extends UnmodifiableListBase<int>
final Uint64List _list;
_UnmodifiableUint64ListViewImpl(Uint64List list) : _list = list;
@override
Uint64List asUnmodifiableView() => this;
@override
Uint64List createList(int length) => Uint64List(length);
}
@ -298,6 +325,9 @@ final class _UnmodifiableInt64ListViewImpl extends UnmodifiableListBase<int>
final Int64List _list;
_UnmodifiableInt64ListViewImpl(Int64List list) : _list = list;
@override
Int64List asUnmodifiableView() => this;
@override
Int64List createList(int length) => Int64List(length);
}
@ -313,6 +343,9 @@ final class _UnmodifiableInt32x4ListViewImpl
final Int32x4List _list;
_UnmodifiableInt32x4ListViewImpl(Int32x4List list) : _list = list;
@override
Int32x4List asUnmodifiableView() => this;
@override
Int32x4List createList(int length) => Int32x4List(length);
}
@ -328,6 +361,9 @@ final class _UnmodifiableFloat32x4ListViewImpl
final Float32x4List _list;
_UnmodifiableFloat32x4ListViewImpl(Float32x4List list) : _list = list;
@override
Float32x4List asUnmodifiableView() => this;
@override
Float32x4List createList(int length) => Float32x4List(length);
}
@ -343,6 +379,9 @@ final class _UnmodifiableFloat64x2ListViewImpl
final Float64x2List _list;
_UnmodifiableFloat64x2ListViewImpl(Float64x2List list) : _list = list;
@override
Float64x2List asUnmodifiableView() => this;
@override
Float64x2List createList(int length) => Float64x2List(length);
}
@ -358,6 +397,9 @@ final class _UnmodifiableFloat32ListViewImpl
final Float32List _list;
_UnmodifiableFloat32ListViewImpl(Float32List list) : _list = list;
@override
Float32List asUnmodifiableView() => this;
@override
Float32List createList(int length) => Float32List(length);
}
@ -373,6 +415,9 @@ final class _UnmodifiableFloat64ListViewImpl
final Float64List _list;
_UnmodifiableFloat64ListViewImpl(Float64List list) : _list = list;
@override
Float64List asUnmodifiableView() => this;
@override
Float64List createList(int length) => Float64List(length);
}

View file

@ -498,6 +498,10 @@ abstract final class ByteData implements TypedData {
data.offsetInBytes + start * elementSize, (end - start) * elementSize);
}
/// A read-only view of this [ByteData].
@Since("3.3")
ByteData asUnmodifiableView();
/// Returns the (possibly negative) integer represented by the byte at the
/// specified [byteOffset] in this object, in two's complement binary
/// representation.
@ -795,6 +799,10 @@ abstract final class Int8List implements List<int>, _TypedIntList {
data.offsetInBytes + start * elementSize, (end - start) * elementSize);
}
/// A read-only view of this [Int8List];
@Since("3.3")
Int8List asUnmodifiableView();
/// Returns a new list containing the elements between [start] and [end].
///
/// The new list is an `Int8List` containing the elements of this list at
@ -908,6 +916,10 @@ abstract final class Uint8List implements List<int>, _TypedIntList {
data.offsetInBytes + start * elementSize, (end - start) * elementSize);
}
/// A read-only view of this [Uint8List].
@Since("3.3")
Uint8List asUnmodifiableView();
/// Returns a concatenation of this list and [other].
///
/// If [other] is also a typed-data list, then the return list will be a
@ -1020,7 +1032,7 @@ abstract final class Uint8ClampedList implements List<int>, _TypedIntList {
/// is the same as the [List.length] of a typed data list.
///
/// If omitted, [start] defaults to zero and [end] to *elementCount*.
@Since("2.8")
@Since("3.3")
factory Uint8ClampedList.sublistView(TypedData data,
[int start = 0, int? end]) {
int elementSize = data.elementSizeInBytes;
@ -1030,6 +1042,10 @@ abstract final class Uint8ClampedList implements List<int>, _TypedIntList {
data.offsetInBytes + start * elementSize, (end - start) * elementSize);
}
/// A read-only view of this [Uint8ClampedList].
@Since("3.3")
Uint8ClampedList asUnmodifiableView();
/// Returns a new list containing the elements between [start] and [end].
///
/// The new list is a `Uint8ClampedList` containing the elements of this
@ -1155,6 +1171,10 @@ abstract final class Int16List implements List<int>, _TypedIntList {
byteLength ~/ bytesPerElement);
}
/// A read-only view of this [Int16List].
@Since("3.3")
Int16List asUnmodifiableView();
/// Returns a new list containing the elements between [start] and [end].
///
/// The new list is an `Int16List` containing the elements of this
@ -1281,6 +1301,10 @@ abstract final class Uint16List implements List<int>, _TypedIntList {
byteLength ~/ bytesPerElement);
}
/// A read-only view of this [Uint16List].
@Since("3.3")
Uint16List asUnmodifiableView();
/// Returns a new list containing the elements between [start] and [end].
///
/// The new list is a `Uint16List` containing the elements of this
@ -1406,6 +1430,10 @@ abstract final class Int32List implements List<int>, _TypedIntList {
byteLength ~/ bytesPerElement);
}
/// A read-only view of this [Int16List].
@Since("3.3")
Int32List asUnmodifiableView();
/// Returns a new list containing the elements between [start] and [end].
///
/// The new list is an `Int32List` containing the elements of this
@ -1532,6 +1560,10 @@ abstract final class Uint32List implements List<int>, _TypedIntList {
byteLength ~/ bytesPerElement);
}
/// A read-only view of this [Uint32List].
@Since("3.3")
Uint32List asUnmodifiableView();
/// Returns a new list containing the elements between [start] and [end].
///
/// The new list is a `Uint32List` containing the elements of this
@ -1657,6 +1689,10 @@ abstract final class Int64List implements List<int>, _TypedIntList {
byteLength ~/ bytesPerElement);
}
/// A read-only view of this [Int64List].
@Since("3.3")
Int64List asUnmodifiableView();
/// Returns a new list containing the elements between [start] and [end].
///
/// The new list is an `Int64List` containing the elements of this
@ -1783,6 +1819,10 @@ abstract final class Uint64List implements List<int>, _TypedIntList {
byteLength ~/ bytesPerElement);
}
/// A read-only view of this [Uint64List].
@Since("3.3")
Uint64List asUnmodifiableView();
/// Returns a new list containing the elements between [start] and [end].
///
/// The new list is a `Uint64List` containing the elements of this
@ -1909,6 +1949,10 @@ abstract final class Float32List implements List<double>, _TypedFloatList {
byteLength ~/ bytesPerElement);
}
/// A read-only view of this [Float32List].
@Since("3.3")
Float32List asUnmodifiableView();
/// Returns a new list containing the elements between [start] and [end].
///
/// The new list is a `Float32List` containing the elements of this
@ -2028,6 +2072,10 @@ abstract final class Float64List implements List<double>, _TypedFloatList {
byteLength ~/ bytesPerElement);
}
/// A read-only view of this [Float64List].
@Since("3.3")
Float64List asUnmodifiableView();
/// Returns a new list containing the elements between [start] and [end].
///
/// The new list is a `Float64List` containing the elements of this
@ -2146,6 +2194,10 @@ abstract final class Float32x4List implements List<Float32x4>, TypedData {
byteLength ~/ bytesPerElement);
}
/// A read-only view of this [Float32x4List].
@Since("3.3")
Float32x4List asUnmodifiableView();
/// Returns the concatenation of this list and [other].
///
/// If [other] is also a [Float32x4List], the result is a new [Float32x4List],
@ -2267,6 +2319,10 @@ abstract final class Int32x4List implements List<Int32x4>, TypedData {
byteLength ~/ bytesPerElement);
}
/// A read-only view of this [Int32x4List].
@Since("3.3")
Int32x4List asUnmodifiableView();
/// Returns the concatenation of this list and [other].
///
/// If [other] is also a [Int32x4List], the result is a new [Int32x4List],
@ -2397,6 +2453,10 @@ abstract final class Float64x2List implements List<Float64x2>, TypedData {
byteLength ~/ bytesPerElement);
}
/// A read-only view of this [Float64x2List].
@Since("3.3")
Float64x2List asUnmodifiableView();
/// Returns a new list containing the elements between [start] and [end].
///
/// The new list is a `Float64x2List` containing the elements of this

View file

@ -8,6 +8,7 @@ part of dart.typed_data;
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableByteBufferView.
// TODO(53785): @Deprecated('No replacement')
abstract final class UnmodifiableByteBufferView implements ByteBuffer {
external factory UnmodifiableByteBufferView(ByteBuffer data);
}
@ -16,6 +17,7 @@ abstract final class UnmodifiableByteBufferView implements ByteBuffer {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableByteDataView.
// TODO(53785): @Deprecated('Use ByteData.asUnmodifiableView() instead')
abstract final class UnmodifiableByteDataView implements ByteData {
external factory UnmodifiableByteDataView(ByteData data);
}
@ -24,6 +26,7 @@ abstract final class UnmodifiableByteDataView implements ByteData {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableUint8ListView.
// TODO(53785): @Deprecated('Use Uint8List.asUnmodifiableView() instead')
abstract final class UnmodifiableUint8ListView implements Uint8List {
external factory UnmodifiableUint8ListView(Uint8List list);
}
@ -32,6 +35,7 @@ abstract final class UnmodifiableUint8ListView implements Uint8List {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableInt8ListView.
// TODO(53785): @Deprecated('Use Int8List.asUnmodifiableView() instead')
abstract final class UnmodifiableInt8ListView implements Int8List {
external factory UnmodifiableInt8ListView(Int8List list);
}
@ -40,7 +44,9 @@ abstract final class UnmodifiableInt8ListView implements Int8List {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableUint8ClampedListView.
abstract final class UnmodifiableUint8ClampedListView implements Uint8ClampedList {
// TODO(53785): @Deprecated('Use Uint8ClampedList.asUnmodifiableView() instead')
abstract final class UnmodifiableUint8ClampedListView
implements Uint8ClampedList {
external factory UnmodifiableUint8ClampedListView(Uint8ClampedList list);
}
@ -48,6 +54,7 @@ abstract final class UnmodifiableUint8ClampedListView implements Uint8ClampedLis
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableUint16ListView.
// TODO(53785): @Deprecated('Use Uint16List.asUnmodifiableView() instead')
abstract final class UnmodifiableUint16ListView implements Uint16List {
external factory UnmodifiableUint16ListView(Uint16List list);
}
@ -56,6 +63,7 @@ abstract final class UnmodifiableUint16ListView implements Uint16List {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableInt16ListView.
// TODO(53785): @Deprecated('Use Int16List.asUnmodifiableView() instead')
abstract final class UnmodifiableInt16ListView implements Int16List {
external factory UnmodifiableInt16ListView(Int16List list);
}
@ -64,6 +72,7 @@ abstract final class UnmodifiableInt16ListView implements Int16List {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableUint32ListView.
// TODO(53785): @Deprecated('Use Uint32List.asUnmodifiableView() instead')
abstract final class UnmodifiableUint32ListView implements Uint32List {
external factory UnmodifiableUint32ListView(Uint32List list);
}
@ -72,6 +81,7 @@ abstract final class UnmodifiableUint32ListView implements Uint32List {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableInt32ListView.
// TODO(53785): @Deprecated('Use Int32List.asUnmodifiableView() instead')
abstract final class UnmodifiableInt32ListView implements Int32List {
external factory UnmodifiableInt32ListView(Int32List list);
}
@ -80,6 +90,7 @@ abstract final class UnmodifiableInt32ListView implements Int32List {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableUint64ListView.
// TODO(53785): @Deprecated('Use Uint64List.asUnmodifiableView() instead')
abstract final class UnmodifiableUint64ListView implements Uint64List {
external factory UnmodifiableUint64ListView(Uint64List list);
}
@ -88,6 +99,7 @@ abstract final class UnmodifiableUint64ListView implements Uint64List {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableInt64ListView.
// TODO(53785): @Deprecated('Use Int64List.asUnmodifiableView() instead')
abstract final class UnmodifiableInt64ListView implements Int64List {
external factory UnmodifiableInt64ListView(Int64List list);
}
@ -96,6 +108,7 @@ abstract final class UnmodifiableInt64ListView implements Int64List {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableInt32x4ListView.
// TODO(53785): @Deprecated('Use Int32x4List.asUnmodifiableView() instead')
abstract final class UnmodifiableInt32x4ListView implements Int32x4List {
external factory UnmodifiableInt32x4ListView(Int32x4List list);
}
@ -104,6 +117,7 @@ abstract final class UnmodifiableInt32x4ListView implements Int32x4List {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableFloat32x4ListView.
// TODO(53785): @Deprecated('Use Float32x4List.asUnmodifiableView() instead')
abstract final class UnmodifiableFloat32x4ListView implements Float32x4List {
external factory UnmodifiableFloat32x4ListView(Float32x4List list);
}
@ -112,6 +126,7 @@ abstract final class UnmodifiableFloat32x4ListView implements Float32x4List {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableFloat64x2ListView.
// TODO(53785): @Deprecated('Use Float64x2List.asUnmodifiableView() instead')
abstract final class UnmodifiableFloat64x2ListView implements Float64x2List {
external factory UnmodifiableFloat64x2ListView(Float64x2List list);
}
@ -120,6 +135,7 @@ abstract final class UnmodifiableFloat64x2ListView implements Float64x2List {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableFloat32ListView.
// TODO(53785): @Deprecated('Use Float32List.asUnmodifiableView() instead')
abstract final class UnmodifiableFloat32ListView implements Float32List {
external factory UnmodifiableFloat32ListView(Float32List list);
}
@ -128,6 +144,7 @@ abstract final class UnmodifiableFloat32ListView implements Float32List {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableFloat64ListView.
// TODO(53785): @Deprecated('Use Float64List.asUnmodifiableView() instead')
abstract final class UnmodifiableFloat64ListView implements Float64List {
external factory UnmodifiableFloat64ListView(Float64List list);
}

View file

@ -0,0 +1,147 @@
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// VMOptions=--inline_alloc
// VMOptions=--no_inline_alloc
import 'dart:typed_data';
import 'package:expect/expect.dart';
void checkReadable<T>(
List<T> expected, List<T> actual, bool Function(T, T) equals) {
Expect.equals(expected.length, actual.length);
for (int i = 0; i < expected.length; i++) {
Expect.isTrue(
equals(expected[i], actual[i]),
'At [$i], expected: ${expected[i]} actual: ${actual[i]}, '
'which are not equal');
}
}
void checkUnmodifiable<T>(List<T> list, T value) {
Expect.throwsUnsupportedError(() => list.add(value));
Expect.throwsUnsupportedError(() => list.addAll([value]));
Expect.throwsUnsupportedError(() => list.clear());
Expect.throwsUnsupportedError(() => list.insert(0, value));
Expect.throwsUnsupportedError(() => list.insertAll(0, [value]));
Expect.throwsUnsupportedError(() => list.remove(value));
Expect.throwsUnsupportedError(() => list.removeAt(0));
Expect.throwsUnsupportedError(() => list.removeLast());
Expect.throwsUnsupportedError(() => list.removeRange(0, 1));
Expect.throwsUnsupportedError(() => list.removeWhere((x) => true));
Expect.throwsUnsupportedError(() => list.replaceRange(0, 1, []));
Expect.throwsUnsupportedError(() => list.retainWhere((x) => false));
Expect.throwsUnsupportedError(() => list[0] = value);
Expect.throwsUnsupportedError(() => list.setRange(0, 1, [value]));
Expect.throwsUnsupportedError(() => list.setAll(0, [value]));
}
void checkIndirectUnmodifiable(TypedData data) {
var newView1 = data.buffer.asUint8List();
Expect.throwsUnsupportedError(() => newView1[0] = 1);
var newView2 = Uint8List.view(data.buffer);
Expect.throwsUnsupportedError(() => newView2[0] = 1);
}
void int32x4Test() {
Int32x4 value1 = Int32x4(1, 2, 3, 4);
Int32x4 value2 = Int32x4(4, 3, 2, 1);
Int32x4 value3 = Int32x4(9, 1, 8, 2);
bool equals(Int32x4 a, Int32x4 b) {
return a.x == b.x && a.y == b.y && a.z == b.z && a.w == b.w;
}
Expect.isTrue(equals(value1, value1));
Expect.isFalse(equals(value1, value2));
Int32x4List original = Int32x4List.fromList([value1, value2]);
Int32x4List view = original.asUnmodifiableView();
checkReadable(original, view, equals);
checkUnmodifiable(view, value3);
checkIndirectUnmodifiable(view);
original[0] += original[1];
checkReadable(original, view, equals);
view = view.asUnmodifiableView(); // Unmodifiable view of unmodifiable view.
checkReadable(original, view, equals);
checkUnmodifiable(view, value3);
checkIndirectUnmodifiable(view);
original[0] += original[1];
checkReadable(original, view, equals);
}
void float32x4Test() {
Float32x4 value1 = Float32x4(0.1, 0.2, 0.3, 0.4);
Float32x4 value2 = Float32x4(4.1, 3.0, 2.9, 1.8);
Float32x4 value3 = Float32x4(1.0, 2.0, 3.0, 4.0);
bool equals(Float32x4 a, Float32x4 b) {
return identical(a.x, b.x) &&
identical(a.y, b.y) &&
identical(a.z, b.z) &&
identical(a.w, b.w);
}
Expect.isTrue(equals(value1, value1));
Expect.isFalse(equals(value1, value2));
Float32x4List original = Float32x4List.fromList([value1, value2]);
Float32x4List view = original.asUnmodifiableView();
checkReadable(original, view, equals);
checkUnmodifiable(view, value3);
checkIndirectUnmodifiable(view);
original[0] += original[1];
checkReadable(original, view, equals);
view = view.asUnmodifiableView(); // Unmodifiable view of unmodifiable view.
checkReadable(original, view, equals);
checkUnmodifiable(view, value3);
checkIndirectUnmodifiable(view);
original[0] += original[1];
checkReadable(original, view, equals);
}
void float64x2Test() {
Float64x2 value1 = Float64x2(0.1, 0.2);
Float64x2 value2 = Float64x2(4.1, 3.0);
Float64x2 value3 = Float64x2(1.0, 2.0);
bool equals(Float64x2 a, Float64x2 b) {
return identical(a.x, b.x) && identical(a.y, b.y);
}
Expect.isTrue(equals(value1, value1));
Expect.isFalse(equals(value1, value2));
Float64x2List original = Float64x2List.fromList([value1, value2]);
Float64x2List view = original.asUnmodifiableView();
checkReadable(original, view, equals);
checkUnmodifiable(view, value3);
checkIndirectUnmodifiable(view);
original[0] += original[1];
checkReadable(original, view, equals);
view = view.asUnmodifiableView(); // Unmodifiable view of unmodifiable view.
checkReadable(original, view, equals);
checkUnmodifiable(view, value3);
checkIndirectUnmodifiable(view);
original[0] += original[1];
checkReadable(original, view, equals);
}
void main() {
int32x4Test();
float32x4Test();
float64x2Test();
}

View file

@ -48,66 +48,129 @@ checkIndirectUnmodifiable(TypedData data) {
int8ListTest() {
Int8List i8l = new Int8List.fromList(intList);
// Deprecated:
UnmodifiableInt8ListView list = new UnmodifiableInt8ListView(i8l);
checkReadable(list);
checkUnmodifiable(list);
checkIndirectUnmodifiable(list);
// Replacement:
Int8List list2 = i8l.asUnmodifiableView();
checkReadable(list2);
checkUnmodifiable(list2);
checkIndirectUnmodifiable(list2);
}
uint8ListTest() {
Uint8List u8l = new Uint8List.fromList(intList);
// Deprecated:
UnmodifiableUint8ListView list = new UnmodifiableUint8ListView(u8l);
checkReadable(list);
checkUnmodifiable(list);
checkIndirectUnmodifiable(list);
// Replacement:
Uint8List list2 = u8l.asUnmodifiableView();
checkReadable(list2);
checkUnmodifiable(list2);
checkIndirectUnmodifiable(list2);
}
uint8ClampedListTest() {
Uint8ClampedList u8l = new Uint8ClampedList.fromList(intList);
// Deprecated:
UnmodifiableUint8ClampedListView list =
new UnmodifiableUint8ClampedListView(u8l);
checkReadable(list);
checkUnmodifiable(list);
checkIndirectUnmodifiable(list);
// Replacement:
Uint8ClampedList list2 = u8l.asUnmodifiableView();
checkReadable(list2);
checkUnmodifiable(list2);
checkIndirectUnmodifiable(list2);
}
int16ListTest() {
Int16List i16l = new Int16List.fromList(intList);
// Deprecated:
UnmodifiableInt16ListView list = new UnmodifiableInt16ListView(i16l);
checkReadable(list);
checkUnmodifiable(list);
checkIndirectUnmodifiable(list);
// Replacement:
Int16List list2 = i16l.asUnmodifiableView();
checkReadable(list2);
checkUnmodifiable(list2);
checkIndirectUnmodifiable(list2);
}
uint16ListTest() {
Uint16List u16l = new Uint16List.fromList(intList);
// Deprecated:
UnmodifiableUint16ListView list = new UnmodifiableUint16ListView(u16l);
checkReadable(list);
checkUnmodifiable(list);
checkIndirectUnmodifiable(list);
// Replacement:
Uint16List list2 = u16l.asUnmodifiableView();
checkReadable(list2);
checkUnmodifiable(list2);
checkIndirectUnmodifiable(list2);
}
int32ListTest() {
Int32List i32l = new Int32List.fromList(intList);
// Deprecated:
UnmodifiableInt32ListView list = new UnmodifiableInt32ListView(i32l);
checkReadable(list);
checkUnmodifiable(list);
checkIndirectUnmodifiable(list);
// Replacement:
Int32List list2 = i32l.asUnmodifiableView();
checkReadable(list2);
checkUnmodifiable(list2);
checkIndirectUnmodifiable(list2);
}
uint32ListTest() {
Uint32List u32l = new Uint32List.fromList(intList);
// Deprecated:
UnmodifiableUint32ListView list = new UnmodifiableUint32ListView(u32l);
checkReadable(list);
checkUnmodifiable(list);
checkIndirectUnmodifiable(list);
// Replacement:
Uint32List list2 = u32l.asUnmodifiableView();
checkReadable(list2);
checkUnmodifiable(list2);
checkIndirectUnmodifiable(list2);
}
int64ListTest() {
Int64List i64l = new Int64List.fromList(intList);
// Deprecated:
UnmodifiableInt64ListView list = new UnmodifiableInt64ListView(i64l);
checkReadable(list);
checkUnmodifiable(list);
checkIndirectUnmodifiable(list);
// Replacement:
Int64List list2 = i64l.asUnmodifiableView();
checkReadable(list2);
checkUnmodifiable(list2);
checkIndirectUnmodifiable(list2);
}
uint64ListTest() {
Uint64List u64l = new Uint64List.fromList(intList);
// Deprecated:
UnmodifiableUint64ListView list = new UnmodifiableUint64ListView(u64l);
checkReadable(list);
checkUnmodifiable(list);
checkIndirectUnmodifiable(list);
// Replacement:
Uint64List list2 = u64l.asUnmodifiableView();
checkReadable(list2);
checkUnmodifiable(list2);
checkIndirectUnmodifiable(list2);
}
List<double> doubleList = <double>[1.0, 2.0, 3.0, 4.0, 5.0];
@ -141,42 +204,76 @@ checkDoubleUnmodifiable(List<double> list) {
float32ListTest() {
Float32List f32l = new Float32List.fromList(doubleList);
// Deprecated:
UnmodifiableFloat32ListView list = new UnmodifiableFloat32ListView(f32l);
checkDoubleReadable(list);
checkDoubleUnmodifiable(list);
checkIndirectUnmodifiable(list);
// Replacement:
Float32List list2 = f32l.asUnmodifiableView();
checkDoubleReadable(list2);
checkDoubleUnmodifiable(list2);
checkIndirectUnmodifiable(list2);
}
float64ListTest() {
Float64List f64l = new Float64List.fromList(doubleList);
// Deprecated:
UnmodifiableFloat64ListView list = new UnmodifiableFloat64ListView(f64l);
checkDoubleReadable(list);
checkDoubleUnmodifiable(list);
checkIndirectUnmodifiable(list);
// Replacement:
Float64List list2 = f64l.asUnmodifiableView();
checkDoubleReadable(list2);
checkDoubleUnmodifiable(list2);
checkIndirectUnmodifiable(list2);
}
byteDataTest() {
ByteBuffer buffer = new Uint8List.fromList(intList).buffer;
ByteData bd = new ByteData.view(buffer);
UnmodifiableByteDataView ubdv = new UnmodifiableByteDataView(bd);
// Deprecated:
{
UnmodifiableByteDataView ubdv = new UnmodifiableByteDataView(bd);
Expect.throwsUnsupportedError(() => ubdv.setInt8(0, 0));
Expect.throwsUnsupportedError(() => ubdv.setUint8(0, 0));
Expect.throwsUnsupportedError(() => ubdv.setInt16(0, 0));
Expect.throwsUnsupportedError(() => ubdv.setUint16(0, 0));
Expect.throwsUnsupportedError(() => ubdv.setInt32(0, 0));
Expect.throwsUnsupportedError(() => ubdv.setUint32(0, 0));
Expect.throwsUnsupportedError(() => ubdv.setInt64(0, 0));
Expect.throwsUnsupportedError(() => ubdv.setUint64(0, 0));
Expect.throwsUnsupportedError(() => ubdv.setFloat32(0, 0.0));
Expect.throwsUnsupportedError(() => ubdv.setFloat64(0, 0.0));
Expect.throwsUnsupportedError(() => ubdv.setInt8(0, 0));
Expect.throwsUnsupportedError(() => ubdv.setUint8(0, 0));
Expect.throwsUnsupportedError(() => ubdv.setInt16(0, 0));
Expect.throwsUnsupportedError(() => ubdv.setUint16(0, 0));
Expect.throwsUnsupportedError(() => ubdv.setInt32(0, 0));
Expect.throwsUnsupportedError(() => ubdv.setUint32(0, 0));
Expect.throwsUnsupportedError(() => ubdv.setInt64(0, 0));
Expect.throwsUnsupportedError(() => ubdv.setUint64(0, 0));
Expect.throwsUnsupportedError(() => ubdv.setFloat32(0, 0.0));
Expect.throwsUnsupportedError(() => ubdv.setFloat64(0, 0.0));
checkIndirectUnmodifiable(ubdv);
checkIndirectUnmodifiable(ubdv);
}
// Replacement:
{
ByteData ubdv = bd.asUnmodifiableView();
Expect.throwsUnsupportedError(() => ubdv.setInt8(0, 0));
Expect.throwsUnsupportedError(() => ubdv.setUint8(0, 0));
Expect.throwsUnsupportedError(() => ubdv.setInt16(0, 0));
Expect.throwsUnsupportedError(() => ubdv.setUint16(0, 0));
Expect.throwsUnsupportedError(() => ubdv.setInt32(0, 0));
Expect.throwsUnsupportedError(() => ubdv.setUint32(0, 0));
Expect.throwsUnsupportedError(() => ubdv.setInt64(0, 0));
Expect.throwsUnsupportedError(() => ubdv.setUint64(0, 0));
Expect.throwsUnsupportedError(() => ubdv.setFloat32(0, 0.0));
Expect.throwsUnsupportedError(() => ubdv.setFloat64(0, 0.0));
checkIndirectUnmodifiable(ubdv);
}
}
main() {
int8ListTest();
uint8ListTest();
uint8ClampedListTest();
int16ListTest();
uint16ListTest();
int32ListTest();