vortex_runend/compute/
mod.rs1mod 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}