vortex_array/arrays/chunked/vtable/
visitor.rs1use crate::ArrayBufferVisitor;
5use crate::ArrayChildVisitor;
6use crate::ArrayChildVisitorUnnamed;
7use crate::arrays::ChunkedArray;
8use crate::arrays::ChunkedVTable;
9use crate::vtable::VisitorVTable;
10
11impl VisitorVTable<ChunkedVTable> for ChunkedVTable {
12 fn visit_buffers(_array: &ChunkedArray, _visitor: &mut dyn ArrayBufferVisitor) {}
13
14 fn nbuffers(_array: &ChunkedArray) -> usize {
15 0
16 }
17
18 fn visit_children(array: &ChunkedArray, visitor: &mut dyn ArrayChildVisitor) {
19 visitor.visit_child("chunk_offsets", &array.chunk_offsets.to_array());
20
21 for (idx, chunk) in array.chunks().iter().enumerate() {
22 visitor.visit_child(format!("chunks[{idx}]").as_str(), chunk);
23 }
24 }
25
26 fn visit_children_unnamed(array: &ChunkedArray, visitor: &mut dyn ArrayChildVisitorUnnamed) {
27 visitor.visit_child(&array.chunk_offsets.to_array());
28
29 for chunk in array.chunks().iter() {
30 visitor.visit_child(chunk);
31 }
32 }
33
34 fn nchildren(array: &ChunkedArray) -> usize {
35 1 + array.chunks().len()
36 }
37
38 fn nth_child(array: &ChunkedArray, idx: usize) -> Option<crate::ArrayRef> {
39 match idx {
40 0 => Some(array.chunk_offsets.to_array()),
41 n => array.chunks().get(n - 1).cloned(),
42 }
43 }
44}