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

Side by Side Diff: pkg/fixnum/lib/src/int64.dart

Issue 875323002: Cleanup IntX to implement Comparable<FixNum> which is more descriptive than Comparable as it would … (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 11 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
« no previous file with comments | « pkg/fixnum/lib/src/int32.dart ('k') | pkg/fixnum/lib/src/intx.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 part of fixnum; 5 part of fixnum;
6 6
7 /** 7 /**
8 * An immutable 64-bit signed integer, in the range [-2^63, 2^63 - 1]. 8 * An immutable 64-bit signed integer, in the range [-2^63, 2^63 - 1].
9 * Arithmetic operations may overflow in order to maintain this range. 9 * Arithmetic operations may overflow in order to maintain this range.
10 */ 10 */
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 o = new Int64(other); 462 o = new Int64(other);
463 } else if (other is Int32) { 463 } else if (other is Int32) {
464 o = other.toInt64(); 464 o = other.toInt64();
465 } 465 }
466 if (o != null) { 466 if (o != null) {
467 return _l == o._l && _m == o._m && _h == o._h; 467 return _l == o._l && _m == o._m && _h == o._h;
468 } 468 }
469 return false; 469 return false;
470 } 470 }
471 471
472 int compareTo(Comparable other) { 472 int compareTo(IntX other) =>_compareTo(other);
473
474 int _compareTo(other) {
473 Int64 o = _promote(other); 475 Int64 o = _promote(other);
474 int signa = _h >> (_BITS2 - 1); 476 int signa = _h >> (_BITS2 - 1);
475 int signb = o._h >> (_BITS2 - 1); 477 int signb = o._h >> (_BITS2 - 1);
476 if (signa != signb) { 478 if (signa != signb) {
477 return signa == 0 ? 1 : -1; 479 return signa == 0 ? 1 : -1;
478 } 480 }
479 if (_h > o._h) { 481 if (_h > o._h) {
480 return 1; 482 return 1;
481 } else if (_h < o._h) { 483 } else if (_h < o._h) {
482 return -1; 484 return -1;
483 } 485 }
484 if (_m > o._m) { 486 if (_m > o._m) {
485 return 1; 487 return 1;
486 } else if (_m < o._m) { 488 } else if (_m < o._m) {
487 return -1; 489 return -1;
488 } 490 }
489 if (_l > o._l) { 491 if (_l > o._l) {
490 return 1; 492 return 1;
491 } else if (_l < o._l) { 493 } else if (_l < o._l) {
492 return -1; 494 return -1;
493 } 495 }
494 return 0; 496 return 0;
495 } 497 }
496 498
497 bool operator <(other) { 499 bool operator <(other) => _compareTo(other) < 0;
498 return this.compareTo(other) < 0; 500 bool operator <=(other) => _compareTo(other) <= 0;
499 } 501 bool operator >(other) => this._compareTo(other) > 0;
500 502 bool operator >=(other) => _compareTo(other) >= 0;
501 bool operator <=(other) {
502 return this.compareTo(other) <= 0;
503 }
504
505 bool operator >(other) {
506 return this.compareTo(other) > 0;
507 }
508
509 bool operator >=(other) {
510 return this.compareTo(other) >= 0;
511 }
512 503
513 bool get isEven => (_l & 0x1) == 0; 504 bool get isEven => (_l & 0x1) == 0;
514 bool get isMaxValue => (_h == _MASK2 >> 1) && _m == _MASK && _l == _MASK; 505 bool get isMaxValue => (_h == _MASK2 >> 1) && _m == _MASK && _l == _MASK;
515 bool get isMinValue => _h == _SIGN_BIT_MASK && _m == 0 && _l == 0; 506 bool get isMinValue => _h == _SIGN_BIT_MASK && _m == 0 && _l == 0;
516 bool get isNegative => (_h & _SIGN_BIT_MASK) != 0; 507 bool get isNegative => (_h & _SIGN_BIT_MASK) != 0;
517 bool get isOdd => (_l & 0x1) == 1; 508 bool get isOdd => (_l & 0x1) == 1;
518 bool get isZero => _h == 0 && _m == 0 && _l == 0; 509 bool get isZero => _h == 0 && _m == 0 && _l == 0;
519 510
520 int get bitLength { 511 int get bitLength {
521 if (isZero) return 0; 512 if (isZero) return 0;
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after
1044 if (r0 == 0 && r1 == 0 && r2 == 0) { 1035 if (r0 == 0 && r1 == 0 && r2 == 0) {
1045 return ZERO; 1036 return ZERO;
1046 } else { 1037 } else {
1047 return _sub(b0, b1, b2, r0, r1, r2); 1038 return _sub(b0, b1, b2, r0, r1, r2);
1048 } 1039 }
1049 } else { 1040 } else {
1050 return _negate(r0, r1, r2); 1041 return _negate(r0, r1, r2);
1051 } 1042 }
1052 } 1043 }
1053 } 1044 }
OLDNEW
« no previous file with comments | « pkg/fixnum/lib/src/int32.dart ('k') | pkg/fixnum/lib/src/intx.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698