Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Separate real name from alias names list.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Tue, 17 Apr 2018 21:29:28 +0000 (23:29 +0200)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Wed, 18 Apr 2018 20:54:09 +0000 (22:54 +0200)
include/xbt/config.hpp
src/simgrid/sg_config.cpp
src/surf/network_interface.cpp
src/xbt/config.cpp

index 701b5b3..d25e1c4 100644 (file)
@@ -76,15 +76,7 @@ extern template XBT_PUBLIC void declareFlag(const char* name, const char* descri
 
 // ***** alias *****
 
-XBT_PUBLIC void alias(const char* realname, const char* aliasname);
-
-inline
-void alias(std::initializer_list<const char*> names)
-{
-  auto i = names.begin();
-  for (++i; i != names.end(); ++i)
-    alias(*names.begin(), *i);
-}
+XBT_PUBLIC void alias(const char* realname, std::initializer_list<const char*> aliases);
 
 /** Bind a variable to configuration flag
  *
@@ -100,11 +92,11 @@ void bindFlag(T& value, const char* name, const char* description)
   });
 }
 
-template<class T>
-void bindFlag(T& value, std::initializer_list<const char*> names, const char* description)
+template <class T>
+void bindFlag(T& value, const char* name, std::initializer_list<const char*> aliases, const char* description)
 {
-  bindFlag(value, *names.begin(), description);
-  alias(names);
+  bindFlag(value, name, description);
+  alias(name, std::move(aliases));
 }
 
 /** Bind a variable to configuration flag
@@ -130,10 +122,10 @@ bindFlag(T& value, const char* name, const char* description, F callback)
 
 template <class T, class F>
 typename std::enable_if<std::is_same<void, decltype(std::declval<F>()(std::declval<const T&>()))>::value, void>::type
-bindFlag(T& value, std::initializer_list<const char*> names, const char* description, F callback)
+bindFlag(T& value, const char* name, std::initializer_list<const char*> aliases, const char* description, F callback)
 {
-  bindFlag(value, *names.begin(), description, std::move(callback));
-  alias(names);
+  bindFlag(value, name, description, std::move(callback));
+  alias(name, std::move(aliases));
 }
 
 template <class T, class F>
@@ -209,10 +201,10 @@ public:
     simgrid::config::bindFlag(value_, name, desc);
   }
 
-  /** Constructor taking an array of aliases as name */
-  Flag(std::initializer_list<const char*> names, const char* desc, T value) : value_(value)
+  /** Constructor taking also an array of aliases for name */
+  Flag(const char* name, std::initializer_list<const char*> aliases, const char* desc, T value) : value_(value)
   {
-    simgrid::config::bindFlag(value_, names, desc);
+    simgrid::config::bindFlag(value_, name, std::move(aliases), desc);
   }
 
   /* A constructor accepting a callback that will be passed the parameter.
index 0c7c8a8..256d5a2 100644 (file)
@@ -318,17 +318,17 @@ void sg_config_init(int *argc, char **argv)
   /* The parameters of network models */
 
   sg_latency_factor = 13.01; // comes from the default LV08 network model
-  simgrid::config::bindFlag(sg_latency_factor, {"network/latency-factor", "network/latency_factor"},
+  simgrid::config::bindFlag(sg_latency_factor, "network/latency-factor", {"network/latency_factor"},
                             "Correction factor to apply to the provided latency (default value set by network model)");
 
   sg_bandwidth_factor = 0.97; // comes from the default LV08 network model
   simgrid::config::bindFlag(
-      sg_bandwidth_factor, {"network/bandwidth-factor", "network/bandwidth_factor"},
+      sg_bandwidth_factor, "network/bandwidth-factor", {"network/bandwidth_factor"},
       "Correction factor to apply to the provided bandwidth (default value set by network model)");
 
   sg_weight_S_parameter = 20537; // comes from the default LV08 network model
   simgrid::config::bindFlag(
-      sg_weight_S_parameter, {"network/weight-S", "network/weight_S"},
+      sg_weight_S_parameter, "network/weight-S", {"network/weight_S"},
       "Correction factor to apply to the weight of competing streams (default value set by network model)");
 
   /* Inclusion path */
index 147747a..856c3f9 100644 (file)
@@ -70,7 +70,7 @@ namespace resource {
 
 /** @brief Command-line option 'network/TCP-gamma' -- see \ref options_model_network_gamma */
 simgrid::config::Flag<double> NetworkModel::cfg_tcp_gamma(
-    {"network/TCP-gamma", "network/TCP_gamma"},
+    "network/TCP-gamma", {"network/TCP_gamma"},
     "Size of the biggest TCP window (cat /proc/sys/net/ipv4/tcp_[rw]mem for recv/send window; "
     "Use the last given value, which is the max window size)",
     4194304.0);
index 34503ee..0a5f2f3 100644 (file)
@@ -392,9 +392,10 @@ template XBT_PUBLIC std::string const& getConfig<std::string>(const char* name);
 
 // ***** alias *****
 
-void alias(const char* realname, const char* aliasname)
+void alias(const char* realname, std::initializer_list<const char*> aliases)
 {
-  simgrid_config->alias(realname, aliasname);
+  for (auto const& aliasname : aliases)
+    simgrid_config->alias(realname, aliasname);
 }
 
 // ***** declareFlag *****