vortex_fastlanes/bitpacking/vtable/
canonical.rs1use vortex_array::Canonical;
5use vortex_array::builders::ArrayBuilder;
6use vortex_array::vtable::CanonicalVTable;
7use vortex_dtype::match_each_integer_ptype;
8use vortex_error::VortexExpect;
9
10use crate::BitPackedArray;
11use crate::BitPackedVTable;
12use crate::bitpack_decompress::unpack_array;
13use crate::bitpack_decompress::unpack_into_primitive_builder;
14
15impl CanonicalVTable<BitPackedVTable> for BitPackedVTable {
16 fn canonicalize(array: &BitPackedArray) -> Canonical {
17 Canonical::Primitive(unpack_array(array))
18 }
19
20 fn append_to_builder(array: &BitPackedArray, builder: &mut dyn ArrayBuilder) {
21 match_each_integer_ptype!(array.ptype(), |T| {
22 unpack_into_primitive_builder::<T>(
23 array,
24 builder
25 .as_any_mut()
26 .downcast_mut()
27 .vortex_expect("bit packed array must canonicalize into a primitive array"),
28 )
29 })
30 }
31}