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

Method iandNotRun16

bitmapcontainer.go:1023–1046  ·  view source on GitHub ↗
(rc *runContainer16)

Source from the content-addressed store, hash-verified

1021}
1022
1023func (bc *bitmapContainer) iandNotRun16(rc *runContainer16) container {
1024 if rc.isEmpty() || bc.isEmpty() {
1025 // Nothing to do.
1026 return bc
1027 }
1028
1029 wordRangeStart := rc.iv[0].start / 64
1030 wordRangeEnd := (rc.iv[len(rc.iv)-1].last()) / 64 // inclusive
1031
1032 cardinalityChange := popcntSlice(bc.bitmap[wordRangeStart : wordRangeEnd+1]) // before cardinality - after cardinality (for word range)
1033
1034 for _, iv := range rc.iv {
1035 resetBitmapRange(bc.bitmap, int(iv.start), int(iv.last())+1)
1036 }
1037
1038 cardinalityChange -= popcntSlice(bc.bitmap[wordRangeStart : wordRangeEnd+1])
1039
1040 bc.cardinality -= int(cardinalityChange)
1041
1042 if bc.getCardinality() <= arrayDefaultMaxSize {
1043 return bc.toArrayContainer()
1044 }
1045 return bc
1046}
1047
1048func (bc *bitmapContainer) andNotArray(value2 *arrayContainer) container {
1049 answer := bc.clone().(*bitmapContainer)

Callers 1

iandNotMethod · 0.95

Calls 7

isEmptyMethod · 0.95
getCardinalityMethod · 0.95
toArrayContainerMethod · 0.95
resetBitmapRangeFunction · 0.85
lastMethod · 0.80
popcntSliceFunction · 0.70
isEmptyMethod · 0.65

Tested by

no test coverage detected