vortex_runend/compute/
invert.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4use vortex_array::ArrayRef;
5use vortex_array::IntoArray;
6use vortex_array::compute::InvertKernel;
7use vortex_array::compute::InvertKernelAdapter;
8use vortex_array::compute::invert;
9use vortex_array::register_kernel;
10use vortex_error::VortexResult;
11
12use crate::RunEndArray;
13use crate::RunEndVTable;
14
15impl InvertKernel for RunEndVTable {
16    fn invert(&self, array: &RunEndArray) -> VortexResult<ArrayRef> {
17        // SAFETY: ends are preserved
18        unsafe {
19            Ok(RunEndArray::new_unchecked(
20                array.ends().clone(),
21                invert(array.values())?,
22                array.len(),
23                array.offset(),
24            )
25            .into_array())
26        }
27    }
28}
29
30register_kernel!(InvertKernelAdapter(RunEndVTable).lift());