| 356 | } |
| 357 | |
| 358 | BitField BitField::operator ^(const BitField& bitField) const |
| 359 | { |
| 360 | auto chunks = std::vector<ChunkType>(std::max(_chunks.size(), bitField.GetChunks().size())); |
| 361 | |
| 362 | for (unsigned int chunkID = 0; chunkID < chunks.size(); chunkID++) |
| 363 | { |
| 364 | if (chunkID < _chunks.size() && chunkID < bitField.GetChunks().size()) |
| 365 | { |
| 366 | chunks[chunkID] = _chunks[chunkID] ^ bitField.GetChunks()[chunkID]; |
| 367 | } |
| 368 | else if (chunkID < _chunks.size()) |
| 369 | { |
| 370 | chunks[chunkID] = _chunks[chunkID]; |
| 371 | } |
| 372 | else if (chunkID < bitField.GetChunks().size()) |
| 373 | { |
| 374 | chunks[chunkID] = bitField.GetChunks()[chunkID]; |
| 375 | } |
| 376 | } |
| 377 | |
| 378 | return BitField(chunks, std::max(_size, bitField.GetSize())); |
| 379 | } |
| 380 | |
| 381 | BitField BitField::operator ~() const |
| 382 | { |