From: Arnaud Giersch Date: Thu, 19 Apr 2018 16:08:11 +0000 (+0200) Subject: Convert xbt_cfg_set_parse -> simgrid::config::set_parse. X-Git-Tag: v3.20~366 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/620ebcadff113065467e7f3c8412483666e05583 Convert xbt_cfg_set_parse -> simgrid::config::set_parse. --- diff --git a/include/xbt/config.h b/include/xbt/config.h index a709bb1da6..df1cedb43a 100644 --- a/include/xbt/config.h +++ b/include/xbt/config.h @@ -67,7 +67,8 @@ typedef void* xbt_cfg_t; SG_BEGIN_DECL() -XBT_PUBLIC void xbt_cfg_set_parse(const char* options); +XBT_ATTRIB_DEPRECATED_v323("Please use simgrid::config::set_parse") XBT_PUBLIC + void xbt_cfg_set_parse(const char* options); /* Set the value of the cell \a name in \a cfg with the provided value.*/ XBT_ATTRIB_DEPRECATED_v323("Please use simgrid::config::set_value") XBT_PUBLIC diff --git a/include/xbt/config.hpp b/include/xbt/config.hpp index eb160168b8..48fd59fec7 100644 --- a/include/xbt/config.hpp +++ b/include/xbt/config.hpp @@ -64,6 +64,7 @@ extern template XBT_PUBLIC void set_value(const char* name, bool value); extern template XBT_PUBLIC void set_value(const char* name, std::string value); XBT_PUBLIC void set_as_string(const char* name, const std::string& value); +XBT_PUBLIC void set_parse(std::string options); // Get config diff --git a/src/s4u/s4u_engine.cpp b/src/s4u/s4u_engine.cpp index 77c71e577e..f928ff7949 100644 --- a/src/s4u/s4u_engine.cpp +++ b/src/s4u/s4u_engine.cpp @@ -18,6 +18,7 @@ #include "src/kernel/EngineImpl.hpp" #include "src/surf/network_interface.hpp" #include "surf/surf.hpp" // routing_platf. FIXME:KILLME. SOON +#include "xbt/config.hpp" XBT_LOG_NEW_CATEGORY(s4u,"Log channels of the S4U (Simgrid for you) interface"); @@ -246,7 +247,7 @@ bool Engine::isInitialized() } void Engine::setConfig(std::string str) { - xbt_cfg_set_parse(str.c_str()); + simgrid::config::set_parse(std::move(str)); } } } // namespace diff --git a/src/simgrid/sg_config.cpp b/src/simgrid/sg_config.cpp index aa31ac1bdd..86c1a6f439 100644 --- a/src/simgrid/sg_config.cpp +++ b/src/simgrid/sg_config.cpp @@ -44,7 +44,7 @@ static void sg_config_cmd_line(int *argc, char **argv) char *opt = strchr(argv[i], '='); opt++; - xbt_cfg_set_parse(opt); + simgrid::config::set_parse(opt); XBT_DEBUG("Did apply '%s' as config setting", opt); } else if (not strcmp(argv[i], "--version")) { printf("%s\n", SIMGRID_VERSION_STRING); diff --git a/src/surf/xml/surfxml_sax_cb.cpp b/src/surf/xml/surfxml_sax_cb.cpp index ea98c47721..91c0d5a1ca 100644 --- a/src/surf/xml/surfxml_sax_cb.cpp +++ b/src/surf/xml/surfxml_sax_cb.cpp @@ -867,7 +867,7 @@ void ETag_surfxml_config() for (auto const& elm : *current_property_set) { if (simgrid::config::is_default(elm.first.c_str())) { std::string cfg = elm.first + ":" + elm.second; - xbt_cfg_set_parse(cfg.c_str()); + simgrid::config::set_parse(std::move(cfg)); } else XBT_INFO("The custom configuration '%s' is already defined by user!", elm.first.c_str()); } diff --git a/src/xbt/config.cpp b/src/xbt/config.cpp index 3f05c02a79..92f041272b 100644 --- a/src/xbt/config.cpp +++ b/src/xbt/config.cpp @@ -400,6 +400,39 @@ void set_as_string(const char* name, const std::string& value) (*simgrid_config)[name].set_string_value(value.c_str()); } +void set_parse(std::string options) +{ + XBT_DEBUG("List to parse and set:'%s'", options.c_str()); + while (not options.empty()) { + XBT_DEBUG("Still to parse and set: '%s'", options.c_str()); + + // skip separators + size_t pos = options.find_first_not_of(" \t\n,"); + options.erase(0, pos); + // find option + pos = options.find_first_of(" \t\n,"); + std::string name = options.substr(0, pos); + options.erase(0, pos); + XBT_DEBUG("parse now:'%s'; parse later:'%s'", name.c_str(), options.c_str()); + + if (name.empty()) + continue; + + pos = name.find(':'); + xbt_assert(pos != std::string::npos, "Option '%s' badly formatted. Should be of the form 'name:value'", + name.c_str()); + + std::string val = name.substr(pos + 1); + name.erase(pos); + + const std::string path("path"); + if (name.compare(0, path.length(), path) != 0) + XBT_INFO("Configuration change: Set '%s' to '%s'", name.c_str(), val.c_str()); + + set_as_string(name.c_str(), val); + } +} + // ***** get_value ***** template XBT_PUBLIC T const& get_value(const char* name) @@ -513,40 +546,8 @@ void xbt_cfg_help() */ void xbt_cfg_set_parse(const char *options) { - if (not options || not strlen(options)) { /* nothing to do */ - return; - } - - XBT_DEBUG("List to parse and set:'%s'", options); - std::string optionlist(options); - while (not optionlist.empty()) { - XBT_DEBUG("Still to parse and set: '%s'", optionlist.c_str()); - - // skip separators - size_t pos = optionlist.find_first_not_of(" \t\n,"); - optionlist.erase(0, pos); - // find option - pos = optionlist.find_first_of(" \t\n,"); - std::string name = optionlist.substr(0, pos); - optionlist.erase(0, pos); - XBT_DEBUG("parse now:'%s'; parse later:'%s'", name.c_str(), optionlist.c_str()); - - if (name.empty()) - continue; - - pos = name.find(':'); - xbt_assert(pos != std::string::npos, "Option '%s' badly formatted. Should be of the form 'name:value'", - name.c_str()); - - std::string val = name.substr(pos + 1); - name.erase(pos); - - const std::string path("path"); - if (name.compare(0, path.length(), path) != 0) - XBT_INFO("Configuration change: Set '%s' to '%s'", name.c_str(), val.c_str()); - - (*simgrid_config)[name.c_str()].set_string_value(val.c_str()); - } + if (options && strlen(options) > 0) + simgrid::config::set_parse(std::string(options)); } /** @brief Set the value of a variable, using the string representation of that value @@ -728,7 +729,7 @@ XBT_TEST_UNIT("memuse", test_config_memuse, "Alloc and free a config set") auto temp = simgrid_config; make_set(); xbt_test_add("Alloc and free a config set"); - xbt_cfg_set_parse("peername:veloce user:bidule"); + simgrid::config::set_parse("peername:veloce user:bidule"); xbt_cfg_free(&simgrid_config); simgrid_config = temp; } @@ -740,7 +741,7 @@ XBT_TEST_UNIT("use", test_config_use, "Data retrieving tests") xbt_test_add("Get a single value"); { /* get_single_value */ - xbt_cfg_set_parse("peername:toto:42 speed:42"); + simgrid::config::set_parse("peername:toto:42 speed:42"); int ival = simgrid::config::get_value("speed"); if (ival != 42) xbt_test_fail("Speed value = %d, I expected 42", ival); @@ -749,7 +750,7 @@ XBT_TEST_UNIT("use", test_config_use, "Data retrieving tests") xbt_test_add("Access to a non-existant entry"); { try { - xbt_cfg_set_parse("color:blue"); + simgrid::config::set_parse("color:blue"); } catch(xbt_ex& e) { if (e.category != not_found_error) xbt_test_exception(e); @@ -772,7 +773,7 @@ XBT_TEST_UNIT("c++flags", test_config_cxx_flags, "C++ flags") simgrid::config::Flag bool_flag2("bool2", "", true); xbt_test_add("Parse values"); - xbt_cfg_set_parse("int:42 string:bar double:8.0 bool1:true bool2:false"); + simgrid::config::set_parse("int:42 string:bar double:8.0 bool1:true bool2:false"); xbt_test_assert(int_flag == 42, "Check int flag"); xbt_test_assert(string_flag == "bar", "Check string flag"); xbt_test_assert(double_flag == 8.0, "Check double flag"); diff --git a/teshsuite/surf/surf_usage/surf_usage.cpp b/teshsuite/surf/surf_usage/surf_usage.cpp index 27b9638e58..153da3f99d 100644 --- a/teshsuite/surf/surf_usage/surf_usage.cpp +++ b/teshsuite/surf/surf_usage/surf_usage.cpp @@ -9,7 +9,7 @@ #include "src/surf/cpu_interface.hpp" #include "src/surf/network_interface.hpp" #include "surf/surf.hpp" -#include "xbt/config.h" +#include "xbt/config.hpp" XBT_LOG_NEW_DEFAULT_CATEGORY(surf_test, "Messages specific for surf example"); @@ -34,8 +34,8 @@ static const char* string_action(simgrid::kernel::resource::Action::State state) int main(int argc, char **argv) { surf_init(&argc, argv); /* Initialize some common structures */ - xbt_cfg_set_parse("cpu/model:Cas01"); - xbt_cfg_set_parse("network/model:CM02"); + simgrid::config::set_parse("cpu/model:Cas01"); + simgrid::config::set_parse("network/model:CM02"); xbt_assert(argc > 1, "Usage: %s platform.xml\n", argv[0]); parse_platform_file(argv[1]); diff --git a/teshsuite/surf/surf_usage2/surf_usage2.cpp b/teshsuite/surf/surf_usage2/surf_usage2.cpp index d8a86cc720..9ddc811823 100644 --- a/teshsuite/surf/surf_usage2/surf_usage2.cpp +++ b/teshsuite/surf/surf_usage2/surf_usage2.cpp @@ -10,7 +10,7 @@ #include "src/surf/network_interface.hpp" #include "src/surf/surf_interface.hpp" #include "surf/surf.hpp" -#include "xbt/config.h" +#include "xbt/config.hpp" XBT_LOG_NEW_DEFAULT_CATEGORY(surf_test, "Messages specific for surf example"); @@ -20,8 +20,8 @@ int main(int argc, char **argv) surf_init(&argc, argv); /* Initialize some common structures */ - xbt_cfg_set_parse("network/model:CM02"); - xbt_cfg_set_parse("cpu/model:Cas01"); + simgrid::config::set_parse("network/model:CM02"); + simgrid::config::set_parse("cpu/model:Cas01"); xbt_assert(argc > 1, "Usage: %s platform.xml\n", argv[0]); parse_platform_file(argv[1]);