14 #include "../core/helics-time.hpp"
16 # pragma GCC diagnostic push
17 # pragma GCC diagnostic ignored "-Wshadow"
21 # pragma GCC diagnostic pop
30 toml::value
loadToml(
const std::string& tomlString);
32 bool hasTomlExtension(
const std::string& tomlString);
35 toml::value
loadTomlStr(
const std::string& tomlString);
42 time_units defaultUnits = time_units::sec);
45 std::string
getKey(
const toml::value& element);
49 getOrDefault(
const toml::value& element,
const std::string& key,
const std::string& defVal)
51 return toml::find_or<std::string>(element, key, defVal);
54 inline double getOrDefault(
const toml::value& element,
const std::string& key,
double defVal)
56 return toml::find_or<double>(element, key, defVal);
60 inline bool getOrDefault(
const toml::value& element,
const std::string& key,
bool defVal)
62 return toml::find_or<bool>(element, key, defVal);
66 inline int64_t
getOrDefault(
const toml::value& element,
const std::string& key, int64_t defVal)
68 return toml::find_or<int64_t>(element, key, defVal);
73 const std::string& key,
74 const std::function<
void(
const std::string&)>& call)
76 const std::string empty;
77 auto& val = toml::find_or<std::string>(element, key, empty);
87 const std::string& key,
88 const std::function<
void(
const std::string&,
helics::Time)>& call)
91 auto val = toml::find_or(element, key, uval);
93 if (!val.is_uninitialized()) {
103 const std::string& key,
104 const std::function<
void(
const std::string&, X)>& call)
107 auto val = toml::find_or(element, key, uval);
108 if (!val.is_uninitialized()) {
109 call(key, toml::get<X>(val));
116 replaceIfMember(
const toml::value& element,
const std::string& key,
helics::Time& timeVal)
119 auto val = toml::find_or(element, key, uval);
121 if (!val.is_uninitialized()) {
126 inline void replaceIfMember(
const toml::value& element,
const std::string& key, std::string& loc)
129 auto val = toml::find_or(element, key, uval);
131 if (!val.is_uninitialized()) {
137 inline void replaceIfMember(
const toml::value& element,
const std::string& key, X& loc)
140 auto val = toml::find_or(element, key, uval);
142 if (!val.is_uninitialized()) {
143 loc = toml::get<X>(val);
148 inline bool isMember(
const toml::value& element,
const std::string& key)
151 auto val = toml::find_or(element, key, uval);
153 return (!val.is_uninitialized());