]> AND Public Git Repository - simgrid.git/blobdiff - src/xbt/config.cpp
Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
nullptr one more time.
[simgrid.git] / src / xbt / config.cpp
index 76f7cbceff15046f66529b846b5e969b99d98827..416dfbb3ba00a32524903218bea9d86bccfd51a5 100644 (file)
@@ -38,7 +38,7 @@ namespace config {
 
 namespace {
 
-static bool parse_bool(const char* value)
+bool parse_bool(const char* value)
 {
   for (const char* true_value : {"yes", "on", "true", "1"})
     if (std::strcmp(true_value, value) == 0)
@@ -49,7 +49,7 @@ static bool parse_bool(const char* value)
   throw std::range_error("not a boolean");
 }
 
-static double parse_double(const char* value)
+double parse_double(const char* value)
 {
   char* end;
   errno = 0;
@@ -64,7 +64,7 @@ static double parse_double(const char* value)
     return res;
 }
 
-static long int parse_long(const char* value)
+long int parse_long(const char* value)
 {
   char* end;
   errno = 0;
@@ -210,7 +210,7 @@ public:
       this->update();
     } else {
       XBT_DEBUG("Do not override configuration variable '%s' with value '%s' because it was already set.",
-                get_key().c_str(), to_string(value).c_str());
+                get_key().c_str(), get_string_value().c_str());
     }
   }
 };
@@ -220,6 +220,12 @@ template <class T> std::string TypedConfigurationElement<T>::get_string_value()
   return to_string(content);
 }
 
+template <> std::string TypedConfigurationElement<double>::get_string_value() // override
+{
+  // don't want std::to_string which uses %f, and formats very small values as 0.000000
+  return xbt::string_printf("%g", content);
+}
+
 template <class T> void TypedConfigurationElement<T>::set_string_value(const char* value) // override
 {
   this->content = ConfigType<T>::parse(value);