Interface CompactKernel

All Known Implementing Classes:
BooleanCompactKernel, ByteCompactKernel, CharCompactKernel, DoubleCompactKernel, EqualsConsistentObjectCompactKernel, FloatCompactKernel, IntCompactKernel, LongCompactKernel, ObjectCompactKernel, ShortCompactKernel

public interface CompactKernel
  • Method Details

    • compact

      void compact(WritableChunk<? extends Any> values, BooleanChunk<Any> retainValues)
      Compacts values into the front of the chunk, retaining only values where the parallel retainValues chunk has a true value. The chunk's size is set to the number of retained values.
      Parameters:
      values - a chunk of values, input and output
      retainValues - the values to retain
    • compactAndCount

      default void compactAndCount(WritableChunk<? extends Values> valueChunk, WritableIntChunk<ChunkLengths> counts)
      Sort valuesChunk, eliminate duplicates, and write the number of times a value occurred into the parallel slot within counts. null/NaN values are removed from the chunk.
      Parameters:
      valueChunk - a chunk of values, input and output
      counts - an output chunk parallel to valueChunk with the number of times a value occurred
    • compactAndCount

      void compactAndCount(WritableChunk<? extends Values> valueChunk, WritableIntChunk<ChunkLengths> counts, boolean countNull, boolean countNaN)
      Sort valuesChunk, eliminate duplicates, and write the number of times a value occurred into the parallel slot within counts.
      Parameters:
      valueChunk - a chunk of values, input and output
      counts - an output chunk parallel to valueChunk with the number of times a value occurred
      countNull - if the compaction should count nulls or not
      countNaN - if the compaction should count NaN or not (only applies to float/double)
    • compactAndCount

      default void compactAndCount(WritableChunk<? extends Values> valueChunk, WritableIntChunk<ChunkLengths> counts, IntChunk<ChunkPositions> startPositions, WritableIntChunk<ChunkLengths> lengths)
      For each run in valuesChunk, sort it, eliminate duplicates, and write the number of times a value occurred into the parallel slot within counts. null/NaN values are removed from the chunk.
      Parameters:
      valueChunk - a chunk of values, input and output
      counts - an output chunk parallel to valueChunk with the number of times a value occurred
      startPositions - the start of each run
      lengths - the length of each run, input and output
    • compactAndCount

      void compactAndCount(WritableChunk<? extends Values> valueChunk, WritableIntChunk<ChunkLengths> counts, IntChunk<ChunkPositions> startPositions, WritableIntChunk<ChunkLengths> lengths, boolean countNull, boolean countNaN)
      For each run in valuesChunk, sort it, eliminate duplicates, and write the number of times a value occurred into the parallel slot within counts.
      Parameters:
      valueChunk - a chunk of values, input and output
      counts - an output chunk parallel to valueChunk with the number of times a value occurred
      startPositions - the start of each run
      lengths - the length of each run, input and output
      countNull - if the compaction should count nulls or not
      countNaN - if the compaction should count NaN or not (only applies to float/double)
    • makeCompact

      static CompactKernel makeCompact(ChunkType chunkType, boolean equalsConsistent)
      Make a CompactKernel for values of the given type. Sorted operations pass the decision for their data type, so the kernel's compactAndCount equality is consistent with the ordering of the values; hash-based operations, whose key equality must be consistent with hashCode, pass true.
      Parameters:
      chunkType - the chunk type of the values
      equalsConsistent - true when values of the data type compare equal exactly when they are equal (see BinarySearchKernelHelper.compareConsistentWithEquality(Class)), which selects the EqualsConsistentObject kernel whose compactAndCount tests Object equality with equals; when false, Object equality is tested with ObjectComparisons.compareEquals(Object, Object). Other chunk types ignore it. An operation reads the registry once and passes the same decision to every kernel it creates, so its kernels come from one family.
      Returns:
      the CompactKernel