serialization.go 489 B

12345678910111213141516171819
  1. package roaring
  2. import (
  3. "encoding/binary"
  4. "io"
  5. )
  6. // writeTo for runContainer16 follows this
  7. // spec: https://github.com/RoaringBitmap/RoaringFormatSpec
  8. //
  9. func (b *runContainer16) writeTo(stream io.Writer) (int, error) {
  10. buf := make([]byte, 2+4*len(b.iv))
  11. binary.LittleEndian.PutUint16(buf[0:], uint16(len(b.iv)))
  12. for i, v := range b.iv {
  13. binary.LittleEndian.PutUint16(buf[2+i*4:], v.start)
  14. binary.LittleEndian.PutUint16(buf[2+2+i*4:], v.length)
  15. }
  16. return stream.Write(buf)
  17. }