vortex_array/arrays/varbin/compute/
mod.rs1pub 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}