9#ifndef WARPX_UTILS_PARSER_PARSERUTILS_H_
10#define WARPX_UTILS_PARSER_PARSERUTILS_H_
30 std::string
const& parse_function,
31 amrex::Vector<std::string>
const& varnames);
43 amrex::ParmParse
const& pp,
44 std::string
const& query_string,
45 std::string& stored_string);
61 const amrex::ParmParse &pp,
62 std::string
const& group,
63 std::string
const& query_string,
64 std::string& stored_string);
75 amrex::ParmParse
const& pp,
76 std::string
const& query_string,
77 std::string& stored_string);
83 return parser->compile<N>();
101 template <
typename T>
108 template <
typename T>
136 template <
typename T>
138 const int start_ix,
const int num_val)
143 val.erase(val.begin(), val.begin()+start_ix);
145 if (num_val >
int(val.size())) {
return 0; }
165 template <
typename T>
171 template <
typename T>
175 if (is_specified == 0) {
176 throw std::runtime_error(
"utils::parser::getArrWithParser failed");
196 template <
typename T>
198 const int start_ix,
const int num_val)
201 if (is_specified == 0) {
202 throw std::runtime_error(
"utils::parser::getArrWithParser failed");
223 template <
typename T>
226 const bool is_specified_without_group = a_pp.
contains(str);
227 const std::string grp_str = group +
"." + std::string(str);
228 const bool is_specified_with_group = (group.empty() ?
false : a_pp.
contains(grp_str.c_str()));
230 if (is_specified_without_group && !is_specified_with_group) {
240 template <
typename T>
243 const bool is_specified_without_group = a_pp.
contains(str);
244 const std::string grp_str = group +
"." + std::string(str);
245 const bool is_specified_with_group = (group.empty() ?
false : a_pp.
contains(grp_str.c_str()));
247 if (is_specified_without_group && !is_specified_with_group) {
277 template <
typename T>
279 const int start_ix,
const int num_val)
281 const bool is_specified_without_group = a_pp.
contains(str);
282 const std::string grp_str = group +
"." + std::string(str);
283 const bool is_specified_with_group = (group.empty() ?
false : a_pp.
contains(grp_str.c_str()));
285 if (is_specified_without_group && !is_specified_with_group) {
306 int query (
const amrex::ParmParse& a_pp, std::string
const& group,
char const * str, std::string& val);
324 template <
typename T>
327 const bool is_specified_without_group = a_pp.
contains(str);
328 const std::string grp_str = group +
"." + std::string(str);
329 const bool is_specified_with_group = (group.empty() ?
false : a_pp.
contains(grp_str.c_str()));
331 if (is_specified_without_group && !is_specified_with_group) {
340 template <
typename T>
343 const bool is_specified_without_group = a_pp.
contains(str);
344 const std::string grp_str = group +
"." + std::string(str);
345 const bool is_specified_with_group = (group.empty() ?
false : a_pp.
contains(grp_str.c_str()));
347 if (is_specified_without_group && !is_specified_with_group) {
377 template <
typename T>
379 const int start_ix,
const int num_val)
381 const bool is_specified_without_group = a_pp.
contains(str);
382 const std::string grp_str = group +
"." + std::string(str);
383 const bool is_specified_with_group = (group.empty() ?
false : a_pp.
contains(grp_str.c_str()));
385 if (is_specified_without_group && !is_specified_with_group) {
406 void get (
amrex::ParmParse const& a_pp, std::string
const& group,
char const * str, std::string& val);
int queryAsDouble(std::string_view name, T &ref) const
void getAsDouble(std::string_view name, T &ref) const
bool contains(std::string_view name) const
int queryarrAsDouble(std::string_view name, int nvals, T *ptr) const
int countval(std::string_view name, int n=LAST) const
Definition IntervalsParser.H:17
int queryArrWithParser(const amrex::ParmParse &a_pp, char const *const str, std::vector< T > &val)
Definition ParserUtils.H:109
amrex::ParserExecutor< N > compileParser(amrex::Parser const *parser)
Definition ParserUtils.H:80
amrex::Parser makeParser(std::string const &parse_function, amrex::Vector< std::string > const &varnames)
Initialize an amrex::Parser object from a string containing a math expression.
Definition ParserUtils.cpp:97
void getWithParser(const amrex::ParmParse &a_pp, char const *const str, T &val)
Definition ParserUtils.H:166
int query(const amrex::ParmParse &a_pp, std::string const &group, char const *str, std::string &val)
Definition ParserUtils.cpp:67
void Store_parserString(amrex::ParmParse const &pp, std::string const &query_string, std::string &stored_string)
Parse a string (typically a mathematical expression) from the input file and store it into a variable...
Definition ParserUtils.cpp:21
void getArrWithParser(const amrex::ParmParse &a_pp, char const *const str, std::vector< T > &val)
Definition ParserUtils.H:172
void get(amrex::ParmParse const &a_pp, std::string const &group, char const *str, std::string &val)
Definition ParserUtils.cpp:82
bool Query_parserString(amrex::ParmParse const &pp, std::string const &query_string, std::string &stored_string)
If the input is provided, parse the string (typically a mathematical expression) from the input file ...
Definition ParserUtils.cpp:54
int queryWithParser(const amrex::ParmParse &a_pp, char const *const str, T &val)
Definition ParserUtils.H:102