/** * Set the bit at provided index to 1. * * @param validityBuffer validity buffer of the vector * @param index index to be set */ public static void setValidityBitToOne(ArrowBuf validityBuffer, int index) { final int byteIndex = byteIndex(index); final int bitIndex = bitIndex(index); byte currentByte = validityBuffer.getByte(byteIndex); final byte bitMask = (byte) (1L << bitIndex); currentByte |= bitMask; validityBuffer.setByte(byteIndex, currentByte); }
/** * Set the bit at a given index to provided value (1 or 0). * * @param validityBuffer validity buffer of the vector * @param index index to be set * @param value value to set */ public static void setValidityBit(ArrowBuf validityBuffer, int index, int value) { final int byteIndex = byteIndex(index); final int bitIndex = bitIndex(index); byte currentByte = validityBuffer.getByte(byteIndex); final byte bitMask = (byte) (1L << bitIndex); if (value != 0) { currentByte |= bitMask; } else { currentByte -= (bitMask & currentByte); } validityBuffer.setByte(byteIndex, currentByte); }
final int lastBitIndex = firstBitIndex + count; final int endByteIndex = BitVectorHelper.byteIndex(lastBitIndex); final int startByteBitIndex = BitVectorHelper.bitIndex(firstBitIndex); final int endBytebitIndex = BitVectorHelper.bitIndex(lastBitIndex); if (count < 8 && startByteIndex == endByteIndex) {