28 template <trivial_copyable_type T>
31 template <trivial_copyable_type T>
51 template <trivial_copyable_type T>
67 using pointer =
typename inner_types::pointer;
99 template <
class... Args>
111 std::initializer_list<inner_value_type> init,
112 std::optional<std::string_view> name = std::nullopt,
113 std::optional<std::string_view> metadata = std::nullopt
139 std::optional<std::string_view> name = std::nullopt,
140 std::optional<std::string_view> metadata = std::nullopt
143 template <val
idity_bitmap_input R = val
idity_bitmap>
147 std::optional<std::string_view> name = std::nullopt,
148 std::optional<std::string_view> metadata = std::nullopt
152 template <std::ranges::input_range R>
153 requires std::convertible_to<std::ranges::range_value_t<R>, T>
156 std::optional<std::string_view> name = std::nullopt,
157 std::optional<std::string_view> metadata = std::nullopt
161 requires std::convertible_to<U, T>
164 const U&
value = U{},
165 std::optional<std::string_view> name = std::nullopt,
166 std::optional<std::string_view> metadata = std::nullopt
170 template <std::ranges::input_range R, val
idity_bitmap_input R2>
171 requires(std::convertible_to<std::ranges::range_value_t<R>, T>)
175 std::optional<std::string_view> name = std::nullopt,
176 std::optional<std::string_view> metadata = std::nullopt
180 template <std::ranges::input_range R>
181 requires std::is_same_v<std::ranges::range_value_t<R>,
nullable<T>>
184 std::optional<std::string_view> name = std::nullopt,
185 std::optional<std::string_view> metadata = std::nullopt
216 template <trivial_copyable_type T>
223 template <trivial_copyable_type T>
230 template <trivial_copyable_type T>
237 template <trivial_copyable_type T>
243 template <trivial_copyable_type T>
249 template <trivial_copyable_type T>
255 template <trivial_copyable_type T>
261 template <trivial_copyable_type T>
262 template <val
idity_bitmap_input R>
266 std::optional<std::string_view> name,
267 std::optional<std::string_view> metadata
270 const auto size = data_buffer.size();
285 std::vector<buffer<uint8_t>> buffers(2);
286 buffers[0] = std::move(bitmap).extract_storage();
287 buffers[1] = std::move(data_buffer).extract_storage();
291 static_cast<std::int64_t
>(size),
292 static_cast<int64_t
>(null_count),
299 return arrow_proxy(std::move(arr), std::move(schema));
302 template <trivial_copyable_type T>
303 template <std::ranges::input_range VALUE_RANGE, val
idity_bitmap_input R>
304 requires(std::convertible_to<std::ranges::range_value_t<VALUE_RANGE>, T>)
306 VALUE_RANGE&& values,
308 std::optional<std::string_view> name,
309 std::optional<std::string_view> metadata
312 u8_buffer<T> data_buffer(std::forward<VALUE_RANGE>(values));
314 std::move(data_buffer),
315 std::forward<R>(validity_input),
321 template <trivial_copyable_type T>
323 requires std::convertible_to<U, T>
327 std::optional<std::string_view> name,
328 std::optional<std::string_view> metadata
333 return create_proxy(std::move(data_buffer), std::move(name), std::move(metadata));
336 template <trivial_copyable_type T>
337 template <std::ranges::input_range R>
338 requires std::convertible_to<std::ranges::range_value_t<R>, T>
341 std::optional<std::string_view> name,
342 std::optional<std::string_view> metadata
346 const auto iota = std::ranges::iota_view{std::size_t(0), n};
347 std::ranges::transform_view iota_to_is_non_missing(
355 std::forward<R>(range),
356 std::move(iota_to_is_non_missing),
363 template <trivial_copyable_type T>
364 template <std::ranges::input_range R>
365 requires std::is_same_v<std::ranges::range_value_t<R>,
nullable<T>>
368 std::optional<std::string_view> name,
369 std::optional<std::string_view> metadata
374 | std::views::transform(
380 auto is_non_null = range
381 | std::views::transform(
384 return v.has_value();
387 return self_type::create_proxy(values, is_non_null, std::move(name), std::move(metadata));
array_bitmap_base_impl & operator=(const array_bitmap_base_impl &)
std::conditional_t< is_mutable, mutable_array_base< D >, array_crtp_base< D > > base_type
typename base_type::value_iterator value_iterator
friend class run_end_encoded_array
typename base_type::const_value_iterator const_value_iterator
constexpr T & value(size_t i)
array_trivial_copyable< T > self_type
typename inner_types::const_pointer const_pointer
typename inner_types::inner_reference inner_reference
static arrow_proxy create_proxy(R &&, std::optional< std::string_view > name=std::nullopt, std::optional< std::string_view > metadata=std::nullopt)
value_iterator value_begin()
const_value_iterator value_cend() const
typename inner_types::inner_const_reference inner_const_reference
static constexpr size_type DATA_BUFFER_INDEX
array_trivial_copyable(std::initializer_list< inner_value_type > init, std::optional< std::string_view > name=std::nullopt, std::optional< std::string_view > metadata=std::nullopt)
Constructs a primitive array from an initializer_list of raw values.
array_trivial_copyable(Args &&... args)
Constructs an array of trivial copyable type, with the passed range of values and an optional bitmap.
value_iterator value_end()
typename inner_types::inner_value_type inner_value_type
static arrow_proxy create_proxy(size_type n, std::optional< std::string_view > name=std::nullopt, std::optional< std::string_view > metadata=std::nullopt)
static auto create_proxy(R &&range, std::optional< std::string_view > name=std::nullopt, std::optional< std::string_view > metadata=std::nullopt) -> arrow_proxy
details::trivial_copyable_data_access< T, self_type > access_class_type
array_trivial_copyable(array_trivial_copyable &&rhs) noexcept
array_trivial_copyable(arrow_proxy)
array_trivial_copyable & operator=(array_trivial_copyable &&rhs) noexcept
static auto create_proxy(u8_buffer< T > &&data_buffer, R &&bitmaps=validity_bitmap{}, std::optional< std::string_view > name=std::nullopt, std::optional< std::string_view > metadata=std::nullopt) -> arrow_proxy
const_value_iterator value_cbegin() const
static arrow_proxy create_proxy(R &&, R2 &&, std::optional< std::string_view > name=std::nullopt, std::optional< std::string_view > metadata=std::nullopt)
array_trivial_copyable(const array_trivial_copyable &)
array_inner_types< self_type > inner_types
array_trivial_copyable & operator=(const array_trivial_copyable &)
typename inner_types::pointer pointer
mutable_array_bitmap_base< array_trivial_copyable< T > > base_type
static arrow_proxy create_proxy(size_type n, const U &value=U{}, std::optional< std::string_view > name=std::nullopt, std::optional< std::string_view > metadata=std::nullopt)
Proxy class over ArrowArray and ArrowSchema.
Data access class for trivial copyable types.
constexpr value_iterator insert_values(const_value_iterator pos, InputIt first, InputIt last)
constexpr value_iterator erase_values(const_value_iterator pos, size_t count)
constexpr void resize_values(size_t new_length, const T &value)
constexpr T & value(size_t i)
constexpr value_iterator insert_value(const_value_iterator pos, T value, size_t count)
constexpr size_type null_count() const noexcept
The nullable class models a value or a reference that can be "null", or missing, like values traditio...
constexpr bool excludes_copy_and_move_ctor_v
array_bitmap_base_impl< D, true > mutable_array_bitmap_base
Convenient typedef to be used as a crtp base class for arrays using a mutable validity buffer.
constexpr std::string_view data_type_format_of()
ArrowSchema make_arrow_schema(F format, N name, M metadata, std::optional< ArrowFlag > flags, int64_t n_children, ArrowSchema **children, ArrowSchema *dictionary)
Creates an ArrowSchema owned by a unique_ptr and holding the provided data.
constexpr InputIt next(InputIt it, Distance n)
dynamic_bitset< std::uint8_t > validity_bitmap
validity_bitmap ensure_validity_bitmap(std::size_t size, R &&validity_input)
std::size_t range_size(R &&r)
ArrowArray make_arrow_array(int64_t length, int64_t null_count, int64_t offset, B buffers, size_t n_children, ArrowArray **children, ArrowArray *dictionary)
Creates an ArrowArray.
pointer_iterator< pointer > value_iterator
pointer_iterator< const_pointer > const_value_iterator
array_trivial_copyable< T > array_type
inner_value_type * pointer
nullable< inner_const_reference, bitmap_const_reference > const_reference
const inner_value_type * const_pointer
const T & inner_const_reference
std::random_access_iterator_tag iterator_tag
bitmap_type::const_reference bitmap_const_reference
Base class for array_inner_types specialization.
Traits class that must be specialized by array classes inheriting from array_crtp_base.