vortex_sparse/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::SparseArray;
13use crate::SparseVTable;
14
15impl InvertKernel for SparseVTable {
16    fn invert(&self, array: &SparseArray) -> VortexResult<ArrayRef> {
17        let inverted_fill = array.fill_scalar().as_bool().invert().into_scalar();
18        let inverted_patches = array
19            .patches()
20            .clone()
21            .map_values(|values| invert(&values))?;
22        SparseArray::try_new_from_patches(inverted_patches, inverted_fill).map(|a| a.into_array())
23    }
24}
25
26register_kernel!(InvertKernelAdapter(SparseVTable).lift());