in qf.go [84:110]
func (qf *Filter) eachHashValue(cb func(uint64, uint64)) {
// a stack of q values
stack := []uint64{}
// let's start from an unshifted value
start := uint64(0)
for qf.read(start).shifted() {
right(&start, qf.size)
}
end := start
left(&end, qf.size)
for i := start; true; right(&i, qf.size) {
sd := qf.read(i)
if !sd.continuation() && len(stack) > 0 {
stack = stack[1:]
}
if sd.occupied() {
stack = append(stack, i)
}
if len(stack) > 0 {
r := sd.r()
cb((stack[0]<<qf.rBits)|(r&qf.rMask), i)
}
if i == end {
break
}
}
}