From: Martin Quinson Date: Sun, 15 Jul 2018 12:29:36 +0000 (+0200) Subject: config::Flag: add the version with everything: callback, possible_values, description... X-Git-Tag: v3_21~432 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/22d4f5ed48929be96cbecf38da71762936dd7011 config::Flag: add the version with everything: callback, possible_values, description, everything --- diff --git a/include/xbt/config.hpp b/include/xbt/config.hpp index d9c3de9f87..2e13f118bc 100644 --- a/include/xbt/config.hpp +++ b/include/xbt/config.hpp @@ -175,6 +175,15 @@ bind_flag(T& value, const char* name, const char* description, std::map +typename std::enable_if()(std::declval()))>::value, void>::type +bind_flag(T& value, const char* name, std::initializer_list aliases, const char* description, + std::map valid_values, F callback) +{ + bind_flag(value, name, description, std::move(valid_values), std::move(callback)); + alias(name, std::move(aliases)); +} + /** Bind a variable to configuration flag * *

@@ -249,6 +258,15 @@ public:
     simgrid::config::bind_flag(value_, name, desc, std::move(valid_values), std::move(callback));
   }
 
+  /* A constructor with everything */
+  template 
+  Flag(const char* name, std::initializer_list aliases, const char* desc, T value,
+       std::map valid_values, F callback)
+      : value_(value)
+  {
+    simgrid::config::bind_flag(value_, name, std::move(aliases), desc, std::move(valid_values), std::move(callback));
+  }
+
   // No copy:
   Flag(Flag const&) = delete;
   Flag& operator=(Flag const&) = delete;