Skip to main content

vortex_compressor/builtins/
mod.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4//! Built-in compression schemes that use only `vortex-array` encodings.
5//!
6//! These schemes produce arrays using types already in `vortex-array` ([`ConstantArray`],
7//! [`DictArray`], [`MaskedArray`], etc.) and have no external encoding crate dependencies.
8//!
9//! [`ConstantArray`]: vortex_array::arrays::ConstantArray
10//! [`DictArray`]: vortex_array::arrays::DictArray
11//! [`MaskedArray`]: vortex_array::arrays::MaskedArray
12
13use vortex_array::Canonical;
14use vortex_array::dtype::DType;
15use vortex_array::dtype::Nullability;
16
17/// Returns `true` if the canonical array is a primitive with an integer ptype.
18pub fn is_integer_primitive(canonical: &Canonical) -> bool {
19    matches!(canonical, Canonical::Primitive(p) if p.ptype().is_int())
20}
21
22/// Returns `true` if the canonical form represents a floating-point primitive.
23pub fn is_float_primitive(canonical: &Canonical) -> bool {
24    matches!(canonical, Canonical::Primitive(p) if !p.ptype().is_int())
25}
26
27/// Returns `true` if the canonical array is a UTF-8 string type.
28pub fn is_utf8_string(canonical: &Canonical) -> bool {
29    matches!(canonical,
30        Canonical::VarBinView(v) if
31            v.dtype().eq_ignore_nullability(&DType::Utf8(Nullability::NonNullable))
32    )
33}
34
35mod dict;
36
37pub use dict::FloatDictScheme;
38pub use dict::IntDictScheme;
39pub use dict::StringDictScheme;
40pub use dict::float_dictionary_encode;
41pub use dict::integer_dictionary_encode;
42
43mod constant;
44
45pub use constant::BoolConstantScheme;
46pub use constant::FloatConstantScheme;
47pub use constant::IntConstantScheme;
48pub use constant::StringConstantScheme;