MCPcopy
hub / github.com/RoaringBitmap/roaring / lazyorArray

Method lazyorArray

arraycontainer.go:526–550  ·  view source on GitHub ↗
(value2 *arrayContainer)

Source from the content-addressed store, hash-verified

524}
525
526func (ac *arrayContainer) lazyorArray(value2 *arrayContainer) container {
527 value1 := ac
528 maxPossibleCardinality := value1.getCardinality() + value2.getCardinality()
529 if maxPossibleCardinality > arrayLazyLowerBound { // it could be a bitmap!
530 bc := newBitmapContainer()
531 for k := 0; k < len(value2.content); k++ {
532 v := value2.content[k]
533 i := uint(v) >> 6
534 mask := uint64(1) << (v % 64)
535 bc.bitmap[i] |= mask
536 }
537 for k := 0; k < len(ac.content); k++ {
538 v := ac.content[k]
539 i := uint(v) >> 6
540 mask := uint64(1) << (v % 64)
541 bc.bitmap[i] |= mask
542 }
543 bc.cardinality = invalidCardinality
544 return bc
545 }
546 answer := newArrayContainerCapacity(maxPossibleCardinality)
547 nl := union2by2(value1.content, value2.content, answer.content)
548 answer.content = answer.content[:nl] // reslice to match actual used capacity
549 return answer
550}
551
552func (ac *arrayContainer) and(a container) container {
553 switch x := a.(type) {

Callers 2

lazyORMethod · 0.95
TestArrayContainerEtc070Function · 0.80

Calls 4

newBitmapContainerFunction · 0.85
union2by2Function · 0.70
getCardinalityMethod · 0.65

Tested by 1

TestArrayContainerEtc070Function · 0.64