vortex_array/arrays/scalar_fn/vtable/
visitor.rs1use crate::ArrayBufferVisitor;
5use crate::ArrayChildVisitor;
6use crate::ArrayChildVisitorUnnamed;
7use crate::ArrayRef;
8use crate::arrays::scalar_fn::array::ScalarFnArray;
9use crate::arrays::scalar_fn::vtable::ScalarFnVTable;
10use crate::vtable::VisitorVTable;
11
12impl VisitorVTable<ScalarFnVTable> for ScalarFnVTable {
13 fn visit_buffers(_array: &ScalarFnArray, _visitor: &mut dyn ArrayBufferVisitor) {}
14
15 fn nbuffers(_array: &ScalarFnArray) -> usize {
16 0
17 }
18
19 fn visit_children(array: &ScalarFnArray, visitor: &mut dyn ArrayChildVisitor) {
20 for (idx, child) in array.children.iter().enumerate() {
21 let name = array.scalar_fn.signature().child_name(idx);
22 visitor.visit_child(name.as_ref(), child)
23 }
24 }
25
26 fn visit_children_unnamed(array: &ScalarFnArray, visitor: &mut dyn ArrayChildVisitorUnnamed) {
27 for child in array.children.iter() {
28 visitor.visit_child(child);
29 }
30 }
31
32 fn nchildren(array: &ScalarFnArray) -> usize {
33 array.children.len()
34 }
35
36 fn nth_child(array: &ScalarFnArray, idx: usize) -> Option<ArrayRef> {
37 array.children.get(idx).cloned()
38 }
39}