| 31 | |
| 32 | template <typename T> |
| 33 | T PyStringToEnum(const py::enum_<T>& enm, const std::string& value) { |
| 34 | const auto values = enm.attr("__members__").template cast<py::dict>(); |
| 35 | const auto str_val = py::str(value); |
| 36 | if (!values.contains(str_val)) { |
| 37 | LOG(FATAL_THROW) << "Invalid string value " << value << " for enum " |
| 38 | << enm.attr("__name__").template cast<std::string>(); |
| 39 | } |
| 40 | return T(values[str_val].template cast<T>()); |
| 41 | } |
| 42 | |
| 43 | template <typename T> |
| 44 | void AddStringToEnumConstructor(py::enum_<T>& enm) { |
no outgoing calls
no test coverage detected