vortex_array/array/varbin/
array.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use vortex_error::VortexResult;
use vortex_mask::Mask;

use crate::array::varbin::VarBinArray;
use crate::array::VarBinEncoding;
use crate::visitor::ArrayVisitor;
use crate::vtable::{ValidityVTable, VisitorVTable};

impl ValidityVTable<VarBinArray> for VarBinEncoding {
    fn is_valid(&self, array: &VarBinArray, index: usize) -> VortexResult<bool> {
        array.validity().is_valid(index)
    }

    fn all_valid(&self, array: &VarBinArray) -> VortexResult<bool> {
        array.validity().all_valid()
    }

    fn validity_mask(&self, array: &VarBinArray) -> VortexResult<Mask> {
        array.validity().to_logical(array.len())
    }
}

impl VisitorVTable<VarBinArray> for VarBinEncoding {
    fn accept(&self, array: &VarBinArray, visitor: &mut dyn ArrayVisitor) -> VortexResult<()> {
        visitor.visit_child("offsets", &array.offsets())?;
        visitor.visit_buffer(&array.bytes())?;
        visitor.visit_validity(&array.validity())
    }
}