Skip to main content

vortex_array/arrays/constant/vtable/
visitor.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4use vortex_buffer::ByteBufferMut;
5
6use crate::ArrayBufferVisitor;
7use crate::ArrayChildVisitor;
8use crate::ArrayRef;
9use crate::arrays::ConstantArray;
10use crate::arrays::ConstantVTable;
11use crate::buffer::BufferHandle;
12use crate::scalar::ScalarValue;
13use crate::vtable::VisitorVTable;
14
15impl VisitorVTable<ConstantVTable> for ConstantVTable {
16    fn visit_buffers(array: &ConstantArray, visitor: &mut dyn ArrayBufferVisitor) {
17        let buffer = ScalarValue::to_proto_bytes::<ByteBufferMut>(array.scalar.value()).freeze();
18        visitor.visit_buffer_handle("scalar", &BufferHandle::new_host(buffer));
19    }
20
21    fn nbuffers(_array: &ConstantArray) -> usize {
22        1
23    }
24
25    fn visit_children(_array: &ConstantArray, _visitor: &mut dyn ArrayChildVisitor) {}
26
27    fn nchildren(_array: &ConstantArray) -> usize {
28        0
29    }
30
31    fn nth_child(_array: &ConstantArray, _idx: usize) -> Option<ArrayRef> {
32        None
33    }
34}