vortex_sequence/compute/
is_sorted.rs1use num_traits::zero;
5use vortex_array::compute::{IsSortedKernel, IsSortedKernelAdapter};
6use vortex_array::register_kernel;
7use vortex_dtype::match_each_native_ptype;
8use vortex_error::VortexResult;
9
10use crate::{SequenceArray, SequenceVTable};
11
12impl IsSortedKernel for SequenceVTable {
13 fn is_sorted(&self, array: &SequenceArray) -> VortexResult<Option<bool>> {
14 let m = array.multiplier();
15 match_each_native_ptype!(m.ptype(), |P| {
16 Ok(Some(m.as_primitive::<P>() >= zero::<P>()))
17 })
18 }
19
20 fn is_strict_sorted(&self, array: &SequenceArray) -> VortexResult<Option<bool>> {
21 let m = array.multiplier();
22 match_each_native_ptype!(m.ptype(), |P| {
23 Ok(Some(m.as_primitive::<P>() > zero::<P>()))
24 })
25 }
26}
27
28register_kernel!(IsSortedKernelAdapter(SequenceVTable).lift());