vortex_array/arrays/listview/vtable/
visitor.rs1use crate::ArrayBufferVisitor;
5use crate::ArrayChildVisitor;
6use crate::ArrayRef;
7use crate::arrays::ListViewArray;
8use crate::arrays::ListViewVTable;
9use crate::vtable::ValidityHelper;
10use crate::vtable::VisitorVTable;
11use crate::vtable::validity_nchildren;
12use crate::vtable::validity_to_child;
13
14impl VisitorVTable<ListViewVTable> for ListViewVTable {
15 fn visit_buffers(_array: &ListViewArray, _visitor: &mut dyn ArrayBufferVisitor) {
16 }
18
19 fn nbuffers(_array: &ListViewArray) -> usize {
20 0
21 }
22
23 fn visit_children(array: &ListViewArray, visitor: &mut dyn ArrayChildVisitor) {
24 visitor.visit_child("elements", array.elements());
25 visitor.visit_child("offsets", array.offsets());
26 visitor.visit_child("sizes", array.sizes());
27 visitor.visit_validity(array.validity(), array.len());
28 }
29
30 fn nchildren(array: &ListViewArray) -> usize {
31 3 + validity_nchildren(array.validity())
32 }
33
34 fn nth_child(array: &ListViewArray, idx: usize) -> Option<ArrayRef> {
35 match idx {
36 0 => Some(array.elements().clone()),
37 1 => Some(array.offsets().clone()),
38 2 => Some(array.sizes().clone()),
39 3 => validity_to_child(array.validity(), array.len()),
40 _ => None,
41 }
42 }
43}