Skip to main content

vortex_fastlanes/rle/vtable/
visitor.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4use vortex_array::ArrayBufferVisitor;
5use vortex_array::ArrayChildVisitor;
6use vortex_array::vtable::VisitorVTable;
7
8use super::RLEVTable;
9use crate::RLEArray;
10
11impl VisitorVTable<RLEVTable> for RLEVTable {
12    fn visit_buffers(_array: &RLEArray, _visitor: &mut dyn ArrayBufferVisitor) {
13        // RLE stores all data in child arrays, no direct buffers
14    }
15
16    fn nbuffers(_array: &RLEArray) -> usize {
17        0
18    }
19
20    fn visit_children(array: &RLEArray, visitor: &mut dyn ArrayChildVisitor) {
21        visitor.visit_child("values", array.values());
22        visitor.visit_child("indices", array.indices());
23        visitor.visit_child("values_idx_offsets", array.values_idx_offsets());
24        // Don't call visit_validity since the nullability is stored in the indices array.
25    }
26
27    fn nchildren(_array: &RLEArray) -> usize {
28        3
29    }
30}