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