38 template <
class DERIVED>
221 template <
class DERIVED>
305 using list_size_type =
inner_types::list_size_type;
338 using offset_type = std::conditional_t<BIG, const std::int64_t, const std::int32_t>;
392 template <class... ARGS>
416 template <std::ranges::range SIZES_RANGE>
447 std::optional<std::string_view> name = std::nullopt,
448 std::optional<METADATA_RANGE> metadata = std::nullopt
471 std::ranges::input_range OFFSET_BUFFER_RANGE,
473 requires std::convertible_to<std::ranges::range_value_t<OFFSET_BUFFER_RANGE>,
offset_type>
476 OFFSET_BUFFER_RANGE&& list_offsets_range,
478 std::optional<std::string_view> name = std::nullopt,
479 std::optional<METADATA_RANGE> metadata = std::nullopt
482 offset_buffer_type list_offsets{std::forward<OFFSET_BUFFER_RANGE>(list_offsets_range)};
483 return list_array_impl<BIG>::create_proxy(
484 std::move(flat_values),
485 std::move(list_offsets),
486 std::forward<VB>(validity_input),
487 std::forward<std::optional<std::string_view>>(name),
488 std::forward<std::optional<METADATA_RANGE>>(metadata)
494 input_metadata_container METADATA_RANGE = std::vector<metadata_pair>>
495 [[nodiscard]]
static arrow_proxy create_proxy(
497 offset_buffer_type&& list_offsets,
498 bool nullable =
true,
499 std::optional<std::string_view> name = std::nullopt,
500 std::optional<METADATA_RANGE> metadata = std::nullopt
505 std::ranges::input_range OFFSET_BUFFER_RANGE,
506 input_metadata_container METADATA_RANGE = std::vector<metadata_pair>>
507 requires std::convertible_to<std::ranges::range_value_t<OFFSET_BUFFER_RANGE>, offset_type>
508 [[nodiscard]]
static arrow_proxy create_proxy(
510 OFFSET_BUFFER_RANGE&& list_offsets_range,
511 bool nullable =
true,
512 std::optional<std::string_view> name = std::nullopt,
513 std::optional<METADATA_RANGE> metadata = std::nullopt
516 offset_buffer_type list_offsets{std::forward<OFFSET_BUFFER_RANGE>(list_offsets_range)};
517 return list_array_impl<BIG>::create_proxy(
518 std::move(flat_values),
519 std::move(list_offsets),
521 std::forward<std::optional<std::string_view>>(name),
522 std::forward<std::optional<METADATA_RANGE>>(metadata)
526 static constexpr std::size_t OFFSET_BUFFER_INDEX = 1;
527 [[nodiscard]]
constexpr std::pair<offset_type, offset_type> offset_range(
size_type i)
const;
529 [[nodiscard]]
constexpr offset_type* make_list_offsets();
548 using offset_type = std::conditional_t<BIG, const std::int64_t, const std::int32_t>;
604 template <
class... ARGS>
607 :
self_type(create_proxy(std::forward<ARGS>(args)...))
637 std::ranges::input_range OFFSET_BUFFER_RANGE,
638 std::ranges::input_range SIZE_RANGE,
642 std::convertible_to<std::ranges::range_value_t<OFFSET_BUFFER_RANGE>, offset_type>
643 && std::convertible_to<std::ranges::range_value_t<SIZE_RANGE>, list_size_type>
647 OFFSET_BUFFER_RANGE&& list_offsets,
648 SIZE_RANGE&& list_sizes,
650 std::optional<std::string_view> name = std::nullopt,
651 std::optional<METADATA_RANGE> metadata = std::nullopt
654 return list_view_array_impl<BIG>::create_proxy(
655 std::move(flat_values),
656 offset_buffer_type(std::forward<OFFSET_BUFFER_RANGE>(list_offsets)),
657 size_buffer_type(std::forward<SIZE_RANGE>(list_sizes)),
658 std::forward<VB>(validity_input),
665 validity_bitmap_input VB = validity_bitmap,
666 input_metadata_container METADATA_RANGE = std::vector<metadata_pair>>
667 [[nodiscard]]
static arrow_proxy create_proxy(
669 offset_buffer_type&& list_offsets,
670 size_buffer_type&& list_sizes,
672 std::optional<std::string_view> name = std::nullopt,
673 std::optional<METADATA_RANGE> metadata = std::nullopt
677 std::ranges::input_range OFFSET_BUFFER_RANGE,
678 std::ranges::input_range SIZE_RANGE,
679 input_metadata_container METADATA_RANGE = std::vector<metadata_pair>>
681 std::convertible_to<std::ranges::range_value_t<OFFSET_BUFFER_RANGE>, offset_type>
682 && std::convertible_to<std::ranges::range_value_t<SIZE_RANGE>, list_size_type>
684 [[nodiscard]]
static arrow_proxy create_proxy(
686 OFFSET_BUFFER_RANGE&& list_offsets,
687 SIZE_RANGE&& list_sizes,
688 bool nullable =
true,
689 std::optional<std::string_view> name = std::nullopt,
690 std::optional<METADATA_RANGE> metadata = std::nullopt
693 return list_view_array_impl<BIG>::create_proxy(
694 std::move(flat_values),
695 offset_buffer_type(std::forward<OFFSET_BUFFER_RANGE>(list_offsets)),
696 size_buffer_type(std::forward<SIZE_RANGE>(list_sizes)),
703 template <input_metadata_container METADATA_RANGE = std::vector<metadata_pair>>
704 [[nodiscard]]
static arrow_proxy create_proxy(
706 offset_buffer_type&& list_offsets,
707 size_buffer_type&& list_sizes,
708 bool nullable =
true,
709 std::optional<std::string_view> name = std::nullopt,
710 std::optional<METADATA_RANGE> metadata = std::nullopt
713 static constexpr std::size_t OFFSET_BUFFER_INDEX = 1;
714 static constexpr std::size_t SIZES_BUFFER_INDEX = 2;
715 [[nodiscard]]
constexpr std::pair<offset_type, offset_type> offset_range(size_type i)
const;
717 [[nodiscard]]
constexpr offset_type* make_list_offsets();
718 [[nodiscard]]
constexpr offset_type* make_list_sizes();
720 offset_type* p_list_offsets;
769 template <
class... ARGS>
772 :
self_type(create_proxy(std::forward<ARGS>(args)...))
800 std::uint64_t list_size,
803 std::optional<std::string_view> name = std::nullopt,
804 std::optional<METADATA_RANGE> metadata = std::nullopt
829 std::uint64_t list_size,
832 std::optional<std::string_view> name = std::nullopt,
833 std::optional<METADATA_RANGE> metadata = std::nullopt
848 [[nodiscard]]
static uint64_t list_size_from_format(
const std::string_view format);
860 [[nodiscard]]
constexpr std::pair<offset_type, offset_type> offset_range(size_type i)
const;
862 uint64_t m_list_size;
873 template <
class DERIVED>
876 , p_flat_array(make_flat_array())
880 template <
class DERIVED>
883 , p_flat_array(make_flat_array())
887 template <
class DERIVED>
891 p_flat_array = make_flat_array();
895 template <
class DERIVED>
898 return p_flat_array.get();
901 template <
class DERIVED>
904 return p_flat_array.get();
907 template <
class DERIVED>
908 constexpr auto list_array_crtp_base<DERIVED>::value_begin() -> value_iterator
913 template <
class DERIVED>
914 constexpr auto list_array_crtp_base<DERIVED>::value_end() -> value_iterator
916 return value_iterator(
917 detail::layout_value_functor<DERIVED, inner_value_type>(&this->derived_cast()),
922 template <
class DERIVED>
923 constexpr auto list_array_crtp_base<DERIVED>::value_cbegin() const -> const_value_iterator
925 return const_value_iterator(
931 template <
class DERIVED>
932 constexpr auto list_array_crtp_base<DERIVED>::value_cend() const -> const_value_iterator
934 return const_value_iterator(
940 template <
class DERIVED>
941 constexpr auto list_array_crtp_base<DERIVED>::value(size_type i) -> inner_reference
943 const auto r = this->derived_cast().offset_range(i);
945 return list_value{p_flat_array.get(),
static_cast<st
>(r.first),
static_cast<st
>(r.second)};
948 template <
class DERIVED>
949 constexpr auto list_array_crtp_base<DERIVED>::value(size_type i)
const -> inner_const_reference
951 const auto r = this->derived_cast().offset_range(i);
953 return list_value{p_flat_array.get(),
static_cast<st
>(r.first),
static_cast<st
>(r.second)};
956 template <
class DERIVED>
959 return array_factory(this->get_arrow_proxy().children()[0].view());
967# pragma GCC diagnostic push
968# pragma GCC diagnostic ignored "-Wcast-align"
974 , p_list_offsets(make_list_offsets())
979 template <std::ranges::range SIZES_RANGE>
983 std::forward<SIZES_RANGE>(sizes)
988 template <val
idity_bitmap_input VB, input_metadata_container METADATA_RANGE>
991 offset_buffer_type&& list_offsets,
993 std::optional<std::string_view> name,
994 std::optional<METADATA_RANGE> metadata
997 const auto size = list_offsets.size() - 1;
1002 const auto null_count = vbitmap.
null_count();
1008 BIG ? std::string(
"+L") : std::string(
"+l"),
1012 new ArrowSchema*[1]{
new ArrowSchema(std::move(flat_schema))},
1018 std::vector<buffer<std::uint8_t>> arr_buffs = {
1019 std::move(vbitmap).extract_storage(),
1020 std::move(list_offsets).extract_storage()
1024 static_cast<std::int64_t
>(size),
1025 static_cast<int64_t
>(null_count),
1027 std::move(arr_buffs),
1028 new ArrowArray*[1]{
new ArrowArray(std::move(flat_arr))},
1033 return arrow_proxy{std::move(arr), std::move(schema)};
1037 template <val
idity_bitmap_input VB, input_metadata_container METADATA_RANGE>
1039 array&& flat_values,
1040 offset_buffer_type&& list_offsets,
1042 std::optional<std::string_view> name,
1043 std::optional<METADATA_RANGE> metadata
1048 return list_array_impl<BIG>::create_proxy(
1049 std::move(flat_values),
1050 std::move(list_offsets),
1058 const auto size = list_offsets.size() - 1;
1063 BIG ? std::string(
"+L") : std::string(
"+l"),
1067 new ArrowSchema*[1]{
new ArrowSchema(std::move(flat_schema))},
1073 std::vector<buffer<std::uint8_t>> arr_buffs = {
1075 std::move(list_offsets).extract_storage()
1079 static_cast<std::int64_t
>(size),
1082 std::move(arr_buffs),
1083 new ArrowArray*[1]{
new ArrowArray(std::move(flat_arr))},
1088 return arrow_proxy{std::move(arr), std::move(schema)};
1095 , p_list_offsets(make_list_offsets())
1105 p_list_offsets = make_list_offsets();
1111 constexpr auto list_array_impl<BIG>::offset_range(size_type i)
const -> std::pair<offset_type, offset_type>
1113 return std::make_pair(p_list_offsets[i], p_list_offsets[i + 1]);
1117 constexpr auto list_array_impl<BIG>::make_list_offsets() -> offset_type*
1119 return reinterpret_cast<offset_type*
>(
1120 this->get_arrow_proxy().buffers()[OFFSET_BUFFER_INDEX].data() + this->get_arrow_proxy().offset()
1131 , p_list_offsets(make_list_offsets())
1132 , p_list_sizes(make_list_sizes())
1137 template <val
idity_bitmap_input VB, input_metadata_container METADATA_RANGE>
1138 arrow_proxy list_view_array_impl<BIG>::create_proxy(
1139 array&& flat_values,
1140 offset_buffer_type&& list_offsets,
1141 size_buffer_type&& list_sizes,
1142 VB&& validity_input,
1143 std::optional<std::string_view> name,
1144 std::optional<METADATA_RANGE> metadata
1147 SPARROW_ASSERT(list_offsets.size() == list_sizes.size(),
"sizes and offset must have the same size");
1148 const auto size = list_sizes.size();
1151 const auto null_count = vbitmap.
null_count();
1156 BIG ? std::string(
"+vL") : std::string(
"+vl"),
1160 new ArrowSchema*[1]{
new ArrowSchema(std::move(flat_schema))},
1165 std::vector<buffer<std::uint8_t>> arr_buffs = {
1166 std::move(vbitmap).extract_storage(),
1167 std::move(list_offsets).extract_storage(),
1168 std::move(list_sizes).extract_storage()
1172 static_cast<std::int64_t
>(size),
1173 static_cast<int64_t
>(null_count),
1175 std::move(arr_buffs),
1176 new ArrowArray*[1]{
new ArrowArray(std::move(flat_arr))},
1181 return arrow_proxy{std::move(arr), std::move(schema)};
1185 template <input_metadata_container METADATA_RANGE>
1186 arrow_proxy list_view_array_impl<BIG>::create_proxy(
1187 array&& flat_values,
1188 offset_buffer_type&& list_offsets,
1189 size_buffer_type&& list_sizes,
1191 std::optional<std::string_view> name,
1192 std::optional<METADATA_RANGE> metadata
1197 return list_view_array_impl<BIG>::create_proxy(
1198 std::move(flat_values),
1199 std::move(list_offsets),
1200 std::move(list_sizes),
1208 SPARROW_ASSERT(list_offsets.size() == list_sizes.size(),
"sizes and offset must have the same size");
1209 const auto size = list_sizes.size();
1214 BIG ? std::string(
"+vL") : std::string(
"+vl"),
1218 new ArrowSchema*[1]{
new ArrowSchema(std::move(flat_schema))},
1223 std::vector<buffer<std::uint8_t>> arr_buffs = {
1225 std::move(list_offsets).extract_storage(),
1226 std::move(list_sizes).extract_storage()
1230 static_cast<std::int64_t
>(size),
1233 std::move(arr_buffs),
1234 new ArrowArray*[1]{
new ArrowArray(std::move(flat_arr))},
1239 return arrow_proxy{std::move(arr), std::move(schema)};
1246 , p_list_offsets(make_list_offsets())
1247 , p_list_sizes(make_list_sizes())
1257 p_list_offsets = make_list_offsets();
1258 p_list_sizes = make_list_sizes();
1264 inline constexpr auto list_view_array_impl<BIG>::offset_range(size_type i)
const
1265 -> std::pair<offset_type, offset_type>
1267 const auto offset = p_list_offsets[i];
1268 return std::make_pair(offset, offset + p_list_sizes[i]);
1272 constexpr auto list_view_array_impl<BIG>::make_list_offsets() -> offset_type*
1274 return reinterpret_cast<offset_type*
>(
1275 this->get_arrow_proxy().buffers()[OFFSET_BUFFER_INDEX].data() + this->get_arrow_proxy().offset()
1280 constexpr auto list_view_array_impl<BIG>::make_list_sizes() -> offset_type*
1282 return reinterpret_cast<offset_type*
>(
1283 this->get_arrow_proxy().buffers()[SIZES_BUFFER_INDEX].data() + this->get_arrow_proxy().offset()
1288# pragma GCC diagnostic pop
1295 inline auto fixed_sized_list_array::list_size_from_format(
const std::string_view format) -> uint64_t
1298 const auto n_digits = format.size() - 3;
1299 const auto list_size_str = format.substr(3, n_digits);
1300 return std::stoull(std::string(list_size_str));
1309 constexpr auto fixed_sized_list_array::offset_range(size_type i)
const
1310 -> std::pair<offset_type, offset_type>
1312 const auto offset = i * m_list_size;
1313 return std::make_pair(offset, offset + m_list_size);
1316 template <val
idity_bitmap_input R, input_metadata_container METADATA_RANGE>
1317 inline arrow_proxy fixed_sized_list_array::create_proxy(
1318 std::uint64_t list_size,
1319 array&& flat_values,
1321 std::optional<std::string_view> name,
1322 std::optional<METADATA_RANGE> metadata
1325 const auto size = flat_values.size() /
static_cast<std::size_t
>(list_size);
1330 const auto null_count = vbitmap.
null_count();
1332 const repeat_view<bool> children_ownership{
true, 1};
1334 std::string format =
"+w:" + std::to_string(list_size);
1338 std::move(metadata),
1340 new ArrowSchema*[1]{
new ArrowSchema(std::move(flat_schema))},
1346 std::vector<buffer<std::uint8_t>> arr_buffs = {vbitmap.
extract_storage()};
1349 static_cast<std::int64_t
>(size),
1350 static_cast<int64_t
>(null_count),
1352 std::move(arr_buffs),
1353 new ArrowArray*[1]{
new ArrowArray(std::move(flat_arr))},
1358 return arrow_proxy{std::move(arr), std::move(schema)};
1361 template <val
idity_bitmap_input R, input_metadata_container METADATA_RANGE>
1362 inline arrow_proxy fixed_sized_list_array::create_proxy(
1363 std::uint64_t list_size,
1364 array&& flat_values,
1366 std::optional<std::string_view> name,
1367 std::optional<METADATA_RANGE> metadata
1372 return fixed_sized_list_array::create_proxy(
1374 std::move(flat_values),
1382 const auto size = flat_values.size() /
static_cast<std::size_t
>(list_size);
1384 const repeat_view<bool> children_ownership{
true, 1};
1386 std::string format =
"+w:" + std::to_string(list_size);
1390 std::move(metadata),
1392 new ArrowSchema*[1]{
new ArrowSchema(std::move(flat_schema))},
1398 std::vector<buffer<std::uint8_t>> arr_buffs = {
1399 buffer<std::uint8_t>{
nullptr, 0}
1403 static_cast<std::int64_t
>(size),
1406 std::move(arr_buffs),
1407 new ArrowArray*[1]{
new ArrowArray(std::move(flat_arr))},
1412 return arrow_proxy{std::move(arr), std::move(schema)};
typename base_type::const_bitmap_range const_bitmap_range
typename base_type::iterator_tag iterator_tag
constexpr array_bitmap_base_impl & operator=(const array_bitmap_base_impl &)
typename base_type::bitmap_const_reference bitmap_const_reference
typename base_type::bitmap_type bitmap_type
Base class for array type erasure.
Dynamically typed array encapsulating an Arrow layout.
Object that owns a piece of contiguous memory.
Smart pointer behaving like a copiable std::unique_ptr.
storage_type extract_storage() noexcept
Extracts the underlying storage (move operation).
constexpr size_type null_count() const noexcept
Returns the number of bits set to false (null/invalid).
fixed_sized_list_array & operator=(const self_type &)=default
constexpr fixed_sized_list_array(const self_type &)=default
inner_types::list_size_type list_size_type
array_inner_types< self_type > inner_types
fixed_sized_list_array(arrow_proxy proxy)
Constructs fixed size list array from Arrow proxy.
fixed_sized_list_array(ARGS &&... args)
Generic constructor for creating fixed size list array.
list_array_crtp_base< self_type > base_type
fixed_sized_list_array self_type
fixed_sized_list_array & operator=(self_type &&)=default
fixed_sized_list_array(self_type &&)=default
typename base_type::size_type size_type
std::uint64_t offset_type
CRTP base class for all list array implementations.
typename base_type::const_bitmap_range const_bitmap_range
constexpr list_array_crtp_base & operator=(const self_type &)
Copy assignment operator.
constexpr array_wrapper * raw_flat_array()
Gets mutable access to the underlying flat array.
nullable< inner_const_reference, bitmap_const_reference > const_reference
typename inner_types::const_value_iterator const_value_iterator
list_value inner_value_type
typename base_type::bitmap_const_reference bitmap_const_reference
typename base_type::iterator_tag iterator_tag
list_array_crtp_base(arrow_proxy proxy)
Constructs list array base from Arrow proxy.
constexpr list_array_crtp_base(const self_type &)
Copy constructor.
typename inner_types::value_iterator value_iterator
typename base_type::bitmap_type bitmap_type
list_array_crtp_base< DERIVED > self_type
typename base_type::size_type size_type
array_inner_types< DERIVED > inner_types
nullable< inner_value_type > value_type
list_value inner_const_reference
constexpr const array_wrapper * raw_flat_array() const
Gets read-only access to the underlying flat array.
list_value inner_reference
array_bitmap_base< DERIVED > base_type
constexpr list_array_crtp_base(self_type &&) noexcept=default
list_array_impl< BIG > self_type
constexpr list_array_impl(const self_type &)
Copy constructor.
std::conditional_t< BIG, const std::int64_t, const std::int32_t > offset_type
typename base_type::size_type size_type
constexpr list_array_impl & operator=(const self_type &)
Copy assignment operator.
array_inner_types< self_type > inner_types
constexpr list_array_impl(self_type &&) noexcept=default
static constexpr auto offset_from_sizes(SIZES_RANGE &&sizes) -> offset_buffer_type
Creates offset buffer from list sizes.
inner_types::list_size_type list_size_type
list_array_crtp_base< list_array_impl< BIG > > base_type
u8_buffer< std::remove_const_t< offset_type > > offset_buffer_type
list_array_impl(arrow_proxy proxy)
Constructs list array from Arrow proxy.
constexpr list_view_array_impl & operator=(self_type &&)=default
typename base_type::size_type size_type
constexpr list_view_array_impl(self_type &&)=default
u8_buffer< std::remove_const_t< offset_type > > offset_buffer_type
list_view_array_impl(arrow_proxy proxy)
Constructs list view array from Arrow proxy.
std::conditional_t< BIG, const std::int64_t, const std::int32_t > offset_type
array_inner_types< self_type > inner_types
list_array_crtp_base< list_view_array_impl< BIG > > base_type
list_view_array_impl(ARGS &&... args)
Generic constructor for creating list view array from various inputs.
list_view_array_impl< BIG > self_type
constexpr list_view_array_impl(const self_type &)
Copy constructor.
inner_types::list_size_type list_size_type
u8_buffer< std::remove_const_t< list_size_type > > size_buffer_type
constexpr list_view_array_impl & operator=(const self_type &)
Copy assignment operator.
A view that repeats a value a given number of times.
This buffer class is used as storage buffer for all sparrow arrays.
#define SPARROW_ASSERT(expr__, message__)
constexpr sparrow::u8_buffer< OFFSET_TYPE > offset_buffer_from_sizes(SIZES_RANGE &&sizes)
constexpr std::size_t size(typelist< T... >={})
Gets the count of types contained in a typelist.
constexpr bool excludes_copy_and_move_ctor_v
Convenience variable template for excludes_copy_and_move_ctor.
ArrowSchema make_arrow_schema(F format, N name, std::optional< M > metadata, std::optional< std::unordered_set< ArrowFlag > > flags, ArrowSchema **children, const CHILDREN_OWNERSHIP &children_ownership, ArrowSchema *dictionary, bool dictionary_ownership)
Creates an ArrowSchema owned by a unique_ptr and holding the provided data.
constexpr bool is_list_view_array_v
Checks whether T is a list_view_array type.
list_array_impl< false > list_array
A list array implementation.
array_bitmap_base_impl< D, false > array_bitmap_base
Convenient alias for arrays with immutable validity bitmaps.
constexpr bool is_fixed_sized_list_array_v
Checks whether T is a fixed_sized_list_array type.
list_view_array_impl< true > big_list_view_array
std::pair< ArrowArray, ArrowSchema > extract_arrow_structures(A &&a)
Extracts the internal ArrowArray and ArrowSchema structures from the given array or typed layout.
constexpr bool is_big_list_array_v
Checks whether T is a big_list_array type.
ArrowArray make_arrow_array(int64_t length, int64_t null_count, int64_t offset, B buffers, ArrowArray **children, const CHILDREN_OWNERSHIP &children_ownership, ArrowArray *dictionary, bool dictionary_ownership)
Creates an ArrowArray.
list_view_array_impl< false > list_view_array
A list view array implementation.
dynamic_bitset< std::uint8_t > validity_bitmap
Type alias for a validity bitmap using 8-bit storage blocks.
constexpr bool is_list_array_v
Checks whether T is a list_array type.
SPARROW_API cloning_ptr< array_wrapper > array_factory(arrow_proxy proxy)
list_array_impl< true > big_list_array
A big list array implementation.
validity_bitmap ensure_validity_bitmap(std::size_t size, R &&validity_input)
Ensures a validity bitmap of the specified size from various input types.
constexpr bool is_big_list_view_array_v
Checks whether T is a big_list_view_array type.
data_type
Runtime identifier of arrow data types, usually associated with raw bytes with the associated value.
list_value inner_value_type
functor_index_iterator< detail::layout_value_functor< const array_type, inner_value_type > > const_value_iterator
std::random_access_iterator_tag iterator_tag
fixed_sized_list_array array_type
list_value inner_reference
list_value inner_const_reference
std::uint64_t list_size_type
functor_index_iterator< detail::layout_value_functor< array_type, inner_value_type > > value_iterator
std::conditional_t< BIG, std::uint64_t, std::uint32_t > list_size_type
functor_index_iterator< detail::layout_value_functor< const array_type, inner_value_type > > const_value_iterator
std::random_access_iterator_tag iterator_tag
list_array_impl< BIG > array_type
functor_index_iterator< detail::layout_value_functor< array_type, inner_value_type > > value_iterator
list_value inner_value_type
list_value inner_const_reference
list_value inner_reference
list_value inner_value_type
list_value inner_const_reference
std::random_access_iterator_tag iterator_tag
functor_index_iterator< detail::layout_value_functor< array_type, inner_value_type > > value_iterator
list_value inner_reference
std::conditional_t< BIG, std::uint64_t, std::uint32_t > list_size_type
functor_index_iterator< detail::layout_value_functor< const array_type, inner_value_type > > const_value_iterator
list_view_array_impl< BIG > array_type
Base class for array_inner_types specializations.
Traits class that must be specialized by array implementations.
static constexpr sparrow::data_type get()
static constexpr sparrow::data_type get()
static constexpr sparrow::data_type get()
static constexpr sparrow::data_type get()
static constexpr sparrow::data_type get()
Metafunction for retrieving the data_type of a typed array.