Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 // patch classes for Int8List ..... Float64List and ByteData implementations. | 5 // patch classes for Int8List ..... Float64List and ByteData implementations. |
| 6 | 6 |
| 7 patch class Int8List { | 7 patch class Int8List { |
| 8 /* patch */ factory Int8List(int length) { | 8 /* patch */ factory Int8List(int length) { |
| 9 return new _Int8Array(length); | 9 return new _Int8Array(length); |
| 10 } | 10 } |
| (...skipping 2856 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2867 int getUint8(int byteOffset) { | 2867 int getUint8(int byteOffset) { |
| 2868 if (byteOffset < 0 || byteOffset >= length) { | 2868 if (byteOffset < 0 || byteOffset >= length) { |
| 2869 _throwRangeError(byteOffset, length); | 2869 _throwRangeError(byteOffset, length); |
| 2870 } | 2870 } |
| 2871 return _typeddata._getUint8(_offset + byteOffset); | 2871 return _typeddata._getUint8(_offset + byteOffset); |
| 2872 } | 2872 } |
| 2873 void setUint8(int byteOffset, int value) { | 2873 void setUint8(int byteOffset, int value) { |
| 2874 if (byteOffset < 0 || byteOffset >= length) { | 2874 if (byteOffset < 0 || byteOffset >= length) { |
| 2875 _throwRangeError(byteOffset, length); | 2875 _throwRangeError(byteOffset, length); |
| 2876 } | 2876 } |
| 2877 _typeddata._setUint8(_offset + byteOffset,_toUint8( value)); | 2877 _typeddata._setUint8(_offset + byteOffset, _toUint8(value)); |
| 2878 } | 2878 } |
| 2879 | 2879 |
| 2880 int getInt16(int byteOffset) { | 2880 int getInt16(int byteOffset, [Endianness endian = Endianness.BIG_ENDIAN]) { |
| 2881 if (byteOffset < 0 || byteOffset >= length) { | 2881 if (byteOffset < 0 || byteOffset >= length) { |
| 2882 _throwRangeError(byteOffset, length); | 2882 _throwRangeError(byteOffset, length); |
| 2883 } | 2883 } |
| 2884 return _typeddata._getInt16(_offset + byteOffset); | 2884 var result = _typeddata._getInt16(_offset + byteOffset); |
| 2885 return _ToEndianInt16(result, endian.little_endian); | |
| 2885 } | 2886 } |
| 2886 void setInt16(int byteOffset, int value) { | 2887 void setInt16(int byteOffset, |
| 2888 int value, | |
| 2889 [Endianness endian = Endianness.BIG_ENDIAN]) { | |
| 2887 if (byteOffset < 0 || byteOffset >= length) { | 2890 if (byteOffset < 0 || byteOffset >= length) { |
| 2888 _throwRangeError(byteOffset, length); | 2891 _throwRangeError(byteOffset, length); |
| 2889 } | 2892 } |
| 2890 _typeddata._setInt16(_offset + byteOffset, _toInt16(value)); | 2893 _typeddata._setInt16(_offset + byteOffset, |
| 2894 _ToEndianInt16(_toInt16(value), endian.little_endian)); | |
| 2891 } | 2895 } |
| 2892 | 2896 |
| 2893 int getUint16(int byteOffset) { | 2897 int getUint16(int byteOffset, [Endianness endian = Endianness.BIG_ENDIAN]) { |
| 2894 if (byteOffset < 0 || byteOffset >= length) { | 2898 if (byteOffset < 0 || byteOffset >= length) { |
| 2895 _throwRangeError(byteOffset, length); | 2899 _throwRangeError(byteOffset, length); |
| 2896 } | 2900 } |
| 2897 return _typeddata._getUint16(_offset + byteOffset); | 2901 var result = _typeddata._getUint16(_offset + byteOffset); |
| 2902 return _ToEndianUint16(result, endian.little_endian); | |
| 2898 } | 2903 } |
| 2899 void setUint16(int byteOffset, int value) { | 2904 void setUint16(int byteOffset, |
| 2905 int value, | |
| 2906 [Endianness endian = Endianness.BIG_ENDIAN]) { | |
| 2900 if (byteOffset < 0 || byteOffset >= length) { | 2907 if (byteOffset < 0 || byteOffset >= length) { |
| 2901 _throwRangeError(byteOffset, length); | 2908 _throwRangeError(byteOffset, length); |
| 2902 } | 2909 } |
| 2903 _typeddata._setUint16(_offset + byteOffset, _toUint16(value)); | 2910 _typeddata._setUint16( |
| 2911 _offset + byteOffset, | |
| 2912 _ToEndianUint16(_toUint16(value), endian.little_endian)); | |
| 2904 } | 2913 } |
| 2905 | 2914 |
| 2906 int getInt32(int byteOffset) { | 2915 int getInt32(int byteOffset, [Endianness endian = Endianness.BIG_ENDIAN]) { |
| 2907 if (byteOffset < 0 || byteOffset >= length) { | 2916 if (byteOffset < 0 || byteOffset >= length) { |
| 2908 _throwRangeError(byteOffset, length); | 2917 _throwRangeError(byteOffset, length); |
| 2909 } | 2918 } |
| 2910 return _typeddata._getInt32(_offset + byteOffset); | 2919 var result = _typeddata._getInt32(_offset + byteOffset); |
| 2920 return _ToEndianInt32(result, endian.little_endian); | |
| 2911 } | 2921 } |
| 2912 void setInt32(int byteOffset, int value) { | 2922 void setInt32(int byteOffset, |
| 2923 int value, | |
| 2924 [Endianness endian = Endianness.BIG_ENDIAN]) { | |
| 2913 if (byteOffset < 0 || byteOffset >= length) { | 2925 if (byteOffset < 0 || byteOffset >= length) { |
| 2914 _throwRangeError(byteOffset, length); | 2926 _throwRangeError(byteOffset, length); |
| 2915 } | 2927 } |
| 2916 _typeddata._setInt32(_offset + byteOffset, _toInt32(value)); | 2928 _typeddata._setInt32(_offset + byteOffset, |
| 2929 _ToEndianInt32(_toInt32(value), endian.little_endian)); | |
| 2917 } | 2930 } |
| 2918 | 2931 |
| 2919 int getUint32(int byteOffset) { | 2932 int getUint32(int byteOffset, [Endianness endian = Endianness.BIG_ENDIAN]) { |
| 2920 if (byteOffset < 0 || byteOffset >= length) { | 2933 if (byteOffset < 0 || byteOffset >= length) { |
| 2921 _throwRangeError(byteOffset, length); | 2934 _throwRangeError(byteOffset, length); |
| 2922 } | 2935 } |
| 2923 return _typeddata._getUint32(_offset + byteOffset); | 2936 var result = _typeddata._getUint32(_offset + byteOffset); |
| 2937 return _ToEndianUint32(result, endian.little_endian); | |
| 2924 } | 2938 } |
| 2925 void setUint32(int byteOffset, int value) { | 2939 void setUint32(int byteOffset, |
| 2940 int value, | |
| 2941 [Endianness endian = Endianness.BIG_ENDIAN]) { | |
| 2926 if (byteOffset < 0 || byteOffset >= length) { | 2942 if (byteOffset < 0 || byteOffset >= length) { |
| 2927 _throwRangeError(byteOffset, length); | 2943 _throwRangeError(byteOffset, length); |
| 2928 } | 2944 } |
| 2929 _typeddata._setUint32(_offset + byteOffset, _toUint32(value)); | 2945 _typeddata._setUint32( |
| 2946 _offset + byteOffset, | |
| 2947 _ToEndianUint32(_toUint32(value), endian.little_endian)); | |
| 2930 } | 2948 } |
| 2931 | 2949 |
| 2932 int getInt64(int byteOffset) { | 2950 int getInt64(int byteOffset, [Endianness endian = Endianness.BIG_ENDIAN]) { |
| 2933 if (byteOffset < 0 || byteOffset >= length) { | 2951 if (byteOffset < 0 || byteOffset >= length) { |
| 2934 _throwRangeError(byteOffset, length); | 2952 _throwRangeError(byteOffset, length); |
| 2935 } | 2953 } |
| 2936 return _typeddata._getInt64(_offset + byteOffset); | 2954 var result = _typeddata._getInt64(_offset + byteOffset); |
| 2955 return _ToEndianInt64(result, endian.little_endian); | |
| 2937 } | 2956 } |
| 2938 void setInt64(int byteOffset, int value) { | 2957 void setInt64(int byteOffset, |
| 2958 int value, | |
| 2959 [Endianness endian = Endianness.BIG_ENDIAN]) { | |
| 2939 if (byteOffset < 0 || byteOffset >= length) { | 2960 if (byteOffset < 0 || byteOffset >= length) { |
| 2940 _throwRangeError(byteOffset, length); | 2961 _throwRangeError(byteOffset, length); |
| 2941 } | 2962 } |
| 2942 _typeddata._setInt64(_offset + byteOffset, _toInt64(value)); | 2963 _typeddata._setInt64(_offset + byteOffset, |
| 2964 _ToEndianInt64(_toInt64(value), endian.little_endian)); | |
| 2943 } | 2965 } |
| 2944 | 2966 |
| 2945 int getUint64(int byteOffset) { | 2967 int getUint64(int byteOffset, [Endianness endian = Endianness.BIG_ENDIAN]) { |
| 2946 if (byteOffset < 0 || byteOffset >= length) { | 2968 if (byteOffset < 0 || byteOffset >= length) { |
| 2947 _throwRangeError(byteOffset, length); | 2969 _throwRangeError(byteOffset, length); |
| 2948 } | 2970 } |
| 2949 return _typeddata._getUint64(_offset + byteOffset); | 2971 var result = _typeddata._getUint64(_offset + byteOffset); |
| 2972 return _ToEndianUint64(result, endian.little_endian); | |
| 2950 } | 2973 } |
| 2951 void setUint64(int byteOffset, int value) { | 2974 void setUint64(int byteOffset, |
| 2975 int value, | |
| 2976 [Endianness endian = Endianness.BIG_ENDIAN]) { | |
| 2952 if (byteOffset < 0 || byteOffset >= length) { | 2977 if (byteOffset < 0 || byteOffset >= length) { |
| 2953 _throwRangeError(byteOffset, length); | 2978 _throwRangeError(byteOffset, length); |
| 2954 } | 2979 } |
| 2955 _typeddata._setUint64(_offset + byteOffset, _toUint64(value)); | 2980 _typeddata._setUint64( |
| 2981 _offset + byteOffset, | |
| 2982 _ToEndianUint64(_toUint64(value), endian.little_endian)); | |
| 2956 } | 2983 } |
| 2957 | 2984 |
| 2958 double getFloat32(int byteOffset) { | 2985 double getFloat32(int byteOffset, |
| 2986 [Endianness endian = Endianness.BIG_ENDIAN]) { | |
| 2959 if (byteOffset < 0 || byteOffset >= length) { | 2987 if (byteOffset < 0 || byteOffset >= length) { |
| 2960 _throwRangeError(byteOffset, length); | 2988 _throwRangeError(byteOffset, length); |
| 2961 } | 2989 } |
| 2962 return _typeddata._getFloat32(_offset + byteOffset); | 2990 var result = _typeddata._getFloat32(_offset + byteOffset); |
| 2991 return _ToEndianFloat32(result, endian.little_endian); | |
| 2963 } | 2992 } |
| 2964 void setFloat32(int byteOffset, double value) { | 2993 void setFloat32(int byteOffset, |
| 2994 double value, | |
| 2995 [Endianness endian = Endianness.BIG_ENDIAN]) { | |
| 2965 if (byteOffset < 0 || byteOffset >= length) { | 2996 if (byteOffset < 0 || byteOffset >= length) { |
| 2966 _throwRangeError(byteOffset, length); | 2997 _throwRangeError(byteOffset, length); |
| 2967 } | 2998 } |
| 2968 _typeddata._setFloat32(_offset + byteOffset, value); | 2999 _typeddata._setFloat32(_offset + byteOffset, |
| 3000 _ToEndianFloat32(value, endian.little_endian)); | |
| 2969 } | 3001 } |
| 2970 | 3002 |
| 2971 double getFloat64(int byteOffset) { | 3003 double getFloat64(int byteOffset, |
| 3004 [Endianness endian = Endianness.BIG_ENDIAN]) { | |
| 2972 if (byteOffset < 0 || byteOffset >= length) { | 3005 if (byteOffset < 0 || byteOffset >= length) { |
| 2973 _throwRangeError(byteOffset, length); | 3006 _throwRangeError(byteOffset, length); |
| 2974 } | 3007 } |
| 2975 return _typeddata._getFloat64(_offset + byteOffset); | 3008 var result = _typeddata._getFloat64(_offset + byteOffset); |
| 3009 return _ToEndianFloat64(result, endian.little_endian); | |
| 2976 } | 3010 } |
| 2977 void setFloat64(int byteOffset, double value) { | 3011 void setFloat64(int byteOffset, |
| 3012 double value, | |
| 3013 [Endianness endian = Endianness.BIG_ENDIAN]) { | |
| 2978 if (byteOffset < 0 || byteOffset >= length) { | 3014 if (byteOffset < 0 || byteOffset >= length) { |
| 2979 _throwRangeError(byteOffset, length); | 3015 _throwRangeError(byteOffset, length); |
| 2980 } | 3016 } |
| 2981 _typeddata._setFloat64(_offset + byteOffset, value); | 3017 _typeddata._setFloat64(_offset + byteOffset, |
| 3018 _ToEndianFloat64(value, endian.little_endian)); | |
| 2982 } | 3019 } |
| 2983 | 3020 |
| 2984 Float32x4 getFloat32x4(int byteOffset) { | 3021 Float32x4 getFloat32x4(int byteOffset, |
| 3022 [Endianness endian = Endianness.BIG_ENDIAN]) { | |
| 2985 if (byteOffset < 0 || byteOffset >= length) { | 3023 if (byteOffset < 0 || byteOffset >= length) { |
| 2986 _throwRangeError(byteOffset, length); | 3024 _throwRangeError(byteOffset, length); |
| 2987 } | 3025 } |
| 3026 // TODO(johnmccutchan) : Need to resolve this for endianity. | |
| 2988 return _typeddata._getFloat32x4(_offset + byteOffset); | 3027 return _typeddata._getFloat32x4(_offset + byteOffset); |
| 2989 } | 3028 } |
| 2990 void setFloat32x4(int byteOffset, Float32x4 value) { | 3029 void setFloat32x4(int byteOffset, |
| 3030 Float32x4 value, | |
| 3031 [Endianness endian = Endianness.BIG_ENDIAN]) { | |
| 2991 if (byteOffset < 0 || byteOffset >= length) { | 3032 if (byteOffset < 0 || byteOffset >= length) { |
| 2992 _throwRangeError(byteOffset, length); | 3033 _throwRangeError(byteOffset, length); |
| 2993 } | 3034 } |
| 3035 // TODO(johnmccutchan) : Need to resolve this for endianity. | |
| 2994 _typeddata._setFloat32x4(_offset + byteOffset, value); | 3036 _typeddata._setFloat32x4(_offset + byteOffset, value); |
| 2995 | 3037 |
| 2996 } | 3038 } |
| 2997 | 3039 |
| 3040 | |
| 3041 // Internal utility methods. | |
| 3042 | |
| 3043 static int _ToEndianInt16(int host_value, bool little_endian) | |
|
Mads Ager (google)
2013/04/18 08:10:44
I think we usually start with a lower-case letter
siva
2013/04/18 17:17:47
Done.
| |
| 3044 native "ByteData_ToEndianInt16"; | |
| 3045 static int _ToEndianUint16(int host_value, bool little_endian) | |
| 3046 native "ByteData_ToEndianUint16"; | |
| 3047 static int _ToEndianInt32(int host_value, bool little_endian) | |
| 3048 native "ByteData_ToEndianInt32"; | |
| 3049 static int _ToEndianUint32(int host_value, bool little_endian) | |
| 3050 native "ByteData_ToEndianUint32"; | |
| 3051 static int _ToEndianInt64(int host_value, bool little_endian) | |
| 3052 native "ByteData_ToEndianInt64"; | |
| 3053 static int _ToEndianUint64(int host_value, bool little_endian) | |
| 3054 native "ByteData_ToEndianUint64"; | |
| 3055 static double _ToEndianFloat32(double host_value, bool little_endian) | |
| 3056 native "ByteData_ToEndianFloat32"; | |
| 3057 static double _ToEndianFloat64(double host_value, bool little_endian) | |
| 3058 native "ByteData_ToEndianFloat64"; | |
| 3059 | |
| 3060 | |
| 2998 final TypedData _typeddata; | 3061 final TypedData _typeddata; |
| 2999 final int _offset; | 3062 final int _offset; |
| 3000 final int length; | 3063 final int length; |
| 3001 } | 3064 } |
| 3002 | 3065 |
| 3003 | 3066 |
| 3004 // Top level utility methods. | 3067 // Top level utility methods. |
| 3005 int _toInt(int value, int mask) { | 3068 int _toInt(int value, int mask) { |
| 3006 value &= mask; | 3069 value &= mask; |
| 3007 if (value > (mask >> 1)) value -= mask + 1; | 3070 if (value > (mask >> 1)) value -= mask + 1; |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3074 return value; | 3137 return value; |
| 3075 } | 3138 } |
| 3076 return object; | 3139 return object; |
| 3077 } | 3140 } |
| 3078 | 3141 |
| 3079 | 3142 |
| 3080 void _throwRangeError(int index, int length) { | 3143 void _throwRangeError(int index, int length) { |
| 3081 String message = "$index must be in the range [0..$length)"; | 3144 String message = "$index must be in the range [0..$length)"; |
| 3082 throw new RangeError(message); | 3145 throw new RangeError(message); |
| 3083 } | 3146 } |
| OLD | NEW |