176 auto typeGenerator = [](std::shared_ptr<arrow::DataType>
const&
type,
int list_size) -> std::shared_ptr<arrow::DataType> {
179 return arrow::list(
type);
181 return std::move(
type);
187 if constexpr (std::is_arithmetic_v<T>) {
188 if constexpr (std::same_as<T, bool>) {
189 return typeGenerator(arrow::boolean(),
list_size);
190 }
else if constexpr (std::same_as<T, uint8_t>) {
191 return typeGenerator(arrow::uint8(),
list_size);
192 }
else if constexpr (std::same_as<T, uint16_t>) {
193 return typeGenerator(arrow::uint16(),
list_size);
194 }
else if constexpr (std::same_as<T, uint32_t>) {
195 return typeGenerator(arrow::uint32(),
list_size);
196 }
else if constexpr (std::same_as<T, uint64_t>) {
197 return typeGenerator(arrow::uint64(),
list_size);
198 }
else if constexpr (std::same_as<T, int8_t>) {
199 return typeGenerator(arrow::int8(),
list_size);
200 }
else if constexpr (std::same_as<T, int16_t>) {
201 return typeGenerator(arrow::int16(),
list_size);
202 }
else if constexpr (std::same_as<T, int32_t>) {
203 return typeGenerator(arrow::int32(),
list_size);
204 }
else if constexpr (std::same_as<T, int64_t>) {
205 return typeGenerator(arrow::int64(),
list_size);
206 }
else if constexpr (std::same_as<T, float>) {
207 return typeGenerator(arrow::float32(),
list_size);
208 }
else if constexpr (std::same_as<T, double>) {
209 return typeGenerator(arrow::float64(),
list_size);
211 }
else if constexpr (std::is_bounded_array_v<T>) {
212 return asArrowDataType<array_element_t<T>>(std::extent_v<T>);
213 }
else if constexpr (o2::framework::is_specialization_v<T, std::vector>) {
214 return asArrowDataType<typename T::value_type>(-1);