OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 patch class Int8List { | 5 patch class Int8List { |
6 /* patch */ factory Int8List(int length) { | 6 /* patch */ factory Int8List(int length) { |
7 return new _Int8Array(length); | 7 return new _Int8Array(length); |
8 } | 8 } |
9 | 9 |
10 /* patch */ factory Int8List.transferable(int length) { | 10 /* patch */ factory Int8List.transferable(int length) { |
(...skipping 16 matching lines...) Expand all Loading... |
27 return new _Uint8Array.transferable(length); | 27 return new _Uint8Array.transferable(length); |
28 } | 28 } |
29 | 29 |
30 /* patch */ factory Uint8List.view(ByteArray array, | 30 /* patch */ factory Uint8List.view(ByteArray array, |
31 [int start = 0, int length]) { | 31 [int start = 0, int length]) { |
32 return new _Uint8ArrayView(array, start, length); | 32 return new _Uint8ArrayView(array, start, length); |
33 } | 33 } |
34 } | 34 } |
35 | 35 |
36 | 36 |
| 37 patch class Uint8ClampedList { |
| 38 /* patch */ factory Uint8ClampedList(int length) { |
| 39 return new _Uint8ClampedArray(length); |
| 40 } |
| 41 |
| 42 /* patch */ factory Uint8ClampedList.transferable(int length) { |
| 43 return new _Uint8ClampedArray.transferable(length); |
| 44 } |
| 45 |
| 46 /* patch */ factory Uint8ClampedList.view(ByteArray array, |
| 47 [int start = 0, int length]) { |
| 48 return new _Uint8ClampedArrayView(array, start, length); |
| 49 } |
| 50 } |
| 51 |
| 52 |
37 patch class Int16List { | 53 patch class Int16List { |
38 /* patch */ factory Int16List(int length) { | 54 /* patch */ factory Int16List(int length) { |
39 return new _Int16Array(length); | 55 return new _Int16Array(length); |
40 } | 56 } |
41 | 57 |
42 /* patch */ factory Int16List.transferable(int length) { | 58 /* patch */ factory Int16List.transferable(int length) { |
43 return new _Int16Array.transferable(length); | 59 return new _Int16Array.transferable(length); |
44 } | 60 } |
45 | 61 |
46 /* patch */ factory Int16List.view(ByteArray array, [int start = 0, int length
]) { | 62 /* patch */ factory Int16List.view(ByteArray array, [int start = 0, int length
]) { |
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
318 if (value > (mask >> 1)) value -= mask + 1; | 334 if (value > (mask >> 1)) value -= mask + 1; |
319 return value; | 335 return value; |
320 } | 336 } |
321 | 337 |
322 int _toInt8(int value) { | 338 int _toInt8(int value) { |
323 return _toInt(value, 0xFF); | 339 return _toInt(value, 0xFF); |
324 } | 340 } |
325 int _toUint8(int value) { | 341 int _toUint8(int value) { |
326 return value & 0xFF; | 342 return value & 0xFF; |
327 } | 343 } |
| 344 int _toClampedUint8(int value) { |
| 345 if (value < 0) return 0; |
| 346 if (value > 0xFF) return 0xFF; |
| 347 return value; |
| 348 } |
328 | 349 |
329 | 350 |
330 int _toInt16(int value) { | 351 int _toInt16(int value) { |
331 return _toInt(value, 0xFFFF); | 352 return _toInt(value, 0xFFFF); |
332 } | 353 } |
333 int _toUint16(int value) { | 354 int _toUint16(int value) { |
334 return value & 0xFFFF; | 355 return value & 0xFFFF; |
335 } | 356 } |
336 | 357 |
337 | 358 |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
439 | 460 |
440 int lengthInBytes() { | 461 int lengthInBytes() { |
441 return _length() * _BYTES_PER_ELEMENT; | 462 return _length() * _BYTES_PER_ELEMENT; |
442 } | 463 } |
443 | 464 |
444 static const int _BYTES_PER_ELEMENT = 1; | 465 static const int _BYTES_PER_ELEMENT = 1; |
445 | 466 |
446 static _Int8Array _new(int length) native "Int8Array_new"; | 467 static _Int8Array _new(int length) native "Int8Array_new"; |
447 static _Int8Array _newTransferable(int length) | 468 static _Int8Array _newTransferable(int length) |
448 native "Int8Array_newTransferable"; | 469 native "Int8Array_newTransferable"; |
449 | |
450 | 470 |
451 int _getIndexed(int index) native "Int8Array_getIndexed"; | 471 int _getIndexed(int index) native "Int8Array_getIndexed"; |
452 int _setIndexed(int index, int value) native "Int8Array_setIndexed"; | 472 int _setIndexed(int index, int value) native "Int8Array_setIndexed"; |
453 } | 473 } |
454 | 474 |
455 | 475 |
456 class _Uint8Array extends _ByteArrayBase implements Uint8List { | 476 class _Uint8Array extends _ByteArrayBase implements Uint8List { |
457 factory _Uint8Array(int length) { | 477 factory _Uint8Array(int length) { |
458 return _new(length); | 478 return _new(length); |
459 } | 479 } |
(...skipping 22 matching lines...) Expand all Loading... |
482 } | 502 } |
483 | 503 |
484 List<int> getRange(int start, int length) { | 504 List<int> getRange(int start, int length) { |
485 _rangeCheck(this.length, start, length); | 505 _rangeCheck(this.length, start, length); |
486 List<int> result = _new(length); | 506 List<int> result = _new(length); |
487 result.setRange(0, length, this, start); | 507 result.setRange(0, length, this, start); |
488 return result; | 508 return result; |
489 } | 509 } |
490 | 510 |
491 void setRange(int start, int length, List<int> from, [int startFrom = 0]) { | 511 void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
492 if (from is _Uint8Array || from is _ExternalUint8Array) { | 512 if (from is _Uint8Array || from is _ExternalUint8Array || |
| 513 from is _Uint8ClampedArray || from is _ExternalUint8ClampedArray) { |
493 _setRange(start * _BYTES_PER_ELEMENT, | 514 _setRange(start * _BYTES_PER_ELEMENT, |
494 length * _BYTES_PER_ELEMENT, | 515 length * _BYTES_PER_ELEMENT, |
495 from, | 516 from, |
496 startFrom * _BYTES_PER_ELEMENT); | 517 startFrom * _BYTES_PER_ELEMENT); |
497 } else { | 518 } else { |
498 Arrays.copy(from, startFrom, this, start, length); | 519 Arrays.copy(from, startFrom, this, start, length); |
499 } | 520 } |
500 } | 521 } |
501 | 522 |
502 String toString() { | 523 String toString() { |
503 return Collections.collectionToString(this); | 524 return Collections.collectionToString(this); |
504 } | 525 } |
505 | 526 |
506 int bytesPerElement() { | 527 int bytesPerElement() { |
507 return _BYTES_PER_ELEMENT; | 528 return _BYTES_PER_ELEMENT; |
508 } | 529 } |
509 | 530 |
510 int lengthInBytes() { | 531 int lengthInBytes() { |
511 return _length() * _BYTES_PER_ELEMENT; | 532 return _length() * _BYTES_PER_ELEMENT; |
512 } | 533 } |
513 | 534 |
514 static const int _BYTES_PER_ELEMENT = 1; | 535 static const int _BYTES_PER_ELEMENT = 1; |
515 | 536 |
516 static _Uint8Array _new(int length) native "Uint8Array_new"; | 537 static _Uint8Array _new(int length) native "Uint8Array_new"; |
517 static _Uint8Array _newTransferable(int length) | 538 static _Uint8Array _newTransferable(int length) |
518 native "Uint8Array_newTransferable"; | 539 native "Uint8Array_newTransferable"; |
519 | 540 |
| 541 int _getIndexed(int index) native "Uint8Array_getIndexed"; |
| 542 int _setIndexed(int index, int value) native "Uint8Array_setIndexed"; |
| 543 } |
| 544 |
| 545 |
| 546 class _Uint8ClampedArray extends _ByteArrayBase implements Uint8ClampedList { |
| 547 factory _Uint8ClampedArray(int length) { |
| 548 return _new(length); |
| 549 } |
| 550 |
| 551 factory _Uint8ClampedArray.transferable(int length) { |
| 552 return _newTransferable(length); |
| 553 } |
| 554 |
| 555 factory _Uint8ClampedArray.view(ByteArray array, |
| 556 [int start = 0, int length]) { |
| 557 if (length == null) { |
| 558 length = array.lengthInBytes(); |
| 559 } |
| 560 return new _Uint8ClampedArrayView(array, start, length); |
| 561 } |
| 562 |
| 563 int operator[](int index) { |
| 564 return _getIndexed(index); |
| 565 } |
| 566 |
| 567 int operator[]=(int index, int value) { |
| 568 _setIndexed(index, _toClampedUint8(value)); |
| 569 } |
| 570 |
| 571 Iterator<int> iterator() { |
| 572 return new _ByteArrayIterator<int>(this); |
| 573 } |
| 574 |
| 575 List<int> getRange(int start, int length) { |
| 576 _rangeCheck(this.length, start, length); |
| 577 List<int> result = _new(length); |
| 578 result.setRange(0, length, this, start); |
| 579 return result; |
| 580 } |
| 581 |
| 582 void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
| 583 if (from is _Uint8Array || from is _ExternalUint8Array || |
| 584 from is _Uint8ClampedArray || from is _ExternalUint8ClampedArray) { |
| 585 _setRange(start * _BYTES_PER_ELEMENT, |
| 586 length * _BYTES_PER_ELEMENT, |
| 587 from, |
| 588 startFrom * _BYTES_PER_ELEMENT); |
| 589 } else { |
| 590 Arrays.copy(from, startFrom, this, start, length); |
| 591 } |
| 592 } |
| 593 |
| 594 String toString() { |
| 595 return Collections.collectionToString(this); |
| 596 } |
| 597 |
| 598 int bytesPerElement() { |
| 599 return _BYTES_PER_ELEMENT; |
| 600 } |
| 601 |
| 602 int lengthInBytes() { |
| 603 return _length() * _BYTES_PER_ELEMENT; |
| 604 } |
| 605 |
| 606 static const int _BYTES_PER_ELEMENT = 1; |
| 607 |
| 608 static _Uint8ClampedArray _new(int length) native "Uint8ClampedArray_new"; |
| 609 static _Uint8ClampedArray _newTransferable(int length) |
| 610 native "Uint8ClampedArray_newTransferable"; |
| 611 |
520 int _getIndexed(int index) native "Uint8Array_getIndexed"; | 612 int _getIndexed(int index) native "Uint8Array_getIndexed"; |
521 int _setIndexed(int index, int value) native "Uint8Array_setIndexed"; | 613 int _setIndexed(int index, int value) native "Uint8Array_setIndexed"; |
522 } | 614 } |
523 | 615 |
524 | 616 |
525 class _Int16Array extends _ByteArrayBase implements Int16List { | 617 class _Int16Array extends _ByteArrayBase implements Int16List { |
526 factory _Int16Array(int length) { | 618 factory _Int16Array(int length) { |
527 return _new(length); | 619 return _new(length); |
528 } | 620 } |
529 | 621 |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
716 | 808 |
717 int lengthInBytes() { | 809 int lengthInBytes() { |
718 return _length() * _BYTES_PER_ELEMENT; | 810 return _length() * _BYTES_PER_ELEMENT; |
719 } | 811 } |
720 | 812 |
721 static const int _BYTES_PER_ELEMENT = 4; | 813 static const int _BYTES_PER_ELEMENT = 4; |
722 | 814 |
723 static _Int32Array _new(int length) native "Int32Array_new"; | 815 static _Int32Array _new(int length) native "Int32Array_new"; |
724 static _Int32Array _newTransferable(int length) | 816 static _Int32Array _newTransferable(int length) |
725 native "Int32Array_newTransferable"; | 817 native "Int32Array_newTransferable"; |
726 | 818 |
727 | 819 |
728 int _getIndexed(int index) native "Int32Array_getIndexed"; | 820 int _getIndexed(int index) native "Int32Array_getIndexed"; |
729 int _setIndexed(int index, int value) native "Int32Array_setIndexed"; | 821 int _setIndexed(int index, int value) native "Int32Array_setIndexed"; |
730 } | 822 } |
731 | 823 |
732 | 824 |
733 class _Uint32Array extends _ByteArrayBase implements Uint32List { | 825 class _Uint32Array extends _ByteArrayBase implements Uint32List { |
734 factory _Uint32Array(int length) { | 826 factory _Uint32Array(int length) { |
735 return _new(length); | 827 return _new(length); |
736 } | 828 } |
(...skipping 1786 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2523 } | 2615 } |
2524 _rangeCheck(this.length, start, length); | 2616 _rangeCheck(this.length, start, length); |
2525 return _array.subByteArray(_offset + start, length); | 2617 return _array.subByteArray(_offset + start, length); |
2526 } | 2618 } |
2527 | 2619 |
2528 static const int _BYTES_PER_ELEMENT = 8; | 2620 static const int _BYTES_PER_ELEMENT = 8; |
2529 final ByteArray _array; | 2621 final ByteArray _array; |
2530 final int _offset; | 2622 final int _offset; |
2531 final int _length; | 2623 final int _length; |
2532 } | 2624 } |
OLD | NEW |