52 template <
class F,
class N,
class M, std::ranges::input_range CHILDREN_OWNERSHIP>
53 requires std::constructible_from<arrow_schema_private_data::FormatType, F>
54 && std::constructible_from<arrow_schema_private_data::NameType, N>
55 && std::constructible_from<arrow_schema_private_data::MetadataType, M>
56 && std::is_same_v<std::ranges::range_value_t<CHILDREN_OWNERSHIP>,
bool>
65 template <
class F,
class N, input_metadata_container M = std::vector<metadata_pair>>
66 requires std::constructible_from<arrow_schema_private_data::FormatType, F>
67 && std::constructible_from<arrow_schema_private_data::NameType, N>
70 [[nodiscard]]
const char*
format_ptr() const noexcept;
72 [[nodiscard]] const
char*
name_ptr() const noexcept;
87 if constexpr (std::same_as<std::remove_cvref_t<T>, std::string>)
89 return std::forward<T>(t);
91 else if constexpr (std::same_as<std::nullopt_t, T>)
95 else if constexpr (std::is_pointer_v<T>)
103 return std::string(t);
106 else if constexpr (std::ranges::range<T>)
108 return std::string(t.cbegin(), t.cend());
128 template <
class F,
class N,
class M, std::ranges::input_range CHILDREN_OWNERSHIP>
129 requires std::constructible_from<arrow_schema_private_data::FormatType, F>
130 && std::constructible_from<arrow_schema_private_data::NameType, N>
131 && std::constructible_from<arrow_schema_private_data::MetadataType, M>
132 && std::is_same_v<std::ranges::range_value_t<CHILDREN_OWNERSHIP>,
bool>
137 const CHILDREN_OWNERSHIP& children_ownership_range,
138 bool dictionary_ownership_value
149 template <
class F,
class N, input_metadata_container M>
150 requires std::constructible_from<arrow_schema_private_data::FormatType, F>
151 && std::constructible_from<arrow_schema_private_data::NameType, N>
163 return m_format.data();
173 if (m_name.has_value())
175 return m_name->data();
187 if (m_metadata.has_value())
189 return m_metadata->data();
const char * format_ptr() const noexcept
arrow_schema_private_data & operator=(const arrow_schema_private_data &)=delete
arrow_schema_private_data & operator=(arrow_schema_private_data &&)=delete
MetadataType & metadata() noexcept
arrow_schema_private_data(const arrow_schema_private_data &)=delete
arrow_schema_private_data()=delete
~arrow_schema_private_data()=default
arrow_schema_private_data(arrow_schema_private_data &&)=delete
const char * name_ptr() const noexcept
NameType & name() noexcept
const char * metadata_ptr() const noexcept
FormatType & format() noexcept
std::optional< std::string > NameType
std::optional< std::string > MetadataType
children_ownership(std::size_t size=0)
std::size_t children_size() const noexcept
dictionary_ownership(bool ownership)
#define SPARROW_ASSERT_TRUE(expr__)
constexpr bool is_type_instance_of_v
true if T is a concrete type template instanciation of U which is a type template.
void unreachable()
Invokes undefined behavior.
std::string get_metadata_from_key_values(const T &metadata)
constexpr std::optional< std::string > to_optional_string(T &&t)
Workaround to replace static_assert(false) in template code.