vortex_sparse/compute/
invert.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4use vortex_array::compute::{InvertKernel, InvertKernelAdapter, invert};
5use vortex_array::{ArrayRef, IntoArray, register_kernel};
6use vortex_error::VortexResult;
7
8use crate::{SparseArray, SparseVTable};
9
10impl InvertKernel for SparseVTable {
11    fn invert(&self, array: &SparseArray) -> VortexResult<ArrayRef> {
12        let inverted_fill = array.fill_scalar().as_bool().invert().into_scalar();
13        let inverted_patches = array
14            .patches()
15            .clone()
16            .map_values(|values| invert(&values))?;
17        SparseArray::try_new_from_patches(inverted_patches, inverted_fill).map(|a| a.into_array())
18    }
19}
20
21register_kernel!(InvertKernelAdapter(SparseVTable).lift());