undirtied-chunks-iter.go 492 B

123456789101112131415161718192021222324252627
  1. package torrent
  2. import (
  3. typedRoaring "github.com/anacrolix/torrent/typed-roaring"
  4. )
  5. func iterBitmapUnsetInRange[T typedRoaring.BitConstraint](
  6. it *typedRoaring.Iterator[T],
  7. start, end T,
  8. f func(T),
  9. ) {
  10. it.AdvanceIfNeeded(start)
  11. lastDirty := start - 1
  12. for it.HasNext() {
  13. next := it.Next()
  14. if next >= end {
  15. break
  16. }
  17. for index := lastDirty + 1; index < next; index++ {
  18. f(index)
  19. }
  20. lastDirty = next
  21. }
  22. for index := lastDirty + 1; index < end; index++ {
  23. f(index)
  24. }
  25. }