Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use std::fill instead of memset.
[simgrid.git] / src / xbt / config.cpp
index c2a5fdb..64c5b99 100644 (file)
@@ -31,8 +31,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_cfg, xbt, "configuration support");
 
 XBT_EXPORT_NO_IMPORT xbt_cfg_t simgrid_config = nullptr;
 
-namespace simgrid {
-namespace config {
+namespace simgrid::config {
 
 namespace {
 
@@ -276,28 +275,25 @@ Config::Config()
 
 inline ConfigurationElement* Config::get_dict_element(const std::string& name)
 {
-  auto opt = options.find(name);
-  if (opt != options.end()) {
+  if (auto opt = options.find(name); opt != options.end())
     return opt->second.get();
-  } else {
-    auto als = aliases.find(name);
-    if (als != aliases.end()) {
-      ConfigurationElement* res = als->second;
-      if (warn_for_aliases)
-        XBT_INFO("Option %s has been renamed to %s. Consider switching.", name.c_str(), res->get_key().c_str());
-      return res;
-    } else {
-      std::string msg   = "Bad config key: " + name + "\n";
-      std::string kebab = name;
-      std::replace(begin(kebab), end(kebab), '_', '-'); // convert from snake_case to kebab-case
-      if (options.count(kebab) > 0)
-        msg += "Did you mean '" + kebab + "'?\n";
-      msg += "Existing config keys:\n";
-      for (auto const& elm : options)
-        msg += "  " + elm.first + ": (" + elm.second->get_type_name() + ")" + elm.second->get_string_value() + "\n";
-      throw std::out_of_range(msg);
-    }
+
+  if (auto als = aliases.find(name); als != aliases.end()) {
+    ConfigurationElement* res = als->second;
+    if (warn_for_aliases)
+      XBT_INFO("Option %s has been renamed to %s. Consider switching.", name.c_str(), res->get_key().c_str());
+    return res;
   }
+
+  std::string msg   = "Bad config key: " + name + "\n";
+  std::string kebab = name;
+  std::replace(begin(kebab), end(kebab), '_', '-'); // convert from snake_case to kebab-case
+  if (options.count(kebab) > 0)
+    msg += "Did you mean '" + kebab + "'?\n";
+  msg += "Existing config keys:\n";
+  for (auto const& [opt_name, opt] : options)
+    msg += "  " + opt_name + ": (" + opt->get_type_name() + ")" + opt->get_string_value() + "\n";
+  throw std::out_of_range(msg);
 }
 
 inline ConfigurationElement& Config::operator[](const std::string& name)
@@ -316,17 +312,16 @@ void Config::alias(const std::string& realname, const std::string& aliasname)
 /** @brief Displays the declared aliases and their replacement */
 void Config::show_aliases() const
 {
-  for (auto const& elm : aliases)
-    XBT_HELP("   %-40s %s", elm.first.c_str(), elm.second->get_key().c_str());
+  for (auto const& [name, alias] : aliases)
+    XBT_HELP("   %-40s %s", name.c_str(), alias->get_key().c_str());
 }
 
 /** @brief Displays the declared options and their description */
 void Config::help() const
 {
-  for (auto const& elm : options) {
-    simgrid::config::ConfigurationElement* variable = elm.second.get();
-    XBT_HELP("   %s: %s", elm.first.c_str(), variable->get_description().c_str());
-    XBT_HELP("       Type: %s; Current value: %s", variable->get_type_name(), variable->get_string_value().c_str());
+  for (auto const& [name, opt] : options) {
+    XBT_HELP("   %s: %s", name.c_str(), opt->get_description().c_str());
+    XBT_HELP("       Type: %s; Current value: %s", opt->get_type_name(), opt->get_string_value().c_str());
   }
 }
 
@@ -390,8 +385,7 @@ void set_parse(const std::string& opt)
     std::string val = name.substr(pos + 1);
     name.erase(pos);
 
-    const std::string path("path");
-    if (name.compare(0, path.length(), path) != 0)
+    if (name.rfind("path", 0) != 0)
       XBT_INFO("Configuration change: Set '%s' to '%s'", name.c_str(), val.c_str());
 
     set_as_string(name.c_str(), val);
@@ -453,8 +447,7 @@ void help()
 {
   simgrid_config->help();
 }
-}
-}
+} // namespace simgrid::config
 
 /*----[ Setting ]---------------------------------------------------------*/