/* Callback */
xbt_cfg_cb_t old_callback = nullptr;
- ConfigurationElement(std::string key, std::string desc) : key(key), desc(desc) {}
- ConfigurationElement(std::string key, std::string desc, xbt_cfg_cb_t cb) : key(key), desc(desc), old_callback(cb) {}
+ ConfigurationElement(std::string key, std::string desc) : key(std::move(key)), desc(std::move(desc)) {}
+ ConfigurationElement(std::string key, std::string desc, xbt_cfg_cb_t cb)
+ : key(std::move(key)), desc(std::move(desc)), old_callback(cb)
+ {
+ }
virtual ~ConfigurationElement() = default;
template <class T> T const& get_value() const
{
- return dynamic_cast<const TypedConfigurationElement<T>&>(*this).get_value();
+ return static_cast<const TypedConfigurationElement<T>&>(*this).get_value();
}
template <class T> void set_value(T value)
{
- dynamic_cast<TypedConfigurationElement<T>&>(*this).set_value(std::move(value));
+ static_cast<TypedConfigurationElement<T>&>(*this).set_value(std::move(value));
}
template <class T> void set_default_value(T value)
{
- dynamic_cast<TypedConfigurationElement<T>&>(*this).set_default_value(std::move(value));
+ static_cast<TypedConfigurationElement<T>&>(*this).set_default_value(std::move(value));
}
void unset_default() { isdefault = false; }
bool is_default() const { return isdefault; }
public:
TypedConfigurationElement(std::string key, std::string desc, T value = T())
- : ConfigurationElement(key, desc), content(std::move(value))
+ : ConfigurationElement(std::move(key), std::move(desc)), content(std::move(value))
{}
TypedConfigurationElement(std::string key, std::string desc, T value, xbt_cfg_cb_t cb)
- : ConfigurationElement(key, desc, cb), content(std::move(value))
+ : ConfigurationElement(std::move(key), std::move(desc), cb), content(std::move(value))
{}
TypedConfigurationElement(std::string key, std::string desc, T value, std::function<void(T&)> callback)
- : ConfigurationElement(key, desc), content(std::move(value)), callback(std::move(callback))
+ : ConfigurationElement(std::move(key), std::move(desc)), content(std::move(value)), callback(std::move(callback))
{}
~TypedConfigurationElement() = default;
Config(Config const&) = delete;
Config& operator=(Config const&) = delete;
- ConfigurationElement& operator[](std::string name);
- void alias(std::string realname, std::string aliasname);
+ ConfigurationElement& operator[](const std::string& name);
+ void alias(const std::string& realname, const std::string& aliasname);
template <class T, class... A>
- simgrid::config::TypedConfigurationElement<T>* register_option(std::string name, A&&... a)
+ simgrid::config::TypedConfigurationElement<T>* register_option(const std::string& name, A&&... a)
{
xbt_assert(options.find(name) == options.end(), "Refusing to register the config element '%s' twice.",
name.c_str());
void help();
protected:
- ConfigurationElement* get_dict_element(std::string name);
+ ConfigurationElement* get_dict_element(const std::string& name);
};
Config::Config()
delete elm.second;
}
-inline ConfigurationElement* Config::get_dict_element(std::string name)
+inline ConfigurationElement* Config::get_dict_element(const std::string& name)
{
auto opt = options.find(name);
if (opt != options.end()) {
}
}
-inline ConfigurationElement& Config::operator[](std::string name)
+inline ConfigurationElement& Config::operator[](const std::string& name)
{
return *(get_dict_element(name));
}
-void Config::alias(std::string realname, std::string aliasname)
+void Config::alias(const std::string& realname, const std::string& aliasname)
{
xbt_assert(aliases.find(aliasname) == aliases.end(), "Alias '%s' already.", aliasname.c_str());
ConfigurationElement* element = this->get_dict_element(realname);
// ***** get_value *****
-template <class T> XBT_PUBLIC T const& get_value(std::string name)
+template <class T> XBT_PUBLIC T const& get_value(const std::string& name)
{
return (*simgrid_config)[name].get_value<T>();
}
-template XBT_PUBLIC int const& get_value<int>(std::string name);
-template XBT_PUBLIC double const& get_value<double>(std::string name);
-template XBT_PUBLIC bool const& get_value<bool>(std::string name);
-template XBT_PUBLIC std::string const& get_value<std::string>(std::string name);
+template XBT_PUBLIC int const& get_value<int>(const std::string& name);
+template XBT_PUBLIC double const& get_value<double>(const std::string& name);
+template XBT_PUBLIC bool const& get_value<bool>(const std::string& name);
+template XBT_PUBLIC std::string const& get_value<std::string>(const std::string& name);
// ***** alias *****
// ***** declare_flag *****
template <class T>
-XBT_PUBLIC void declare_flag(std::string name, std::string description, T value, std::function<void(const T&)> callback)
+XBT_PUBLIC void declare_flag(const std::string& name, std::string description, T value,
+ std::function<void(const T&)> callback)
{
if (simgrid_config == nullptr)
simgrid_config = new simgrid::config::Config();
simgrid_config->register_option<T>(name, std::move(description), std::move(value), std::move(callback));
}
-template XBT_PUBLIC void declare_flag(std::string name, std::string description, int value,
+template XBT_PUBLIC void declare_flag(const std::string& name, std::string description, int value,
std::function<void(int const&)> callback);
-template XBT_PUBLIC void declare_flag(std::string name, std::string description, double value,
+template XBT_PUBLIC void declare_flag(const std::string& name, std::string description, double value,
std::function<void(double const&)> callback);
-template XBT_PUBLIC void declare_flag(std::string name, std::string description, bool value,
+template XBT_PUBLIC void declare_flag(const std::string& name, std::string description, bool value,
std::function<void(bool const&)> callback);
-template XBT_PUBLIC void declare_flag(std::string name, std::string description, std::string value,
+template XBT_PUBLIC void declare_flag(const std::string& name, std::string description, std::string value,
std::function<void(std::string const&)> callback);
void finalize()