vortex_array/arrays/varbin/compute/
mod.rs

1pub use min_max::compute_min_max;
2use vortex_error::VortexResult;
3use vortex_scalar::Scalar;
4
5use crate::Array;
6use crate::arrays::VarBinEncoding;
7use crate::arrays::varbin::{VarBinArray, varbin_scalar};
8use crate::compute::{
9    CastFn, CompareFn, FilterFn, IsConstantFn, MaskFn, MinMaxFn, ScalarAtFn, SliceFn, TakeFn,
10    ToArrowFn, UncompressedSizeFn,
11};
12use crate::vtable::ComputeVTable;
13
14mod cast;
15mod compare;
16mod filter;
17mod is_constant;
18mod mask;
19mod min_max;
20mod slice;
21mod take;
22pub(crate) mod to_arrow;
23mod uncompressed_size;
24
25impl ComputeVTable for VarBinEncoding {
26    fn cast_fn(&self) -> Option<&dyn CastFn<&dyn Array>> {
27        Some(self)
28    }
29
30    fn compare_fn(&self) -> Option<&dyn CompareFn<&dyn Array>> {
31        Some(self)
32    }
33
34    fn filter_fn(&self) -> Option<&dyn FilterFn<&dyn Array>> {
35        Some(self)
36    }
37
38    fn is_constant_fn(&self) -> Option<&dyn IsConstantFn<&dyn Array>> {
39        Some(self)
40    }
41
42    fn mask_fn(&self) -> Option<&dyn MaskFn<&dyn Array>> {
43        Some(self)
44    }
45
46    fn scalar_at_fn(&self) -> Option<&dyn ScalarAtFn<&dyn Array>> {
47        Some(self)
48    }
49
50    fn slice_fn(&self) -> Option<&dyn SliceFn<&dyn Array>> {
51        Some(self)
52    }
53
54    fn take_fn(&self) -> Option<&dyn TakeFn<&dyn Array>> {
55        Some(self)
56    }
57
58    fn to_arrow_fn(&self) -> Option<&dyn ToArrowFn<&dyn Array>> {
59        Some(self)
60    }
61
62    fn min_max_fn(&self) -> Option<&dyn MinMaxFn<&dyn Array>> {
63        Some(self)
64    }
65
66    fn uncompressed_size_fn(&self) -> Option<&dyn UncompressedSizeFn<&dyn Array>> {
67        Some(self)
68    }
69}
70
71impl ScalarAtFn<&VarBinArray> for VarBinEncoding {
72    fn scalar_at(&self, array: &VarBinArray, index: usize) -> VortexResult<Scalar> {
73        Ok(varbin_scalar(array.bytes_at(index)?, array.dtype()))
74    }
75}