vortex_layout/
registry.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4use vortex_array::{VTableContext, VTableRegistry};
5
6use crate::LayoutEncodingRef;
7use crate::layouts::chunked::ChunkedLayoutEncoding;
8use crate::layouts::dict::DictLayoutEncoding;
9use crate::layouts::flat::FlatLayoutEncoding;
10use crate::layouts::struct_::StructLayoutEncoding;
11use crate::layouts::zoned::ZonedLayoutEncoding;
12
13pub type LayoutContext = VTableContext<LayoutEncodingRef>;
14pub type LayoutRegistry = VTableRegistry<LayoutEncodingRef>;
15
16pub trait LayoutRegistryExt {
17    fn default() -> Self;
18}
19
20impl LayoutRegistryExt for LayoutRegistry {
21    fn default() -> Self {
22        let mut this = Self::empty();
23        this.register_many([
24            LayoutEncodingRef::new_ref(ChunkedLayoutEncoding.as_ref()),
25            LayoutEncodingRef::new_ref(FlatLayoutEncoding.as_ref()),
26            LayoutEncodingRef::new_ref(StructLayoutEncoding.as_ref()),
27            LayoutEncodingRef::new_ref(ZonedLayoutEncoding.as_ref()),
28            LayoutEncodingRef::new_ref(DictLayoutEncoding.as_ref()),
29        ]);
30        this
31    }
32}