MCPcopy
hub / github.com/google/gvisor / RemoveFullRangeWith

Method RemoveFullRangeWith

pkg/segment/set.go:651–672  ·  view source on GitHub ↗

RemoveFullRangeWith is equivalent to RemoveRangeWith, except that if any key in the given range does not correspond to a segment, RemoveFullRangeWith panics.

(r Range, f func(seg Iterator))

Source from the content-addressed store, hash-verified

649// in the given range does not correspond to a segment, RemoveFullRangeWith
650// panics.
651func (s *Set) RemoveFullRangeWith(r Range, f func(seg Iterator)) GapIterator {
652 seg := s.FindSegment(r.Start)
653 if !seg.Ok() {
654 panic(fmt.Sprintf("missing segment at %v", r.Start))
655 }
656 seg = s.SplitBefore(seg, r.Start)
657 for {
658 seg = s.SplitAfter(seg, r.End)
659 if f != nil {
660 f(seg)
661 }
662 end := seg.End()
663 gap := s.Remove(seg)
664 if r.End <= end {
665 return gap
666 }
667 seg = gap.NextSegment()
668 if !seg.Ok() || seg.Start() != end {
669 panic(fmt.Sprintf("missing segment at %v", end))
670 }
671 }
672}
673
674// MoveFrom moves all segments from s2 to s, replacing all existing segments in
675// s and leaving s2 empty.

Callers 1

RemoveFullRangeMethod · 0.95

Calls 9

FindSegmentMethod · 0.95
SplitBeforeMethod · 0.95
SplitAfterMethod · 0.95
RemoveMethod · 0.95
StartMethod · 0.65
fFunction · 0.50
OkMethod · 0.45
EndMethod · 0.45
NextSegmentMethod · 0.45

Tested by

no test coverage detected