sparrow 2.4.0
C++20 idiomatic APIs for the Apache Arrow Columnar Format
Loading...
Searching...
No Matches
sparrow::list_array_crtp_base< DERIVED > Class Template Reference

CRTP base class for all list array implementations. More...

#include <list_array.hpp>

Inheritance diagram for sparrow::list_array_crtp_base< DERIVED >:
[legend]
Collaboration diagram for sparrow::list_array_crtp_base< DERIVED >:
[legend]

Public Types

using self_type = list_array_crtp_base<DERIVED>
 
using base_type = mutable_array_bitmap_base<DERIVED>
 
using inner_types = array_inner_types<DERIVED>
 
using value_iterator = typename inner_types::value_iterator
 
using const_value_iterator = typename inner_types::const_value_iterator
 
using size_type = typename base_type::size_type
 
using bitmap_type = typename base_type::bitmap_type
 
using bitmap_reference = typename base_type::bitmap_reference
 
using bitmap_const_reference = typename base_type::bitmap_const_reference
 
using const_bitmap_range = typename base_type::const_bitmap_range
 
using inner_value_type = list_value
 
using inner_reference = typename inner_types::inner_reference
 
using inner_const_reference = typename inner_types::inner_const_reference
 
using value_type = nullable<inner_value_type>
 
using reference = nullable<inner_reference, bitmap_reference>
 
using const_reference = nullable<inner_const_reference, bitmap_const_reference>
 
using iterator_tag = typename base_type::iterator_tag
 
- Public Types inherited from sparrow::array_bitmap_base_impl< D, true >
using base_type
 
using size_type
 
using bitmap_type
 
using const_bitmap_type
 
using bitmap_iterator
 
using const_bitmap_iterator
 
using bitmap_const_reference
 
using difference_type
 
using const_bitmap_range
 
using iterator_tag
 

Public Member Functions

constexpr const arrayraw_flat_array () const
 Gets read-only access to the underlying flat array.
 
constexpr arrayraw_flat_array ()
 Gets mutable access to the underlying flat array.
 
template<std::input_iterator InputIt>
requires std::convertible_to<typename std::iterator_traits<InputIt>::value_type, list_value>
constexpr auto insert_values (const_value_iterator pos, InputIt first, InputIt last) -> value_iterator
 
- Public Member Functions inherited from sparrow::array_bitmap_base_impl< D, true >
constexpr auto insert_bitmap (const_bitmap_iterator pos, InputIt first, InputIt last) -> bitmap_iterator is_mutable
 
constexpr auto insert_bitmap (const_bitmap_iterator pos, InputIt first, InputIt last) -> bitmap_iterator is_mutable
 

Protected Member Functions

 list_array_crtp_base (arrow_proxy proxy)
 Constructs list array base from Arrow proxy.
 
constexpr list_array_crtp_base (const self_type &)
 Copy constructor.
 
constexpr list_array_crtp_baseoperator= (const self_type &)
 Copy assignment operator.
 
constexpr list_array_crtp_base (self_type &&) noexcept=default
 
constexpr list_array_crtp_baseoperator= (self_type &&) noexcept=default
 
constexpr void throw_if_sliced_for_mutation (const char *operation) const
 Throws if a mutating operation is attempted on a sliced array.
 
constexpr value_iterator value_begin ()
 
constexpr value_iterator value_end ()
 
constexpr const_value_iterator value_cbegin () const
 
constexpr const_value_iterator value_cend () const
 
constexpr void insert_flat_elements (size_type flat_pos, const list_value &value, size_type count)
 
constexpr void erase_flat_elements (size_type flat_begin, size_type flat_count)
 
- Protected Member Functions inherited from sparrow::array_bitmap_base_impl< D, true >
 array_bitmap_base_impl (arrow_proxy proxy)
 Constructs array bitmap base from Arrow proxy.
 
constexpr array_bitmap_base_impl (const array_bitmap_base_impl &)
 Copy constructor.
 
constexpr array_bitmap_base_imploperator= (const array_bitmap_base_impl &)
 Copy assignment operator.
 
constexpr array_bitmap_base_impl (array_bitmap_base_impl &&) noexcept=default
 
constexpr array_bitmap_base_imploperator= (array_bitmap_base_impl &&) noexcept=default
 
constexpr bitmap_typeget_bitmap ()
 Gets mutable reference to the validity bitmap.
 
constexpr const const_bitmap_typeget_bitmap () const
 Gets const reference to the validity bitmap.
 
constexpr void resize_bitmap (size_type new_length, bool value)
 Resizes the validity bitmap to accommodate new array length.
 
constexpr bitmap_iterator insert_bitmap (const_bitmap_iterator pos, bool value, size_type count)
 Inserts validity bits at specified position.
 
constexpr bitmap_iterator insert_bitmap (const_bitmap_iterator pos, InputIt first, InputIt last) is_mutable
 Inserts range of validity bits at specified position.
 
constexpr bitmap_iterator erase_bitmap (const_bitmap_iterator pos, size_type count)
 Erases validity bits starting at specified position.
 
 array_bitmap_base_impl (arrow_proxy proxy)
 Constructs array bitmap base from Arrow proxy.
 
constexpr array_bitmap_base_impl (const array_bitmap_base_impl &)
 Copy constructor.
 
constexpr array_bitmap_base_impl (array_bitmap_base_impl &&) noexcept=default
 
constexpr array_bitmap_base_imploperator= (const array_bitmap_base_impl &)
 Copy assignment operator.
 
constexpr array_bitmap_base_imploperator= (array_bitmap_base_impl &&) noexcept=default
 
constexpr bitmap_typeget_bitmap ()
 Gets mutable reference to the validity bitmap.
 
constexpr const const_bitmap_typeget_bitmap () const
 Gets const reference to the validity bitmap.
 
constexpr void resize_bitmap (size_type new_length, bool value)
 Resizes the validity bitmap to accommodate new array length.
 
constexpr bitmap_iterator insert_bitmap (const_bitmap_iterator pos, bool value, size_type count)
 Inserts validity bits at specified position.
 
constexpr bitmap_iterator insert_bitmap (const_bitmap_iterator pos, InputIt first, InputIt last) is_mutable
 Inserts range of validity bits at specified position.
 
constexpr bitmap_iterator erase_bitmap (const_bitmap_iterator pos, size_type count)
 Erases validity bits starting at specified position.
 

Friends

class array_crtp_base< DERIVED >
 
class mutable_array_base< DERIVED >
 
class list_reference< DERIVED >
 
class detail::layout_value_functor< DERIVED, inner_reference >
 
class detail::layout_value_functor< const DERIVED, inner_const_reference >
 

Detailed Description

template<class DERIVED>
class sparrow::list_array_crtp_base< DERIVED >

CRTP base class for all list array implementations.

This class provides common functionality for list-based array types including list_array, big_list_array, list_view_array, big_list_view_array, and fixed_sized_list_array. It manages the flat array of values and provides iteration and access methods.

Template Parameters
DERIVEDThe derived list array type (CRTP pattern)
Precondition
DERIVED must implement offset_range(size_type) method
Note
Mutating operations are supported only on unsliced arrays. Arrays produced by slice() or slice_view() with a non-zero Arrow offset are treated as read-only for mutation.
Postcondition
Maintains Arrow array format compatibility for list types
Provides unified interface for all list array variants

Definition at line 285 of file list_array.hpp.

Member Typedef Documentation

◆ base_type

template<class DERIVED>
using sparrow::list_array_crtp_base< DERIVED >::base_type = mutable_array_bitmap_base<DERIVED>

Definition at line 290 of file list_array.hpp.

◆ bitmap_const_reference

template<class DERIVED>
using sparrow::list_array_crtp_base< DERIVED >::bitmap_const_reference = typename base_type::bitmap_const_reference

Definition at line 298 of file list_array.hpp.

◆ bitmap_reference

template<class DERIVED>
using sparrow::list_array_crtp_base< DERIVED >::bitmap_reference = typename base_type::bitmap_reference

Definition at line 297 of file list_array.hpp.

◆ bitmap_type

template<class DERIVED>
using sparrow::list_array_crtp_base< DERIVED >::bitmap_type = typename base_type::bitmap_type

Definition at line 296 of file list_array.hpp.

◆ const_bitmap_range

template<class DERIVED>
using sparrow::list_array_crtp_base< DERIVED >::const_bitmap_range = typename base_type::const_bitmap_range

Definition at line 300 of file list_array.hpp.

◆ const_reference

template<class DERIVED>
using sparrow::list_array_crtp_base< DERIVED >::const_reference = nullable<inner_const_reference, bitmap_const_reference>

Definition at line 308 of file list_array.hpp.

◆ const_value_iterator

template<class DERIVED>
using sparrow::list_array_crtp_base< DERIVED >::const_value_iterator = typename inner_types::const_value_iterator

Definition at line 293 of file list_array.hpp.

◆ inner_const_reference

template<class DERIVED>
using sparrow::list_array_crtp_base< DERIVED >::inner_const_reference = typename inner_types::inner_const_reference

Definition at line 304 of file list_array.hpp.

◆ inner_reference

template<class DERIVED>
using sparrow::list_array_crtp_base< DERIVED >::inner_reference = typename inner_types::inner_reference

Definition at line 303 of file list_array.hpp.

◆ inner_types

template<class DERIVED>
using sparrow::list_array_crtp_base< DERIVED >::inner_types = array_inner_types<DERIVED>

Definition at line 291 of file list_array.hpp.

◆ inner_value_type

template<class DERIVED>
using sparrow::list_array_crtp_base< DERIVED >::inner_value_type = list_value

Definition at line 302 of file list_array.hpp.

◆ iterator_tag

template<class DERIVED>
using sparrow::list_array_crtp_base< DERIVED >::iterator_tag = typename base_type::iterator_tag

Definition at line 309 of file list_array.hpp.

◆ reference

template<class DERIVED>
using sparrow::list_array_crtp_base< DERIVED >::reference = nullable<inner_reference, bitmap_reference>

Definition at line 307 of file list_array.hpp.

◆ self_type

template<class DERIVED>
using sparrow::list_array_crtp_base< DERIVED >::self_type = list_array_crtp_base<DERIVED>

Definition at line 289 of file list_array.hpp.

◆ size_type

template<class DERIVED>
using sparrow::list_array_crtp_base< DERIVED >::size_type = typename base_type::size_type

Definition at line 294 of file list_array.hpp.

◆ value_iterator

template<class DERIVED>
using sparrow::list_array_crtp_base< DERIVED >::value_iterator = typename inner_types::value_iterator

Definition at line 292 of file list_array.hpp.

◆ value_type

template<class DERIVED>
using sparrow::list_array_crtp_base< DERIVED >::value_type = nullable<inner_value_type>

Definition at line 306 of file list_array.hpp.

Constructor & Destructor Documentation

◆ list_array_crtp_base() [1/3]

template<class DERIVED>
sparrow::list_array_crtp_base< DERIVED >::list_array_crtp_base ( arrow_proxy proxy)
explicitprotected

Constructs list array base from Arrow proxy.

Parameters
proxyArrow proxy containing array data and schema
Precondition
proxy must contain valid Arrow array and schema for list type
proxy must have exactly one child array (the flat values array)

Definition at line 1016 of file list_array.hpp.

◆ list_array_crtp_base() [2/3]

template<class DERIVED>
sparrow::list_array_crtp_base< DERIVED >::list_array_crtp_base ( const self_type & rhs)
constexprprotected

Copy constructor.

Parameters
rhsSource array to copy from
Precondition
rhs must be in a valid state
Postcondition
This array contains a deep copy of rhs data
Flat array is reconstructed from copied data

Definition at line 1023 of file list_array.hpp.

◆ list_array_crtp_base() [3/3]

template<class DERIVED>
sparrow::list_array_crtp_base< DERIVED >::list_array_crtp_base ( self_type && )
constexprprotecteddefaultnoexcept

Member Function Documentation

◆ erase_flat_elements()

template<class DERIVED>
void sparrow::list_array_crtp_base< DERIVED >::erase_flat_elements ( size_type flat_begin,
size_type flat_count )
constexprprotected

Definition at line 1132 of file list_array.hpp.

Here is the call graph for this function:

◆ insert_flat_elements()

template<class DERIVED>
void sparrow::list_array_crtp_base< DERIVED >::insert_flat_elements ( size_type flat_pos,
const list_value & value,
size_type count )
constexprprotected

Definition at line 1114 of file list_array.hpp.

Here is the call graph for this function:

◆ insert_values()

template<class DERIVED>
template<std::input_iterator InputIt>
requires std::convertible_to<typename std::iterator_traits<InputIt>::value_type, list_value>
auto sparrow::list_array_crtp_base< DERIVED >::insert_values ( const_value_iterator pos,
InputIt first,
InputIt last ) -> value_iterator
constexpr

Definition at line 1167 of file list_array.hpp.

◆ operator=() [1/2]

template<class DERIVED>
auto sparrow::list_array_crtp_base< DERIVED >::operator= ( const self_type & rhs)
constexprprotected

Copy assignment operator.

Parameters
rhsSource array to copy from
Returns
Reference to this array
Precondition
rhs must be in a valid state
Postcondition
This array contains a deep copy of rhs data
Previous data is properly released
Flat array is reconstructed from copied data

Definition at line 1030 of file list_array.hpp.

Here is the call graph for this function:

◆ operator=() [2/2]

template<class DERIVED>
list_array_crtp_base & sparrow::list_array_crtp_base< DERIVED >::operator= ( self_type && )
constexprprotecteddefaultnoexcept

◆ raw_flat_array() [1/2]

template<class DERIVED>
auto sparrow::list_array_crtp_base< DERIVED >::raw_flat_array ( )
nodiscardconstexpr

Gets mutable access to the underlying flat array.

Returns
Pointer to the flat array containing all list elements
Postcondition
Returns non-null pointer to a valid flat child handle

Definition at line 1044 of file list_array.hpp.

◆ raw_flat_array() [2/2]

template<class DERIVED>
auto sparrow::list_array_crtp_base< DERIVED >::raw_flat_array ( ) const
nodiscardconstexpr

Gets read-only access to the underlying flat array.

Returns
Const pointer to the flat array containing all list elements
Postcondition
Returns non-null pointer to a valid flat child handle

Definition at line 1038 of file list_array.hpp.

Here is the caller graph for this function:

◆ throw_if_sliced_for_mutation()

template<class DERIVED>
void sparrow::list_array_crtp_base< DERIVED >::throw_if_sliced_for_mutation ( const char * operation) const
constexprprotected

Throws if a mutating operation is attempted on a sliced array.

List-array mutation updates the parent offset or size buffers together with the flat child array in place. The current implementation assumes ArrowArray.offset == 0, so sliced arrays are intentionally unsupported for mutating APIs.

Parameters
operationName of the mutating operation for diagnostics.
Exceptions
std::logic_errorif this array has a non-zero Arrow offset.

Definition at line 1050 of file list_array.hpp.

◆ value_begin()

template<class DERIVED>
auto sparrow::list_array_crtp_base< DERIVED >::value_begin ( )
nodiscardconstexprprotected

Definition at line 1059 of file list_array.hpp.

◆ value_cbegin()

template<class DERIVED>
auto sparrow::list_array_crtp_base< DERIVED >::value_cbegin ( ) const
nodiscardconstexprprotected

Definition at line 1074 of file list_array.hpp.

◆ value_cend()

template<class DERIVED>
auto sparrow::list_array_crtp_base< DERIVED >::value_cend ( ) const
nodiscardconstexprprotected

Definition at line 1083 of file list_array.hpp.

◆ value_end()

template<class DERIVED>
auto sparrow::list_array_crtp_base< DERIVED >::value_end ( )
nodiscardconstexprprotected

Definition at line 1065 of file list_array.hpp.

Friends And Related Symbol Documentation

◆ array_crtp_base< DERIVED >

template<class DERIVED>
friend class array_crtp_base< DERIVED >
friend

Definition at line 413 of file list_array.hpp.

◆ detail::layout_value_functor< const DERIVED, inner_const_reference >

template<class DERIVED>
friend class detail::layout_value_functor< const DERIVED, inner_const_reference >
friend

Definition at line 413 of file list_array.hpp.

◆ detail::layout_value_functor< DERIVED, inner_reference >

template<class DERIVED>
friend class detail::layout_value_functor< DERIVED, inner_reference >
friend

Definition at line 413 of file list_array.hpp.

◆ list_reference< DERIVED >

template<class DERIVED>
friend class list_reference< DERIVED >
friend

Definition at line 413 of file list_array.hpp.

◆ mutable_array_base< DERIVED >

template<class DERIVED>
friend class mutable_array_base< DERIVED >
friend

Definition at line 413 of file list_array.hpp.


The documentation for this class was generated from the following file: