Skip to main content

vortex_array/arrays/bool/vtable/
visitor.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4use crate::ArrayBufferVisitor;
5use crate::ArrayChildVisitor;
6use crate::ArrayRef;
7use crate::arrays::BoolArray;
8use crate::arrays::BoolVTable;
9use crate::vtable::VisitorVTable;
10use crate::vtable::validity_nchildren;
11use crate::vtable::validity_to_child;
12
13impl VisitorVTable<BoolVTable> for BoolVTable {
14    fn visit_buffers(array: &BoolArray, visitor: &mut dyn ArrayBufferVisitor) {
15        visitor.visit_buffer_handle("bits", &array.bits);
16    }
17
18    fn nbuffers(_array: &BoolArray) -> usize {
19        1
20    }
21
22    fn visit_children(array: &BoolArray, visitor: &mut dyn ArrayChildVisitor) {
23        visitor.visit_validity(&array.validity, array.len());
24    }
25
26    fn nchildren(array: &BoolArray) -> usize {
27        validity_nchildren(&array.validity)
28    }
29
30    fn nth_child(array: &BoolArray, idx: usize) -> Option<ArrayRef> {
31        match idx {
32            0 => validity_to_child(&array.validity, array.len()),
33            _ => None,
34        }
35    }
36}