16 #ifndef parsed_tools_enum_h
17 #define parsed_tools_enum_h
23 #include "parsed_tools/magic_enum.hpp"
35 struct Convert<T, typename
std::enable_if<std::is_enum<T>::value>
::type>
37 static std::unique_ptr<Patterns::PatternBase>
40 const auto n = magic_enum::enum_names<T>();
41 std::vector<std::string> names = {n.begin(), n.end()};
42 const auto selection =
59 namespace B = magic_enum::bitwise_operators;
60 const auto values = magic_enum::enum_values<T>();
61 std::vector<std::string> names;
62 for (
const auto &v : values)
63 if (B::operator&(value, v) == v)
64 names.push_back(std::string(magic_enum::enum_name(v)));
70 const dealii::Patterns::PatternBase &p = *to_pattern())
72 namespace B = magic_enum::bitwise_operators;
76 std::vector<std::string> value_names;
79 for (
const auto &name : value_names)
81 auto v = magic_enum::enum_cast<T>(name);
virtual std::unique_ptr< PatternBase > clone() const override
IteratorRange< FilteredIterator< BaseIterator > > operator|(IteratorRange< BaseIterator > i, const Predicate &p)
static ::ExceptionBase & ExcNoMatch(std::string arg1, std::string arg2)
#define AssertThrow(cond, exc)