blob: d823e6a2daf019302d139059801263bbec307c7b [file] [log] [blame]
// 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.
import 'dart:_internal' show patch, unsafeCast;
import 'dart:_js_types';
import 'dart:typed_data';
@patch
class ByteData {
@patch
factory ByteData(int length) = JSDataViewImpl;
}
@patch
class Uint8List {
@patch
factory Uint8List(int length) = JSUint8ArrayImpl;
@patch
factory Uint8List.fromList(List<int> elements) =>
JSUint8ArrayImpl(elements.length)..setRange(0, elements.length, elements);
}
@patch
class Int8List {
@patch
factory Int8List(int length) = JSInt8ArrayImpl;
@patch
factory Int8List.fromList(List<int> elements) =>
JSInt8ArrayImpl(elements.length)..setRange(0, elements.length, elements);
}
@patch
class Uint8ClampedList {
@patch
factory Uint8ClampedList(int length) = JSUint8ClampedArrayImpl;
@patch
factory Uint8ClampedList.fromList(List<int> elements) =>
JSUint8ClampedArrayImpl(elements.length)
..setRange(0, elements.length, elements);
}
@patch
class Uint16List {
@patch
factory Uint16List(int length) = JSUint16ArrayImpl;
@patch
factory Uint16List.fromList(List<int> elements) =>
JSUint16ArrayImpl(elements.length)
..setRange(0, elements.length, elements);
}
@patch
class Int16List {
@patch
factory Int16List(int length) = JSInt16ArrayImpl;
@patch
factory Int16List.fromList(List<int> elements) =>
JSInt16ArrayImpl(elements.length)..setRange(0, elements.length, elements);
}
@patch
class Uint32List {
@patch
factory Uint32List(int length) = JSUint32ArrayImpl;
@patch
factory Uint32List.fromList(List<int> elements) =>
JSUint32ArrayImpl(elements.length)
..setRange(0, elements.length, elements);
}
@patch
class Int32List {
@patch
factory Int32List(int length) = JSInt32ArrayImpl;
@patch
factory Int32List.fromList(List<int> elements) =>
JSInt32ArrayImpl(elements.length)..setRange(0, elements.length, elements);
}
@patch
class Int32x4List {
@patch
factory Int32x4List(int length) =>
JSInt32x4ArrayImpl.externalStorage(JSInt32ArrayImpl(length * 4));
@patch
factory Int32x4List.fromList(List<Int32x4> elements) =>
Int32x4List(elements.length)..setRange(0, elements.length, elements);
}
@patch
class Int64List {
@patch
factory Int64List(int length) = JSBigInt64ArrayImpl;
@patch
factory Int64List.fromList(List<int> elements) =>
JSBigInt64ArrayImpl(elements.length)
..setRange(0, elements.length, elements);
}
@patch
class Uint64List {
@patch
factory Uint64List(int length) = JSBigUint64ArrayImpl;
@patch
factory Uint64List.fromList(List<int> elements) =>
JSBigUint64ArrayImpl(elements.length)
..setRange(0, elements.length, elements);
}
@patch
class Float32List {
@patch
factory Float32List(int length) = JSFloat32ArrayImpl;
@patch
factory Float32List.fromList(List<double> elements) =>
JSFloat32ArrayImpl(elements.length)
..setRange(0, elements.length, elements);
}
@patch
class Float32x4List {
@patch
factory Float32x4List(int length) =>
JSFloat32x4ArrayImpl.externalStorage(JSFloat32ArrayImpl(length * 4));
@patch
factory Float32x4List.fromList(List<Float32x4> elements) =>
Float32x4List(elements.length)..setRange(0, elements.length, elements);
}
@patch
class Float64List {
@patch
factory Float64List(int length) = JSFloat64ArrayImpl;
@patch
factory Float64List.fromList(List<double> elements) =>
JSFloat64ArrayImpl(elements.length)
..setRange(0, elements.length, elements);
}
@patch
class Float64x2List {
@patch
factory Float64x2List(int length) =>
JSFloat64x2ArrayImpl.externalStorage(JSFloat64ArrayImpl(length * 2));
@patch
factory Float64x2List.fromList(List<Float64x2> elements) =>
Float64x2List(elements.length)..setRange(0, elements.length, elements);
}