internal Builder(ListType dataType) { ValueBuilder = ArrowArrayBuilderFactory.Build(dataType.ValueDataType); ValueOffsetsBufferBuilder = new ArrowBuffer.Builder <int>(); ValidityBufferBuilder = new BooleanArray.Builder(); DataType = dataType; }
protected BuilderBase(IArrowType dataType) { DataType = dataType; ValueOffsets = new ArrowBuffer.Builder <int>(); ValueBuffer = new ArrowBuffer.Builder <byte>(); ValidityBuffer = new BooleanArray.Builder(); }
private ArrowBuffer ConcatenateOffsetBuffer() { var builder = new ArrowBuffer.Builder <int>(_totalLength + 1); int baseOffset = 0; builder.Append(0); foreach (ArrayData arrayData in _arrayDataList) { if (arrayData.Length == 0) { continue; } // The first offset is always 0. // It should be skipped because it duplicate to the last offset of builder. ReadOnlySpan <int> span = arrayData.Buffers[1].Span.CastTo <int>().Slice(1, arrayData.Length); foreach (int offset in span) { builder.Append(baseOffset + offset); } // The next offset must start from the current last offset. baseOffset += span[arrayData.Length - 1]; } return(builder.Build(_allocator)); }
public Builder() { ValueBuffer = new ArrowBuffer.Builder <byte>(); ValidityBuffer = new ArrowBuffer.Builder <byte>(); Length = 0; NullCount = 0; }
private ArrowBuffer ConcatenateVariableBinaryValueBuffer() { var builder = new ArrowBuffer.Builder <byte>(); foreach (ArrayData arrayData in _arrayDataList) { int lastOffset = arrayData.Buffers[1].Span.CastTo <int>()[arrayData.Length]; builder.Append(arrayData.Buffers[2].Span.Slice(0, lastOffset)); } return(builder.Build(_allocator)); }
private ArrowBuffer ConcatenateFixedWidthTypeValueBuffer(FixedWidthType type) { int typeByteWidth = type.BitWidth / 8; var builder = new ArrowBuffer.Builder <byte>(_totalLength * typeByteWidth); foreach (ArrayData arrayData in _arrayDataList) { int length = arrayData.Length; int byteLength = length * typeByteWidth; builder.Append(arrayData.Buffers[1].Span.Slice(0, byteLength)); } return(builder.Build(_allocator)); }
protected DictionaryArrayBuilderBase(IEqualityComparer <T> comparer = null, HashFunctionDelegate hashFunc = null) { IndicesBuffer = new ArrowBuffer.Builder <int>(); NullBitmap = new ArrowBuffer.Builder <byte>(); if (comparer != null) { Comparer = comparer; } if (hashFunc != null) { HashFunction = hashFunc; } }
protected BuilderBase(IArrowType dataType) { DataType = dataType; ValueOffsets = new ArrowBuffer.Builder <int>(); ValueBuffer = new ArrowBuffer.Builder <byte>(); ValidityBuffer = new ArrowBuffer.BitmapBuilder(); // From the docs: // // The offsets buffer contains length + 1 signed integers (either 32-bit or 64-bit, depending on the // logical type), which encode the start position of each slot in the data buffer. The length of the // value in each slot is computed using the difference between the offset at that slot’s index and the // subsequent offset. // // In this builder, we choose to append the first offset (zero) upon construction, and each trailing // offset is then added after each individual item has been appended. ValueOffsets.Append(this.Offset); }
public Builder() { ValueBuffer = new ArrowBuffer.Builder <byte>(); Length = 0; }