(blockSize int, fn func([]int))
| 134 | } |
| 135 | |
| 136 | func (s *Set) IterBlockCallback(blockSize int, fn func([]int)) { |
| 137 | block := make([]int, 0, blockSize) |
| 138 | j := 0 |
| 139 | base := 0 |
| 140 | df := 0 |
| 141 | k := uint(0) |
| 142 | for _, b := range s.data { |
| 143 | df = df | (int(b&mask) << k) |
| 144 | k += bits |
| 145 | if b < cbit { |
| 146 | base += df |
| 147 | block = append(block, base) |
| 148 | df = 0 |
| 149 | k = 0 |
| 150 | j += 1 |
| 151 | if cap(block) == len(block) { |
| 152 | fn(block) |
| 153 | block = block[0:0:blockSize] |
| 154 | } |
| 155 | } |
| 156 | } |
| 157 | if len(block) > 0 { |
| 158 | fn(block) |
| 159 | } |
| 160 | } |