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 { |