From: Martin Quinson Date: Tue, 5 Apr 2016 04:33:20 +0000 (+0200) Subject: We never use a second configuration set, so simplify the API X-Git-Tag: v3_13~180^2~5 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/fcf3b4aa4934674a5c928945a03b7e8356da2d03 We never use a second configuration set, so simplify the API --- diff --git a/include/xbt/config.h b/include/xbt/config.h index 362fc841a7..d311b66288 100644 --- a/include/xbt/config.h +++ b/include/xbt/config.h @@ -82,7 +82,7 @@ typedef void* xbt_cfg_t; XBT_PUBLIC(void) xbt_cfg_set(xbt_cfg_t cfg, const char *name, ...); XBT_PUBLIC(void) xbt_cfg_set_vargs(xbt_cfg_t cfg, const char *name, va_list pa); -XBT_PUBLIC(void) xbt_cfg_set_parse(xbt_cfg_t cfg, const char *options); +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_PUBLIC(void) xbt_cfg_set_int (const char *name, int val); @@ -171,7 +171,7 @@ XBT_PUBLIC(void) xbt_cfg_register_str(xbt_cfg_t * cfg, const char *entry); XBT_PUBLIC(void) xbt_cfg_aliases(xbt_cfg_t cfg); XBT_PUBLIC(void) xbt_cfg_help(xbt_cfg_t cfg); -XBT_PUBLIC(void) xbt_cfg_check(xbt_cfg_t cfg); +XBT_PUBLIC(void) xbt_cfg_check(void); XBT_PUBLIC(e_xbt_cfgelm_type_t) xbt_cfg_get_type(xbt_cfg_t cfg, const char *name); /* @} */ /** @defgroup XBT_cfg_get Getting the stored values diff --git a/src/simgrid/sg_config.cpp b/src/simgrid/sg_config.cpp index de7938f623..c9bc0aac4d 100644 --- a/src/simgrid/sg_config.cpp +++ b/src/simgrid/sg_config.cpp @@ -54,7 +54,7 @@ static void sg_config_cmd_line(int *argc, char **argv) opt = strchr(argv[i], '='); opt++; - xbt_cfg_set_parse(simgrid_config, opt); + xbt_cfg_set_parse(opt); XBT_DEBUG("Did apply '%s' as config setting", opt); } else if (!strcmp(argv[i], "--version")) { printf("%s\n", SIMGRID_VERSION_STRING); @@ -724,7 +724,7 @@ void sg_config_init(int *argc, char **argv) xbt_cfg_setdefault_string("path", initial_path); } - xbt_cfg_check(simgrid_config); + xbt_cfg_check(); _sg_cfg_init_status = 1; sg_config_cmd_line(argc, argv); diff --git a/src/surf/xml/surfxml_sax_cb.cpp b/src/surf/xml/surfxml_sax_cb.cpp index 63c8c76335..9899cfaed2 100644 --- a/src/surf/xml/surfxml_sax_cb.cpp +++ b/src/surf/xml/surfxml_sax_cb.cpp @@ -904,7 +904,7 @@ void ETag_surfxml_config(void){ xbt_dict_foreach(current_property_set, cursor, key, elem) { cfg = bprintf("%s:%s",key,elem); if(xbt_cfg_is_default_value(key)) - xbt_cfg_set_parse(simgrid_config, cfg); + xbt_cfg_set_parse(cfg); else XBT_INFO("The custom configuration '%s' is already defined by user!",key); free(cfg); diff --git a/src/xbt/config.c b/src/xbt/config.c index a3e59df120..9e06f582c8 100644 --- a/src/xbt/config.c +++ b/src/xbt/config.c @@ -197,14 +197,13 @@ void xbt_cfgelm_free(void *data) void xbt_cfg_register(xbt_cfg_t * cfg, const char *name, const char *desc, e_xbt_cfgelm_type_t type, int min, int max, xbt_cfg_cb_t cb_set) { - xbt_cfgelm_t res; - if (*cfg == NULL) *cfg = xbt_cfg_new(); xbt_assert(type >= xbt_cfgelm_int && type <= xbt_cfgelm_boolean, "type of %s not valid (%d should be between %d and %d)", name, (int)type, xbt_cfgelm_int, xbt_cfgelm_boolean); - res = xbt_dict_get_or_null((xbt_dict_t) * cfg, name); + + xbt_cfgelm_t res = xbt_dict_get_or_null((xbt_dict_t) * cfg, name); xbt_assert(NULL == res, "Refusing to register the config element '%s' twice.", name); res = xbt_new(s_xbt_cfgelm_t, 1); @@ -239,19 +238,19 @@ void xbt_cfg_register(xbt_cfg_t * cfg, const char *name, const char *desc, e_xbt } void xbt_cfg_register_double(const char *name, const char *desc, double default_value,xbt_cfg_cb_t cb_set){ - xbt_cfg_register(simgrid_config,name,desc,xbt_cfgelm_double,1,1,cb_set); + xbt_cfg_register(&simgrid_config,name,desc,xbt_cfgelm_double,1,1,cb_set); xbt_cfg_setdefault_double(name, default_value); } void xbt_cfg_register_int(const char *name, const char *desc, int default_value,xbt_cfg_cb_t cb_set){ - xbt_cfg_register(simgrid_config,name,desc,xbt_cfgelm_int,1,1,cb_set); + xbt_cfg_register(&simgrid_config,name,desc,xbt_cfgelm_int,1,1,cb_set); xbt_cfg_setdefault_int(name, default_value); } void xbt_cfg_register_string(const char *name, const char *desc, const char *default_value, xbt_cfg_cb_t cb_set){ - xbt_cfg_register(simgrid_config,name,desc,xbt_cfgelm_string,1,1,cb_set); + xbt_cfg_register(&simgrid_config,name,desc,xbt_cfgelm_string,1,1,cb_set); xbt_cfg_setdefault_string(name, default_value); } void xbt_cfg_register_boolean(const char *name, const char *desc, const char*default_value,xbt_cfg_cb_t cb_set){ - xbt_cfg_register(simgrid_config,name,desc,xbt_cfgelm_boolean,1,1,cb_set); + xbt_cfg_register(&simgrid_config,name,desc,xbt_cfgelm_boolean,1,1,cb_set); xbt_cfg_setdefault_boolean(name, default_value); } @@ -427,21 +426,17 @@ void xbt_cfg_help(xbt_cfg_t cfg) } /** @brief Check that each variable have the right amount of values */ -void xbt_cfg_check(xbt_cfg_t cfg) +void xbt_cfg_check(void) { xbt_dict_cursor_t cursor; xbt_cfgelm_t variable; char *name; - int size; - xbt_assert(cfg, "NULL config set."); - XBT_DEBUG("Check cfg set %p", cfg); - - xbt_dict_foreach((xbt_dict_t) cfg, cursor, name, variable) { + xbt_dict_foreach((xbt_dict_t) simgrid_config, cursor, name, variable) { if (variable->type == xbt_cfgelm_alias) continue; - size = xbt_dynar_length(variable->content); + int size = xbt_dynar_length(variable->content); if (variable->min > size) { xbt_dict_cursor_free(&cursor); THROWF(mismatch_error, 0, "Config elem %s needs at least %d %s, but there is only %d values.", @@ -573,14 +568,13 @@ void xbt_cfg_set(xbt_cfg_t cfg, const char *name, ...) /** @brief Add values parsed from a string into a config set * - * @param cfg config set to fill * @param options a string containing the content to add to the config set. This is a '\\t',' ' or '\\n' or ',' * separated list of variables. Each individual variable is like "[name]:[value]" where [name] is the name of an * already registered variable, and [value] conforms to the data type under which this variable was registered. * * @todo This is a crude manual parser, it should be a proper lexer. */ -void xbt_cfg_set_parse(xbt_cfg_t cfg, const char *options) +void xbt_cfg_set_parse(const char *options) { if (!options || !strlen(options)) { /* nothing to do */ return; @@ -776,7 +770,6 @@ void xbt_cfg_setdefault_boolean(const char *name, const char *val) */ void xbt_cfg_set_int(const char *name, int val) { - XBT_VERB("Configuration setting: %s=%d", name, val); xbt_cfgelm_t variable = xbt_cfgelm_get(simgrid_config, name, xbt_cfgelm_int); if (variable->max == 1) { @@ -802,7 +795,6 @@ void xbt_cfg_set_int(const char *name, int val) */ void xbt_cfg_set_double(const char *name, double val) { - XBT_VERB("Configuration setting: %s=%f", name, val); xbt_cfgelm_t variable = xbt_cfgelm_get(simgrid_config, name, xbt_cfgelm_double); if (variable->max == 1) { @@ -830,13 +822,8 @@ void xbt_cfg_set_double(const char *name, double val) void xbt_cfg_set_string(const char *name, const char *val) { char *newval = xbt_strdup(val); - - XBT_VERB("Configuration setting: %s=%s", name, val); xbt_cfgelm_t variable = xbt_cfgelm_get(simgrid_config, name, xbt_cfgelm_string); - XBT_DEBUG("Variable: %d to %d %s (=%d) @%p", - variable->min, variable->max, xbt_cfgelm_type_name[variable->type], (int)variable->type, variable); - if (variable->max == 1) { if (!xbt_dynar_is_empty(variable->content)) { char *sval = xbt_dynar_get_as(variable->content, 0, char *); @@ -860,15 +847,12 @@ void xbt_cfg_set_string(const char *name, const char *val) /** @brief Set or add a boolean value to \a name within \a cfg * - * @param cfg the config set * @param name the name of the variable * @param val the value of the variable */ void xbt_cfg_set_boolean(const char *name, const char *val) { int i, bval; - - XBT_VERB("Configuration setting: %s=%s", name, val); xbt_cfgelm_t variable = xbt_cfgelm_get(simgrid_config, name, xbt_cfgelm_boolean); for (i = 0; xbt_cfgelm_boolean_values[i].true_val != NULL; i++) { @@ -1214,72 +1198,67 @@ static xbt_cfg_t make_set() return set; } /* end_of_make_set */ +extern xbt_cfg_t simgrid_config; + XBT_TEST_UNIT("memuse", test_config_memuse, "Alloc and free a config set") { - xbt_cfg_t set = make_set(); + simgrid_config = make_set(); xbt_test_add("Alloc and free a config set"); - xbt_cfg_set_parse(set, "peername:veloce user:mquinson\nuser:oaumage\tuser:alegrand"); - xbt_cfg_free(&set); - xbt_cfg_free(&set); + xbt_cfg_set_parse("peername:veloce user:mquinson\nuser:oaumage\tuser:alegrand"); + xbt_cfg_free(&simgrid_config); } XBT_TEST_UNIT("validation", test_config_validation, "Validation tests") { - xbt_cfg_t set = set = make_set(); xbt_ex_t e; + simgrid_config = make_set(); xbt_test_add("Having too few elements for speed"); - xbt_cfg_set_parse(set, "peername:veloce user:mquinson\nuser:oaumage\tuser:alegrand"); + xbt_cfg_set_parse("peername:veloce user:mquinson\nuser:oaumage\tuser:alegrand"); TRY { - xbt_cfg_check(set); + xbt_cfg_check(); } CATCH(e) { if (e.category != mismatch_error || strncmp(e.msg, "Config elem speed needs", strlen("Config elem speed needs"))) xbt_test_fail("Got an exception. msg=%s", e.msg); xbt_ex_free(e); } - xbt_cfg_free(&set); - xbt_cfg_free(&set); xbt_test_add("Having too much values of 'speed'"); - set = make_set(); - xbt_cfg_set_parse(set, "peername:toto:42 user:alegrand"); + xbt_cfg_set_parse("peername:toto:42 user:alegrand"); TRY { - xbt_cfg_set_parse(set, "speed:42 speed:24 speed:34"); + xbt_cfg_set_parse("speed:42 speed:24 speed:34"); } CATCH(e) { if (e.category != mismatch_error || strncmp(e.msg, "Cannot add value 34 to the config elem speed", strlen("Config elem speed needs"))) xbt_test_fail("Got an exception. msg=%s", e.msg); xbt_ex_free(e); } - xbt_cfg_check(set); - xbt_cfg_free(&set); - xbt_cfg_free(&set); + xbt_cfg_check(); + xbt_cfg_free(&simgrid_config); } XBT_TEST_UNIT("use", test_config_use, "Data retrieving tests") { + simgrid_config = make_set(); xbt_test_add("Get a single value"); { /* get_single_value */ int ival; - xbt_cfg_t myset = make_set(); - xbt_cfg_set_parse(myset, "peername:toto:42 speed:42"); + xbt_cfg_set_parse("peername:toto:42 speed:42"); ival = xbt_cfg_get_int("speed"); if (ival != 42) xbt_test_fail("Speed value = %d, I expected 42", ival); - xbt_cfg_free(&myset); } xbt_test_add("Get multiple values"); { /* get_multiple_value */ xbt_dynar_t dyn; - xbt_cfg_t myset = make_set(); - xbt_cfg_set_parse(myset, "peername:veloce user:foo\nuser:bar\tuser:toto"); - xbt_cfg_set_parse(myset, "speed:42"); - xbt_cfg_check(myset); + xbt_cfg_set_parse("peername:veloce user:foo\nuser:bar\tuser:toto"); + xbt_cfg_set_parse("speed:42"); + xbt_cfg_check(); dyn = xbt_cfg_get_dynar("user"); if (xbt_dynar_length(dyn) != 3) @@ -1293,23 +1272,20 @@ XBT_TEST_UNIT("use", test_config_use, "Data retrieving tests") if (strcmp(xbt_dynar_get_as(dyn, 2, char *), "toto")) xbt_test_fail("Dynar[2] = %s, I expected toto", xbt_dynar_get_as(dyn, 2, char *)); - xbt_cfg_free(&myset); } xbt_test_add("Access to a non-existant entry"); { - /* non-existant_entry */ - xbt_cfg_t myset = make_set(); xbt_ex_t e; TRY { - xbt_cfg_set_parse(myset, "color:blue"); + xbt_cfg_set_parse("color:blue"); } CATCH(e) { if (e.category != not_found_error) xbt_test_exception(e); xbt_ex_free(e); } - xbt_cfg_free(&myset); } + xbt_cfg_free(&simgrid_config); } #endif /* SIMGRID_TEST */ diff --git a/src/xbt/xbt_main.c b/src/xbt/xbt_main.c index 43e903f5cf..8b9b4155f4 100644 --- a/src/xbt/xbt_main.c +++ b/src/xbt/xbt_main.c @@ -144,10 +144,8 @@ void xbt_init(int *argc, char **argv) xbt_binary_name = xbt_strdup(argv[0]); xbt_cmdline = xbt_dynar_new(sizeof(char*),NULL); - int i; - for (i=0;i<*argc;i++) { + for (int i=0;i<*argc;i++) xbt_dynar_push(xbt_cmdline,&(argv[i])); - } xbt_log_init(argc, argv); } diff --git a/teshsuite/surf/surf_usage/surf_usage.cpp b/teshsuite/surf/surf_usage/surf_usage.cpp index 3eeab9668a..133e3921c2 100644 --- a/teshsuite/surf/surf_usage/surf_usage.cpp +++ b/teshsuite/surf/surf_usage/surf_usage.cpp @@ -38,8 +38,8 @@ int main(int argc, char **argv) { double now = -1.0; surf_init(&argc, argv); /* Initialize some common structures */ - xbt_cfg_set_string("cpu/model","Cas01"); - xbt_cfg_set_string("network/model","CM02"); + xbt_cfg_set_parse("cpu/model:Cas01"); + xbt_cfg_set_parse("network/model:CM02"); xbt_assert(argc >1, "Usage : %s platform.txt\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 490fe3005e..2308198f71 100644 --- a/teshsuite/surf/surf_usage2/surf_usage2.cpp +++ b/teshsuite/surf/surf_usage2/surf_usage2.cpp @@ -24,8 +24,8 @@ int main(int argc, char **argv) surf_init(&argc, argv); /* Initialize some common structures */ - xbt_cfg_set_string("network/model","CM02"); - xbt_cfg_set_string("cpu/model","Cas01"); + xbt_cfg_set_parse("network/model:CM02"); + xbt_cfg_set_parse("cpu/model:Cas01"); xbt_assert(argc >1, "Usage : %s platform.txt\n", argv[0]); parse_platform_file(argv[1]);