예제 #1
0
 public BooleanArray(
     ArrowBuffer valueBuffer, ArrowBuffer nullBitmapBuffer,
     int length, int nullCount, int offset)
     : this(new ArrayData(BooleanType.Default, length, nullCount, offset,
                          new[] { nullBitmapBuffer, valueBuffer }))
 {
 }
예제 #2
0
 public Time32Array(
     Time32Type type,
     ArrowBuffer valueBuffer, ArrowBuffer nullBitmapBuffer,
     int length, int nullCount, int offset)
     : this(new ArrayData(type, length, nullCount, offset,
                          new[] { nullBitmapBuffer, valueBuffer }))
 {
 }
            public void Visit(FixedWidthType type)
            {
                CheckData(type, 2);
                ArrowBuffer validityBuffer = ConcatenateValidityBuffer();
                ArrowBuffer valueBuffer    = ConcatenateFixedWidthTypeValueBuffer(type);

                Result = new ArrayData(type, _totalLength, _totalNullCount, 0, new ArrowBuffer[] { validityBuffer, valueBuffer });
            }
            public void Visit(BooleanType type)
            {
                CheckData(type, 2);
                ArrowBuffer validityBuffer = ConcatenateValidityBuffer();
                ArrowBuffer valueBuffer    = ConcatenateBitmapBuffer(1);

                Result = new ArrayData(type, _totalLength, _totalNullCount, 0, new ArrowBuffer[] { validityBuffer, valueBuffer });
            }
예제 #5
0
 public ListArray(IArrowType dataType, int length,
                  ArrowBuffer valueOffsetsBuffer, IArrowArray values,
                  ArrowBuffer nullBitmapBuffer, int nullCount = 0, int offset = 0)
     : this(new ArrayData(dataType, length, nullCount, offset,
                          new[] { nullBitmapBuffer, valueOffsetsBuffer }, new[] { values.Data }),
            values)
 {
 }
예제 #6
0
 public StringArray(int length,
                    ArrowBuffer valueOffsetsBuffer,
                    ArrowBuffer dataBuffer,
                    ArrowBuffer nullBitmapBuffer,
                    int nullCount = 0, int offset = 0)
     : this(new ArrayData(StringType.Default, length, nullCount, offset,
                          new[] { nullBitmapBuffer, valueOffsetsBuffer, dataBuffer }))
 {
 }
            private void ConcatenateVariableBinaryArrayData(IArrowType type)
            {
                CheckData(type, 3);
                ArrowBuffer validityBuffer = ConcatenateValidityBuffer();
                ArrowBuffer offsetBuffer   = ConcatenateOffsetBuffer();
                ArrowBuffer valueBuffer    = ConcatenateVariableBinaryValueBuffer();

                Result = new ArrayData(type, _totalLength, _totalNullCount, 0, new ArrowBuffer[] { validityBuffer, offsetBuffer, valueBuffer });
            }
예제 #8
0
 public BinaryArray(IArrowType dataType, int length,
                    ArrowBuffer valueOffsetsBuffer,
                    ArrowBuffer dataBuffer,
                    ArrowBuffer nullBitmapBuffer,
                    int nullCount = 0, int offset = 0)
     : this(new ArrayData(dataType, length, nullCount, offset,
                          new[] { nullBitmapBuffer, valueOffsetsBuffer, dataBuffer }))
 {
 }
예제 #9
0
 public StructArray(
     IArrowType dataType, int length,
     IEnumerable <Array> children,
     ArrowBuffer nullBitmapBuffer, int nullCount = 0, int offset = 0)
     : this(new ArrayData(
                dataType, length, nullCount, offset, new[] { nullBitmapBuffer },
                children.Select(child => child.Data)))
 {
 }
예제 #10
0
            public void Visit(ListType type)
            {
                CheckData(type, 2);
                ArrowBuffer validityBuffer = ConcatenateValidityBuffer();
                ArrowBuffer offsetBuffer   = ConcatenateOffsetBuffer();
                ArrayData   child          = Concatenate(SelectChildren(0), _allocator);

                Result = new ArrayData(type, _totalLength, _totalNullCount, 0, new ArrowBuffer[] { validityBuffer, offsetBuffer }, new[] { child });
            }
예제 #11
0
            public BooleanArray Build(MemoryAllocator allocator = default)
            {
                ArrowBuffer validityBuffer = NullCount > 0
                                        ? ValidityBuffer.Build(allocator)
                                        : ArrowBuffer.Empty;

                return(new BooleanArray(
                           ValueBuffer.Build(allocator), validityBuffer,
                           Length, NullCount, 0));
            }
예제 #12
0
 public TimestampArray(
     TimestampType type,
     ArrowBuffer valueBuffer, ArrowBuffer nullBitmapBuffer,
     int length, int nullCount, int offset)
     : this(new ArrayData(type, length, nullCount, offset,
                          new[] { nullBitmapBuffer, valueBuffer }))
 {
     TimeZone = type.Timezone != null
         ? TimeZoneInfo.FindSystemTimeZoneById(type.Timezone) ?? TimeZoneInfo.Utc
         : TimeZoneInfo.Utc;
 }
예제 #13
0
            public ListArray Build(MemoryAllocator allocator = default)
            {
                Append();

                ArrowBuffer validityBuffer = NullCount > 0
                                        ? ValidityBufferBuilder.Build(allocator)
                                        : ArrowBuffer.Empty;

                return(new ListArray(DataType, Length - 1,
                                     ValueOffsetsBufferBuilder.Build(allocator), ValueBuilder.Build(allocator),
                                     validityBuffer, NullCount, 0));
            }
예제 #14
0
            public TArray Build(MemoryAllocator allocator = default)
            {
                ValueOffsets.Append(Offset);

                ArrowBuffer validityBuffer = NullCount > 0
                                        ? ValidityBuffer.Build(allocator).ValueBuffer
                                        : ArrowBuffer.Empty;

                var data = new ArrayData(DataType, ValueOffsets.Length - 1, NullCount, 0,
                                         new[] { validityBuffer, ValueOffsets.Build(allocator), ValueBuffer.Build(allocator) });

                return(Build(data));
            }
예제 #15
0
        public static Bitmap Allocate(int bitCount, MemoryPool memoryPool = default)
        {
            var size      = bitCount / 8 + (bitCount % 8 > 0 ? 1 : 0);
            var remainder = size % 64;
            var len       = (remainder == 0) ? size : size + 64 - remainder;

            // Allocate buffer from memory pool and enable all bits

            var buffer = ArrowBuffer.Allocate(len, memoryPool);
            var span   = buffer.GetSpan <byte>();

            span.Fill(0xff);

            return(new Bitmap(buffer));
        }
예제 #16
0
 public Bitmap(ArrowBuffer buffer)
 {
     Buffer = buffer;
 }
예제 #17
0
 protected override Time32Array Build(
     ArrowBuffer valueBuffer, ArrowBuffer nullBitmapBuffer,
     int length, int nullCount, int offset) =>
 new Time32Array(DataType, valueBuffer, nullBitmapBuffer, length, nullCount, offset);
예제 #18
0
 protected override UInt8Array Build(
     ArrowBuffer valueBuffer, ArrowBuffer nullBitmapBuffer,
     int length, int nullCount, int offset) =>
 new UInt8Array(valueBuffer, nullBitmapBuffer, length, nullCount, offset);
예제 #19
0
 public Builder <T> Append(ArrowBuffer buffer)
 {
     Append(buffer.Span.CastTo <T>());
     return(this);
 }