Interface CopyKernel

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

public interface CopyKernel
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Interface
    Description
    static class 
     
  • Method Summary

    Modifier and Type
    Method
    Description
    <T extends 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.
    static CopyKernel
     
  • Method Details

    • makeCopyKernel

      static CopyKernel makeCopyKernel(ChunkType chunkType)
    • conditionalCopy

      <T extends 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