private IReadOnlyList <IArrowArray> InitializeFields() { IArrowArray[] result = new IArrowArray[Data.Children.Length]; for (int i = 0; i < Data.Children.Length; i++) { result[i] = ArrowArrayFactory.BuildArray(Data.Children[i]); } return(result); }
public Array Slice(int offset, int length) { if (offset > Length) { throw new ArgumentException($"Offset {offset} cannot be greater than Length {Length} for Array.Slice"); } length = Math.Min(Data.Length - offset, length); offset += Data.Offset; ArrayData newData = Data.Slice(offset, length); return(ArrowArrayFactory.BuildArray(newData) as Array); }
public DictionaryArray(ArrayData data) : base(data) { data.EnsureBufferCount(2); data.EnsureDataType(ArrowTypeId.Dictionary); if (data.Dictionary == null) { throw new ArgumentException($"{nameof(data.Dictionary)} must not be null"); } var dicType = (DictionaryType)data.DataType; data.Dictionary.EnsureDataType(dicType.ValueType.TypeId); var indicesData = new ArrayData(dicType.IndexType, data.Length, data.NullCount, data.Offset, data.Buffers, data.Children); Indices = ArrowArrayFactory.BuildArray(indicesData); Dictionary = ArrowArrayFactory.BuildArray(data.Dictionary); }
internal static IArrowArray Concatenate(IReadOnlyList <IArrowArray> arrowArrayList, MemoryAllocator allocator = default) { if (arrowArrayList == null || arrowArrayList.Count == 0) { return(null); } if (arrowArrayList.Count == 1) { return(arrowArrayList[0]); } var arrayDataList = new List <ArrayData>(arrowArrayList.Count); foreach (IArrowArray array in arrowArrayList) { arrayDataList.Add(array.Data); } return(ArrowArrayFactory.BuildArray(ArrayDataConcatenator.Concatenate(arrayDataList, allocator))); }
public ListArray(ArrayData data) : this(data, ArrowArrayFactory.BuildArray(data.Children[0])) { }