vortex_sparse/compute/
invert.rs1use 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());