| 484 | } |
| 485 | |
| 486 | void reset(unsigned Idx) { |
| 487 | if (Elements.empty()) |
| 488 | return; |
| 489 | |
| 490 | unsigned ElementIndex = Idx / ElementSize; |
| 491 | ElementListIter ElementIter = FindLowerBound(ElementIndex); |
| 492 | |
| 493 | // If we can't find an element that is supposed to contain this bit, there |
| 494 | // is nothing more to do. |
| 495 | if (ElementIter == Elements.end() || |
| 496 | ElementIter->index() != ElementIndex) |
| 497 | return; |
| 498 | ElementIter->reset(Idx % ElementSize); |
| 499 | |
| 500 | // When the element is zeroed out, delete it. |
| 501 | if (ElementIter->empty()) { |
| 502 | ++CurrElementIter; |
| 503 | Elements.erase(ElementIter); |
| 504 | } |
| 505 | } |
| 506 | |
| 507 | void set(unsigned Idx) { |
| 508 | unsigned ElementIndex = Idx / ElementSize; |