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
`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
`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
`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.