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. */
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);
}
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
*/
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)
{
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;
}
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;
}
*/
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;
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;
}
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"