24 lines
319 B
Go
24 lines
319 B
Go
package mmap_span
|
|
|
|
type sizer interface {
|
|
Size() int64
|
|
}
|
|
|
|
type (
|
|
span []sizer
|
|
)
|
|
|
|
func (me span) ApplyTo(off int64, f func(int64, sizer) (stop bool)) {
|
|
for _, interval := range me {
|
|
iSize := interval.Size()
|
|
if off >= iSize {
|
|
off -= iSize
|
|
} else {
|
|
if f(off, interval) {
|
|
return
|
|
}
|
|
off = 0
|
|
}
|
|
}
|
|
}
|