X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/7f71c595be569acd81e8c7b97924bd2d0efc3f6c..2e34517e6b635b5590533154dcc10efb97d9ae99:/src/xbt/config.c diff --git a/src/xbt/config.c b/src/xbt/config.c index 1890645955..7c3de17497 100644 --- a/src/xbt/config.c +++ b/src/xbt/config.c @@ -21,7 +21,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_cfg, xbt, "configuration support"); -xbt_cfg_t simgrid_config = NULL; +XBT_EXPORT_NO_IMPORT(xbt_cfg_t) simgrid_config = NULL; static void xbt_cfg_register(xbt_cfg_t * cfg, const char *name, const char *desc, e_xbt_cfgelm_type_t type, xbt_cfg_cb_t cb_set); /* xbt_cfgelm_t: the typedef corresponding to a config variable. */ @@ -229,19 +229,19 @@ static void xbt_cfg_register(xbt_cfg_t * cfg, const char *name, const char *desc xbt_dict_set((xbt_dict_t) * cfg, name, res, NULL); } -void xbt_cfg_register_double(const char *name, const char *desc, double default_value,xbt_cfg_cb_t cb_set){ +void xbt_cfg_register_double(const char *name, double default_value,xbt_cfg_cb_t cb_set, const char *desc){ xbt_cfg_register(&simgrid_config,name,desc,xbt_cfgelm_double,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){ +void xbt_cfg_register_int(const char *name, int default_value,xbt_cfg_cb_t cb_set, const char *desc) { xbt_cfg_register(&simgrid_config,name,desc,xbt_cfgelm_int,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){ +void xbt_cfg_register_string(const char *name, const char *default_value, xbt_cfg_cb_t cb_set, const char *desc){ xbt_cfg_register(&simgrid_config,name,desc,xbt_cfgelm_string,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){ +void xbt_cfg_register_boolean(const char *name, const char*default_value,xbt_cfg_cb_t cb_set, const char *desc){ xbt_cfg_register(&simgrid_config,name,desc,xbt_cfgelm_boolean,cb_set); xbt_cfg_setdefault_boolean(name, default_value); } @@ -683,9 +683,8 @@ void xbt_cfg_setdefault_boolean(const char *name, const char *val) XBT_DEBUG("Do not override configuration variable '%s' with value '%s' because it was already set.", name, val); } -/** @brief Set or add an integer value to \a name within \a cfg +/** @brief Set an integer 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 */ @@ -696,15 +695,14 @@ void xbt_cfg_set_int(const char *name, int val) xbt_dynar_set(variable->content, 0, &val); if (variable->cb_set) - variable->cb_set(name, xbt_dynar_length(variable->content) - 1); + variable->cb_set(name); variable->isdefault = 0; } /** @brief Set or add a double value to \a name within \a cfg * - * @param cfg the config set * @param name the name of the variable - * @param val the doule to set + * @param val the double to set */ void xbt_cfg_set_double(const char *name, double val) { @@ -713,7 +711,7 @@ void xbt_cfg_set_double(const char *name, double val) xbt_dynar_set(variable->content, 0, &val); if (variable->cb_set) - variable->cb_set(name, xbt_dynar_length(variable->content) - 1); + variable->cb_set(name); variable->isdefault = 0; } @@ -737,7 +735,7 @@ void xbt_cfg_set_string(const char *name, const char *val) xbt_dynar_set(variable->content, 0, &newval); if (variable->cb_set) - variable->cb_set(name, xbt_dynar_length(variable->content) - 1); + variable->cb_set(name); variable->isdefault = 0; } @@ -748,10 +746,10 @@ void xbt_cfg_set_string(const char *name, const char *val) */ void xbt_cfg_set_boolean(const char *name, const char *val) { - int i, bval; + int bval=-1; 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++) { + for (int i = 0; xbt_cfgelm_boolean_values[i].true_val != NULL; i++) { if (strcmp(val, xbt_cfgelm_boolean_values[i].true_val) == 0){ bval = 1; break; @@ -761,14 +759,11 @@ void xbt_cfg_set_boolean(const char *name, const char *val) break; } } - if (xbt_cfgelm_boolean_values[i].true_val == NULL) { - xbt_die("Value of option '%s' not valid. Should be a boolean (yes,no,on,off,true,false,0,1)", val); - } - + xbt_assert(bval != -1, "Value of option '%s' not valid. Should be a boolean (yes,no,on,off,true,false,0,1)", val); xbt_dynar_set(variable->content, 0, &bval); if (variable->cb_set) - variable->cb_set(name, xbt_dynar_length(variable->content) - 1); + variable->cb_set(name); variable->isdefault = 0; } @@ -865,61 +860,6 @@ int xbt_cfg_get_boolean(const char *name) return xbt_dynar_get_as(variable->content, 0, int); } -/** @brief Retrieve the dynar of all the values stored in a variable - * - * @param cfg where to search in - * @param name what to search for - * - * Get the data stored in the config set. - * - * \warning the returned value is the actual content of the config set - */ -xbt_dynar_t xbt_cfg_get_dynar(const char *name) -{ - xbt_cfgelm_t variable = NULL; - xbt_ex_t e; - - TRY { - variable = xbt_dict_get((xbt_dict_t) simgrid_config, name); - } CATCH(e) { - if (e.category == not_found_error) { - xbt_ex_free(e); - THROWF(not_found_error, 0, "No registered variable %s in this config set", name); - } - RETHROW; - } - - return variable->content; -} - -/** @brief Retrieve one of the integer value of a variable */ -int xbt_cfg_get_int_at(xbt_cfg_t cfg, const char *name, int pos) -{ - xbt_cfgelm_t variable = xbt_cfgelm_get(cfg, name, xbt_cfgelm_int); - return xbt_dynar_get_as(variable->content, pos, int); -} - -/** @brief Retrieve one of the double value of a variable */ -double xbt_cfg_get_double_at(xbt_cfg_t cfg, const char *name, int pos) -{ - xbt_cfgelm_t variable = xbt_cfgelm_get(cfg, name, xbt_cfgelm_double); - return xbt_dynar_get_as(variable->content, pos, double); -} - -/** @brief Retrieve one of the string value of a variable */ -char *xbt_cfg_get_string_at(xbt_cfg_t cfg, const char *name, int pos) -{ - xbt_cfgelm_t variable = xbt_cfgelm_get(cfg, name, xbt_cfgelm_string); - return xbt_dynar_get_as(variable->content, pos, char *); -} - -/** @brief Retrieve one of the boolean value of a variable */ -int xbt_cfg_get_boolean_at(xbt_cfg_t cfg, const char *name, int pos) -{ - xbt_cfgelm_t variable = xbt_cfgelm_get(cfg, name, xbt_cfgelm_boolean); - return xbt_dynar_get_as(variable->content, pos, int); -} - #ifdef SIMGRID_TEST #include "xbt.h" #include "xbt/ex.h"