sparrow 0.9.0
|
Sparse union array implementation without offset buffer. More...
#include <union_array.hpp>
Public Types | |
using | base_type = union_array_crtp_base<sparse_union_array> |
using | type_id_buffer_type = typename base_type::type_id_buffer_type |
![]() | |
using | self_type |
using | derived_type |
using | inner_value_type |
using | value_type |
using | const_reference |
using | functor_type |
using | const_functor_type |
using | iterator |
using | const_iterator |
using | const_reverse_iterator |
using | size_type |
using | type_id_buffer_type |
Public Member Functions | |
template<class... Args> requires (mpl::excludes_copy_and_move_ctor_v<sparse_union_array, Args...>) | |
sparse_union_array (Args &&... args) | |
Generic constructor for creating sparse union arrays. | |
SPARROW_API | sparse_union_array (arrow_proxy proxy) |
Constructs sparse union array from Arrow proxy. | |
![]() | |
constexpr std::optional< std::string_view > | name () const |
Gets the optional name of the union array. | |
SPARROW_CONSTEXPR_CLANG_17 std::optional< key_value_view > | metadata () const |
Gets the metadata associated with the union array. | |
SPARROW_CONSTEXPR_CLANG_17 value_type | at (size_type i) const |
Gets element at specified position with bounds checking. | |
SPARROW_CONSTEXPR_CLANG_17 value_type | operator[] (size_type i) const |
Gets element at specified position without bounds checking. | |
SPARROW_CONSTEXPR_CLANG_17 value_type | operator[] (size_type i) |
Gets mutable element at specified position. | |
SPARROW_CONSTEXPR_CLANG_17 value_type | front () const |
Gets reference to the first element. | |
SPARROW_CONSTEXPR_CLANG_17 value_type | back () const |
Gets reference to the last element. | |
constexpr bool | empty () const |
Checks if the union array is empty. | |
constexpr size_type | size () const |
Gets the number of elements in the union array. | |
constexpr iterator | begin () |
Gets iterator to the beginning of the array. | |
constexpr iterator | end () |
Gets iterator to the end of the array. | |
constexpr const_iterator | begin () const |
Gets const iterator to the beginning of the array. | |
constexpr const_iterator | end () const |
Gets const iterator to the end of the array. | |
constexpr const_iterator | cbegin () const |
Gets const iterator to the beginning of the array. | |
constexpr const_iterator | cend () const |
Gets const iterator to the end of the array. | |
constexpr const_reverse_iterator | rbegin () const |
Gets reverse iterator to the beginning of reversed array. | |
constexpr const_reverse_iterator | rend () const |
Gets reverse iterator to the end of reversed array. | |
constexpr const_reverse_iterator | crbegin () const |
Gets const reverse iterator to the beginning of reversed array. | |
constexpr const_reverse_iterator | crend () const |
Gets const reverse iterator to the end of reversed array. | |
constexpr void | zero_null_values (const inner_value_type &value) |
Sets all null values to the specified value. | |
constexpr auto | type_id_map_from_child_to_type_id (const std::optional< R > &child_index_to_type_id) -> type_id_map |
constexpr std::optional< std::string_view > | name () const |
Gets the optional name of the union array. | |
SPARROW_CONSTEXPR_CLANG_17 std::optional< key_value_view > | metadata () const |
Gets the metadata associated with the union array. | |
SPARROW_CONSTEXPR_CLANG_17 value_type | at (size_type i) const |
Gets element at specified position with bounds checking. | |
SPARROW_CONSTEXPR_CLANG_17 value_type | operator[] (size_type i) const |
Gets element at specified position without bounds checking. | |
SPARROW_CONSTEXPR_CLANG_17 value_type | operator[] (size_type i) |
Gets mutable element at specified position. | |
SPARROW_CONSTEXPR_CLANG_17 value_type | front () const |
Gets reference to the first element. | |
SPARROW_CONSTEXPR_CLANG_17 value_type | back () const |
Gets reference to the last element. | |
constexpr bool | empty () const |
Checks if the union array is empty. | |
constexpr size_type | size () const |
Gets the number of elements in the union array. | |
constexpr iterator | begin () |
Gets iterator to the beginning of the array. | |
constexpr const_iterator | begin () const |
Gets const iterator to the beginning of the array. | |
constexpr iterator | end () |
Gets iterator to the end of the array. | |
constexpr const_iterator | end () const |
Gets const iterator to the end of the array. | |
constexpr const_iterator | cbegin () const |
Gets const iterator to the beginning of the array. | |
constexpr const_iterator | cend () const |
Gets const iterator to the end of the array. | |
constexpr const_reverse_iterator | rbegin () const |
Gets reverse iterator to the beginning of reversed array. | |
constexpr const_reverse_iterator | rend () const |
Gets reverse iterator to the end of reversed array. | |
constexpr const_reverse_iterator | crbegin () const |
Gets const reverse iterator to the beginning of reversed array. | |
constexpr const_reverse_iterator | crend () const |
Gets const reverse iterator to the end of reversed array. | |
constexpr void | zero_null_values (const inner_value_type &value) |
Sets all null values to the specified value. | |
constexpr auto | type_id_map_from_child_to_type_id (const std::optional< R > &child_index_to_type_id) -> type_id_map |
Friends | |
class | union_array_crtp_base< sparse_union_array > |
Additional Inherited Members | |
![]() | |
using | type_id_map |
using | children_type |
![]() | |
using | derived_type = D |
![]() | |
constexpr children_type | make_children (arrow_proxy &proxy) |
Creates child array wrappers from Arrow proxy. | |
union_array_crtp_base (arrow_proxy proxy) | |
Protected constructor from Arrow proxy. | |
constexpr | union_array_crtp_base (const self_type &rhs) |
Copy constructor. | |
constexpr self_type & | operator= (const self_type &rhs) |
Copy assignment operator. | |
constexpr | union_array_crtp_base (self_type &&rhs)=default |
constexpr self_type & | operator= (self_type &&rhs)=default |
constexpr arrow_proxy & | get_arrow_proxy () |
Gets mutable reference to the Arrow proxy. | |
constexpr const arrow_proxy & | get_arrow_proxy () const |
Gets const reference to the Arrow proxy. | |
constexpr children_type | make_children (arrow_proxy &proxy) |
Creates child array wrappers from Arrow proxy. | |
union_array_crtp_base (arrow_proxy proxy) | |
Protected constructor from Arrow proxy. | |
constexpr | union_array_crtp_base (const self_type &rhs) |
Copy constructor. | |
constexpr | union_array_crtp_base (self_type &&rhs)=default |
constexpr self_type & | operator= (const self_type &rhs) |
Copy assignment operator. | |
constexpr self_type & | operator= (self_type &&rhs)=default |
constexpr arrow_proxy & | get_arrow_proxy () |
Gets mutable reference to the Arrow proxy. | |
constexpr const arrow_proxy & | get_arrow_proxy () const |
Gets const reference to the Arrow proxy. | |
![]() | |
constexpr derived_type & | derived_cast () |
constexpr const derived_type & | derived_cast () const |
![]() | |
static constexpr type_id_map | parse_type_id_map (std::string_view format_string) |
Parses type ID mapping from Arrow format string. | |
static constexpr type_id_map | type_id_map_from_child_to_type_id (const std::optional< R > &child_index_to_type_id) |
Creates type ID mapping from child index to type ID mapping. | |
static constexpr std::string | make_format_string (bool dense, std::size_t n, const std::optional< R > &child_index_to_type_id) |
Creates Arrow format string for union arrays. | |
static constexpr type_id_map | parse_type_id_map (std::string_view format_string) |
Parses type ID mapping from Arrow format string. | |
static constexpr type_id_map | type_id_map_from_child_to_type_id (const std::optional< R > &child_index_to_type_id) |
Creates type ID mapping from child index to type ID mapping. | |
static constexpr std::string | make_format_string (bool dense, std::size_t n, const std::optional< R > &child_index_to_type_id) |
Creates Arrow format string for union arrays. | |
![]() | |
arrow_proxy | m_proxy |
Internal Arrow proxy. | |
const std::uint8_t * | p_type_ids |
Pointer to type ID buffer. | |
children_type | m_children |
Child array wrappers. | |
std::array< std::uint8_t, TYPE_ID_MAP_SIZE > | m_type_id_map |
Type ID to child index mapping. | |
arrow_proxy | m_proxy |
Internal Arrow proxy. | |
const std::uint8_t * | p_type_ids |
Pointer to type ID buffer. | |
children_type | m_children |
Child array wrappers. | |
std::array< std::uint8_t, TYPE_ID_MAP_SIZE > | m_type_id_map |
Type ID to child index mapping. | |
![]() | |
static constexpr size_t | TYPE_ID_MAP_SIZE |
static constexpr size_t | TYPE_ID_MAP_SIZE |
Sparse union array implementation without offset buffer.
Sparse union arrays do not store an offset buffer. Instead, all child arrays have the same length as the union array, and each element directly corresponds to the same position in its child array. This is simpler but less memory efficient when union elements are sparse.
Memory layout:
Related Apache Arrow specification: https://arrow.apache.org/docs/dev/format/Columnar.html#sparse-union
Definition at line 803 of file union_array.hpp.
Definition at line 807 of file union_array.hpp.
using sparrow::sparse_union_array::type_id_buffer_type = typename base_type::type_id_buffer_type |
Definition at line 808 of file union_array.hpp.
|
inlineexplicit |
Generic constructor for creating sparse union arrays.
Creates a sparse union array from various input combinations including child arrays, type IDs, and optional type mapping.
Args | Parameter pack for constructor arguments |
args | Constructor arguments (children, type_ids, etc.) |
Definition at line 826 of file union_array.hpp.
|
explicit |
Constructs sparse union array from Arrow proxy.
proxy | Arrow proxy containing sparse union array data and schema |
|
friend |
Definition at line 912 of file union_array.hpp.