39 template <
class DERIVED>
51 requires std::same_as<T, list_array_impl<false>> || std::same_as<T, list_array_impl<true>>
58 requires std::same_as<T, list_view_array_impl<false>> || std::same_as<T, list_view_array_impl<true>>
61 return "list_view_array";
110 return "fixed_sized_list_array";
175 template <input_metadata_container METADATA_RANGE = std::vector<metadata_pair>>
179 std::optional<std::string_view> name,
180 std::optional<METADATA_RANGE> metadata,
185 std::optional<std::unordered_set<ArrowFlag>>
204 std::int64_t null_count,
214 std::move(arr_buffs),
279 template <
class DERIVED>
363 using list_size_type =
inner_types::list_size_type;
396 using offset_type = std::conditional_t<BIG, const std::int64_t, const std::int32_t>;
450 template <class... ARGS>
474 template <std::ranges::range SIZES_RANGE>
505 std::optional<std::string_view> name = std::nullopt,
506 std::optional<METADATA_RANGE> metadata = std::nullopt
529 std::ranges::input_range OFFSET_BUFFER_RANGE,
531 requires std::convertible_to<std::ranges::range_value_t<OFFSET_BUFFER_RANGE>,
offset_type>
534 OFFSET_BUFFER_RANGE&& list_offsets_range,
536 std::optional<std::string_view> name = std::nullopt,
537 std::optional<METADATA_RANGE> metadata = std::nullopt
540 offset_buffer_type list_offsets{std::forward<OFFSET_BUFFER_RANGE>(list_offsets_range)};
541 return list_array_impl<BIG>::create_proxy(
542 std::move(flat_values),
543 std::move(list_offsets),
544 std::forward<VB>(validity_input),
545 std::forward<std::optional<std::string_view>>(name),
546 std::forward<std::optional<METADATA_RANGE>>(metadata)
552 input_metadata_container METADATA_RANGE = std::vector<metadata_pair>>
553 [[nodiscard]]
static arrow_proxy create_proxy(
555 offset_buffer_type&& list_offsets,
556 bool nullable =
true,
557 std::optional<std::string_view> name = std::nullopt,
558 std::optional<METADATA_RANGE> metadata = std::nullopt
563 std::ranges::input_range OFFSET_BUFFER_RANGE,
564 input_metadata_container METADATA_RANGE = std::vector<metadata_pair>>
565 requires std::convertible_to<std::ranges::range_value_t<OFFSET_BUFFER_RANGE>, offset_type>
566 [[nodiscard]]
static arrow_proxy create_proxy(
568 OFFSET_BUFFER_RANGE&& list_offsets_range,
569 bool nullable =
true,
570 std::optional<std::string_view> name = std::nullopt,
571 std::optional<METADATA_RANGE> metadata = std::nullopt
574 offset_buffer_type list_offsets{std::forward<OFFSET_BUFFER_RANGE>(list_offsets_range)};
575 return list_array_impl<BIG>::create_proxy(
576 std::move(flat_values),
577 std::move(list_offsets),
579 std::forward<std::optional<std::string_view>>(name),
580 std::forward<std::optional<METADATA_RANGE>>(metadata)
584 static constexpr std::size_t OFFSET_BUFFER_INDEX = 1;
585 [[nodiscard]]
constexpr std::pair<offset_type, offset_type> offset_range(
size_type i)
const;
587 [[nodiscard]]
constexpr offset_type* make_list_offsets();
606 using offset_type = std::conditional_t<BIG, const std::int64_t, const std::int32_t>;
662 template <
class... ARGS>
665 :
self_type(create_proxy(std::forward<ARGS>(args)...))
695 std::ranges::input_range OFFSET_BUFFER_RANGE,
696 std::ranges::input_range SIZE_RANGE,
700 std::convertible_to<std::ranges::range_value_t<OFFSET_BUFFER_RANGE>, offset_type>
701 && std::convertible_to<std::ranges::range_value_t<SIZE_RANGE>, list_size_type>
705 OFFSET_BUFFER_RANGE&& list_offsets,
706 SIZE_RANGE&& list_sizes,
708 std::optional<std::string_view> name = std::nullopt,
709 std::optional<METADATA_RANGE> metadata = std::nullopt
712 return list_view_array_impl<BIG>::create_proxy(
713 std::move(flat_values),
714 offset_buffer_type(std::forward<OFFSET_BUFFER_RANGE>(list_offsets)),
715 size_buffer_type(std::forward<SIZE_RANGE>(list_sizes)),
716 std::forward<VB>(validity_input),
723 validity_bitmap_input VB = validity_bitmap,
724 input_metadata_container METADATA_RANGE = std::vector<metadata_pair>>
725 [[nodiscard]]
static arrow_proxy create_proxy(
727 offset_buffer_type&& list_offsets,
728 size_buffer_type&& list_sizes,
730 std::optional<std::string_view> name = std::nullopt,
731 std::optional<METADATA_RANGE> metadata = std::nullopt
735 std::ranges::input_range OFFSET_BUFFER_RANGE,
736 std::ranges::input_range SIZE_RANGE,
737 input_metadata_container METADATA_RANGE = std::vector<metadata_pair>>
739 std::convertible_to<std::ranges::range_value_t<OFFSET_BUFFER_RANGE>, offset_type>
740 && std::convertible_to<std::ranges::range_value_t<SIZE_RANGE>, list_size_type>
742 [[nodiscard]]
static arrow_proxy create_proxy(
744 OFFSET_BUFFER_RANGE&& list_offsets,
745 SIZE_RANGE&& list_sizes,
746 bool nullable =
true,
747 std::optional<std::string_view> name = std::nullopt,
748 std::optional<METADATA_RANGE> metadata = std::nullopt
751 return list_view_array_impl<BIG>::create_proxy(
752 std::move(flat_values),
753 offset_buffer_type(std::forward<OFFSET_BUFFER_RANGE>(list_offsets)),
754 size_buffer_type(std::forward<SIZE_RANGE>(list_sizes)),
761 template <input_metadata_container METADATA_RANGE = std::vector<metadata_pair>>
762 [[nodiscard]]
static arrow_proxy create_proxy(
764 offset_buffer_type&& list_offsets,
765 size_buffer_type&& list_sizes,
766 bool nullable =
true,
767 std::optional<std::string_view> name = std::nullopt,
768 std::optional<METADATA_RANGE> metadata = std::nullopt
771 static constexpr std::size_t OFFSET_BUFFER_INDEX = 1;
772 static constexpr std::size_t SIZES_BUFFER_INDEX = 2;
773 [[nodiscard]]
constexpr std::pair<offset_type, offset_type> offset_range(size_type i)
const;
775 [[nodiscard]]
constexpr offset_type* make_list_offsets();
776 [[nodiscard]]
constexpr offset_type* make_list_sizes();
778 offset_type* p_list_offsets;
827 template <
class... ARGS>
830 :
self_type(create_proxy(std::forward<ARGS>(args)...))
858 std::uint64_t list_size,
861 std::optional<std::string_view> name = std::nullopt,
862 std::optional<METADATA_RANGE> metadata = std::nullopt
887 std::uint64_t list_size,
890 std::optional<std::string_view> name = std::nullopt,
891 std::optional<METADATA_RANGE> metadata = std::nullopt
906 [[nodiscard]]
static uint64_t list_size_from_format(
const std::string_view format);
918 [[nodiscard]]
constexpr std::pair<offset_type, offset_type> offset_range(size_type i)
const;
920 uint64_t m_list_size;
931 template <
class DERIVED>
934 , p_flat_array(make_flat_array())
938 template <
class DERIVED>
941 , p_flat_array(make_flat_array())
945 template <
class DERIVED>
949 p_flat_array = make_flat_array();
953 template <
class DERIVED>
956 return p_flat_array.get();
959 template <
class DERIVED>
962 return p_flat_array.get();
965 template <
class DERIVED>
966 constexpr auto list_array_crtp_base<DERIVED>::value_begin() -> value_iterator
971 template <
class DERIVED>
972 constexpr auto list_array_crtp_base<DERIVED>::value_end() -> value_iterator
974 return value_iterator(
975 detail::layout_value_functor<DERIVED, inner_value_type>(&this->derived_cast()),
980 template <
class DERIVED>
981 constexpr auto list_array_crtp_base<DERIVED>::value_cbegin() const -> const_value_iterator
983 return const_value_iterator(
989 template <
class DERIVED>
990 constexpr auto list_array_crtp_base<DERIVED>::value_cend() const -> const_value_iterator
992 return const_value_iterator(
998 template <
class DERIVED>
999 constexpr auto list_array_crtp_base<DERIVED>::value(size_type i) -> inner_reference
1001 const auto r = this->derived_cast().offset_range(i);
1003 return list_value{p_flat_array.get(),
static_cast<st
>(r.first),
static_cast<st
>(r.second)};
1006 template <
class DERIVED>
1007 constexpr auto list_array_crtp_base<DERIVED>::value(size_type i)
const -> inner_const_reference
1009 const auto r = this->derived_cast().offset_range(i);
1011 return list_value{p_flat_array.get(),
static_cast<st
>(r.first),
static_cast<st
>(r.second)};
1014 template <
class DERIVED>
1017 return array_factory(this->get_arrow_proxy().children()[0].view());
1025# pragma GCC diagnostic push
1026# pragma GCC diagnostic ignored "-Wcast-align"
1032 , p_list_offsets(make_list_offsets())
1037 template <std::ranges::range SIZES_RANGE>
1041 std::forward<SIZES_RANGE>(sizes)
1046 template <val
idity_bitmap_input VB, input_metadata_container METADATA_RANGE>
1048 array&& flat_values,
1049 offset_buffer_type&& list_offsets,
1050 VB&& validity_input,
1051 std::optional<std::string_view> name,
1052 std::optional<METADATA_RANGE> metadata
1055 const auto size = list_offsets.size() - 1;
1057 const auto null_count = vbitmap.
null_count();
1062 BIG ? std::string(
"+L") : std::string(
"+l"),
1063 std::move(flat_schema),
1069 std::vector<buffer<std::uint8_t>> arr_buffs;
1070 arr_buffs.reserve(2);
1071 arr_buffs.emplace_back(std::move(vbitmap).extract_storage());
1072 arr_buffs.emplace_back(std::move(list_offsets).extract_storage());
1075 static_cast<std::int64_t
>(size),
1076 static_cast<std::int64_t
>(null_count),
1077 std::move(arr_buffs),
1081 return arrow_proxy{std::move(arr), std::move(schema)};
1085 template <val
idity_bitmap_input VB, input_metadata_container METADATA_RANGE>
1087 array&& flat_values,
1088 offset_buffer_type&& list_offsets,
1090 std::optional<std::string_view> name,
1091 std::optional<METADATA_RANGE> metadata
1096 return list_array_impl<BIG>::create_proxy(
1097 std::move(flat_values),
1098 std::move(list_offsets),
1105 const auto size = list_offsets.size() - 1;
1109 BIG ? std::string(
"+L") : std::string(
"+l"),
1110 std::move(flat_schema),
1116 std::vector<buffer<std::uint8_t>> arr_buffs;
1117 arr_buffs.reserve(2);
1119 arr_buffs.emplace_back(std::move(list_offsets).extract_storage());
1122 static_cast<std::int64_t
>(size),
1124 std::move(arr_buffs),
1128 return arrow_proxy{std::move(arr), std::move(schema)};
1134 , p_list_offsets(make_list_offsets())
1146 p_list_offsets = make_list_offsets();
1152 constexpr auto list_array_impl<BIG>::offset_range(size_type i)
const -> std::pair<offset_type, offset_type>
1154 return std::make_pair(p_list_offsets[i], p_list_offsets[i + 1]);
1158 constexpr auto list_array_impl<BIG>::make_list_offsets() -> offset_type*
1160 return reinterpret_cast<offset_type*
>(
1161 this->get_arrow_proxy().buffers()[OFFSET_BUFFER_INDEX].data() + this->get_arrow_proxy().offset()
1172 , p_list_offsets(make_list_offsets())
1173 , p_list_sizes(make_list_sizes())
1178 template <val
idity_bitmap_input VB, input_metadata_container METADATA_RANGE>
1179 arrow_proxy list_view_array_impl<BIG>::create_proxy(
1180 array&& flat_values,
1181 offset_buffer_type&& list_offsets,
1182 size_buffer_type&& list_sizes,
1183 VB&& validity_input,
1184 std::optional<std::string_view> name,
1185 std::optional<METADATA_RANGE> metadata
1188 SPARROW_ASSERT(list_offsets.size() == list_sizes.size(),
"sizes and offset must have the same size");
1189 const auto size = list_sizes.size();
1191 const auto null_count = vbitmap.
null_count();
1196 BIG ? std::string(
"+vL") : std::string(
"+vl"),
1197 std::move(flat_schema),
1203 std::vector<buffer<std::uint8_t>> arr_buffs;
1204 arr_buffs.reserve(3);
1205 arr_buffs.emplace_back(std::move(vbitmap).extract_storage());
1206 arr_buffs.emplace_back(std::move(list_offsets).extract_storage());
1207 arr_buffs.emplace_back(std::move(list_sizes).extract_storage());
1210 static_cast<std::int64_t
>(size),
1211 static_cast<std::int64_t
>(null_count),
1212 std::move(arr_buffs),
1216 return arrow_proxy{std::move(arr), std::move(schema)};
1220 template <input_metadata_container METADATA_RANGE>
1221 arrow_proxy list_view_array_impl<BIG>::create_proxy(
1222 array&& flat_values,
1223 offset_buffer_type&& list_offsets,
1224 size_buffer_type&& list_sizes,
1226 std::optional<std::string_view> name,
1227 std::optional<METADATA_RANGE> metadata
1232 return list_view_array_impl<BIG>::create_proxy(
1233 std::move(flat_values),
1234 std::move(list_offsets),
1235 std::move(list_sizes),
1242 SPARROW_ASSERT(list_offsets.size() == list_sizes.size(),
"sizes and offset must have the same size");
1243 const auto size = list_sizes.size();
1247 BIG ? std::string(
"+vL") : std::string(
"+vl"),
1248 std::move(flat_schema),
1254 std::vector<buffer<std::uint8_t>> arr_buffs;
1255 arr_buffs.reserve(3);
1257 arr_buffs.emplace_back(std::move(list_offsets).extract_storage());
1258 arr_buffs.emplace_back(std::move(list_sizes).extract_storage());
1261 static_cast<std::int64_t
>(size),
1263 std::move(arr_buffs),
1267 return arrow_proxy{std::move(arr), std::move(schema)};
1273 , p_list_offsets(make_list_offsets())
1274 , p_list_sizes(make_list_sizes())
1286 p_list_offsets = make_list_offsets();
1287 p_list_sizes = make_list_sizes();
1293 inline constexpr auto list_view_array_impl<BIG>::offset_range(size_type i)
const
1294 -> std::pair<offset_type, offset_type>
1296 const auto offset = p_list_offsets[i];
1297 return std::make_pair(offset, offset + p_list_sizes[i]);
1301 constexpr auto list_view_array_impl<BIG>::make_list_offsets() -> offset_type*
1303 return reinterpret_cast<offset_type*
>(
1304 this->get_arrow_proxy().buffers()[OFFSET_BUFFER_INDEX].data() + this->get_arrow_proxy().offset()
1309 constexpr auto list_view_array_impl<BIG>::make_list_sizes() -> offset_type*
1311 return reinterpret_cast<offset_type*
>(
1312 this->get_arrow_proxy().buffers()[SIZES_BUFFER_INDEX].data() + this->get_arrow_proxy().offset()
1317# pragma GCC diagnostic pop
1324 inline auto fixed_sized_list_array::list_size_from_format(
const std::string_view format) -> uint64_t
1327 const auto n_digits = format.size() - 3;
1328 const auto list_size_str = format.substr(3, n_digits);
1329 return std::stoull(std::string(list_size_str));
1340 , m_list_size(rhs.m_list_size)
1351 m_list_size = rhs.m_list_size;
1356 constexpr auto fixed_sized_list_array::offset_range(size_type i)
const
1357 -> std::pair<offset_type, offset_type>
1359 const auto offset = i * m_list_size;
1360 return std::make_pair(offset, offset + m_list_size);
1363 template <val
idity_bitmap_input R, input_metadata_container METADATA_RANGE>
1364 inline arrow_proxy fixed_sized_list_array::create_proxy(
1365 std::uint64_t list_size,
1366 array&& flat_values,
1368 std::optional<std::string_view> name,
1369 std::optional<METADATA_RANGE> metadata
1372 const auto size = flat_values.size() /
static_cast<std::size_t
>(list_size);
1374 const auto null_count = vbitmap.null_count();
1378 std::string format =
"+w:" + std::to_string(list_size);
1381 std::move(flat_schema),
1387 std::vector<buffer<std::uint8_t>> arr_buffs;
1388 arr_buffs.reserve(1);
1389 arr_buffs.emplace_back(vbitmap.extract_storage());
1392 static_cast<std::int64_t
>(size),
1393 static_cast<std::int64_t
>(null_count),
1394 std::move(arr_buffs),
1398 return arrow_proxy{std::move(arr), std::move(schema)};
1401 template <val
idity_bitmap_input R, input_metadata_container METADATA_RANGE>
1402 inline arrow_proxy fixed_sized_list_array::create_proxy(
1403 std::uint64_t list_size,
1404 array&& flat_values,
1406 std::optional<std::string_view> name,
1407 std::optional<METADATA_RANGE> metadata
1412 return fixed_sized_list_array::create_proxy(
1414 std::move(flat_values),
1421 const auto size = flat_values.size() /
static_cast<std::size_t
>(list_size);
1424 std::string format =
"+w:" + std::to_string(list_size);
1427 std::move(flat_schema),
1433 std::vector<buffer<std::uint8_t>> arr_buffs;
1434 arr_buffs.reserve(1);
1438 static_cast<std::int64_t
>(size),
1440 std::move(arr_buffs),
1444 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.
xsimd::aligned_allocator< T > default_allocator
Smart pointer behaving like a copiable std::unique_ptr.
constexpr size_type null_count() const noexcept
Returns the number of bits set to false (null/invalid).
typename storage_type::default_allocator default_allocator
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
fixed_sized_list_array & operator=(const self_type &)
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__)
SPARROW_API void increase(const std::string &key)
std::string key< fixed_sized_list_array >()
ArrowArray make_list_arrow_array(std::int64_t size, std::int64_t null_count, std::vector< buffer< std::uint8_t > > &&arr_buffs, ArrowArray &&flat_arr)
ArrowSchema make_list_arrow_schema(std::string format, ArrowSchema &&flat_schema, std::optional< std::string_view > name, std::optional< METADATA_RANGE > metadata, bool nullable)
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.
Extensions to the C++ standard library.
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()
Metafunction for retrieving the data_type of a typed array.