manyiterator.go 539 B

1234567891011121314151617181920212223242526272829303132
  1. package roaring
  2. type manyIterable interface {
  3. nextMany(hs uint32, buf []uint32) int
  4. nextMany64(hs uint64, buf []uint64) int
  5. }
  6. func (si *shortIterator) nextMany(hs uint32, buf []uint32) int {
  7. n := 0
  8. l := si.loc
  9. s := si.slice
  10. for n < len(buf) && l < len(s) {
  11. buf[n] = uint32(s[l]) | hs
  12. l++
  13. n++
  14. }
  15. si.loc = l
  16. return n
  17. }
  18. func (si *shortIterator) nextMany64(hs uint64, buf []uint64) int {
  19. n := 0
  20. l := si.loc
  21. s := si.slice
  22. for n < len(buf) && l < len(s) {
  23. buf[n] = uint64(s[l]) | hs
  24. l++
  25. n++
  26. }
  27. si.loc = l
  28. return n
  29. }