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