vortex_runend/compute/
mod.rs

1mod binary_numeric;
2mod compare;
3mod fill_null;
4pub(crate) mod filter;
5mod invert;
6mod scalar_at;
7mod slice;
8pub(crate) mod take;
9mod take_from;
10
11use vortex_array::Array;
12use vortex_array::compute::{
13    BinaryNumericFn, CompareFn, FillNullFn, FilterFn, InvertFn, ScalarAtFn, SliceFn, TakeFn,
14    TakeFromFn,
15};
16use vortex_array::vtable::ComputeVTable;
17
18use crate::RunEndEncoding;
19
20impl ComputeVTable for RunEndEncoding {
21    fn binary_numeric_fn(&self) -> Option<&dyn BinaryNumericFn<&dyn Array>> {
22        Some(self)
23    }
24
25    fn compare_fn(&self) -> Option<&dyn CompareFn<&dyn Array>> {
26        Some(self)
27    }
28
29    fn fill_null_fn(&self) -> Option<&dyn FillNullFn<&dyn Array>> {
30        Some(self)
31    }
32
33    fn filter_fn(&self) -> Option<&dyn FilterFn<&dyn Array>> {
34        Some(self)
35    }
36
37    fn invert_fn(&self) -> Option<&dyn InvertFn<&dyn Array>> {
38        Some(self)
39    }
40
41    fn scalar_at_fn(&self) -> Option<&dyn ScalarAtFn<&dyn Array>> {
42        Some(self)
43    }
44
45    fn slice_fn(&self) -> Option<&dyn SliceFn<&dyn Array>> {
46        Some(self)
47    }
48
49    fn take_fn(&self) -> Option<&dyn TakeFn<&dyn Array>> {
50        Some(self)
51    }
52
53    fn take_from_fn(&self) -> Option<&dyn TakeFromFn<&dyn Array>> {
54        Some(self)
55    }
56}
57
58#[cfg(test)]
59mod test {
60    use vortex_array::Array;
61    use vortex_array::arrays::PrimitiveArray;
62    use vortex_array::compute::test_harness::test_binary_numeric;
63
64    use crate::RunEndArray;
65
66    fn ree_array() -> RunEndArray {
67        RunEndArray::encode(
68            PrimitiveArray::from_iter([1, 1, 1, 4, 4, 4, 2, 2, 5, 5, 5, 5]).into_array(),
69        )
70        .unwrap()
71    }
72
73    #[test]
74    fn test_runend_binary_numeric() {
75        let array = ree_array().into_array();
76        test_binary_numeric::<i32>(array)
77    }
78}