/** * 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); }
int startByteIndex = BitVectorHelper.byteIndex(firstBitIndex); final int lastBitIndex = firstBitIndex + count; final int endByteIndex = BitVectorHelper.byteIndex(lastBitIndex); final int startByteBitIndex = BitVectorHelper.bitIndex(firstBitIndex); final int endBytebitIndex = BitVectorHelper.bitIndex(lastBitIndex); final int byteIndex = BitVectorHelper.byteIndex(lastBitIndex - endBytebitIndex); final byte bitMask = (byte) (0xFFL >>> ((8 - endBytebitIndex) & 7)); BitVectorHelper.setBitMaskedByte(validityBuffer, byteIndex, bitMask);
private void splitAndTransferValidityBuffer(int startIndex, int length, ListVector target) { assert startIndex + length <= valueCount; int firstByteSource = BitVectorHelper.byteIndex(startIndex); int lastByteSource = BitVectorHelper.byteIndex(valueCount - 1); int byteSizeTarget = getValidityBufferSizeFromCount(length); int offset = startIndex % 8;
private void splitAndTransferValidityBuffer(int startIndex, int length, StructVector target) { assert startIndex + length <= valueCount; int firstByteSource = BitVectorHelper.byteIndex(startIndex); int lastByteSource = BitVectorHelper.byteIndex(valueCount - 1); int byteSizeTarget = BitVectorHelper.getValidityBufferSize(length); int offset = startIndex % 8;
private void splitAndTransferValidityBuffer(int startIndex, int length, BaseVariableWidthVector target) { assert startIndex + length <= valueCount; int firstByteSource = BitVectorHelper.byteIndex(startIndex); int lastByteSource = BitVectorHelper.byteIndex(valueCount - 1); int byteSizeTarget = getValidityBufferSizeFromCount(length); int offset = startIndex % 8;