| 188 | |
| 189 | template<class IndexType> |
| 190 | forceinline void |
| 191 | BitSet<IndexType>::intersect_with_masks(const BitSetData* a, |
| 192 | const BitSetData* b) { |
| 193 | assert(_limit > 0U); |
| 194 | for (IndexType i = _limit; i--; ) { |
| 195 | assert(!_bits[i].none()); |
| 196 | BitSetData w_i = _bits[i]; |
| 197 | IndexType offset = _index[i]; |
| 198 | BitSetData w_o = BitSetData::o(a[offset], b[offset]); |
| 199 | BitSetData w_a = BitSetData::a(w_i,w_o); |
| 200 | replace_and_decrease(i,w_a); |
| 201 | assert(i == _limit || !_bits[i].none()); |
| 202 | } |
| 203 | } |
| 204 | |
| 205 | template<class IndexType> |
| 206 | forceinline void |