Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of scm.gforge.inria.fr:/gitroot/simgrid/simgrid into LLL
[simgrid.git] / src / xbt / config.c
index 9fbffa5..39b4262 100644 (file)
@@ -64,7 +64,7 @@ static xbt_cfgelm_t xbt_cfgelm_get(xbt_cfg_t cfg, const char *name,
 
 xbt_cfg_t xbt_cfg_new(void)
 {
-  return (xbt_cfg_t) xbt_dict_new();
+  return (xbt_cfg_t) xbt_dict_new_homogeneous(&xbt_cfgelm_free);
 }
 
 /** \brief Copy an existing configuration set
@@ -263,7 +263,7 @@ xbt_cfg_register(xbt_cfg_t * cfg,
     XBT_ERROR("%d is an invalide type code", type);
   }
 
-  xbt_dict_set((xbt_dict_t) * cfg, name, res, &xbt_cfgelm_free);
+  xbt_dict_set((xbt_dict_t) * cfg, name, res, NULL);
 }
 
 /** @brief Unregister an element from a config set.
@@ -828,8 +828,8 @@ void xbt_cfg_set_int(xbt_cfg_t cfg, const char *name, int val)
   variable = xbt_cfgelm_get(cfg, name, xbt_cfgelm_int);
 
   if (variable->max == 1) {
-    if (variable->cb_rm && xbt_dynar_length(variable->content))
-      (*variable->cb_rm) (name, 0);
+    if (variable->cb_rm && !xbt_dynar_is_empty(variable->content))
+      variable->cb_rm(name, 0);
 
     xbt_dynar_set(variable->content, 0, &val);
   } else {
@@ -844,7 +844,7 @@ void xbt_cfg_set_int(xbt_cfg_t cfg, const char *name, int val)
   }
 
   if (variable->cb_set)
-    (*variable->cb_set) (name, xbt_dynar_length(variable->content) - 1);
+    variable->cb_set(name, xbt_dynar_length(variable->content) - 1);
   variable->isdefault = 0;
 }
 
@@ -863,8 +863,8 @@ void xbt_cfg_set_double(xbt_cfg_t cfg, const char *name, double val)
   variable = xbt_cfgelm_get(cfg, name, xbt_cfgelm_double);
 
   if (variable->max == 1) {
-    if (variable->cb_rm && xbt_dynar_length(variable->content))
-      (*variable->cb_rm) (name, 0);
+    if (variable->cb_rm && !xbt_dynar_is_empty(variable->content))
+      variable->cb_rm(name, 0);
 
     xbt_dynar_set(variable->content, 0, &val);
   } else {
@@ -878,7 +878,7 @@ void xbt_cfg_set_double(xbt_cfg_t cfg, const char *name, double val)
   }
 
   if (variable->cb_set)
-    (*variable->cb_set) (name, xbt_dynar_length(variable->content) - 1);
+    variable->cb_set(name, xbt_dynar_length(variable->content) - 1);
   variable->isdefault = 0;
 }
 
@@ -902,9 +902,9 @@ void xbt_cfg_set_string(xbt_cfg_t cfg, const char *name, const char *val)
          xbt_cfgelm_type_name[variable->type], variable->type, variable);
 
   if (variable->max == 1) {
-    if (xbt_dynar_length(variable->content)) {
+    if (!xbt_dynar_is_empty(variable->content)) {
       if (variable->cb_rm)
-        (*variable->cb_rm) (name, 0);
+        variable->cb_rm(name, 0);
       else if (variable->type == xbt_cfgelm_string) {
         char *sval = xbt_dynar_get_as(variable->content, 0, char *);
         free(sval);
@@ -923,7 +923,7 @@ void xbt_cfg_set_string(xbt_cfg_t cfg, const char *name, const char *val)
   }
 
   if (variable->cb_set)
-    (*variable->cb_set) (name, xbt_dynar_length(variable->content) - 1);
+    variable->cb_set(name, xbt_dynar_length(variable->content) - 1);
   variable->isdefault = 0;
 }
 
@@ -949,8 +949,8 @@ xbt_cfg_set_peer(xbt_cfg_t cfg, const char *name, const char *peer,
   variable = xbt_cfgelm_get(cfg, name, xbt_cfgelm_peer);
 
   if (variable->max == 1) {
-    if (variable->cb_rm && xbt_dynar_length(variable->content))
-      (*variable->cb_rm) (name, 0);
+    if (variable->cb_rm && !xbt_dynar_is_empty(variable->content))
+      variable->cb_rm(name, 0);
 
     xbt_dynar_set(variable->content, 0, &val);
   } else {
@@ -964,7 +964,7 @@ xbt_cfg_set_peer(xbt_cfg_t cfg, const char *name, const char *peer,
   }
 
   if (variable->cb_set)
-    (*variable->cb_set) (name, xbt_dynar_length(variable->content) - 1);
+    variable->cb_set(name, xbt_dynar_length(variable->content) - 1);
   variable->isdefault = 0;
 }
 
@@ -993,7 +993,7 @@ void xbt_cfg_rm_int(xbt_cfg_t cfg, const char *name, int val)
   xbt_dynar_foreach(variable->content, cpt, seen) {
     if (seen == val) {
       if (variable->cb_rm)
-        (*variable->cb_rm) (name, cpt);
+        variable->cb_rm(name, cpt);
       xbt_dynar_cursor_rm(variable->content, &cpt);
       return;
     }
@@ -1028,7 +1028,7 @@ void xbt_cfg_rm_double(xbt_cfg_t cfg, const char *name, double val)
     if (seen == val) {
       xbt_dynar_cursor_rm(variable->content, &cpt);
       if (variable->cb_rm)
-        (*variable->cb_rm) (name, cpt);
+        variable->cb_rm(name, cpt);
       return;
     }
   }
@@ -1060,7 +1060,7 @@ void xbt_cfg_rm_string(xbt_cfg_t cfg, const char *name, const char *val)
   xbt_dynar_foreach(variable->content, cpt, seen) {
     if (!strcpy(seen, val)) {
       if (variable->cb_rm)
-        (*variable->cb_rm) (name, cpt);
+        variable->cb_rm(name, cpt);
       xbt_dynar_cursor_rm(variable->content, &cpt);
       return;
     }
@@ -1097,7 +1097,7 @@ xbt_cfg_rm_peer(xbt_cfg_t cfg, const char *name, const char *peer,
   xbt_dynar_foreach(variable->content, cpt, seen) {
     if (!strcpy(seen->name, peer) && seen->port == port) {
       if (variable->cb_rm)
-        (*variable->cb_rm) (name, cpt);
+        variable->cb_rm(name, cpt);
       xbt_dynar_cursor_rm(variable->content, &cpt);
       return;
     }
@@ -1123,7 +1123,7 @@ void xbt_cfg_rm_at(xbt_cfg_t cfg, const char *name, int pos)
            pos, name, variable->min);
 
   if (variable->cb_rm)
-    (*variable->cb_rm) (name, pos);
+    variable->cb_rm(name, pos);
   xbt_dynar_remove_at(variable->content, pos, NULL);
 }
 
@@ -1156,7 +1156,7 @@ void xbt_cfg_empty(xbt_cfg_t cfg, const char *name)
       unsigned int cpt;
       void *ignored;
       xbt_dynar_foreach(variable->content, cpt, ignored) {
-        (*variable->cb_rm) (name, cpt);
+        variable->cb_rm(name, cpt);
       }
     }
     xbt_dynar_reset(variable->content);
@@ -1245,7 +1245,7 @@ char *xbt_cfg_get_string(xbt_cfg_t cfg, const char *name)
     XBT_WARN
         ("You asked for the first value of the config element '%s', but there is %lu values\n",
          name, xbt_dynar_length(variable->content));
-  } else if (xbt_dynar_length(variable->content) == 0) {
+  } else if (xbt_dynar_is_empty(variable->content)) {
     return NULL;
   }