Class RangeBitmap.Appender

java.lang.Object
org.roaringbitmap.RangeBitmap.Appender
Enclosing class:
RangeBitmap

public static final class RangeBitmap.Appender extends Object
Builder for constructing immutable RangeBitmaps
  • Field Details

    • GROWTH

      private static final int GROWTH
      See Also:
    • bufferSupplier

      private final IntFunction<ByteBuffer> bufferSupplier
    • bufferCleaner

      private final Consumer<ByteBuffer> bufferCleaner
    • bytesPerMask

      private final byte bytesPerMask
    • rangeMask

      private final long rangeMask
    • slice

      private final Container[] slice
    • maskBuffer

      private ByteBuffer maskBuffer
    • containers

      private ByteBuffer containers
    • bufferPos

      private int bufferPos
    • mask

      private long mask
    • rid

      private int rid
    • key

      private int key
    • serializedContainerSize

      private int serializedContainerSize
    • dirty

      private boolean dirty
  • Constructor Details

  • Method Details

    • build

      public RangeBitmap build(IntFunction<ByteBuffer> supplier)
      Converts the appender into an immutable range index.
      Parameters:
      supplier - provides an appropriate ByteBuffer to store into
      Returns:
      a queriable RangeBitmap
    • build

      public RangeBitmap build()
      see build(IntFunction)
    • build

      public RangeBitmap build(ByteBuffer buffer)
      Converts the appender into an immutable range index, using the supplied ByteBuffer.
      Parameters:
      buffer - a little endian buffer which must have sufficient capacity for the appended values.
      Returns:
      a queriable RangeBitmap
    • clear

      public void clear()
      Call this to reuse the appender and its buffers
    • serializedSizeInBytes

      public int serializedSizeInBytes()
      Returns the size of the RangeBitmap on disk.
      Returns:
      the serialized size in bytes.
    • serialize

      public void serialize(ByteBuffer buffer)
      Serializes the bitmap to the buffer without materialising it. The user should call serializedSizeInBytes to size the buffer appropriately.

      It is not guaranteed that all values will be written

      Parameters:
      buffer - expected to be large enough to contain the bitmap.
    • add

      public void add(long value)
      Adds the value and associates it with the current row index.
      Parameters:
      value - the value, will be rejected if greater than max value.
    • flush

      private boolean flush()
    • append

      private void append()
    • maskBufferGrowth

      private int maskBufferGrowth()
    • containerGrowth

      private int containerGrowth()
    • growBuffer

      private ByteBuffer growBuffer(ByteBuffer buffer, int growth)
    • containerForSlice

      private Container containerForSlice(int sliceNumber)
    • rangeMask

      private static long rangeMask(long maxValue)
      Produces a mask covering the smallest number of bytes required to represent the sliced max value.
      Parameters:
      maxValue - the maximum value this bitmap should support.
      Returns:
      a mask with a multiple of 8 contiguous bits set.
    • bytesPerMask

      private static byte bytesPerMask(long maxValue)