vortex_array/arrays/primitive/
ops.rs1use vortex_dtype::match_each_native_ptype;
5use vortex_scalar::Scalar;
6
7use crate::arrays::{PrimitiveArray, PrimitiveVTable};
8use crate::vtable::{OperationsVTable, ValidityHelper};
9use crate::{ArrayRef, IntoArray};
10
11impl OperationsVTable<PrimitiveVTable> for PrimitiveVTable {
12 fn slice(array: &PrimitiveArray, start: usize, stop: usize) -> ArrayRef {
13 match_each_native_ptype!(array.ptype(), |T| {
14 PrimitiveArray::new(
15 array.buffer::<T>().slice(start..stop),
16 array.validity().slice(start, stop),
17 )
18 .into_array()
19 })
20 }
21
22 fn scalar_at(array: &PrimitiveArray, index: usize) -> Scalar {
23 match_each_native_ptype!(array.ptype(), |T| {
24 Scalar::primitive(array.as_slice::<T>()[index], array.dtype().nullability())
25 })
26 }
27}