Compares two numbers using serial arithmetic. The numbers are assumed to be 32 bit unsigned integers stored in longs. @param serial1 The first integer @param serial2 The second integer @return 0 if the 2 numbers are equal, a positive number if serial1 is greater than serial2, and a negative number
(long serial1, long serial2)
| 28 | * @throws IllegalArgumentException serial1 or serial2 is out of range |
| 29 | */ |
| 30 | public static int |
| 31 | compare(long serial1, long serial2) { |
| 32 | if (serial1 < 0 || serial1 > MAX32) |
| 33 | throw new IllegalArgumentException(serial1 + " out of range"); |
| 34 | if (serial2 < 0 || serial2 > MAX32) |
| 35 | throw new IllegalArgumentException(serial2 + " out of range"); |
| 36 | long diff = serial1 - serial2; |
| 37 | if (diff >= MAX32) |
| 38 | diff -= (MAX32 + 1); |
| 39 | else if (diff < -MAX32) |
| 40 | diff += (MAX32 + 1); |
| 41 | return (int)diff; |
| 42 | } |
| 43 | |
| 44 | /** |
| 45 | * Increments a serial number. The number is assumed to be a 32 bit unsigned |
no outgoing calls
no test coverage detected