| 116 | UnionOp() {} |
| 117 | |
| 118 | unique_ptr<coding::CompressedBitVector> operator()(coding::DenseCBV const & a, coding::DenseCBV const & b) const |
| 119 | { |
| 120 | size_t const sizeA = a.NumBitGroups(); |
| 121 | size_t const sizeB = b.NumBitGroups(); |
| 122 | |
| 123 | size_t commonSize = min(sizeA, sizeB); |
| 124 | size_t resultSize = max(sizeA, sizeB); |
| 125 | vector<uint64_t> resGroups(resultSize); |
| 126 | for (size_t i = 0; i < commonSize; ++i) |
| 127 | resGroups[i] = a.GetBitGroup(i) | b.GetBitGroup(i); |
| 128 | if (a.NumBitGroups() == resultSize) |
| 129 | for (size_t i = commonSize; i < resultSize; ++i) |
| 130 | resGroups[i] = a.GetBitGroup(i); |
| 131 | else |
| 132 | for (size_t i = commonSize; i < resultSize; ++i) |
| 133 | resGroups[i] = b.GetBitGroup(i); |
| 134 | return CompressedBitVectorBuilder::FromBitGroups(std::move(resGroups)); |
| 135 | } |
| 136 | |
| 137 | unique_ptr<coding::CompressedBitVector> operator()(coding::DenseCBV const & a, coding::SparseCBV const & b) const |
| 138 | { |
nothing calls this directly
no test coverage detected