14#include "../core/helicsTime.hpp"
16# pragma GCC diagnostic push
17# pragma GCC diagnostic ignored "-Wshadow"
20#define TOML11_USING_STRING_VIEW 1
23# pragma GCC diagnostic pop
29namespace helics::fileops {
33toml::value loadToml(
const std::string& tomlString);
35bool hasTomlExtension(std::string_view tomlString);
37bool looksLikeConfigToml(std::string_view tomlString);
41toml::value loadTomlStr(
const std::string& tomlString);
44std::string tomlAsString(
const toml::value& element);
48 time_units defaultUnits = time_units::sec);
51std::string getName(
const toml::value& element);
55 getOrDefault(
const toml::value& element,
const std::string& key, std::string_view defVal)
57 if (element.contains(key)) {
58 return tomlAsString(element.at(key));
60 return std::string(defVal);
63inline double getOrDefault(
const toml::value& element,
const std::string& key,
double defVal)
65 return toml::find_or<double>(element, key, defVal);
69inline bool getOrDefault(
const toml::value& element,
const std::string& key,
bool defVal)
71 return toml::find_or<bool>(element, key, defVal);
75inline int64_t getOrDefault(
const toml::value& element,
const std::string& key, int64_t defVal)
77 return toml::find_or<int64_t>(element, key, defVal);
81inline bool callIfMember(
const toml::value& element,
82 const std::string& key,
83 const std::function<
void(
const std::string&)>& call)
85 const std::string empty;
86 auto& val = toml::find_or<std::string>(element, key, empty);
95inline bool callIfMember(
const toml::value& element,
96 const std::string& key,
97 const std::function<
void(
const std::string&,
helics::Time)>& call)
100 auto val = toml::find_or(element, key, uval);
102 if (!val.is_empty()) {
103 call(key, loadTomlTime(val));
111inline bool callIfMember(
const toml::value& element,
112 const std::string& key,
113 const std::function<
void(
const std::string&, X)>& call)
116 auto val = toml::find_or(element, key, uval);
117 if (!val.is_empty()) {
118 call(key, toml::get<X>(val));
125 replaceIfMember(
const toml::value& element,
const std::string& key,
helics::Time& timeVal)
128 auto val = toml::find_or(element, key, uval);
130 if (!val.is_empty()) {
131 timeVal = loadTomlTime(val);
135inline void replaceIfMember(
const toml::value& element,
const std::string& key, std::string& loc)
138 auto val = toml::find_or(element, key, uval);
140 if (!val.is_empty()) {
141 loc = tomlAsString(val);
146inline void replaceIfMember(
const toml::value& element,
const std::string& key, X& loc)
149 auto val = toml::find_or(element, key, uval);
151 if (!val.is_empty()) {
152 loc = toml::get<X>(val);
157inline bool isMember(
const toml::value& element,
const std::string& key)
160 auto val = toml::find_or(element, key, uval);
162 return (!val.is_empty());
bool isMember(const toml::value &element, const std::string &key)
Definition TomlProcessingFunctions.hpp:157
TimeRepresentation< count_time< 9 > > Time
Definition helicsTime.hpp:27