sparrow 0.9.0
Loading...
Searching...
No Matches
sparrow::union_array_crtp_base< DERIVED > Class Template Reference

CRTP base class providing shared functionality for union array implementations. More...

#include <union_array.hpp>

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

Public Types

using self_type = union_array_crtp_base<DERIVED>
 
using derived_type = DERIVED
 
using inner_value_type = array_traits::inner_value_type
 
using value_type = array_traits::const_reference
 
using const_reference = array_traits::const_reference
 
using functor_type = detail::layout_bracket_functor<derived_type, value_type>
 
using const_functor_type = detail::layout_bracket_functor<const derived_type, value_type>
 
using iterator = functor_index_iterator<functor_type>
 
using const_iterator = functor_index_iterator<const_functor_type>
 
using const_reverse_iterator = std::reverse_iterator<const_iterator>
 
using size_type = std::size_t
 
using type_id_buffer_type = u8_buffer<std::uint8_t>
 

Public Member Functions

constexpr std::optional< std::string_view > name () const
 Gets the optional name of the union array.
 
SPARROW_CONSTEXPR_CLANG_17 std::optional< key_value_viewmetadata () 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.
 
template<std::ranges::input_range R>
constexpr auto type_id_map_from_child_to_type_id (const std::optional< R > &child_index_to_type_id) -> type_id_map
 

Protected Types

using type_id_map = std::array<std::uint8_t, TYPE_ID_MAP_SIZE>
 
using children_type = std::vector<cloning_ptr<array_wrapper>>
 
- Protected Types inherited from sparrow::crtp_base< DERIVED >
using derived_type
 

Protected Member Functions

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_typeoperator= (const self_type &rhs)
 Copy assignment operator.
 
constexpr union_array_crtp_base (self_type &&rhs)=default
 
constexpr self_typeoperator= (self_type &&rhs)=default
 
constexpr arrow_proxyget_arrow_proxy ()
 Gets mutable reference to the Arrow proxy.
 
constexpr const arrow_proxyget_arrow_proxy () const
 Gets const reference to the Arrow proxy.
 
- Protected Member Functions inherited from sparrow::crtp_base< DERIVED >
constexpr derived_typederived_cast ()
 
constexpr const derived_typederived_cast () const
 

Static Protected Member Functions

static constexpr type_id_map parse_type_id_map (std::string_view format_string)
 Parses type ID mapping from Arrow format string.
 
template<std::ranges::input_range R>
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.
 
template<std::ranges::input_range R>
requires (std::convertible_to<std::ranges::range_value_t<R>, std::uint8_t>)
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.
 

Protected Attributes

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_SIZEm_type_id_map
 Type ID to child index mapping.
 

Static Protected Attributes

static constexpr size_t TYPE_ID_MAP_SIZE = 256
 

Friends

class detail::array_access
 

Detailed Description

template<class DERIVED>
class sparrow::union_array_crtp_base< DERIVED >

CRTP base class providing shared functionality for union array implementations.

This class implements the common interface and logic shared between dense and sparse union arrays. Union arrays can store values of different types in a single array, with each element having an associated type ID that indicates which child array contains the actual value.

Key features:

  • Type-safe heterogeneous storage
  • Efficient type dispatch using type ID mapping
  • STL-compatible container interface
  • Support for both dense and sparse union layouts
  • Arrow format compatibility

The union array consists of:

  • Type ID buffer: Maps each element to its corresponding child array
  • Child arrays: Store the actual values for each supported type
  • Type ID mapping: Translates type IDs to child array indices
Template Parameters
DERIVEDThe derived union array type (dense_union_array or sparse_union_array)
Precondition
DERIVED must inherit from this class (CRTP pattern)
DERIVED must implement element_offset() method
Postcondition
Provides complete union array interface
Maintains Arrow union format compatibility
Thread-safe for read operations
//Union arrays can store different types
dense_union_array union_arr = create_union_with_int_and_string();
//Access elements (type is determined at runtime)
auto elem = union_arr[0];
if(elem.has_value()) {
// elem could be int or string depending on type ID
}
//Iteration over heterogeneous elements
for(const auto& element : union_arr) {
// Process element of unknown type
}
Dense union array implementation with offset buffer.

Definition at line 124 of file union_array.hpp.

Member Typedef Documentation

◆ children_type

template<class DERIVED>
using sparrow::union_array_crtp_base< DERIVED >::children_type = std::vector<cloning_ptr<array_wrapper>>
protected

Definition at line 411 of file union_array.hpp.

◆ const_functor_type

template<class DERIVED>
using sparrow::union_array_crtp_base< DERIVED >::const_functor_type = detail::layout_bracket_functor<const derived_type, value_type>

Definition at line 134 of file union_array.hpp.

◆ const_iterator

template<class DERIVED>
using sparrow::union_array_crtp_base< DERIVED >::const_iterator = functor_index_iterator<const_functor_type>

Definition at line 136 of file union_array.hpp.

◆ const_reference

template<class DERIVED>
using sparrow::union_array_crtp_base< DERIVED >::const_reference = array_traits::const_reference

Definition at line 132 of file union_array.hpp.

◆ const_reverse_iterator

template<class DERIVED>
using sparrow::union_array_crtp_base< DERIVED >::const_reverse_iterator = std::reverse_iterator<const_iterator>

Definition at line 137 of file union_array.hpp.

◆ derived_type

template<class DERIVED>
using sparrow::union_array_crtp_base< DERIVED >::derived_type = DERIVED

Definition at line 129 of file union_array.hpp.

◆ functor_type

template<class DERIVED>
using sparrow::union_array_crtp_base< DERIVED >::functor_type = detail::layout_bracket_functor<derived_type, value_type>

Definition at line 133 of file union_array.hpp.

◆ inner_value_type

template<class DERIVED>
using sparrow::union_array_crtp_base< DERIVED >::inner_value_type = array_traits::inner_value_type

Definition at line 130 of file union_array.hpp.

◆ iterator

template<class DERIVED>
using sparrow::union_array_crtp_base< DERIVED >::iterator = functor_index_iterator<functor_type>

Definition at line 135 of file union_array.hpp.

◆ self_type

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

Definition at line 128 of file union_array.hpp.

◆ size_type

template<class DERIVED>
using sparrow::union_array_crtp_base< DERIVED >::size_type = std::size_t

Definition at line 138 of file union_array.hpp.

◆ type_id_buffer_type

template<class DERIVED>
using sparrow::union_array_crtp_base< DERIVED >::type_id_buffer_type = u8_buffer<std::uint8_t>

Definition at line 140 of file union_array.hpp.

◆ type_id_map

template<class DERIVED>
using sparrow::union_array_crtp_base< DERIVED >::type_id_map = std::array<std::uint8_t, TYPE_ID_MAP_SIZE>
protected

Definition at line 363 of file union_array.hpp.

◆ value_type

template<class DERIVED>
using sparrow::union_array_crtp_base< DERIVED >::value_type = array_traits::const_reference

Definition at line 131 of file union_array.hpp.

Constructor & Destructor Documentation

◆ union_array_crtp_base() [1/3]

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

Protected constructor from Arrow proxy.

Parameters
proxyArrow proxy containing union array data and schema
Precondition
proxy must contain valid Arrow union array and schema
proxy format must be valid union format
Postcondition
Array is initialized with data from proxy
Type ID mapping is parsed and cached
Child arrays are created and accessible

Definition at line 1031 of file union_array.hpp.

Here is the call graph for this function:

◆ union_array_crtp_base() [2/3]

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

Copy constructor.

Parameters
rhsSource union array to copy from
Precondition
rhs must be in a valid state
Postcondition
This array contains a copy of rhs data
Child arrays and type mapping are reconstructed

Definition at line 1040 of file union_array.hpp.

◆ union_array_crtp_base() [3/3]

template<class DERIVED>
sparrow::union_array_crtp_base< DERIVED >::union_array_crtp_base ( self_type && rhs)
constexprprotecteddefault

Member Function Documentation

◆ at()

template<class DERIVED>
SPARROW_CONSTEXPR_CLANG_17 value_type sparrow::union_array_crtp_base< DERIVED >::at ( size_type i) const
nodiscard

Gets element at specified position with bounds checking.

Parameters
iIndex of the element to access
Returns
Value from the appropriate child array
Precondition
i must be < size()
Postcondition
Returns valid value from child array indicated by type ID
Value type depends on the type ID at position i
Exceptions
std::out_of_rangeif i >= size()

◆ back()

template<class DERIVED>
SPARROW_CONSTEXPR_CLANG_17 auto sparrow::union_array_crtp_base< DERIVED >::back ( ) const
nodiscard

Gets reference to the last element.

Returns
Value from the appropriate child array for last element
Precondition
Array must not be empty (!empty())
Postcondition
Returns valid value from child array
Equivalent to (*this)[size() - 1]

Definition at line 1153 of file union_array.hpp.

Here is the call graph for this function:

◆ begin() [1/2]

template<class DERIVED>
auto sparrow::union_array_crtp_base< DERIVED >::begin ( )
nodiscardconstexpr

Gets iterator to the beginning of the array.

Returns
Iterator pointing to the first element
Postcondition
Iterator is valid for array traversal
For empty array, equals end()

Definition at line 1087 of file union_array.hpp.

Here is the call graph for this function:

◆ begin() [2/2]

template<class DERIVED>
auto sparrow::union_array_crtp_base< DERIVED >::begin ( ) const
nodiscardconstexpr

Gets const iterator to the beginning of the array.

Returns
Const iterator pointing to the first element
Postcondition
Iterator is valid for array traversal
For empty array, equals end()

Definition at line 1099 of file union_array.hpp.

Here is the call graph for this function:

◆ cbegin()

template<class DERIVED>
auto sparrow::union_array_crtp_base< DERIVED >::cbegin ( ) const
nodiscardconstexpr

Gets const iterator to the beginning of the array.

Returns
Const iterator pointing to the first element
Postcondition
Iterator is valid for array traversal
Guarantees const iterator even for non-const array

Definition at line 1111 of file union_array.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ cend()

template<class DERIVED>
auto sparrow::union_array_crtp_base< DERIVED >::cend ( ) const
nodiscardconstexpr

Gets const iterator to the end of the array.

Returns
Const iterator pointing past the last element
Postcondition
Iterator marks the end of the array range
Guarantees const iterator even for non-const array

Definition at line 1117 of file union_array.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ crbegin()

template<class DERIVED>
auto sparrow::union_array_crtp_base< DERIVED >::crbegin ( ) const
nodiscardconstexpr

Gets const reverse iterator to the beginning of reversed array.

Returns
Const reverse iterator pointing to the last element
Postcondition
Iterator is valid for reverse traversal
Guarantees const iterator even for non-const array

Definition at line 1135 of file union_array.hpp.

Here is the call graph for this function:

◆ crend()

template<class DERIVED>
auto sparrow::union_array_crtp_base< DERIVED >::crend ( ) const
nodiscardconstexpr

Gets const reverse iterator to the end of reversed array.

Returns
Const reverse iterator pointing before the first element
Postcondition
Iterator marks the end of reverse traversal
Guarantees const iterator even for non-const array

Definition at line 1141 of file union_array.hpp.

Here is the call graph for this function:

◆ empty()

template<class DERIVED>
bool sparrow::union_array_crtp_base< DERIVED >::empty ( ) const
nodiscardconstexpr

Checks if the union array is empty.

Returns
true if array contains no elements, false otherwise
Postcondition
Return value equals (size() == 0)

Definition at line 1081 of file union_array.hpp.

Here is the call graph for this function:

◆ end() [1/2]

template<class DERIVED>
auto sparrow::union_array_crtp_base< DERIVED >::end ( )
nodiscardconstexpr

Gets iterator to the end of the array.

Returns
Iterator pointing past the last element
Postcondition
Iterator marks the end of the array range
Not dereferenceable

Definition at line 1093 of file union_array.hpp.

Here is the call graph for this function:

◆ end() [2/2]

template<class DERIVED>
auto sparrow::union_array_crtp_base< DERIVED >::end ( ) const
nodiscardconstexpr

Gets const iterator to the end of the array.

Returns
Const iterator pointing past the last element
Postcondition
Iterator marks the end of the array range
Not dereferenceable

Definition at line 1105 of file union_array.hpp.

Here is the call graph for this function:

◆ front()

template<class DERIVED>
SPARROW_CONSTEXPR_CLANG_17 auto sparrow::union_array_crtp_base< DERIVED >::front ( ) const
nodiscard

Gets reference to the first element.

Returns
Value from the appropriate child array for first element
Precondition
Array must not be empty (!empty())
Postcondition
Returns valid value from child array
Equivalent to (*this)[0]

Definition at line 1147 of file union_array.hpp.

◆ get_arrow_proxy() [1/2]

template<class DERIVED>
arrow_proxy & sparrow::union_array_crtp_base< DERIVED >::get_arrow_proxy ( )
nodiscardconstexprprotected

Gets mutable reference to the Arrow proxy.

Returns
Mutable reference to internal Arrow proxy
Postcondition
Returns valid reference to Arrow proxy

Definition at line 1019 of file union_array.hpp.

◆ get_arrow_proxy() [2/2]

template<class DERIVED>
const arrow_proxy & sparrow::union_array_crtp_base< DERIVED >::get_arrow_proxy ( ) const
nodiscardconstexprprotected

Gets const reference to the Arrow proxy.

Returns
Const reference to internal Arrow proxy
Postcondition
Returns valid const reference to Arrow proxy

Definition at line 1025 of file union_array.hpp.

◆ make_children()

template<class DERIVED>
auto sparrow::union_array_crtp_base< DERIVED >::make_children ( arrow_proxy & proxy)
constexprprotected

Creates child array wrappers from Arrow proxy.

Parameters
proxyArrow proxy containing child array data
Returns
Vector of child array wrappers
Precondition
proxy must contain valid child array data
Postcondition
Returns valid children collection
Each child corresponds to a union member type

Definition at line 1159 of file union_array.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ make_format_string()

template<class DERIVED>
requires (std::convertible_to<std::ranges::range_value_t<R>, std::uint8_t>)
template<std::ranges::input_range R>
requires (std::convertible_to<std::ranges::range_value_t<R>, std::uint8_t>)
std::string sparrow::union_array_crtp_base< DERIVED >::make_format_string ( bool dense,
std::size_t n,
const std::optional< R > & child_index_to_type_id )
staticconstexprprotected

Creates Arrow format string for union arrays.

Template Parameters
RRange type for type ID mapping
Parameters
denseWhether this is a dense union (true) or sparse (false)
nNumber of child arrays
rangeOptional type ID mapping range
Returns
Arrow format string for the union
Precondition
If range is provided, its size must equal n or be 0
Range elements must be convertible to std::uint8_t
Postcondition
Returns valid Arrow format string ("+ud:" or "+us:" prefix)
Exceptions
std::invalid_argumentif range size doesn't match n

Definition at line 977 of file union_array.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ metadata()

template<class DERIVED>
SPARROW_CONSTEXPR_CLANG_17 std::optional< key_value_view > sparrow::union_array_crtp_base< DERIVED >::metadata ( ) const
nodiscard

Gets the metadata associated with the union array.

Returns
Optional view of key-value metadata pairs from Arrow schema
Postcondition
Returns nullopt if no metadata is set
Returned view remains valid while array exists

Definition at line 1013 of file union_array.hpp.

◆ name()

template<class DERIVED>
std::optional< std::string_view > sparrow::union_array_crtp_base< DERIVED >::name ( ) const
nodiscardconstexpr

Gets the optional name of the union array.

Returns
Optional string view of the array name from Arrow schema
Postcondition
Returns nullopt if no name is set
Returned string view remains valid while array exists

Definition at line 1007 of file union_array.hpp.

◆ operator=() [1/2]

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

Copy assignment operator.

Parameters
rhsSource union array to copy from
Returns
Reference to this array
Precondition
rhs must be in a valid state
Postcondition
This array contains a copy of rhs data
Previous data is properly released
Child arrays and type mapping are reconstructed

Definition at line 1046 of file union_array.hpp.

Here is the call graph for this function:

◆ operator=() [2/2]

template<class DERIVED>
self_type & sparrow::union_array_crtp_base< DERIVED >::operator= ( self_type && rhs)
constexprprotecteddefault

◆ operator[]() [1/2]

template<class DERIVED>
SPARROW_CONSTEXPR_CLANG_17 auto sparrow::union_array_crtp_base< DERIVED >::operator[] ( size_type i)
nodiscard

Gets mutable element at specified position.

Parameters
iIndex of the element to access
Returns
Value from the appropriate child array
Precondition
i must be < size()
Postcondition
Returns value from child array indicated by type ID
Value type depends on the type ID at position i

Definition at line 1069 of file union_array.hpp.

◆ operator[]() [2/2]

template<class DERIVED>
SPARROW_CONSTEXPR_CLANG_17 auto sparrow::union_array_crtp_base< DERIVED >::operator[] ( size_type i) const
nodiscard

Gets element at specified position without bounds checking.

Parameters
iIndex of the element to access
Returns
Value from the appropriate child array
Precondition
i must be < size()
Postcondition
Returns value from child array indicated by type ID
Value type depends on the type ID at position i

Definition at line 1059 of file union_array.hpp.

Here is the call graph for this function:

◆ parse_type_id_map()

template<class DERIVED>
auto sparrow::union_array_crtp_base< DERIVED >::parse_type_id_map ( std::string_view format_string)
staticconstexprprotected

Parses type ID mapping from Arrow format string.

Parameters
format_stringArrow format string containing type ID mappings
Returns
Array mapping type IDs to child indices
Precondition
format_string must be valid Arrow union format ("+du:" or "+su:" prefix)
Postcondition
Returns valid type ID to child index mapping
Mapping is used for efficient type dispatch

Definition at line 921 of file union_array.hpp.

Here is the caller graph for this function:

◆ rbegin()

template<class DERIVED>
auto sparrow::union_array_crtp_base< DERIVED >::rbegin ( ) const
nodiscardconstexpr

Gets reverse iterator to the beginning of reversed array.

Returns
Const reverse iterator pointing to the last element
Postcondition
Iterator is valid for reverse traversal
For empty array, equals rend()

Definition at line 1123 of file union_array.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rend()

template<class DERIVED>
auto sparrow::union_array_crtp_base< DERIVED >::rend ( ) const
nodiscardconstexpr

Gets reverse iterator to the end of reversed array.

Returns
Const reverse iterator pointing before the first element
Postcondition
Iterator marks the end of reverse traversal
Not dereferenceable

Definition at line 1129 of file union_array.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ size()

template<class DERIVED>
std::size_t sparrow::union_array_crtp_base< DERIVED >::size ( ) const
nodiscardconstexpr

Gets the number of elements in the union array.

Returns
Number of elements in the array
Postcondition
Returns non-negative value
Equals the number of type IDs in the type buffer

Definition at line 1075 of file union_array.hpp.

Here is the caller graph for this function:

◆ type_id_map_from_child_to_type_id() [1/2]

template<class DERIVED>
template<std::ranges::input_range R>
static constexpr type_id_map sparrow::union_array_crtp_base< DERIVED >::type_id_map_from_child_to_type_id ( const std::optional< R > & child_index_to_type_id)
staticconstexprprotected

Creates type ID mapping from child index to type ID mapping.

Template Parameters
RRange type containing type IDs
Parameters
child_index_to_type_idOptional mapping from child index to type ID
Returns
Inverse mapping from type ID to child index
Postcondition
If no mapping provided, uses identity mapping (0->0, 1->1, etc.)
Returned mapping enables efficient child array lookup

◆ type_id_map_from_child_to_type_id() [2/2]

template<class DERIVED>
template<std::ranges::input_range R>
auto sparrow::union_array_crtp_base< DERIVED >::type_id_map_from_child_to_type_id ( const std::optional< R > & child_index_to_type_id) -> type_id_map
constexpr

Definition at line 948 of file union_array.hpp.

◆ zero_null_values()

template<class DERIVED>
void sparrow::union_array_crtp_base< DERIVED >::zero_null_values ( const inner_value_type & value)
inlineconstexpr

Sets all null values to the specified value.

This operation modifies the underlying data values but not the validity bitmap. The bitmap remains unchanged, so the elements will still be considered null. Only the actual stored values are replaced.

Parameters
valueThe value to assign to null elements
Postcondition
All null positions contain the specified value
Validity bitmap remains unchanged
Elements are still logically null despite having a value

Definition at line 354 of file union_array.hpp.

Friends And Related Symbol Documentation

◆ detail::array_access

template<class DERIVED>
friend class detail::array_access
friend

Definition at line 488 of file union_array.hpp.

Member Data Documentation

◆ m_children

template<class DERIVED>
children_type sparrow::union_array_crtp_base< DERIVED >::m_children
protected

Child array wrappers.

Definition at line 485 of file union_array.hpp.

◆ m_proxy

template<class DERIVED>
arrow_proxy sparrow::union_array_crtp_base< DERIVED >::m_proxy
protected

Internal Arrow proxy.

Definition at line 483 of file union_array.hpp.

◆ m_type_id_map

template<class DERIVED>
std::array<std::uint8_t, TYPE_ID_MAP_SIZE> sparrow::union_array_crtp_base< DERIVED >::m_type_id_map
protected

Type ID to child index mapping.

Definition at line 486 of file union_array.hpp.

◆ p_type_ids

template<class DERIVED>
const std::uint8_t* sparrow::union_array_crtp_base< DERIVED >::p_type_ids
protected

Pointer to type ID buffer.

Definition at line 484 of file union_array.hpp.

◆ TYPE_ID_MAP_SIZE

template<class DERIVED>
size_t sparrow::union_array_crtp_base< DERIVED >::TYPE_ID_MAP_SIZE = 256
staticconstexprprotected

Definition at line 361 of file union_array.hpp.


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