Interface CopyKernel

All Known Implementing Classes:
BooleanCopyKernel, ByteCopyKernel, CharCopyKernel, DoubleCopyKernel, FloatCopyKernel, IntCopyKernel, LongCopyKernel, ObjectCopyKernel, ShortCopyKernel

public interface CopyKernel
  • Method Details

    • makeCopyKernel

      static CopyKernel makeCopyKernel​(ChunkType chunkType)
    • conditionalCopy

      <T extends Attributes.Any> void conditionalCopy​(WritableChunk<T> output, Object baseInput, Object overInput, long[] useOverInput, int srcOffset, int dstOffset, int length)
      Copy values from baseInput / overInput into output.

      Pseudo-implementation: output[i] = useOverInput.forBit(i) ? overInput[i] : baseInput[i];

      Note that useOverInput should cover the same data range as baseInput such that useOverInput.length == (overInput.length + 63) / 64 is true.

      Parameters:
      output - the output chunk
      baseInput - the input array to use when bit in useOverInput is zero (array)
      overInput - the input array to use when bit in useOverInput is one (array)
      useOverInput - the bitset array to indicate whether to use baseInput or overInput for each element
      srcOffset - the offset in baseInput/overInput
      dstOffset - the offset in output
      length - the number of elements to copy