(value2 *arrayContainer)
| 704 | } |
| 705 | |
| 706 | func (bc *bitmapContainer) xorArray(value2 *arrayContainer) container { |
| 707 | answer := bc.clone().(*bitmapContainer) |
| 708 | c := value2.getCardinality() |
| 709 | for k := 0; k < c; k++ { |
| 710 | vc := value2.content[k] |
| 711 | index := uint(vc) >> 6 |
| 712 | abi := answer.bitmap[index] |
| 713 | mask := uint64(1) << (vc % 64) |
| 714 | answer.cardinality += 1 - 2*int((abi&mask)>>(vc%64)) |
| 715 | answer.bitmap[index] = abi ^ mask |
| 716 | } |
| 717 | if answer.cardinality <= arrayDefaultMaxSize { |
| 718 | return answer.toArrayContainer() |
| 719 | } |
| 720 | return answer |
| 721 | } |
| 722 | |
| 723 | func (bc *bitmapContainer) rank(x uint16) int { |
| 724 | // TODO: rewrite in assembly |
no test coverage detected