@@ -69,6 +69,19 @@ namespace detail
6969 return r;
7070 }
7171
72+ /* * Convert a string to an enum value
73+ *
74+ * Example:
75+ * ```C++
76+ * AMREX_ENUM(Model,
77+ * linear,
78+ * nonlinear
79+ * );
80+ * std::string const model_str = "nonlinear";
81+ * Model const model = amrex::getEnum<Model>(model_str);
82+ * assert(model == Model::nonlinear);
83+ * ```
84+ */
7285 template <typename T, typename ET = amrex_enum_traits<T>,
7386 std::enable_if_t <ET::value,int > = 0 >
7487 T getEnum (std::string_view const & s)
@@ -88,6 +101,21 @@ namespace detail
88101 }
89102 }
90103
104+ /* * Convert a string case insensitive to an enum value
105+ *
106+ * Same as getEnum<T>, but case insensitive match to enum value.
107+ *
108+ * Example:
109+ * ```C++
110+ * AMREX_ENUM(Model,
111+ * linear,
112+ * nonlinear
113+ * );
114+ * std::string const model_str = "NonLinear";
115+ * Model const model = amrex::getEnumCaseInsensitive<Model>(model_str);
116+ * assert(model == Model::nonlinear);
117+ * ```
118+ */
91119 template <typename T, typename ET = amrex_enum_traits<T>,
92120 std::enable_if_t <ET::value,int > = 0 >
93121 T getEnumCaseInsensitive (std::string_view const & s)
@@ -108,6 +136,19 @@ namespace detail
108136 }
109137 }
110138
139+ /* * Get a string from an enum value
140+ *
141+ * Example:
142+ * ```C++
143+ * AMREX_ENUM(Model,
144+ * linear,
145+ * nonlinear
146+ * );
147+ * Model model = Model::linear;
148+ * std::string model_str = amrex::getEnumNameString(model);
149+ * assert(model_str == "linear");
150+ * ```
151+ */
111152 template <typename T, typename ET = amrex_enum_traits<T>,
112153 std::enable_if_t <ET::value,int > = 0 >
113154 std::string getEnumNameString (T const & v)
0 commit comments