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

Method xorBitmap

bitmapcontainer.go:744–762  ·  view source on GitHub ↗
(value2 *bitmapContainer)

Source from the content-addressed store, hash-verified

742}
743
744func (bc *bitmapContainer) xorBitmap(value2 *bitmapContainer) container {
745 newCardinality := int(popcntXorSlice(bc.bitmap, value2.bitmap))
746
747 if newCardinality > arrayDefaultMaxSize {
748 answer := newBitmapContainer()
749 for k := 0; k < len(answer.bitmap); k++ {
750 answer.bitmap[k] = bc.bitmap[k] ^ value2.bitmap[k]
751 }
752 answer.cardinality = newCardinality
753 if answer.isFull() {
754 return newRunContainer16Range(0, MaxUint16)
755 }
756 return answer
757 }
758 ac := newArrayContainerSize(newCardinality)
759 fillArrayXOR(ac.content, bc.bitmap, value2.bitmap)
760 ac.content = ac.content[:newCardinality]
761 return ac
762}
763
764func (bc *bitmapContainer) and(a container) container {
765 switch x := a.(type) {

Callers 1

xorMethod · 0.95

Calls 6

newBitmapContainerFunction · 0.85
newRunContainer16RangeFunction · 0.85
newArrayContainerSizeFunction · 0.85
fillArrayXORFunction · 0.85
popcntXorSliceFunction · 0.70
isFullMethod · 0.65

Tested by

no test coverage detected