(ra1, ra2 *roaringArray, start, last uint16)
| 480 | } |
| 481 | |
| 482 | func lazyOrOnRange(ra1, ra2 *roaringArray, start, last uint16) *roaringArray { |
| 483 | answer := newRoaringArray() |
| 484 | length1 := ra1.size() |
| 485 | length2 := ra2.size() |
| 486 | |
| 487 | idx1 := parNaiveStartAt(ra1, start, last) |
| 488 | idx2 := parNaiveStartAt(ra2, start, last) |
| 489 | |
| 490 | var key1 uint16 |
| 491 | var key2 uint16 |
| 492 | if idx1 < length1 && idx2 < length2 { |
| 493 | key1 = ra1.getKeyAtIndex(idx1) |
| 494 | key2 = ra2.getKeyAtIndex(idx2) |
| 495 | |
| 496 | for key1 <= last && key2 <= last { |
| 497 | |
| 498 | if key1 < key2 { |
| 499 | answer.appendCopy(*ra1, idx1) |
| 500 | idx1++ |
| 501 | if idx1 == length1 { |
| 502 | break |
| 503 | } |
| 504 | key1 = ra1.getKeyAtIndex(idx1) |
| 505 | } else if key1 > key2 { |
| 506 | answer.appendCopy(*ra2, idx2) |
| 507 | idx2++ |
| 508 | if idx2 == length2 { |
| 509 | break |
| 510 | } |
| 511 | key2 = ra2.getKeyAtIndex(idx2) |
| 512 | } else { |
| 513 | c1 := ra1.getFastContainerAtIndex(idx1, false) |
| 514 | |
| 515 | answer.appendContainer(key1, c1.lazyOR(ra2.getContainerAtIndex(idx2)), false) |
| 516 | idx1++ |
| 517 | idx2++ |
| 518 | if idx1 == length1 || idx2 == length2 { |
| 519 | break |
| 520 | } |
| 521 | |
| 522 | key1 = ra1.getKeyAtIndex(idx1) |
| 523 | key2 = ra2.getKeyAtIndex(idx2) |
| 524 | } |
| 525 | } |
| 526 | } |
| 527 | |
| 528 | if idx2 < length2 { |
| 529 | key2 = ra2.getKeyAtIndex(idx2) |
| 530 | for key2 <= last { |
| 531 | answer.appendCopy(*ra2, idx2) |
| 532 | idx2++ |
| 533 | if idx2 == length2 { |
| 534 | break |
| 535 | } |
| 536 | key2 = ra2.getKeyAtIndex(idx2) |
| 537 | } |
| 538 | } |
| 539 |
no test coverage detected
searching dependent graphs…