Austin Schuh | 272c613 | 2020-11-14 16:37:52 -0800 | [diff] [blame] | 1 | export function createLong(low: number, high: number): Long { |
| 2 | return Long.create(low, high); |
| 3 | } |
| 4 | |
| 5 | export class Long { |
| 6 | static readonly ZERO = new Long(0, 0) |
| 7 | low: number |
| 8 | high: number |
| 9 | constructor(low: number, high: number) { |
| 10 | this.low = low | 0; |
| 11 | this.high = high | 0; |
| 12 | } |
| 13 | static create(low: number, high: number): Long { |
| 14 | // Special-case zero to avoid GC overhead for default values |
| 15 | return low == 0 && high == 0 ? Long.ZERO : new Long(low, high); |
| 16 | } |
| 17 | toFloat64(): number { |
| 18 | return (this.low >>> 0) + this.high * 0x100000000; |
| 19 | } |
| 20 | equals(other: Long): boolean { |
| 21 | return this.low == other.low && this.high == other.high; |
| 22 | } |
| 23 | } |