25#if defined(__cpp_lib_format)
130 requires
mpl::convertible_ranges<T, typename L::inner_value_type>
217 requires
mpl::convertible_ranges<T, typename L::inner_value_type>
218 constexpr
bool operator==(const T& rhs) const;
234 requires
mpl::convertible_ranges<T, typename L::inner_value_type>
235 constexpr auto operator<=>(const T& rhs) const;
250 L* p_layout =
nullptr;
257 template <
typename Layout,
template <
typename>
typename TQual,
template <
typename>
typename UQual>
260 using type = std::vector<sparrow::byte_t>;
263 template <
typename Layout,
template <
typename>
typename TQual,
template <
class>
class UQual>
266 using type = std::vector<sparrow::byte_t>;
284 template <std::ranges::sized_range T>
289 p_layout->assign(std::forward<T>(rhs), m_index);
290 p_layout->get_arrow_proxy().update_buffers();
297 return p_layout->m_element_size;
303 return iterator(p_layout->data(offset(m_index)));
309 return iterator(p_layout->data(offset(m_index + 1)));
337 template <std::ranges::input_range T>
341 return std::equal(
cbegin(),
cend(), std::cbegin(rhs), std::cend(rhs));
345 template <std::ranges::input_range T>
349 return lexicographical_compare_three_way(*
this, rhs);
353 constexpr auto fixed_width_binary_reference<L>::offset(size_type index)
const -> size_type
355 return p_layout->m_element_size * index;
359#if defined(__cpp_lib_format)
361template <
typename Layout>
362struct std::formatter<
sparrow::fixed_width_binary_reference<Layout>>
364 constexpr auto parse(std::format_parse_context& ctx)
369 auto format(
const sparrow::fixed_width_binary_reference<Layout>& ref, std::format_context& ctx)
const
374 [&ctx](
const auto& value)
376 std::format_to(ctx.out(),
"{}, ", value);
380 return std::format_to(ctx.out(),
"{}>", *std::prev(ref.
cend()));
384template <
typename Layout>
387 os << std::format(
"{}", value);
typename array_type::inner_value_type value_type
constexpr bool operator==(const T &rhs) const
Equality comparison with another range of binary data.
constexpr size_type size() const
typename array_type::inner_reference reference
constexpr auto operator<=>(const T &rhs) const
Three-way comparison with another range of binary data.
fixed_width_binary_reference< array_type > self_type
std::ptrdiff_t difference_type
constexpr self_type & operator=(T &&rhs)
Assignment from a sized range of binary data.
typename array_type::data_iterator iterator
typename array_type::const_data_iterator const_iterator
typename array_type::size_type size_type
constexpr const_iterator cbegin() const
typename array_type::inner_const_reference const_reference
constexpr fixed_width_binary_reference(const fixed_width_binary_reference &) noexcept=default
constexpr iterator begin()
constexpr fixed_width_binary_reference(fixed_width_binary_reference &&) noexcept=default
constexpr fixed_width_binary_reference(L *layout, size_type index)
Constructs a binary reference for the given layout and index.
constexpr const_iterator cend() const
Concept for convertible range types.
#define SPARROW_ASSERT_TRUE(expr__)
constexpr InputIt next(InputIt it, Distance n)
std::ostream & operator<<(std::ostream &os, const sparrow::nullval_t &)
std::vector< sparrow::byte_t > type
std::vector< sparrow::byte_t > type