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 /** | 5 /** |
6 * An immutable 32-bit signed integer, in the range [-2^31, 2^31 - 1]. | 6 * An immutable 32-bit signed integer, in the range [-2^31, 2^31 - 1]. |
7 * Arithmetic operations may overflow in order to maintain this range. | 7 * Arithmetic operations may overflow in order to maintain this range. |
8 */ | 8 */ |
9 class int32 implements intx { | 9 class int32 implements intx { |
10 | 10 |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 */ | 136 */ |
137 int32.fromInt(int i) : _i = (i & 0x7fffffff) - (i & 0x80000000); | 137 int32.fromInt(int i) : _i = (i & 0x7fffffff) - (i & 0x80000000); |
138 | 138 |
139 // Convert an [int] or [intx] to an [int32]. Note that an [int64] | 139 // Convert an [int] or [intx] to an [int32]. Note that an [int64] |
140 // will be truncated. | 140 // will be truncated. |
141 int _convert(other) { | 141 int _convert(other) { |
142 if (other == null) { | 142 if (other == null) { |
143 throw new NullPointerException(); | 143 throw new NullPointerException(); |
144 } else if (other is intx) { | 144 } else if (other is intx) { |
145 return other.toInt32()._i; | 145 return other.toInt32()._i; |
146 } else if (other is int) { | 146 } else if (other is num) { |
147 return other; | 147 return other.toInt(); |
148 } else { | 148 } else { |
149 throw new Exception("Can't retrieve 32-bit int from $other"); | 149 throw new Exception("Can't retrieve 32-bit int from $other"); |
150 } | 150 } |
151 } | 151 } |
152 | 152 |
153 // The +, -, * , &, |, and ^ operaters deal with types as follows: | 153 // The +, -, * , &, |, and ^ operaters deal with types as follows: |
154 // | 154 // |
155 // int32 + int => int32 | 155 // int32 + int => int32 |
156 // int32 + int32 => int32 | 156 // int32 + int32 => int32 |
157 // int32 + int64 => int64 | 157 // int32 + int64 => int64 |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
345 } | 345 } |
346 | 346 |
347 int toInt() => _i; | 347 int toInt() => _i; |
348 int32 toInt32() => this; | 348 int32 toInt32() => this; |
349 int64 toInt64() => new int64.fromInt(_i); | 349 int64 toInt64() => new int64.fromInt(_i); |
350 | 350 |
351 String toString() => _i.toString(); | 351 String toString() => _i.toString(); |
352 String toHexString() => _i.toRadixString(16); | 352 String toHexString() => _i.toRadixString(16); |
353 String toRadixString(int radix) => _i.toRadixString(radix); | 353 String toRadixString(int radix) => _i.toRadixString(radix); |
354 } | 354 } |
OLD | NEW |