Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(591)

Unified Diff: runtime/lib/typed_data.dart

Issue 1790593002: Move the VM's typed_data implementation to runtime/lib. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | runtime/observatory/tests/service/get_object_rpc_test.dart » ('j') | runtime/vm/vm.gypi » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/lib/typed_data.dart
diff --git a/runtime/lib/typed_data.dart b/runtime/lib/typed_data.dart
index 3abb630a81f1c78601fdd4ae5fb0838dbde2a114..c4b532f289ee2a0ba144bbf43124be243fac2baf 100644
--- a/runtime/lib/typed_data.dart
+++ b/runtime/lib/typed_data.dart
@@ -2,240 +2,377 @@
// 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.
-// patch classes for Int8List ..... Float64List and ByteData implementations.
+library dart.typed_data;
import "dart:_internal";
+import "dart:collection" show ListBase;
import 'dart:math' show Random;
-patch class Int8List {
- /* patch */ factory Int8List(int length) {
- return new _Int8Array(length);
- }
-
- /* patch */ factory Int8List.fromList(List<int> elements) {
- return new _Int8Array(elements.length)
- ..setRange(0, elements.length, elements);
- }
-}
-
-
-patch class Uint8List {
- /* patch */ factory Uint8List(int length) {
- return new _Uint8Array(length);
- }
-
- /* patch */ factory Uint8List.fromList(List<int> elements) {
- return new _Uint8Array(elements.length)
- ..setRange(0, elements.length, elements);
- }
-}
-
-
-patch class Uint8ClampedList {
- /* patch */ factory Uint8ClampedList(int length) {
- return new _Uint8ClampedArray(length);
- }
-
- /* patch */ factory Uint8ClampedList.fromList(List<int> elements) {
- return new _Uint8ClampedArray(elements.length)
- ..setRange(0, elements.length, elements);
- }
-}
-
-
-patch class Int16List {
- /* patch */ factory Int16List(int length) {
- return new _Int16Array(length);
- }
-
- /* patch */ factory Int16List.fromList(List<int> elements) {
- return new _Int16Array(elements.length)
- ..setRange(0, elements.length, elements);
- }
-}
-
-
-patch class Uint16List {
- /* patch */ factory Uint16List(int length) {
- return new _Uint16Array(length);
- }
-
- /* patch */ factory Uint16List.fromList(List<int> elements) {
- return new _Uint16Array(elements.length)
- ..setRange(0, elements.length, elements);
- }
-}
-
-
-patch class Int32List {
- /* patch */ factory Int32List(int length) {
- return new _Int32Array(length);
- }
-
- /* patch */ factory Int32List.fromList(List<int> elements) {
- return new _Int32Array(elements.length)
- ..setRange(0, elements.length, elements);
- }
-}
+/**
+ * A typed view of a sequence of bytes.
+ */
+abstract class TypedData {
+ /**
+ * Returns the number of bytes in the representation of each element in this
+ * list.
+ */
+ int get elementSizeInBytes;
+ /**
+ * Returns the offset in bytes into the underlying byte buffer of this view.
+ */
+ int get offsetInBytes;
-patch class Uint32List {
- /* patch */ factory Uint32List(int length) {
- return new _Uint32Array(length);
- }
+ /**
+ * Returns the length of this view, in bytes.
+ */
+ int get lengthInBytes;
- /* patch */ factory Uint32List.fromList(List<int> elements) {
- return new _Uint32Array(elements.length)
- ..setRange(0, elements.length, elements);
- }
+ /**
+ * Returns the byte buffer associated with this object.
+ */
+ ByteBuffer get buffer;
}
-patch class Int64List {
- /* patch */ factory Int64List(int length) {
- return new _Int64Array(length);
- }
-
- /* patch */ factory Int64List.fromList(List<int> elements) {
- return new _Int64Array(elements.length)
- ..setRange(0, elements.length, elements);
- }
-}
+/**
+ * Describes endianness to be used when accessing or updating a
+ * sequence of bytes.
+ */
+class Endianness {
+ const Endianness._(this._littleEndian);
+ static const Endianness BIG_ENDIAN = const Endianness._(false);
+ static const Endianness LITTLE_ENDIAN = const Endianness._(true);
+ static final Endianness HOST_ENDIAN =
+ (new ByteData.view(new Uint16List.fromList([1]).buffer)).getInt8(0) == 1 ?
+ LITTLE_ENDIAN : BIG_ENDIAN;
-patch class Uint64List {
- /* patch */ factory Uint64List(int length) {
- return new _Uint64Array(length);
- }
-
- /* patch */ factory Uint64List.fromList(List<int> elements) {
- return new _Uint64Array(elements.length)
- ..setRange(0, elements.length, elements);
- }
+ final bool _littleEndian;
}
-patch class Float32List {
- /* patch */ factory Float32List(int length) {
- return new _Float32Array(length);
- }
-
- /* patch */ factory Float32List.fromList(List<double> elements) {
- return new _Float32Array(elements.length)
- ..setRange(0, elements.length, elements);
+/**
+ * A fixed-length, random-access sequence of bytes that also provides random
+ * and unaligned access to the fixed-width integers and floating point
+ * numbers represented by those bytes.
+ *
+ * `ByteData` may be used to pack and unpack data from external sources
+ * (such as networks or files systems), and to process large quantities
+ * of numerical data more efficiently than would be possible
+ * with ordinary [List] implementations.
+ * `ByteData` can save space, by eliminating the need for object headers,
+ * and time, by eliminating the need for data copies.
+ * Finally, `ByteData` may be used to intentionally reinterpret the bytes
+ * representing one arithmetic type as another.
+ * For example this code fragment determine what 32-bit signed integer
+ * is represented by the bytes of a 32-bit floating point number:
+ *
+ * var buffer = new Uint8List(8).buffer;
+ * var bdata = new ByteData.view(buffer);
+ * bdata.setFloat32(0, 3.04);
+ * int huh = bdata.getInt32(0);
+ */
+class ByteData implements TypedData {
+ /**
+ * Creates a [ByteData] of the specified length (in elements), all of
+ * whose bytes are initially zero.
+ */
+ factory ByteData(int length) {
+ var list = new Uint8List(length);
+ return new _ByteDataView(list, 0, length);
}
-}
-
-patch class Float64List {
- /* patch */ factory Float64List(int length) {
- return new _Float64Array(length);
+ // Called directly from C code.
+ factory ByteData._view(TypedData typedData, int offsetInBytes, int length) {
+ return new _ByteDataView(typedData, offsetInBytes, length);
}
- /* patch */ factory Float64List.fromList(List<double> elements) {
- return new _Float64Array(elements.length)
- ..setRange(0, elements.length, elements);
+ /**
+ * Creates an [ByteData] _view_ of the specified region in [buffer].
+ *
+ * Changes in the [ByteData] will be visible in the byte
+ * buffer and vice versa.
+ * If the [offsetInBytes] index of the region is not specified,
+ * it defaults to zero (the first byte in the byte buffer).
+ * If the length is not specified, it defaults to `null`,
+ * which indicates that the view extends to the end of the byte buffer.
+ *
+ * Throws [RangeError] if [offsetInBytes] or [length] are negative, or
+ * if [offsetInBytes] + ([length] * elementSizeInBytes) is greater than
+ * the length of [buffer].
+ */
+ factory ByteData.view(ByteBuffer buffer,
+ [int offsetInBytes = 0, int length]) {
+ return buffer.asByteData(offsetInBytes, length);
}
-}
+ /**
+ * Returns the (possibly negative) integer represented by the byte at the
+ * specified [byteOffset] in this object, in two's complement binary
+ * representation.
+ *
+ * The return value will be between -128 and 127, inclusive.
+ *
+ * Throws [RangeError] if [byteOffset] is negative, or
+ * greater than or equal to the length of this object.
+ */
+ int getInt8(int byteOffset);
-patch class Float32x4List {
- /* patch */ factory Float32x4List(int length) {
- return new _Float32x4Array(length);
- }
-
- /* patch */ factory Float32x4List.fromList(List<Float32x4> elements) {
- return new _Float32x4Array(elements.length)
- ..setRange(0, elements.length, elements);
- }
-}
+ /**
+ * Sets the byte at the specified [byteOffset] in this object to the
+ * two's complement binary representation of the specified [value], which
+ * must fit in a single byte.
+ *
+ * In other words, [value] must be between -128 and 127, inclusive.
+ *
+ * Throws [RangeError] if [byteOffset] is negative, or
+ * greater than or equal to the length of this object.
+ */
+ void setInt8(int byteOffset, int value);
+ /**
+ * Returns the positive integer represented by the byte at the specified
+ * [byteOffset] in this object, in unsigned binary form.
+ *
+ * The return value will be between 0 and 255, inclusive.
+ *
+ * Throws [RangeError] if [byteOffset] is negative, or
+ * greater than or equal to the length of this object.
+ */
+ int getUint8(int byteOffset);
-patch class Int32x4List {
- /* patch */ factory Int32x4List(int length) {
- return new _Int32x4Array(length);
- }
+ /**
+ * Sets the byte at the specified [byteOffset] in this object to the
+ * unsigned binary representation of the specified [value], which must fit
+ * in a single byte.
+ *
+ * In other words, [value] must be between 0 and 255, inclusive.
+ *
+ * Throws [RangeError] if [byteOffset] is negative,
+ * or greater than or equal to the length of this object.
+ */
+ void setUint8(int byteOffset, int value);
- /* patch */ factory Int32x4List.fromList(List<Int32x4> elements) {
- return new _Int32x4Array(elements.length)
- ..setRange(0, elements.length, elements);
- }
+ /**
+ * Returns the (possibly negative) integer represented by the two bytes at
+ * the specified [byteOffset] in this object, in two's complement binary
+ * form.
+ *
+ * The return value will be between 2<sup>15</sup> and 2<sup>15</sup> - 1,
+ * inclusive.
+ *
+ * Throws [RangeError] if [byteOffset] is negative, or
+ * `byteOffset + 2` is greater than the length of this object.
+ */
+ int getInt16(int byteOffset, [Endianness endian = Endianness.BIG_ENDIAN]);
-}
+ /**
+ * Sets the two bytes starting at the specified [byteOffset] in this
+ * object to the two's complement binary representation of the specified
+ * [value], which must fit in two bytes.
+ *
+ * In other words, [value] must lie
+ * between 2<sup>15</sup> and 2<sup>15</sup> - 1, inclusive.
+ *
+ * Throws [RangeError] if [byteOffset] is negative, or
+ * `byteOffset + 2` is greater than the length of this object.
+ */
+ void setInt16(int byteOffset,
+ int value,
+ [Endianness endian = Endianness.BIG_ENDIAN]);
-patch class Float64x2List {
- /* patch */ factory Float64x2List(int length) {
- return new _Float64x2Array(length);
- }
+ /**
+ * Returns the positive integer represented by the two bytes starting
+ * at the specified [byteOffset] in this object, in unsigned binary
+ * form.
+ *
+ * The return value will be between 0 and 2<sup>16</sup> - 1, inclusive.
+ *
+ * Throws [RangeError] if [byteOffset] is negative, or
+ * `byteOffset + 2` is greater than the length of this object.
+ */
+ int getUint16(int byteOffset, [Endianness endian = Endianness.BIG_ENDIAN]);
- /* patch */ factory Float64x2List.fromList(List<Float64x2> elements) {
- return new _Float64x2Array(elements.length)
- ..setRange(0, elements.length, elements);
- }
-}
+ /**
+ * Sets the two bytes starting at the specified [byteOffset] in this object
+ * to the unsigned binary representation of the specified [value],
+ * which must fit in two bytes.
+ *
+ * In other words, [value] must be between
+ * 0 and 2<sup>16</sup> - 1, inclusive.
+ *
+ * Throws [RangeError] if [byteOffset] is negative, or
+ * `byteOffset + 2` is greater than the length of this object.
+ */
+ void setUint16(int byteOffset,
+ int value,
+ [Endianness endian = Endianness.BIG_ENDIAN]);
+ /**
+ * Returns the (possibly negative) integer represented by the four bytes at
+ * the specified [byteOffset] in this object, in two's complement binary
+ * form.
+ *
+ * The return value will be between 2<sup>31</sup> and 2<sup>31</sup> - 1,
+ * inclusive.
+ *
+ * Throws [RangeError] if [byteOffset] is negative, or
+ * `byteOffset + 4` is greater than the length of this object.
+ */
+ int getInt32(int byteOffset, [Endianness endian = Endianness.BIG_ENDIAN]);
-patch class Float32x4 {
- /* patch */ factory Float32x4(double x, double y, double z, double w) {
- return new _Float32x4(x, y, z, w);
- }
- /* patch */ factory Float32x4.splat(double v) {
- return new _Float32x4.splat(v);
- }
- /* patch */ factory Float32x4.zero() {
- return new _Float32x4.zero();
- }
- /* patch */ factory Float32x4.fromInt32x4Bits(Int32x4 x) {
- return new _Float32x4.fromInt32x4Bits(x);
- }
- /* patch */ factory Float32x4.fromFloat64x2(Float64x2 v) {
- return new _Float32x4.fromFloat64x2(v);
- }
-}
+ /**
+ * Sets the four bytes starting at the specified [byteOffset] in this
+ * object to the two's complement binary representation of the specified
+ * [value], which must fit in four bytes.
+ *
+ * In other words, [value] must lie
+ * between 2<sup>31</sup> and 2<sup>31</sup> - 1, inclusive.
+ *
+ * Throws [RangeError] if [byteOffset] is negative, or
+ * `byteOffset + 4` is greater than the length of this object.
+ */
+ void setInt32(int byteOffset,
+ int value,
+ [Endianness endian = Endianness.BIG_ENDIAN]);
+ /**
+ * Returns the positive integer represented by the four bytes starting
+ * at the specified [byteOffset] in this object, in unsigned binary
+ * form.
+ *
+ * The return value will be between 0 and 2<sup>32</sup> - 1, inclusive.
+ *
+ * Throws [RangeError] if [byteOffset] is negative, or
+ * `byteOffset + 4` is greater than the length of this object.
+ */
+ int getUint32(int byteOffset, [Endianness endian = Endianness.BIG_ENDIAN]);
-patch class Int32x4 {
- /* patch */ factory Int32x4(int x, int y, int z, int w) {
- return new _Int32x4(x, y, z, w);
- }
- /* patch */ factory Int32x4.bool(bool x, bool y, bool z, bool w) {
- return new _Int32x4.bool(x, y, z, w);
- }
- /* patch */ factory Int32x4.fromFloat32x4Bits(Float32x4 x) {
- return new _Int32x4.fromFloat32x4Bits(x);
- }
-}
+ /**
+ * Sets the four bytes starting at the specified [byteOffset] in this object
+ * to the unsigned binary representation of the specified [value],
+ * which must fit in four bytes.
+ *
+ * In other words, [value] must be between
+ * 0 and 2<sup>32</sup> - 1, inclusive.
+ *
+ * Throws [RangeError] if [byteOffset] is negative, or
+ * `byteOffset + 4` is greater than the length of this object.
+ */
+ void setUint32(int byteOffset,
+ int value,
+ [Endianness endian = Endianness.BIG_ENDIAN]);
+ /**
+ * Returns the (possibly negative) integer represented by the eight bytes at
+ * the specified [byteOffset] in this object, in two's complement binary
+ * form.
+ *
+ * The return value will be between 2<sup>63</sup> and 2<sup>63</sup> - 1,
+ * inclusive.
+ *
+ * Throws [RangeError] if [byteOffset] is negative, or
+ * `byteOffset + 8` is greater than the length of this object.
+ */
+ int getInt64(int byteOffset, [Endianness endian = Endianness.BIG_ENDIAN]);
-patch class Float64x2 {
- /* patch */ factory Float64x2(double x, double y) {
- return new _Float64x2(x, y);
- }
+ /**
+ * Sets the eight bytes starting at the specified [byteOffset] in this
+ * object to the two's complement binary representation of the specified
+ * [value], which must fit in eight bytes.
+ *
+ * In other words, [value] must lie
+ * between 2<sup>63</sup> and 2<sup>63</sup> - 1, inclusive.
+ *
+ * Throws [RangeError] if [byteOffset] is negative, or
+ * `byteOffset + 8` is greater than the length of this object.
+ */
+ void setInt64(int byteOffset,
+ int value,
+ [Endianness endian = Endianness.BIG_ENDIAN]);
- /* patch */ factory Float64x2.splat(double v) {
- return new _Float64x2.splat(v);
- }
+ /**
+ * Returns the positive integer represented by the eight bytes starting
+ * at the specified [byteOffset] in this object, in unsigned binary
+ * form.
+ *
+ * The return value will be between 0 and 2<sup>64</sup> - 1, inclusive.
+ *
+ * Throws [RangeError] if [byteOffset] is negative, or
+ * `byteOffset + 8` is greater than the length of this object.
+ */
+ int getUint64(int byteOffset, [Endianness endian = Endianness.BIG_ENDIAN]);
- /* patch */ factory Float64x2.zero() {
- return new _Float64x2.zero();
- }
+ /**
+ * Sets the eight bytes starting at the specified [byteOffset] in this object
+ * to the unsigned binary representation of the specified [value],
+ * which must fit in eight bytes.
+ *
+ * In other words, [value] must be between
+ * 0 and 2<sup>64</sup> - 1, inclusive.
+ *
+ * Throws [RangeError] if [byteOffset] is negative, or
+ * `byteOffset + 8` is greater than the length of this object.
+ */
+ void setUint64(int byteOffset,
+ int value,
+ [Endianness endian = Endianness.BIG_ENDIAN]);
- /* patch */ factory Float64x2.fromFloat32x4(Float32x4 v) {
- return new _Float64x2.fromFloat32x4(v);
- }
-}
+ /**
+ * 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).
+ *
+ * Throws [RangeError] if [byteOffset] is negative, or
+ * `byteOffset + 4` is greater than the length of this object.
+ */
+ double getFloat32(int byteOffset,
+ [Endianness endian = Endianness.BIG_ENDIAN]);
+ /**
+ * Sets the four bytes starting at the specified [byteOffset] in this
+ * object to the IEEE 754 single-precision binary floating-point
+ * (binary32) representation of the specified [value].
+ *
+ * **Note that this method can lose precision.** The input [value] is
+ * a 64-bit floating point value, which will be converted to 32-bit
+ * floating point value by IEEE 754 rounding rules before it is stored.
+ * If [value] cannot be represented exactly as a binary32, it will be
+ * converted to the nearest binary32 value. If two binary32 values are
+ * equally close, the one whose least significant bit is zero will be used.
+ * Note that finite (but large) values can be converted to infinity, and
+ * small non-zero values can be converted to zero.
+ *
+ * Throws [RangeError] if [byteOffset] is negative, or
+ * `byteOffset + 4` is greater than the length of this object.
+ */
+ void setFloat32(int byteOffset,
+ double value,
+ [Endianness endian = Endianness.BIG_ENDIAN]);
-patch class ByteData {
- /* patch */ factory ByteData(int length) {
- var list = new _Uint8Array(length);
- return new _ByteDataView(list, 0, length);
- }
+ /**
+ * Returns the floating point number represented by the eight bytes at
+ * the specified [byteOffset] in this object, in IEEE 754
+ * double-precision binary floating-point format (binary64).
+ *
+ * Throws [RangeError] if [byteOffset] is negative, or
+ * `byteOffset + 8` is greater than the length of this object.
+ */
+ double getFloat64(int byteOffset,
+ [Endianness endian = Endianness.BIG_ENDIAN]);
- // Called directly from C code.
- factory ByteData._view(TypedData typedData, int offsetInBytes, int length) {
- return new _ByteDataView(typedData, offsetInBytes, length);
- }
+ /**
+ * Sets the eight bytes starting at the specified [byteOffset] in this
+ * object to the IEEE 754 double-precision binary floating-point
+ * (binary64) representation of the specified [value].
+ *
+ * Throws [RangeError] if [byteOffset] is negative, or
+ * `byteOffset + 8` is greater than the length of this object.
+ */
+ void setFloat64(int byteOffset,
+ double value,
+ [Endianness endian = Endianness.BIG_ENDIAN]);
}
@@ -711,18 +848,18 @@ class _Float64x2ListMixin {
}
-class _ByteBuffer implements ByteBuffer {
+class ByteBuffer {
final _TypedList _data;
- _ByteBuffer(this._data);
+ ByteBuffer(this._data);
- factory _ByteBuffer._New(data) => new _ByteBuffer(data);
+ factory ByteBuffer._New(data) => new ByteBuffer(data);
// Forward calls to _data.
int get lengthInBytes => _data.lengthInBytes;
int get hashCode => _data.hashCode;
bool operator==(Object other) =>
- (other is _ByteBuffer) && identical(_data, other._data);
+ (other is ByteBuffer) && identical(_data, other._data);
ByteData asByteData([int offsetInBytes = 0, int length]) {
if (length == null) {
@@ -852,7 +989,7 @@ abstract class _TypedList extends _TypedListBase {
return length * elementSizeInBytes;
}
- ByteBuffer get buffer => new _ByteBuffer(this);
+ ByteBuffer get buffer => new ByteBuffer(this);
// Methods implementing the collection interface.
@@ -924,10 +1061,20 @@ abstract class _TypedList extends _TypedListBase {
}
-class _Int8Array extends _TypedList with _IntListMixin implements Int8List {
+class Int8List extends _TypedList with _IntListMixin implements List<int>, TypedData {
// Factory constructors.
- factory _Int8Array(int length) native "TypedData_Int8Array_new";
+ factory Int8List(int length) native "TypedData_Int8Array_new";
+
+ factory Int8List.fromList(List<int> elements) {
+ return new Int8List(elements.length)
+ ..setRange(0, elements.length, elements);
+ }
+
+ factory Int8List.view(ByteBuffer buffer,
+ [int offsetInBytes = 0, int length]) {
+ return buffer.asInt8List(offsetInBytes, length);
+ }
// Method(s) implementing List interface.
@@ -945,6 +1092,7 @@ class _Int8Array extends _TypedList with _IntListMixin implements Int8List {
_setInt8(index, _toInt8(value));
}
+ static const int BYTES_PER_ELEMENT = 1;
// Method(s) implementing TypedData interface.
@@ -955,16 +1103,26 @@ class _Int8Array extends _TypedList with _IntListMixin implements Int8List {
// Internal utility methods.
- _Int8Array _createList(int length) {
- return new _Int8Array(length);
+ Int8List _createList(int length) {
+ return new Int8List(length);
}
}
-class _Uint8Array extends _TypedList with _IntListMixin implements Uint8List {
+class Uint8List extends _TypedList with _IntListMixin implements List<int>, TypedData {
// Factory constructors.
- factory _Uint8Array(int length) native "TypedData_Uint8Array_new";
+ factory Uint8List(int length) native "TypedData_Uint8Array_new";
+
+ factory Uint8List.fromList(List<int> elements) {
+ return new Uint8List(elements.length)
+ ..setRange(0, elements.length, elements);
+ }
+
+ factory Uint8List.view(ByteBuffer buffer,
+ [int offsetInBytes = 0, int length]) {
+ return buffer.asUint8List(offsetInBytes, length);
+ }
// Methods implementing List interface.
int operator[](int index) {
@@ -981,6 +1139,7 @@ class _Uint8Array extends _TypedList with _IntListMixin implements Uint8List {
_setUint8(index, _toUint8(value));
}
+ static const int BYTES_PER_ELEMENT = 1;
// Methods implementing TypedData interface.
int get elementSizeInBytes {
@@ -990,16 +1149,26 @@ class _Uint8Array extends _TypedList with _IntListMixin implements Uint8List {
// Internal utility methods.
- _Uint8Array _createList(int length) {
- return new _Uint8Array(length);
+ Uint8List _createList(int length) {
+ return new Uint8List(length);
}
}
-class _Uint8ClampedArray extends _TypedList with _IntListMixin implements Uint8ClampedList {
+class Uint8ClampedList extends _TypedList with _IntListMixin implements List<int>, TypedData {
// Factory constructors.
- factory _Uint8ClampedArray(int length) native "TypedData_Uint8ClampedArray_new";
+ factory Uint8ClampedList(int length) native "TypedData_Uint8ClampedArray_new";
+
+ factory Uint8ClampedList.fromList(List<int> elements) {
+ return new Uint8ClampedList(elements.length)
+ ..setRange(0, elements.length, elements);
+ }
+
+ factory Uint8ClampedList.view(ByteBuffer buffer,
+ [int offsetInBytes = 0, int length]) {
+ return buffer.asUint8ClampedList(offsetInBytes, length);
+ }
// Methods implementing List interface.
@@ -1017,6 +1186,7 @@ class _Uint8ClampedArray extends _TypedList with _IntListMixin implements Uint8C
_setUint8(index, _toClampedUint8(value));
}
+ static const int BYTES_PER_ELEMENT = 1;
// Methods implementing TypedData interface.
int get elementSizeInBytes {
@@ -1026,16 +1196,26 @@ class _Uint8ClampedArray extends _TypedList with _IntListMixin implements Uint8C
// Internal utility methods.
- _Uint8ClampedArray _createList(int length) {
- return new _Uint8ClampedArray(length);
+ Uint8ClampedList _createList(int length) {
+ return new Uint8ClampedList(length);
}
}
-class _Int16Array extends _TypedList with _IntListMixin implements Int16List {
+class Int16List extends _TypedList with _IntListMixin implements List<int>, TypedData {
// Factory constructors.
- factory _Int16Array(int length) native "TypedData_Int16Array_new";
+ factory Int16List(int length) native "TypedData_Int16Array_new";
+
+ factory Int16List.fromList(List<int> elements) {
+ return new Int16List(elements.length)
+ ..setRange(0, elements.length, elements);
+ }
+
+ factory Int16List.view(ByteBuffer buffer,
+ [int offsetInBytes = 0, int length]) {
+ return buffer.asInt16List(offsetInBytes, length);
+ }
// Method(s) implementing List interface.
@@ -1065,6 +1245,7 @@ class _Int16Array extends _TypedList with _IntListMixin implements Int16List {
}
// Method(s) implementing TypedData interface.
+ static const int BYTES_PER_ELEMENT = 2;
int get elementSizeInBytes {
return Int16List.BYTES_PER_ELEMENT;
@@ -1073,8 +1254,8 @@ class _Int16Array extends _TypedList with _IntListMixin implements Int16List {
// Internal utility methods.
- _Int16Array _createList(int length) {
- return new _Int16Array(length);
+ Int16List _createList(int length) {
+ return new Int16List(length);
}
int _getIndexedInt16(int index) {
@@ -1087,10 +1268,20 @@ class _Int16Array extends _TypedList with _IntListMixin implements Int16List {
}
-class _Uint16Array extends _TypedList with _IntListMixin implements Uint16List {
+class Uint16List extends _TypedList with _IntListMixin implements List<int>, TypedData {
// Factory constructors.
- factory _Uint16Array(int length) native "TypedData_Uint16Array_new";
+ factory Uint16List(int length) native "TypedData_Uint16Array_new";
+
+ factory Uint16List.fromList(List<int> elements) {
+ return new Uint16List(elements.length)
+ ..setRange(0, elements.length, elements);
+ }
+
+ factory Uint16List.view(ByteBuffer buffer,
+ [int offsetInBytes = 0, int length]) {
+ return buffer.asUint16List(offsetInBytes, length);
+ }
// Method(s) implementing the List interface.
@@ -1120,6 +1311,7 @@ class _Uint16Array extends _TypedList with _IntListMixin implements Uint16List {
}
// Method(s) implementing the TypedData interface.
+ static const int BYTES_PER_ELEMENT = 2;
int get elementSizeInBytes {
return Uint16List.BYTES_PER_ELEMENT;
@@ -1128,8 +1320,8 @@ class _Uint16Array extends _TypedList with _IntListMixin implements Uint16List {
// Internal utility methods.
- _Uint16Array _createList(int length) {
- return new _Uint16Array(length);
+ Uint16List _createList(int length) {
+ return new Uint16List(length);
}
int _getIndexedUint16(int index) {
@@ -1142,10 +1334,20 @@ class _Uint16Array extends _TypedList with _IntListMixin implements Uint16List {
}
-class _Int32Array extends _TypedList with _IntListMixin implements Int32List {
+class Int32List extends _TypedList with _IntListMixin implements List<int>, TypedData {
// Factory constructors.
- factory _Int32Array(int length) native "TypedData_Int32Array_new";
+ factory Int32List(int length) native "TypedData_Int32Array_new";
+
+ factory Int32List.fromList(List<int> elements) {
+ return new Int32List(elements.length)
+ ..setRange(0, elements.length, elements);
+ }
+
+ factory Int32List.view(ByteBuffer buffer,
+ [int offsetInBytes = 0, int length]) {
+ return buffer.asInt32List(offsetInBytes, length);
+ }
// Method(s) implementing the List interface.
@@ -1165,6 +1367,7 @@ class _Int32Array extends _TypedList with _IntListMixin implements Int32List {
// Method(s) implementing TypedData interface.
+ static const int BYTES_PER_ELEMENT = 4;
int get elementSizeInBytes {
return Int32List.BYTES_PER_ELEMENT;
@@ -1173,8 +1376,8 @@ class _Int32Array extends _TypedList with _IntListMixin implements Int32List {
// Internal utility methods.
- _Int32Array _createList(int length) {
- return new _Int32Array(length);
+ Int32List _createList(int length) {
+ return new Int32List(length);
}
int _getIndexedInt32(int index) {
@@ -1188,10 +1391,20 @@ class _Int32Array extends _TypedList with _IntListMixin implements Int32List {
}
-class _Uint32Array extends _TypedList with _IntListMixin implements Uint32List {
+class Uint32List extends _TypedList with _IntListMixin implements List<int>, TypedData {
// Factory constructors.
- factory _Uint32Array(int length) native "TypedData_Uint32Array_new";
+ factory Uint32List(int length) native "TypedData_Uint32Array_new";
+
+ factory Uint32List.fromList(List<int> elements) {
+ return new Uint32List(elements.length)
+ ..setRange(0, elements.length, elements);
+ }
+
+ factory Uint32List.view(ByteBuffer buffer,
+ [int offsetInBytes = 0, int length]) {
+ return buffer.asUint32List(offsetInBytes, length);
+ }
// Method(s) implementing the List interface.
@@ -1211,6 +1424,7 @@ class _Uint32Array extends _TypedList with _IntListMixin implements Uint32List {
// Method(s) implementing the TypedData interface.
+ static const int BYTES_PER_ELEMENT = 4;
int get elementSizeInBytes {
return Uint32List.BYTES_PER_ELEMENT;
@@ -1219,8 +1433,8 @@ class _Uint32Array extends _TypedList with _IntListMixin implements Uint32List {
// Internal utility methods.
- _Uint32Array _createList(int length) {
- return new _Uint32Array(length);
+ Uint32List _createList(int length) {
+ return new Uint32List(length);
}
int _getIndexedUint32(int index) {
@@ -1233,10 +1447,20 @@ class _Uint32Array extends _TypedList with _IntListMixin implements Uint32List {
}
-class _Int64Array extends _TypedList with _IntListMixin implements Int64List {
+class Int64List extends _TypedList with _IntListMixin implements List<int>, TypedData {
// Factory constructors.
- factory _Int64Array(int length) native "TypedData_Int64Array_new";
+ factory Int64List(int length) native "TypedData_Int64Array_new";
+
+ factory Int64List.fromList(List<int> elements) {
+ return new Int64List(elements.length)
+ ..setRange(0, elements.length, elements);
+ }
+
+ factory Int64List.view(ByteBuffer buffer,
+ [int offsetInBytes = 0, int length]) {
+ return buffer.asInt64List(offsetInBytes, length);
+ }
// Method(s) implementing the List interface.
@@ -1256,6 +1480,7 @@ class _Int64Array extends _TypedList with _IntListMixin implements Int64List {
// Method(s) implementing the TypedData interface.
+ static const int BYTES_PER_ELEMENT = 8;
int get elementSizeInBytes {
return Int64List.BYTES_PER_ELEMENT;
@@ -1264,8 +1489,8 @@ class _Int64Array extends _TypedList with _IntListMixin implements Int64List {
// Internal utility methods.
- _Int64Array _createList(int length) {
- return new _Int64Array(length);
+ Int64List _createList(int length) {
+ return new Int64List(length);
}
int _getIndexedInt64(int index) {
@@ -1278,10 +1503,20 @@ class _Int64Array extends _TypedList with _IntListMixin implements Int64List {
}
-class _Uint64Array extends _TypedList with _IntListMixin implements Uint64List {
+class Uint64List extends _TypedList with _IntListMixin implements List<int>, TypedData {
// Factory constructors.
- factory _Uint64Array(int length) native "TypedData_Uint64Array_new";
+ factory Uint64List(int length) native "TypedData_Uint64Array_new";
+
+ factory Uint64List.fromList(List<int> elements) {
+ return new Uint64List(elements.length)
+ ..setRange(0, elements.length, elements);
+ }
+
+ factory Uint64List.view(ByteBuffer buffer,
+ [int offsetInBytes = 0, int length]) {
+ return buffer.asUint64List(offsetInBytes, length);
+ }
// Method(s) implementing the List interface.
@@ -1301,6 +1536,7 @@ class _Uint64Array extends _TypedList with _IntListMixin implements Uint64List {
// Method(s) implementing the TypedData interface.
+ static const int BYTES_PER_ELEMENT = 8;
int get elementSizeInBytes {
return Uint64List.BYTES_PER_ELEMENT;
@@ -1309,8 +1545,8 @@ class _Uint64Array extends _TypedList with _IntListMixin implements Uint64List {
// Internal utility methods.
- _Uint64Array _createList(int length) {
- return new _Uint64Array(length);
+ Uint64List _createList(int length) {
+ return new Uint64List(length);
}
int _getIndexedUint64(int index) {
@@ -1323,10 +1559,20 @@ class _Uint64Array extends _TypedList with _IntListMixin implements Uint64List {
}
-class _Float32Array extends _TypedList with _DoubleListMixin implements Float32List {
+class Float32List extends _TypedList with _DoubleListMixin implements List<double>, TypedData {
// Factory constructors.
- factory _Float32Array(int length) native "TypedData_Float32Array_new";
+ factory Float32List(int length) native "TypedData_Float32Array_new";
+
+ factory Float32List.fromList(List<double> elements) {
+ return new Float32List(elements.length)
+ ..setRange(0, elements.length, elements);
+ }
+
+ factory Float32List.view(ByteBuffer buffer,
+ [int offsetInBytes = 0, int length]) {
+ return buffer.asFloat32List(offsetInBytes, length);
+ }
// Method(s) implementing the List interface.
@@ -1346,6 +1592,7 @@ class _Float32Array extends _TypedList with _DoubleListMixin implements Float32L
// Method(s) implementing the TypedData interface.
+ static const int BYTES_PER_ELEMENT = 4;
int get elementSizeInBytes {
return Float32List.BYTES_PER_ELEMENT;
@@ -1354,8 +1601,8 @@ class _Float32Array extends _TypedList with _DoubleListMixin implements Float32L
// Internal utility methods.
- _Float32Array _createList(int length) {
- return new _Float32Array(length);
+ Float32List _createList(int length) {
+ return new Float32List(length);
}
double _getIndexedFloat32(int index) {
@@ -1368,10 +1615,20 @@ class _Float32Array extends _TypedList with _DoubleListMixin implements Float32L
}
-class _Float64Array extends _TypedList with _DoubleListMixin implements Float64List {
+class Float64List extends _TypedList with _DoubleListMixin implements List<double>, TypedData {
// Factory constructors.
- factory _Float64Array(int length) native "TypedData_Float64Array_new";
+ factory Float64List(int length) native "TypedData_Float64Array_new";
+
+ factory Float64List.fromList(List<double> elements) {
+ return new Float64List(elements.length)
+ ..setRange(0, elements.length, elements);
+ }
+
+ factory Float64List.view(ByteBuffer buffer,
+ [int offsetInBytes = 0, int length]) {
+ return buffer.asFloat64List(offsetInBytes, length);
+ }
// Method(s) implementing the List interface.
@@ -1391,6 +1648,7 @@ class _Float64Array extends _TypedList with _DoubleListMixin implements Float64L
// Method(s) implementing the TypedData interface.
+ static const int BYTES_PER_ELEMENT = 8;
int get elementSizeInBytes {
return Float64List.BYTES_PER_ELEMENT;
@@ -1399,8 +1657,8 @@ class _Float64Array extends _TypedList with _DoubleListMixin implements Float64L
// Internal utility methods.
- _Float64Array _createList(int length) {
- return new _Float64Array(length);
+ Float64List _createList(int length) {
+ return new Float64List(length);
}
double _getIndexedFloat64(int index) {
@@ -1413,10 +1671,20 @@ class _Float64Array extends _TypedList with _DoubleListMixin implements Float64L
}
-class _Float32x4Array extends _TypedList with _Float32x4ListMixin implements Float32x4List {
+class Float32x4List extends _TypedList with _Float32x4ListMixin implements List<Float32x4>, TypedData {
// Factory constructors.
- factory _Float32x4Array(int length) native "TypedData_Float32x4Array_new";
+ factory Float32x4List(int length) native "TypedData_Float32x4Array_new";
+
+ factory Float32x4List.fromList(List<Float32x4> elements) {
+ return new Float32x4List(elements.length)
+ ..setRange(0, elements.length, elements);
+ }
+
+ factory Float32x4List.view(ByteBuffer buffer,
+ [int offsetInBytes = 0, int length]) {
+ return buffer.asFloat32x4List(offsetInBytes, length);
+ }
Float32x4 operator[](int index) {
if (index < 0 || index >= length) {
@@ -1434,6 +1702,7 @@ class _Float32x4Array extends _TypedList with _Float32x4ListMixin implements Flo
// Method(s) implementing the TypedData interface.
+ static const int BYTES_PER_ELEMENT = 16;
int get elementSizeInBytes {
return Float32x4List.BYTES_PER_ELEMENT;
@@ -1442,8 +1711,8 @@ class _Float32x4Array extends _TypedList with _Float32x4ListMixin implements Flo
// Internal utility methods.
- _Float32x4Array _createList(int length) {
- return new _Float32x4Array(length);
+ Float32x4List _createList(int length) {
+ return new Float32x4List(length);
}
Float32x4 _getIndexedFloat32x4(int index) {
@@ -1456,10 +1725,20 @@ class _Float32x4Array extends _TypedList with _Float32x4ListMixin implements Flo
}
-class _Int32x4Array extends _TypedList with _Int32x4ListMixin implements Int32x4List {
+class Int32x4List extends _TypedList with _Int32x4ListMixin implements List<Int32x4>, TypedData {
// Factory constructors.
- factory _Int32x4Array(int length) native "TypedData_Int32x4Array_new";
+ factory Int32x4List(int length) native "TypedData_Int32x4Array_new";
+
+ factory Int32x4List.fromList(List<Int32x4> elements) {
+ return new Int32x4List(elements.length)
+ ..setRange(0, elements.length, elements);
+ }
+
+ factory Int32x4List.view(ByteBuffer buffer,
+ [int offsetInBytes = 0, int length]) {
+ return buffer.asInt32x4List(offsetInBytes, length);
+ }
Int32x4 operator[](int index) {
if (index < 0 || index >= length) {
@@ -1477,6 +1756,7 @@ class _Int32x4Array extends _TypedList with _Int32x4ListMixin implements Int32x4
// Method(s) implementing the TypedData interface.
+ static const int BYTES_PER_ELEMENT = 16;
int get elementSizeInBytes {
return Int32x4List.BYTES_PER_ELEMENT;
@@ -1485,8 +1765,8 @@ class _Int32x4Array extends _TypedList with _Int32x4ListMixin implements Int32x4
// Internal utility methods.
- _Int32x4Array _createList(int length) {
- return new _Int32x4Array(length);
+ Int32x4List _createList(int length) {
+ return new Int32x4List(length);
}
Int32x4 _getIndexedInt32x4(int index) {
@@ -1499,10 +1779,20 @@ class _Int32x4Array extends _TypedList with _Int32x4ListMixin implements Int32x4
}
-class _Float64x2Array extends _TypedList with _Float64x2ListMixin implements Float64x2List {
+class Float64x2List extends _TypedList with _Float64x2ListMixin implements List<Float64x2>, TypedData {
// Factory constructors.
- factory _Float64x2Array(int length) native "TypedData_Float64x2Array_new";
+ factory Float64x2List(int length) native "TypedData_Float64x2Array_new";
+
+ factory Float64x2List.fromList(List<Float64x2> elements) {
+ return new Float64x2List(elements.length)
+ ..setRange(0, elements.length, elements);
+ }
+
+ factory Float64x2List.view(ByteBuffer buffer,
+ [int offsetInBytes = 0, int length]) {
+ return buffer.asFloat64x2List(offsetInBytes, length);
+ }
Float64x2 operator[](int index) {
if (index < 0 || index >= length) {
@@ -1520,6 +1810,7 @@ class _Float64x2Array extends _TypedList with _Float64x2ListMixin implements Flo
// Method(s) implementing the TypedData interface.
+ static const int BYTES_PER_ELEMENT = 16;
int get elementSizeInBytes {
return Float64x2List.BYTES_PER_ELEMENT;
@@ -1528,8 +1819,8 @@ class _Float64x2Array extends _TypedList with _Float64x2ListMixin implements Flo
// Internal utility methods.
- _Float64x2Array _createList(int length) {
- return new _Float64x2Array(length);
+ Float64x2List _createList(int length) {
+ return new Float64x2List(length);
}
Float64x2 _getIndexedFloat64x2(int index) {
@@ -2147,14 +2438,14 @@ class _ExternalFloat64x2Array extends _TypedList with _Float64x2ListMixin implem
}
-class _Float32x4 implements Float32x4 {
- factory _Float32x4(double x, double y, double z, double w)
+class Float32x4 {
+ factory Float32x4(double x, double y, double z, double w)
native "Float32x4_fromDoubles";
- factory _Float32x4.splat(double v) native "Float32x4_splat";
- factory _Float32x4.zero() native "Float32x4_zero";
- factory _Float32x4.fromInt32x4Bits(Int32x4 x)
+ factory Float32x4.splat(double v) native "Float32x4_splat";
+ factory Float32x4.zero() native "Float32x4_zero";
+ factory Float32x4.fromInt32x4Bits(Int32x4 x)
native "Float32x4_fromInt32x4Bits";
- factory _Float32x4.fromFloat64x2(Float64x2 v)
+ factory Float32x4.fromFloat64x2(Float64x2 v)
native "Float32x4_fromFloat64x2";
Float32x4 operator +(Float32x4 other) {
return _add(other);
@@ -2248,15 +2539,274 @@ class _Float32x4 implements Float32x4 {
return _reciprocalSqrt();
}
Float32x4 _reciprocalSqrt() native "Float32x4_reciprocalSqrt";
+
+ /// Mask passed to [shuffle] or [shuffleMix].
+ static const int XXXX = 0x0;
+ static const int XXXY = 0x40;
+ static const int XXXZ = 0x80;
+ static const int XXXW = 0xC0;
+ static const int XXYX = 0x10;
+ static const int XXYY = 0x50;
+ static const int XXYZ = 0x90;
+ static const int XXYW = 0xD0;
+ static const int XXZX = 0x20;
+ static const int XXZY = 0x60;
+ static const int XXZZ = 0xA0;
+ static const int XXZW = 0xE0;
+ static const int XXWX = 0x30;
+ static const int XXWY = 0x70;
+ static const int XXWZ = 0xB0;
+ static const int XXWW = 0xF0;
+ static const int XYXX = 0x4;
+ static const int XYXY = 0x44;
+ static const int XYXZ = 0x84;
+ static const int XYXW = 0xC4;
+ static const int XYYX = 0x14;
+ static const int XYYY = 0x54;
+ static const int XYYZ = 0x94;
+ static const int XYYW = 0xD4;
+ static const int XYZX = 0x24;
+ static const int XYZY = 0x64;
+ static const int XYZZ = 0xA4;
+ static const int XYZW = 0xE4;
+ static const int XYWX = 0x34;
+ static const int XYWY = 0x74;
+ static const int XYWZ = 0xB4;
+ static const int XYWW = 0xF4;
+ static const int XZXX = 0x8;
+ static const int XZXY = 0x48;
+ static const int XZXZ = 0x88;
+ static const int XZXW = 0xC8;
+ static const int XZYX = 0x18;
+ static const int XZYY = 0x58;
+ static const int XZYZ = 0x98;
+ static const int XZYW = 0xD8;
+ static const int XZZX = 0x28;
+ static const int XZZY = 0x68;
+ static const int XZZZ = 0xA8;
+ static const int XZZW = 0xE8;
+ static const int XZWX = 0x38;
+ static const int XZWY = 0x78;
+ static const int XZWZ = 0xB8;
+ static const int XZWW = 0xF8;
+ static const int XWXX = 0xC;
+ static const int XWXY = 0x4C;
+ static const int XWXZ = 0x8C;
+ static const int XWXW = 0xCC;
+ static const int XWYX = 0x1C;
+ static const int XWYY = 0x5C;
+ static const int XWYZ = 0x9C;
+ static const int XWYW = 0xDC;
+ static const int XWZX = 0x2C;
+ static const int XWZY = 0x6C;
+ static const int XWZZ = 0xAC;
+ static const int XWZW = 0xEC;
+ static const int XWWX = 0x3C;
+ static const int XWWY = 0x7C;
+ static const int XWWZ = 0xBC;
+ static const int XWWW = 0xFC;
+ static const int YXXX = 0x1;
+ static const int YXXY = 0x41;
+ static const int YXXZ = 0x81;
+ static const int YXXW = 0xC1;
+ static const int YXYX = 0x11;
+ static const int YXYY = 0x51;
+ static const int YXYZ = 0x91;
+ static const int YXYW = 0xD1;
+ static const int YXZX = 0x21;
+ static const int YXZY = 0x61;
+ static const int YXZZ = 0xA1;
+ static const int YXZW = 0xE1;
+ static const int YXWX = 0x31;
+ static const int YXWY = 0x71;
+ static const int YXWZ = 0xB1;
+ static const int YXWW = 0xF1;
+ static const int YYXX = 0x5;
+ static const int YYXY = 0x45;
+ static const int YYXZ = 0x85;
+ static const int YYXW = 0xC5;
+ static const int YYYX = 0x15;
+ static const int YYYY = 0x55;
+ static const int YYYZ = 0x95;
+ static const int YYYW = 0xD5;
+ static const int YYZX = 0x25;
+ static const int YYZY = 0x65;
+ static const int YYZZ = 0xA5;
+ static const int YYZW = 0xE5;
+ static const int YYWX = 0x35;
+ static const int YYWY = 0x75;
+ static const int YYWZ = 0xB5;
+ static const int YYWW = 0xF5;
+ static const int YZXX = 0x9;
+ static const int YZXY = 0x49;
+ static const int YZXZ = 0x89;
+ static const int YZXW = 0xC9;
+ static const int YZYX = 0x19;
+ static const int YZYY = 0x59;
+ static const int YZYZ = 0x99;
+ static const int YZYW = 0xD9;
+ static const int YZZX = 0x29;
+ static const int YZZY = 0x69;
+ static const int YZZZ = 0xA9;
+ static const int YZZW = 0xE9;
+ static const int YZWX = 0x39;
+ static const int YZWY = 0x79;
+ static const int YZWZ = 0xB9;
+ static const int YZWW = 0xF9;
+ static const int YWXX = 0xD;
+ static const int YWXY = 0x4D;
+ static const int YWXZ = 0x8D;
+ static const int YWXW = 0xCD;
+ static const int YWYX = 0x1D;
+ static const int YWYY = 0x5D;
+ static const int YWYZ = 0x9D;
+ static const int YWYW = 0xDD;
+ static const int YWZX = 0x2D;
+ static const int YWZY = 0x6D;
+ static const int YWZZ = 0xAD;
+ static const int YWZW = 0xED;
+ static const int YWWX = 0x3D;
+ static const int YWWY = 0x7D;
+ static const int YWWZ = 0xBD;
+ static const int YWWW = 0xFD;
+ static const int ZXXX = 0x2;
+ static const int ZXXY = 0x42;
+ static const int ZXXZ = 0x82;
+ static const int ZXXW = 0xC2;
+ static const int ZXYX = 0x12;
+ static const int ZXYY = 0x52;
+ static const int ZXYZ = 0x92;
+ static const int ZXYW = 0xD2;
+ static const int ZXZX = 0x22;
+ static const int ZXZY = 0x62;
+ static const int ZXZZ = 0xA2;
+ static const int ZXZW = 0xE2;
+ static const int ZXWX = 0x32;
+ static const int ZXWY = 0x72;
+ static const int ZXWZ = 0xB2;
+ static const int ZXWW = 0xF2;
+ static const int ZYXX = 0x6;
+ static const int ZYXY = 0x46;
+ static const int ZYXZ = 0x86;
+ static const int ZYXW = 0xC6;
+ static const int ZYYX = 0x16;
+ static const int ZYYY = 0x56;
+ static const int ZYYZ = 0x96;
+ static const int ZYYW = 0xD6;
+ static const int ZYZX = 0x26;
+ static const int ZYZY = 0x66;
+ static const int ZYZZ = 0xA6;
+ static const int ZYZW = 0xE6;
+ static const int ZYWX = 0x36;
+ static const int ZYWY = 0x76;
+ static const int ZYWZ = 0xB6;
+ static const int ZYWW = 0xF6;
+ static const int ZZXX = 0xA;
+ static const int ZZXY = 0x4A;
+ static const int ZZXZ = 0x8A;
+ static const int ZZXW = 0xCA;
+ static const int ZZYX = 0x1A;
+ static const int ZZYY = 0x5A;
+ static const int ZZYZ = 0x9A;
+ static const int ZZYW = 0xDA;
+ static const int ZZZX = 0x2A;
+ static const int ZZZY = 0x6A;
+ static const int ZZZZ = 0xAA;
+ static const int ZZZW = 0xEA;
+ static const int ZZWX = 0x3A;
+ static const int ZZWY = 0x7A;
+ static const int ZZWZ = 0xBA;
+ static const int ZZWW = 0xFA;
+ static const int ZWXX = 0xE;
+ static const int ZWXY = 0x4E;
+ static const int ZWXZ = 0x8E;
+ static const int ZWXW = 0xCE;
+ static const int ZWYX = 0x1E;
+ static const int ZWYY = 0x5E;
+ static const int ZWYZ = 0x9E;
+ static const int ZWYW = 0xDE;
+ static const int ZWZX = 0x2E;
+ static const int ZWZY = 0x6E;
+ static const int ZWZZ = 0xAE;
+ static const int ZWZW = 0xEE;
+ static const int ZWWX = 0x3E;
+ static const int ZWWY = 0x7E;
+ static const int ZWWZ = 0xBE;
+ static const int ZWWW = 0xFE;
+ static const int WXXX = 0x3;
+ static const int WXXY = 0x43;
+ static const int WXXZ = 0x83;
+ static const int WXXW = 0xC3;
+ static const int WXYX = 0x13;
+ static const int WXYY = 0x53;
+ static const int WXYZ = 0x93;
+ static const int WXYW = 0xD3;
+ static const int WXZX = 0x23;
+ static const int WXZY = 0x63;
+ static const int WXZZ = 0xA3;
+ static const int WXZW = 0xE3;
+ static const int WXWX = 0x33;
+ static const int WXWY = 0x73;
+ static const int WXWZ = 0xB3;
+ static const int WXWW = 0xF3;
+ static const int WYXX = 0x7;
+ static const int WYXY = 0x47;
+ static const int WYXZ = 0x87;
+ static const int WYXW = 0xC7;
+ static const int WYYX = 0x17;
+ static const int WYYY = 0x57;
+ static const int WYYZ = 0x97;
+ static const int WYYW = 0xD7;
+ static const int WYZX = 0x27;
+ static const int WYZY = 0x67;
+ static const int WYZZ = 0xA7;
+ static const int WYZW = 0xE7;
+ static const int WYWX = 0x37;
+ static const int WYWY = 0x77;
+ static const int WYWZ = 0xB7;
+ static const int WYWW = 0xF7;
+ static const int WZXX = 0xB;
+ static const int WZXY = 0x4B;
+ static const int WZXZ = 0x8B;
+ static const int WZXW = 0xCB;
+ static const int WZYX = 0x1B;
+ static const int WZYY = 0x5B;
+ static const int WZYZ = 0x9B;
+ static const int WZYW = 0xDB;
+ static const int WZZX = 0x2B;
+ static const int WZZY = 0x6B;
+ static const int WZZZ = 0xAB;
+ static const int WZZW = 0xEB;
+ static const int WZWX = 0x3B;
+ static const int WZWY = 0x7B;
+ static const int WZWZ = 0xBB;
+ static const int WZWW = 0xFB;
+ static const int WWXX = 0xF;
+ static const int WWXY = 0x4F;
+ static const int WWXZ = 0x8F;
+ static const int WWXW = 0xCF;
+ static const int WWYX = 0x1F;
+ static const int WWYY = 0x5F;
+ static const int WWYZ = 0x9F;
+ static const int WWYW = 0xDF;
+ static const int WWZX = 0x2F;
+ static const int WWZY = 0x6F;
+ static const int WWZZ = 0xAF;
+ static const int WWZW = 0xEF;
+ static const int WWWX = 0x3F;
+ static const int WWWY = 0x7F;
+ static const int WWWZ = 0xBF;
+ static const int WWWW = 0xFF;
+
}
-class _Int32x4 implements Int32x4 {
- factory _Int32x4(int x, int y, int z, int w)
+class Int32x4 {
+ factory Int32x4(int x, int y, int z, int w)
native "Int32x4_fromInts";
- factory _Int32x4.bool(bool x, bool y, bool z, bool w)
+ factory Int32x4.bool(bool x, bool y, bool z, bool w)
native "Int32x4_fromBools";
- factory _Int32x4.fromFloat32x4Bits(Float32x4 x)
+ factory Int32x4.fromFloat32x4Bits(Float32x4 x)
native "Int32x4_fromFloat32x4Bits";
Int32x4 operator |(Int32x4 other) {
return _or(other);
@@ -2304,14 +2854,273 @@ class _Int32x4 implements Int32x4 {
Float32x4 _select(Float32x4 trueValue,
Float32x4 falseValue)
native "Int32x4_select";
+
+ /// Mask passed to [shuffle] or [shuffleMix].
+ static const int XXXX = 0x0;
+ static const int XXXY = 0x40;
+ static const int XXXZ = 0x80;
+ static const int XXXW = 0xC0;
+ static const int XXYX = 0x10;
+ static const int XXYY = 0x50;
+ static const int XXYZ = 0x90;
+ static const int XXYW = 0xD0;
+ static const int XXZX = 0x20;
+ static const int XXZY = 0x60;
+ static const int XXZZ = 0xA0;
+ static const int XXZW = 0xE0;
+ static const int XXWX = 0x30;
+ static const int XXWY = 0x70;
+ static const int XXWZ = 0xB0;
+ static const int XXWW = 0xF0;
+ static const int XYXX = 0x4;
+ static const int XYXY = 0x44;
+ static const int XYXZ = 0x84;
+ static const int XYXW = 0xC4;
+ static const int XYYX = 0x14;
+ static const int XYYY = 0x54;
+ static const int XYYZ = 0x94;
+ static const int XYYW = 0xD4;
+ static const int XYZX = 0x24;
+ static const int XYZY = 0x64;
+ static const int XYZZ = 0xA4;
+ static const int XYZW = 0xE4;
+ static const int XYWX = 0x34;
+ static const int XYWY = 0x74;
+ static const int XYWZ = 0xB4;
+ static const int XYWW = 0xF4;
+ static const int XZXX = 0x8;
+ static const int XZXY = 0x48;
+ static const int XZXZ = 0x88;
+ static const int XZXW = 0xC8;
+ static const int XZYX = 0x18;
+ static const int XZYY = 0x58;
+ static const int XZYZ = 0x98;
+ static const int XZYW = 0xD8;
+ static const int XZZX = 0x28;
+ static const int XZZY = 0x68;
+ static const int XZZZ = 0xA8;
+ static const int XZZW = 0xE8;
+ static const int XZWX = 0x38;
+ static const int XZWY = 0x78;
+ static const int XZWZ = 0xB8;
+ static const int XZWW = 0xF8;
+ static const int XWXX = 0xC;
+ static const int XWXY = 0x4C;
+ static const int XWXZ = 0x8C;
+ static const int XWXW = 0xCC;
+ static const int XWYX = 0x1C;
+ static const int XWYY = 0x5C;
+ static const int XWYZ = 0x9C;
+ static const int XWYW = 0xDC;
+ static const int XWZX = 0x2C;
+ static const int XWZY = 0x6C;
+ static const int XWZZ = 0xAC;
+ static const int XWZW = 0xEC;
+ static const int XWWX = 0x3C;
+ static const int XWWY = 0x7C;
+ static const int XWWZ = 0xBC;
+ static const int XWWW = 0xFC;
+ static const int YXXX = 0x1;
+ static const int YXXY = 0x41;
+ static const int YXXZ = 0x81;
+ static const int YXXW = 0xC1;
+ static const int YXYX = 0x11;
+ static const int YXYY = 0x51;
+ static const int YXYZ = 0x91;
+ static const int YXYW = 0xD1;
+ static const int YXZX = 0x21;
+ static const int YXZY = 0x61;
+ static const int YXZZ = 0xA1;
+ static const int YXZW = 0xE1;
+ static const int YXWX = 0x31;
+ static const int YXWY = 0x71;
+ static const int YXWZ = 0xB1;
+ static const int YXWW = 0xF1;
+ static const int YYXX = 0x5;
+ static const int YYXY = 0x45;
+ static const int YYXZ = 0x85;
+ static const int YYXW = 0xC5;
+ static const int YYYX = 0x15;
+ static const int YYYY = 0x55;
+ static const int YYYZ = 0x95;
+ static const int YYYW = 0xD5;
+ static const int YYZX = 0x25;
+ static const int YYZY = 0x65;
+ static const int YYZZ = 0xA5;
+ static const int YYZW = 0xE5;
+ static const int YYWX = 0x35;
+ static const int YYWY = 0x75;
+ static const int YYWZ = 0xB5;
+ static const int YYWW = 0xF5;
+ static const int YZXX = 0x9;
+ static const int YZXY = 0x49;
+ static const int YZXZ = 0x89;
+ static const int YZXW = 0xC9;
+ static const int YZYX = 0x19;
+ static const int YZYY = 0x59;
+ static const int YZYZ = 0x99;
+ static const int YZYW = 0xD9;
+ static const int YZZX = 0x29;
+ static const int YZZY = 0x69;
+ static const int YZZZ = 0xA9;
+ static const int YZZW = 0xE9;
+ static const int YZWX = 0x39;
+ static const int YZWY = 0x79;
+ static const int YZWZ = 0xB9;
+ static const int YZWW = 0xF9;
+ static const int YWXX = 0xD;
+ static const int YWXY = 0x4D;
+ static const int YWXZ = 0x8D;
+ static const int YWXW = 0xCD;
+ static const int YWYX = 0x1D;
+ static const int YWYY = 0x5D;
+ static const int YWYZ = 0x9D;
+ static const int YWYW = 0xDD;
+ static const int YWZX = 0x2D;
+ static const int YWZY = 0x6D;
+ static const int YWZZ = 0xAD;
+ static const int YWZW = 0xED;
+ static const int YWWX = 0x3D;
+ static const int YWWY = 0x7D;
+ static const int YWWZ = 0xBD;
+ static const int YWWW = 0xFD;
+ static const int ZXXX = 0x2;
+ static const int ZXXY = 0x42;
+ static const int ZXXZ = 0x82;
+ static const int ZXXW = 0xC2;
+ static const int ZXYX = 0x12;
+ static const int ZXYY = 0x52;
+ static const int ZXYZ = 0x92;
+ static const int ZXYW = 0xD2;
+ static const int ZXZX = 0x22;
+ static const int ZXZY = 0x62;
+ static const int ZXZZ = 0xA2;
+ static const int ZXZW = 0xE2;
+ static const int ZXWX = 0x32;
+ static const int ZXWY = 0x72;
+ static const int ZXWZ = 0xB2;
+ static const int ZXWW = 0xF2;
+ static const int ZYXX = 0x6;
+ static const int ZYXY = 0x46;
+ static const int ZYXZ = 0x86;
+ static const int ZYXW = 0xC6;
+ static const int ZYYX = 0x16;
+ static const int ZYYY = 0x56;
+ static const int ZYYZ = 0x96;
+ static const int ZYYW = 0xD6;
+ static const int ZYZX = 0x26;
+ static const int ZYZY = 0x66;
+ static const int ZYZZ = 0xA6;
+ static const int ZYZW = 0xE6;
+ static const int ZYWX = 0x36;
+ static const int ZYWY = 0x76;
+ static const int ZYWZ = 0xB6;
+ static const int ZYWW = 0xF6;
+ static const int ZZXX = 0xA;
+ static const int ZZXY = 0x4A;
+ static const int ZZXZ = 0x8A;
+ static const int ZZXW = 0xCA;
+ static const int ZZYX = 0x1A;
+ static const int ZZYY = 0x5A;
+ static const int ZZYZ = 0x9A;
+ static const int ZZYW = 0xDA;
+ static const int ZZZX = 0x2A;
+ static const int ZZZY = 0x6A;
+ static const int ZZZZ = 0xAA;
+ static const int ZZZW = 0xEA;
+ static const int ZZWX = 0x3A;
+ static const int ZZWY = 0x7A;
+ static const int ZZWZ = 0xBA;
+ static const int ZZWW = 0xFA;
+ static const int ZWXX = 0xE;
+ static const int ZWXY = 0x4E;
+ static const int ZWXZ = 0x8E;
+ static const int ZWXW = 0xCE;
+ static const int ZWYX = 0x1E;
+ static const int ZWYY = 0x5E;
+ static const int ZWYZ = 0x9E;
+ static const int ZWYW = 0xDE;
+ static const int ZWZX = 0x2E;
+ static const int ZWZY = 0x6E;
+ static const int ZWZZ = 0xAE;
+ static const int ZWZW = 0xEE;
+ static const int ZWWX = 0x3E;
+ static const int ZWWY = 0x7E;
+ static const int ZWWZ = 0xBE;
+ static const int ZWWW = 0xFE;
+ static const int WXXX = 0x3;
+ static const int WXXY = 0x43;
+ static const int WXXZ = 0x83;
+ static const int WXXW = 0xC3;
+ static const int WXYX = 0x13;
+ static const int WXYY = 0x53;
+ static const int WXYZ = 0x93;
+ static const int WXYW = 0xD3;
+ static const int WXZX = 0x23;
+ static const int WXZY = 0x63;
+ static const int WXZZ = 0xA3;
+ static const int WXZW = 0xE3;
+ static const int WXWX = 0x33;
+ static const int WXWY = 0x73;
+ static const int WXWZ = 0xB3;
+ static const int WXWW = 0xF3;
+ static const int WYXX = 0x7;
+ static const int WYXY = 0x47;
+ static const int WYXZ = 0x87;
+ static const int WYXW = 0xC7;
+ static const int WYYX = 0x17;
+ static const int WYYY = 0x57;
+ static const int WYYZ = 0x97;
+ static const int WYYW = 0xD7;
+ static const int WYZX = 0x27;
+ static const int WYZY = 0x67;
+ static const int WYZZ = 0xA7;
+ static const int WYZW = 0xE7;
+ static const int WYWX = 0x37;
+ static const int WYWY = 0x77;
+ static const int WYWZ = 0xB7;
+ static const int WYWW = 0xF7;
+ static const int WZXX = 0xB;
+ static const int WZXY = 0x4B;
+ static const int WZXZ = 0x8B;
+ static const int WZXW = 0xCB;
+ static const int WZYX = 0x1B;
+ static const int WZYY = 0x5B;
+ static const int WZYZ = 0x9B;
+ static const int WZYW = 0xDB;
+ static const int WZZX = 0x2B;
+ static const int WZZY = 0x6B;
+ static const int WZZZ = 0xAB;
+ static const int WZZW = 0xEB;
+ static const int WZWX = 0x3B;
+ static const int WZWY = 0x7B;
+ static const int WZWZ = 0xBB;
+ static const int WZWW = 0xFB;
+ static const int WWXX = 0xF;
+ static const int WWXY = 0x4F;
+ static const int WWXZ = 0x8F;
+ static const int WWXW = 0xCF;
+ static const int WWYX = 0x1F;
+ static const int WWYY = 0x5F;
+ static const int WWYZ = 0x9F;
+ static const int WWYW = 0xDF;
+ static const int WWZX = 0x2F;
+ static const int WWZY = 0x6F;
+ static const int WWZZ = 0xAF;
+ static const int WWZW = 0xEF;
+ static const int WWWX = 0x3F;
+ static const int WWWY = 0x7F;
+ static const int WWWZ = 0xBF;
+ static const int WWWW = 0xFF;
+
}
-class _Float64x2 implements Float64x2 {
- factory _Float64x2(double x, double y) native "Float64x2_fromDoubles";
- factory _Float64x2.splat(double v) native "Float64x2_splat";
- factory _Float64x2.zero() native "Float64x2_zero";
- factory _Float64x2.fromFloat32x4(Float32x4 v) native "Float64x2_fromFloat32x4";
+class Float64x2 {
+ factory Float64x2(double x, double y) native "Float64x2_fromDoubles";
+ factory Float64x2.splat(double v) native "Float64x2_splat";
+ factory Float64x2.zero() native "Float64x2_zero";
+ factory Float64x2.fromFloat32x4(Float32x4 v) native "Float64x2_fromFloat32x4";
Float64x2 operator +(Float64x2 other) {
return _add(other);
@@ -2397,7 +3206,7 @@ class _TypedListIterator<E> implements Iterator<E> {
class _TypedListView extends _TypedListBase implements TypedData {
- _TypedListView(_ByteBuffer _buffer, int _offset, int _length)
+ _TypedListView(ByteBuffer _buffer, int _offset, int _length)
: _typedData = _buffer._data,
offsetInBytes = _offset,
length = _length {
« no previous file with comments | « no previous file | runtime/observatory/tests/service/get_object_rpc_test.dart » ('j') | runtime/vm/vm.gypi » ('J')

Powered by Google App Engine
This is Rietveld 408576698