Skip to main content

vortex_array/arrays/scalar_fn/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::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}