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

Side by Side Diff: sdk/lib/typeddata/typeddata.dart

Issue 13093005: Revert 12534006 (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 library dart.typeddata; 5 library dart.typeddata;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 8
9 /** 9 /**
10 * A sequence of bytes underlying a typed data object. 10 * A sequence of bytes underlying a typed data object.
(...skipping 663 matching lines...) Expand 10 before | Expand all | Expand 10 after
674 * the length of [buffer]. 674 * the length of [buffer].
675 * 675 *
676 * Throws [ArgumentError] if [offsetInBytes] is not a multiple of 676 * Throws [ArgumentError] if [offsetInBytes] is not a multiple of
677 * BYTES_PER_ELEMENT. 677 * BYTES_PER_ELEMENT.
678 */ 678 */
679 external factory Float64List.view(ByteBuffer buffer, 679 external factory Float64List.view(ByteBuffer buffer,
680 [int offsetInBytes = 0, int length]); 680 [int offsetInBytes = 0, int length]);
681 681
682 static const int BYTES_PER_ELEMENT = 8; 682 static const int BYTES_PER_ELEMENT = 8;
683 } 683 }
684
685
686 /**
687 * A fixed-length list of Float32x4 numbers that is viewable as a
688 * [TypedData]. For long lists, this implementation will be considerably more
689 * space- and time-efficient than the default [List] implementation.
690 */
691 abstract class Float32x4List implements List<Float32x4>, TypedData {
692 /**
693 * Creates a [Float32x4List] of the specified length (in elements),
694 * all of whose elements are initially zero.
695 */
696 external factory Float32x4List(int length);
697
698 /**
699 * Creates a [Float32x4List] _view_ of the specified region in the specified
700 * byte buffer. Changes in the [Float32x4List] will be visible in the byte
701 * buffer and vice versa. If the [offsetInBytes] index of the region is not
702 * specified, it defaults to zero (the first byte in the byte buffer).
703 * If the length is not specified, it defaults to null, which indicates
704 * that the view extends to the end of the byte buffer.
705 *
706 * Throws [RangeError] if [offsetInBytes] or [length] are negative, or
707 * if [offsetInBytes] + ([length] * elementSizeInBytes) is greater than
708 * the length of [buffer].
709 *
710 * Throws [ArgumentError] if [offsetInBytes] is not a multiple of
711 * BYTES_PER_ELEMENT.
712 */
713 external factory Float32x4List.view(ByteBuffer buffer,
714 [int offsetInBytes = 0, int length]);
715
716 static const int BYTES_PER_ELEMENT = 16;
717 }
718
719
720 /**
721 * Interface of Dart Float32x4 immutable value type and operations.
722 * Float32x4 stores 4 32-bit floating point values in "lanes".
723 * The lanes are "x", "y", "z", and "w" respectively.
724 */
725 abstract class Float32x4 {
726 external factory Float32x4(double x, double y, double z, double w);
727 external factory Float32x4.zero();
728
729 /// Addition operator.
730 Float32x4 operator+(Float32x4 other);
731 /// Negate operator.
732 Float32x4 operator-();
733 /// Subtraction operator.
734 Float32x4 operator-(Float32x4 other);
735 /// Multiplication operator.
736 Float32x4 operator*(Float32x4 other);
737 /// Division operator.
738 Float32x4 operator/(Float32x4 other);
739
740 /// Relational less than.
741 Uint32x4 lessThan(Float32x4 other);
742 /// Relational less than or equal.
743 Uint32x4 lessThanOrEqual(Float32x4 other);
744 /// Relational greater than.
745 Uint32x4 greaterThan(Float32x4 other);
746 /// Relational greater than or equal.
747 Uint32x4 greaterThanOrEqual(Float32x4 other);
748 /// Relational equal.
749 Uint32x4 equal(Float32x4 other);
750 /// Relational not-equal.
751 Uint32x4 notEqual(Float32x4 other);
752
753 /// Returns a copy of [this] each lane being scaled by [s].
754 Float32x4 scale(double s);
755 /// Returns the absolute value of this [Float32x4].
756 Float32x4 abs();
757 /// Clamps [this] to be in the range [lowerLimit]-[upperLimit].
758 Float32x4 clamp(Float32x4 lowerLimit,
759 Float32x4 upperLimit);
760
761 /// Extracted x value.
762 double get x;
763 /// Extracted y value.
764 double get y;
765 /// Extracted z value.
766 double get z;
767 /// Extracted w value.
768 double get w;
769
770 /// Returns a new [Float32x4] with [this]' x value in all four lanes.
771 Float32x4 get xxxx;
772 /// Returns a new [Float32x4] with [this]' y value in all four lanes.
773 Float32x4 get yyyy;
774 /// Returns a new [Float32x4] with [this]' z value in all four lanes.
775 Float32x4 get zzzz;
776 /// Returns a new [Float32x4] with [this]' w value in all four lanes.
777 Float32x4 get wwww;
778 // TODO(johnmccutchan): Add all 256 possible combinations.
779
780 /// Returns a new [Float32x4] copied from [this] with a new x value.
781 Float32x4 withX(double x);
782 /// Returns a new [Float32x4] copied from [this] with a new y value.
783 Float32x4 withY(double y);
784 /// Returns a new [Float32x4] copied from [this] with a new z value.
785 Float32x4 withZ(double z);
786 /// Returns a new [Float32x4] copied from [this] with a new w value.
787 Float32x4 withW(double w);
788
789 /// Returns the lane-wise minimum value in [this] or [other].
790 Float32x4 min(Float32x4 other);
791
792 /// Returns the lane-wise maximum value in [this] or [other].
793 Float32x4 max(Float32x4 other);
794
795 /// Returns the square root of [this].
796 Float32x4 sqrt();
797
798 /// Returns the reciprocal of [this].
799 Float32x4 reciprocal();
800
801 /// Returns the square root of the reciprocal of [this].
802 Float32x4 reciprocalSqrt();
803
804 /// Returns a bit-wise copy of [this] as a [Uint32x4].
805 Uint32x4 toUint32x4();
806 }
807
808
809 /**
810 * Interface of Dart Uint32x4 and operations.
811 * Uint32x4 stores 4 32-bit bit-masks in "lanes".
812 * The lanes are "x", "y", "z", and "w" respectively.
813 */
814 abstract class Uint32x4 {
815 external factory Uint32x4(int x, int y, int z, int w);
816 external factory Uint32x4.bool(bool x, bool y, bool z, bool w);
817
818 /// The bit-wise or operator.
819 Uint32x4 operator|(Uint32x4 other);
820 /// The bit-wise and operator.
821 Uint32x4 operator&(Uint32x4 other);
822 /// The bit-wise xor operator.
823 Uint32x4 operator^(Uint32x4 other);
824
825 /// Extract 32-bit mask from x lane.
826 int get x;
827 /// Extract 32-bit mask from y lane.
828 int get y;
829 /// Extract 32-bit mask from z lane.
830 int get z;
831 /// Extract 32-bit mask from w lane.
832 int get w;
833
834 /// Returns a new [Uint32x4] copied from [this] with a new x value.
835 Uint32x4 withX(int x);
836 /// Returns a new [Uint32x4] copied from [this] with a new y value.
837 Uint32x4 withY(int y);
838 /// Returns a new [Uint32x4] copied from [this] with a new z value.
839 Uint32x4 withZ(int z);
840 /// Returns a new [Uint32x4] copied from [this] with a new w value.
841 Uint32x4 withW(int w);
842
843 /// Extracted x value. Returns false for 0, true for any other value.
844 bool get flagX;
845 /// Extracted y value. Returns false for 0, true for any other value.
846 bool get flagY;
847 /// Extracted z value. Returns false for 0, true for any other value.
848 bool get flagZ;
849 /// Extracted w value. Returns false for 0, true for any other value.
850 bool get flagW;
851
852 /// Returns a new [Uint32x4] copied from [this] with a new x value.
853 Uint32x4 withFlagX(bool x);
854 /// Returns a new [Uint32x4] copied from [this] with a new y value.
855 Uint32x4 withFlagY(bool y);
856 /// Returns a new [Uint32x4] copied from [this] with a new z value.
857 Uint32x4 withFlagZ(bool z);
858 /// Returns a new [Uint32x4] copied from [this] with a new w value.
859 Uint32x4 withFlagW(bool w);
860
861 /// Merge [trueValue] and [falseValue] based on [this]' bit mask:
862 /// Select bit from [trueValue] when bit in [this] is on.
863 /// Select bit from [falseValue] when bit in [this] is off.
864 Float32x4 select(Float32x4 trueValue, Float32x4 falseValue);
865
866 /// Returns a bit-wise copy of [this] as a [Float32x4].
867 Float32x4 toFloat32x4();
868 }
OLDNEW
« no previous file with comments | « sdk/lib/_internal/compiler/implementation/lib/typeddata_patch.dart ('k') | tests/lib/lib.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698