MCPcopy Create free account
hub / github.com/RoaringBitmap/roaring / advanceUntil

Function advanceUntil

setutil.go:405–458  ·  view source on GitHub ↗
(
	array []uint16,
	pos int,
	length int,
	min uint16,
)

Source from the content-addressed store, hash-verified

403}
404
405func advanceUntil(
406 array []uint16,
407 pos int,
408 length int,
409 min uint16,
410) int {
411 lower := pos + 1
412
413 if lower >= length || array[lower] >= min {
414 return lower
415 }
416
417 spansize := 1
418
419 for lower+spansize < length && array[lower+spansize] < min {
420 spansize *= 2
421 }
422 var upper int
423 if lower+spansize < length {
424 upper = lower + spansize
425 } else {
426 upper = length - 1
427 }
428
429 if array[upper] == min {
430 return upper
431 }
432
433 if array[upper] < min {
434 // means
435 // array
436 // has no
437 // item
438 // >= min
439 // pos = array.length;
440 return length
441 }
442
443 // we know that the next-smallest span was too small
444 lower += (spansize >> 1)
445
446 mid := 0
447 for lower+1 != upper {
448 mid = (lower + upper) >> 1
449 if array[mid] == min {
450 return mid
451 } else if array[mid] < min {
452 lower = mid
453 } else {
454 upper = mid
455 }
456 }
457 return upper
458}
459
460func onesidedgallopingintersect2by2(
461 smallset []uint16,

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…