EncodeUvarintDescending encodes the uint64 value so that it sorts in reverse order, from largest to smallest.
(b []byte, v uint64)
| 458 | // EncodeUvarintDescending encodes the uint64 value so that it sorts in |
| 459 | // reverse order, from largest to smallest. |
| 460 | func EncodeUvarintDescending(b []byte, v uint64) []byte { |
| 461 | switch { |
| 462 | case v == 0: |
| 463 | return append(b, IntMin+8) |
| 464 | case v <= 0xff: |
| 465 | v = ^v |
| 466 | return append(b, IntMin+7, byte(v)) |
| 467 | case v <= 0xffff: |
| 468 | v = ^v |
| 469 | return append(b, IntMin+6, byte(v>>8), byte(v)) |
| 470 | case v <= 0xffffff: |
| 471 | v = ^v |
| 472 | return append(b, IntMin+5, byte(v>>16), byte(v>>8), byte(v)) |
| 473 | case v <= 0xffffffff: |
| 474 | v = ^v |
| 475 | return append(b, IntMin+4, byte(v>>24), byte(v>>16), byte(v>>8), byte(v)) |
| 476 | case v <= 0xffffffffff: |
| 477 | v = ^v |
| 478 | return append(b, IntMin+3, byte(v>>32), byte(v>>24), byte(v>>16), byte(v>>8), |
| 479 | byte(v)) |
| 480 | case v <= 0xffffffffffff: |
| 481 | v = ^v |
| 482 | return append(b, IntMin+2, byte(v>>40), byte(v>>32), byte(v>>24), byte(v>>16), |
| 483 | byte(v>>8), byte(v)) |
| 484 | case v <= 0xffffffffffffff: |
| 485 | v = ^v |
| 486 | return append(b, IntMin+1, byte(v>>48), byte(v>>40), byte(v>>32), byte(v>>24), |
| 487 | byte(v>>16), byte(v>>8), byte(v)) |
| 488 | default: |
| 489 | v = ^v |
| 490 | return append(b, IntMin, byte(v>>56), byte(v>>48), byte(v>>40), byte(v>>32), |
| 491 | byte(v>>24), byte(v>>16), byte(v>>8), byte(v)) |
| 492 | } |
| 493 | } |
| 494 | |
| 495 | // highestByteIndex returns the index (0 to 7) of the highest nonzero byte in v. |
| 496 | func highestByteIndex(v uint64) int { |
no outgoing calls
no test coverage detected
searching dependent graphs…