vortex_sparse/compute/
invert.rs1use vortex_array::compute::{InvertKernel, InvertKernelAdapter, invert};
2use vortex_array::{Array, ArrayRef, register_kernel};
3use vortex_error::VortexResult;
4
5use crate::{SparseArray, SparseEncoding};
6
7impl InvertKernel for SparseEncoding {
8 fn invert(&self, array: &SparseArray) -> VortexResult<ArrayRef> {
9 let inverted_fill = array.fill_scalar().as_bool().invert().into_scalar();
10 let inverted_patches = array
11 .patches()
12 .clone()
13 .map_values(|values| invert(&values))?;
14 SparseArray::try_new_from_patches(inverted_patches, inverted_fill).map(|a| a.into_array())
15 }
16}
17
18register_kernel!(InvertKernelAdapter(SparseEncoding).lift());