15#include <unordered_set>
24 constexpr std::array<ArrowFlag, 3> valid_values = {
29 return std::ranges::any_of(
33 return static_cast<std::underlying_type_t<ArrowFlag>
>(flag) == value;
41 constexpr size_t n_bits =
sizeof(flag_values) * 8;
42 std::unordered_set<ArrowFlag> flags;
43 for (
size_t i = 0; i < n_bits; ++i)
45 const int64_t flag_value =
static_cast<int64_t
>(1) << i;
46 if ((flag_values & flag_value) != 0)
51 throw std::runtime_error(
"Invalid ArrowFlag value");
53 flags.insert(
static_cast<ArrowFlag>(flag_value));
62 int64_t flag_values = 0;
65 flag_values |=
static_cast<int64_t
>(flag);
int64_t to_ArrowFlag_value(const std::unordered_set< ArrowFlag > &flags)
Converts a vector of ArrowFlag values to a bitfield of ArrowFlag values.
constexpr bool is_valid_ArrowFlag_value(int64_t value) noexcept
std::unordered_set< ArrowFlag > to_set_of_ArrowFlags(int64_t flag_values)
Converts a bitfield of ArrowFlag values to a set of ArrowFlag values.