org.apache.lucene.util

## Class IntBlockPool

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

-     public final 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 and Description
    --- | ---
    `static class` | `IntBlockPool.Allocator` Abstract class for allocating and freeing int blocks.
    `static class` | `IntBlockPool.DirectAllocator` A simple `IntBlockPool.Allocator` that never recycles.
    `static class` | `IntBlockPool.SliceReader` A `IntBlockPool.SliceReader` that can read int slices written by a `IntBlockPool.SliceWriter`
    `static class` | `IntBlockPool.SliceWriter` A `IntBlockPool.SliceWriter` that allows to write multiple integer slices into a given `IntBlockPool`.

  - ### Field Summary

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

  - ### Constructor Summary

    Constructors
    Constructor and 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

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `nextBuffer()` Advances the pool to its next buffer.
    `void` | `reset()` Resets the pool to its initial state reusing the first buffer.
    `void` | `reset(boolean zeroFillBuffers, boolean reuseFirst)` Expert: Resets the pool to its initial state reusing the first buffer.

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

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

- - ### Field Detail

    - #### 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 Detail

    - #### 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 Detail

    - #### reset

          public void reset()

      Resets the pool to its initial state reusing the first buffer. Calling `nextBuffer()` is not needed after reset.

    - #### reset

          public void reset(boolean zeroFillBuffers,
                            boolean reuseFirst)

      Expert: Resets the pool to its initial state reusing the first buffer.
      Parameters:
        `zeroFillBuffers` - if `true` the buffers are filled with `0`. This should be set to `true` if this pool is used with `IntBlockPool.SliceWriter`.
        `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()` call will advance the pool to its first buffer immediately.

Copyright © 2000-2021 Apache Software Foundation. All Rights Reserved.