Package org.apache.lucene.util

# Class IntBlockPool

java.lang.Object
org.apache.lucene.util.IntBlockPool

public class IntBlockPool extends Object
A pool for int blocks similar to `ByteBlockPool`

NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static class`
  `IntBlockPool.Allocator`
  Abstract class for allocating and freeing int blocks.
  `static final class`
  `IntBlockPool.DirectAllocator`
  A simple `IntBlockPool.Allocator` that never recycles.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `int[]`
  `buffer`
  Current head buffer
  `int[][]`
  `buffers`
  array of buffers currently used in the pool.
  `static final int`
  `INT_BLOCK_MASK`
  `static final int`
  `INT_BLOCK_SHIFT`
  `static final int`
  `INT_BLOCK_SIZE`
  `int`
  `intOffset`
  Current head offset
  `int`
  `intUpto`
  Pointer to the current position in head buffer

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `IntBlockPool()`
  Creates a new `IntBlockPool` with a default `IntBlockPool.Allocator`.
  `IntBlockPool(IntBlockPool.Allocator allocator)`
  Creates a new `IntBlockPool` with the given `IntBlockPool.Allocator`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `nextBuffer()`
  Advances the pool to its next buffer.
  `void`
  `reset(boolean zeroFillBuffers, boolean reuseFirst)`
  Expert: Resets the pool to its initial state, while optionally reusing the first buffer.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### INT_BLOCK_SHIFT

    public static final int INT_BLOCK_SHIFT
    See Also:
      - Constant Field Values

  - ### INT_BLOCK_SIZE

    public static final int INT_BLOCK_SIZE
    See Also:
      - Constant Field Values

  - ### INT_BLOCK_MASK

    public static final int INT_BLOCK_MASK
    See Also:
      - Constant Field Values

  - ### buffers

    public int[][] buffers
    array of buffers currently used in the pool. Buffers are allocated if needed don't modify this outside of this class

  - ### intUpto

    public int intUpto
    Pointer to the current position in head buffer

  - ### buffer

    public int[] buffer
    Current head buffer

  - ### intOffset

    public int intOffset
    Current head offset

- ## Constructor Details

  - ### IntBlockPool

    public IntBlockPool()
    Creates a new `IntBlockPool` with a default `IntBlockPool.Allocator`.
    See Also:
      - `nextBuffer()`

  - ### IntBlockPool

    public IntBlockPool(IntBlockPool.Allocator allocator)
    Creates a new `IntBlockPool` with the given `IntBlockPool.Allocator`.
    See Also:
      - `nextBuffer()`

- ## Method Details

  - ### reset

    public void reset(boolean zeroFillBuffers, boolean reuseFirst)
    Expert: Resets the pool to its initial state, while optionally reusing the first buffer. Buffers that are not reused are reclaimed by `ByteBlockPool.Allocator.recycleByteBlocks(byte[][], int, int)`. Buffers can be filled with zeros before recycling them. This is useful if a slice pool works on top of this int pool and relies on the buffers being filled with zeros to find the non-zero end of slices.
    Parameters:
      `zeroFillBuffers` - if `true` the buffers are filled with `0`.
      `reuseFirst` - if `true` the first buffer will be reused and calling `nextBuffer()` is not needed after reset iff the block pool was used before ie. `nextBuffer()` was called before.

  - ### nextBuffer

    public void nextBuffer()
    Advances the pool to its next buffer. This method should be called once after the constructor to initialize the pool. In contrast to the constructor a `reset(boolean, boolean)` call will advance the pool to its first buffer immediately.