Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
re-doxygenification
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Sun, 13 Feb 2005 15:54:27 +0000 (15:54 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Sun, 13 Feb 2005 15:54:27 +0000 (15:54 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@987 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/xbt/config.c
src/xbt/context.c
src/xbt/context_private.h
src/xbt/dynar.c
src/xbt/error.c
src/xbt/heap_private.h
src/xbt/module.c
src/xbt/set.c
src/xbt/sysdep.c

index 39bde11..571a570 100644 (file)
@@ -1,6 +1,6 @@
 /* $Id$ */
 
-/* config - Dictionnary where the type of each cell is provided.            */
+/* config - Dictionnary where the type of each variable is provided.            */
 
 /* This is useful to build named structs, like option or property sets.     */
 
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(config,xbt,"configuration support");
 
-/* xbt_cfgelm_t: the typedef corresponding to a config cell
+/* xbt_cfgelm_t: the typedef corresponding to a config variable
 
    Both data and DTD are mixed, but fixing it now would prevent me to ever
    defend my thesis. */
 
 typedef struct {
-  /* Allowed type of the cell */
+  /* Allowed type of the variable */
   e_xbt_cfgelm_type_t type;
   int min,max;
 
@@ -38,10 +38,10 @@ typedef struct {
 static const char *xbt_cfgelm_type_name[xbt_cfgelm_type_count]=
   {"int","double","string","host"};
 
-/* Internal stuff used in cache to free a cell */
+/* Internal stuff used in cache to free a variable */
 static void xbt_cfgelm_free(void *data);
 
-/* Retrieve the cell we'll modify */
+/* Retrieve the variable we'll modify */
 static xbt_error_t xbt_cfgelm_get(xbt_cfg_t cfg, const char *name,
                                    e_xbt_cfgelm_type_t type,
                                    /* OUT */ xbt_cfgelm_t *whereto);
@@ -62,10 +62,7 @@ void xbt_cfg_host_free(void *d){
 
 /*----[ Memory management ]-----------------------------------------------*/
 
-/**
- * xbt_cfg_new:
- *
- * \return
+/** @brief Constructor
  *
  * Initialise an config set
  */
@@ -75,45 +72,43 @@ xbt_cfg_t xbt_cfg_new(void) {
   return (xbt_cfg_t)xbt_dict_new();
 }
 
-/**
- * xbt_cfg_cpy:
+/** @brief Copy an existing configuration set
  *
  * \arg whereto the config set to be created
  * \arg tocopy the source data
  *
+ * This only copy the registrations, not the actual content
  */
 
 void
 xbt_cfg_cpy(xbt_cfg_t tocopy,xbt_cfg_t *whereto) {
   xbt_dict_cursor_t cursor=NULL; 
-  xbt_cfgelm_t cell=NULL;
+  xbt_cfgelm_t variable=NULL;
   char *name=NULL;
   
   *whereto=NULL;
   xbt_assert0(tocopy,"cannot copy NULL config");
 
-  xbt_dict_foreach((xbt_dict_t)tocopy,cursor,name,cell) {
-    xbt_cfg_register(*whereto, name, cell->type, cell->min, cell->max);
+  xbt_dict_foreach((xbt_dict_t)tocopy,cursor,name,variable) {
+    xbt_cfg_register(*whereto, name, variable->type, variable->min, variable->max);
   }
 }
 
+/** @brief Destructor */
 void xbt_cfg_free(xbt_cfg_t *cfg) {
   xbt_dict_free((xbt_dict_t*)cfg);
 }
 
-/**
- * xbt_cfg_dump:
+/** @brief Dump a config set for debuging purpose
+ *
  * \arg name The name to give to this config set
  * \arg indent what to write at the begining of each line (right number of spaces)
  * \arg cfg the config set
- *
- * Dumps a config set for debuging purpose
  */
-void
-xbt_cfg_dump(const char *name,const char *indent,xbt_cfg_t cfg) {
+void xbt_cfg_dump(const char *name,const char *indent,xbt_cfg_t cfg) {
   xbt_dict_t dict = (xbt_dict_t) cfg;
   xbt_dict_cursor_t cursor=NULL; 
-  xbt_cfgelm_t cell=NULL;
+  xbt_cfgelm_t variable=NULL;
   char *key=NULL;
   int i; 
   int size;
@@ -124,41 +119,41 @@ xbt_cfg_dump(const char *name,const char *indent,xbt_cfg_t cfg) {
 
   if (name)
     printf("%s>> Dumping of the config set '%s':\n",indent,name);
-  xbt_dict_foreach(dict,cursor,key,cell) {
+  xbt_dict_foreach(dict,cursor,key,variable) {
 
     printf("%s  %s:",indent,key);
 
-    size = xbt_dynar_length(cell->content);
+    size = xbt_dynar_length(variable->content);
     printf("%d_to_%d_%s. Actual size=%d. List of values:\n",
-          cell->min,cell->max,xbt_cfgelm_type_name[cell->type],
+          variable->min,variable->max,xbt_cfgelm_type_name[variable->type],
           size);
 
-    switch (cell->type) {
+    switch (variable->type) {
        
     case xbt_cfgelm_int:
       for (i=0; i<size; i++) {
-       ival = xbt_dynar_get_as(cell->content,i,int);
+       ival = xbt_dynar_get_as(variable->content,i,int);
        printf ("%s    %d\n",indent,ival);
       }
       break;
 
     case xbt_cfgelm_double:
       for (i=0; i<size; i++) {
-       dval = xbt_dynar_get_as(cell->content,i,double);
+       dval = xbt_dynar_get_as(variable->content,i,double);
        printf ("%s    %f\n",indent,dval);
       }
       break;
 
     case xbt_cfgelm_string:
       for (i=0; i<size; i++) {
-       sval = xbt_dynar_get_as(cell->content,i,char*);
+       sval = xbt_dynar_get_as(variable->content,i,char*);
        printf ("%s    %s\n",indent,sval);
       }
       break;
 
     case xbt_cfgelm_host:
       for (i=0; i<size; i++) {
-       hval = xbt_dynar_get_as(cell->content,i,xbt_host_t*);
+       hval = xbt_dynar_get_as(variable->content,i,xbt_host_t*);
        printf ("%s    %s:%d\n",indent,hval->name,hval->port);
       }
       break;
@@ -176,11 +171,7 @@ xbt_cfg_dump(const char *name,const char *indent,xbt_cfg_t cfg) {
   return;
 }
 
-/**
- * xbt_cfgelm_free:
- *
- * \arg data the data to be freed (typed as void* to be usable as free funct in dict)
- *
+/*
  * free an config element
  */
 
@@ -194,14 +185,12 @@ void xbt_cfgelm_free(void *data) {
 
 /*----[ Registering stuff ]-----------------------------------------------*/
 
-/**
- * xbt_cfg_register:
- * \arg cfg the config set
- * \arg type the type of the config element
- * \arg min the minimum
- * \arg max the maximum
+/** @brief Register an element within a config set
  *
- * register an element within a config set
+ *  @arg cfg the config set
+ *  @arg type the type of the config element
+ *  @arg min the minimum
+ *  @arg max the maximum
  */
 
 void
@@ -250,14 +239,12 @@ xbt_cfg_register(xbt_cfg_t cfg,
   xbt_dict_set((xbt_dict_t)cfg,name,res,&xbt_cfgelm_free);
 }
 
-/**
- * xbt_cfg_unregister:
+/** @brief Unregister an element from a config set. 
  * 
- * \arg cfg the config set
- * \arg name the name of the elem to be freed
+ *  @arg cfg the config set
+ *  @arg name the name of the elem to be freed
  * 
- * unregister an element from a config set. 
- * Note that it removes both the DTD and the actual content.
+ *  Note that it removes both the description and the actual content.
  */
 
 xbt_error_t
@@ -266,12 +253,14 @@ xbt_cfg_unregister(xbt_cfg_t cfg,const char *name) {
 }
 
 /**
- * xbt_cfg_register_str:
+ * @brief Parse a string and register the stuff described.
  *
- * \arg cfg the config set
- * \arg entry a string describing the element to register
+ * @arg cfg the config set
+ * @arg entry a string describing the element to register
  *
- * Parse a string and register the stuff described.
+ * The string may consist in several variable description separated by a space. 
+ * Each of them must use the following syntax: \<name\>:\<min nb\>_to_\<max nb\>_\<type\>
+ * with type being one of  'string','int', 'host' or 'double'.
  */
 
 xbt_error_t
@@ -340,40 +329,34 @@ xbt_cfg_register_str(xbt_cfg_t cfg,const char *entry) {
   return no_error;
 }
 
-/**
- * xbt_cfg_check:
- *
- * \arg cfg the config set
- * 
- * Check the config set
- */
+/** @brief Check that each variable have the right amount of values */
 
 xbt_error_t
 xbt_cfg_check(xbt_cfg_t cfg) {
   xbt_dict_cursor_t cursor; 
-  xbt_cfgelm_t cell;
+  xbt_cfgelm_t variable;
   char *name;
   int size;
 
   xbt_assert0(cfg,"NULL config set.");
 
-  xbt_dict_foreach((xbt_dict_t)cfg,cursor,name,cell) {
-    size = xbt_dynar_length(cell->content);
-    if (cell->min > size) { 
+  xbt_dict_foreach((xbt_dict_t)cfg,cursor,name,variable) {
+    size = xbt_dynar_length(variable->content);
+    if (variable->min > size) { 
       ERROR4("Config elem %s needs at least %d %s, but there is only %d values.",
             name,
-            cell->min,
-            xbt_cfgelm_type_name[cell->type],
+            variable->min,
+            xbt_cfgelm_type_name[variable->type],
             size); 
       xbt_dict_cursor_free(&cursor);
       return mismatch_error;
     }
 
-    if (cell->max < size) {
+    if (variable->max < size) {
       ERROR4("Config elem %s accepts at most %d %s, but there is %d values.",
             name,
-            cell->max,
-            xbt_cfgelm_type_name[cell->type],
+            variable->max,
+            xbt_cfgelm_type_name[variable->type],
             size);
       xbt_dict_cursor_free(&cursor);
       return mismatch_error;
@@ -394,7 +377,7 @@ static xbt_error_t xbt_cfgelm_get(xbt_cfg_t  cfg,
                                       (void**)whereto);
 
   if (errcode == mismatch_error) {
-    ERROR1("No registered cell %s in this config set",
+    ERROR1("No registered variable %s in this config set",
           name);
     return mismatch_error;
   }
@@ -410,39 +393,37 @@ static xbt_error_t xbt_cfgelm_get(xbt_cfg_t  cfg,
   return no_error;
 }
 
-/**
- * xbt_cfg_get_type:
+/** @brief Get the type of this variable in that configuration set
  *
  * \arg cfg the config set
  * \arg name the name of the element 
  * \arg type the result
  *
- * Give the type of the config element
  */
 
 xbt_error_t
 xbt_cfg_get_type(xbt_cfg_t cfg, const char *name, 
                      /* OUT */e_xbt_cfgelm_type_t *type) {
 
-  xbt_cfgelm_t cell;
+  xbt_cfgelm_t variable;
   xbt_error_t errcode;
 
-  TRYCATCH(mismatch_error,xbt_dict_get((xbt_dict_t)cfg,name,(void**)&cell));
+  TRYCATCH(mismatch_error,xbt_dict_get((xbt_dict_t)cfg,name,(void**)&variable));
 
   if (errcode == mismatch_error) {
-    ERROR1("Can't get the type of '%s' since this cell does not exist",
+    ERROR1("Can't get the type of '%s' since this variable does not exist",
           name);
     return mismatch_error;
   }
 
-  *type=cell->type;
+  *type=variable->type;
 
   return no_error;
 }
 
 /*----[ Setting ]---------------------------------------------------------*/
-/** 
- * xbt_cfg_set_vargs(): 
+/**  @brief va_args version of xbt_cfg_set
+ *
  * \arg cfg config set to fill
  * \arg varargs NULL-terminated list of pairs {(const char*)key, value}
  *
@@ -488,18 +469,17 @@ xbt_cfg_set_vargs(xbt_cfg_t cfg, va_list pa) {
       break;
 
     default: 
-      RAISE1(unknown_error,"Config element cell %s not valid.",name);
+      RAISE1(unknown_error,"Config element variable %s not valid.",name);
     }
   }
   return no_error;
 }
 
-/** 
- * xbt_cfg_set():
+/** @brief Add a NULL-terminated list of pairs {(char*)key, value} to the set
+ *
  * \arg cfg config set to fill
  * \arg varargs NULL-terminated list of pairs {(const char*)key, value}
  *
- * Add some values to the config set.
  * \warning if the list isn't NULL terminated, it will segfault. 
  */
 xbt_error_t xbt_cfg_set(xbt_cfg_t cfg, ...) {
@@ -512,16 +492,16 @@ xbt_error_t xbt_cfg_set(xbt_cfg_t cfg, ...) {
   return errcode;
 }
 
-/**
- * xbt_cfg_set_parse():
+/** @brief Add values parsed from a string into a config set
+ *
  * \arg cfg config set to fill
  * \arg options a string containing the content to add to the config set. This
- * is a '\t',' ' or '\n' separated list of cells. Each individual cell is
+ * is a '\\t',' ' or '\\n' separated list of variables. Each individual variable is
  * like "[name]:[value]" where [name] is the name of an already registred 
- * cell, and [value] conforms to the data type under which this cell was
+ * variable, and [value] conforms to the data type under which this variable was
  * registred.
  *
- * Add the cells described in a string to a config set.
+ * @todo This is a crude manual parser, it should be a proper lexer.
  */
 
 xbt_error_t
@@ -530,7 +510,7 @@ xbt_cfg_set_parse(xbt_cfg_t cfg, const char *options) {
   double d;
   char *str;
 
-  xbt_cfgelm_t cell;
+  xbt_cfgelm_t variable;
   char *optionlist_cpy;
   char *option,  *name,*val;
 
@@ -556,19 +536,21 @@ xbt_cfg_set_parse(xbt_cfg_t cfg, const char *options) {
 
     /* Pass the value */
     while (option-name<=(len-1) && *option != ' ' && *option != '\n' && *option != '\t') {
-      /*fprintf(stderr,"Take %c.\n",*option);*/
+      DEBUG1("Take %c.\n",*option);
       option++;
     }
     if (option-name == len) {
-      /*fprintf(stderr,"Boundary=EOL\n");*/
+      DEBUG0("Boundary=EOL\n");
       option=NULL; /* don't do next iteration */
 
     } else {
-      /*fprintf(stderr,"Boundary on '%c'. len=%d;option-name=%d\n",*option,len,option-name);*/
+      DEBUG3("Boundary on '%c'. len=%d;option-name=%d\n",
+            *option,len,option-name);
 
       /* Pass the following blank chars */
       *(option++)='\0';
-      while (option-name<(len-1) && (*option == ' ' || *option == '\n' || *option == '\t')) {
+      while (option-name<(len-1) && 
+            (*option == ' ' || *option == '\n' || *option == '\t')) {
        /*      fprintf(stderr,"Ignore a blank char.\n");*/
        option++;
       }
@@ -586,19 +568,19 @@ xbt_cfg_set_parse(xbt_cfg_t cfg, const char *options) {
     if (!val) {
       xbt_free(optionlist_cpy);
       xbt_assert1(FALSE,
-                  "Malformated option: '%s'; Should be of the form 'name:value'",
-                  name);
+            "Malformated option: '%s'; Should be of the form 'name:value'",
+                 name);
     }
     *(val++)='\0';
 
     DEBUG2("name='%s';val='%s'",name,val);
 
-    errcode=xbt_dict_get((xbt_dict_t)cfg,name,(void**)&cell);
+    errcode=xbt_dict_get((xbt_dict_t)cfg,name,(void**)&variable);
     switch (errcode) {
     case no_error:
       break;
     case mismatch_error:
-      ERROR1("No registrated cell corresponding to '%s'.",name);
+      ERROR1("No registrated variable corresponding to '%s'.",name);
       xbt_free(optionlist_cpy);
       return mismatch_error;
       break;
@@ -607,7 +589,7 @@ xbt_cfg_set_parse(xbt_cfg_t cfg, const char *options) {
       return errcode;
     }
 
-    switch (cell->type) {
+    switch (variable->type) {
     case xbt_cfgelm_string:
       errcode = xbt_cfg_set_string(cfg, name, val);
       if (errcode != no_error) {
@@ -654,7 +636,7 @@ xbt_cfg_set_parse(xbt_cfg_t cfg, const char *options) {
       if (!val) {
        xbt_free(optionlist_cpy);       
        xbt_assert1(FALSE,
-              "Value of option %s not valid. Should be an host (machine:port)",
+           "Value of option %s not valid. Should be an host (machine:port)",
               name);
       }
 
@@ -663,7 +645,7 @@ xbt_cfg_set_parse(xbt_cfg_t cfg, const char *options) {
       if (val==NULL) {
        xbt_free(optionlist_cpy);       
        xbt_assert1(FALSE,
-              "Value of option %s not valid. Should be an host (machine:port)",
+           "Value of option %s not valid. Should be an host (machine:port)",
               name);
       }
 
@@ -684,99 +666,90 @@ xbt_cfg_set_parse(xbt_cfg_t cfg, const char *options) {
   return no_error;
 }
 
-/**
- * xbt_cfg_set_int:
+/** @brief Set or add an integer value to \a name within \a cfg
  *
  * \arg cfg the config set
- * \arg name the name of the cell
- * \arg val the value of the cell
- *
- * Set the value of the cell #name in #cfg with the provided value.
+ * \arg name the name of the variable
+ * \arg val the value of the variable
  */ 
 xbt_error_t
 xbt_cfg_set_int(xbt_cfg_t cfg,const char*name, int val) {
-  xbt_cfgelm_t cell;
+  xbt_cfgelm_t variable;
   xbt_error_t errcode;
 
   VERB2("Configuration setting: %s=%d",name,val);
-  TRY (xbt_cfgelm_get(cfg,name,xbt_cfgelm_int,&cell));
+  TRY (xbt_cfgelm_get(cfg,name,xbt_cfgelm_int,&variable));
 
-  if (cell->max > 1) {
-    xbt_dynar_push(cell->content,&val);
+  if (variable->max > 1) {
+    xbt_dynar_push(variable->content,&val);
   } else {
-    xbt_dynar_set(cell->content,0,&val);
+    xbt_dynar_set(variable->content,0,&val);
   }
   return no_error;
 }
 
-/**
- * xbt_cfg_set_double:
+/** @brief Set or add a double value to \a name within \a cfg
+ * 
  * \arg cfg the config set
- * \arg name the name of the cell
+ * \arg name the name of the variable
  * \arg val the doule to set
- * 
- * Set the value of the cell #name in #cfg with the provided value.
  */ 
 
 xbt_error_t
 xbt_cfg_set_double(xbt_cfg_t cfg,const char*name, double val) {
-  xbt_cfgelm_t cell;
+  xbt_cfgelm_t variable;
   xbt_error_t errcode;
 
   VERB2("Configuration setting: %s=%f",name,val);
-  TRY (xbt_cfgelm_get(cfg,name,xbt_cfgelm_double,&cell));
+  TRY (xbt_cfgelm_get(cfg,name,xbt_cfgelm_double,&variable));
 
-  if (cell->max > 1) {
-    xbt_dynar_push(cell->content,&val);
+  if (variable->max > 1) {
+    xbt_dynar_push(variable->content,&val);
   } else {
-    xbt_dynar_set(cell->content,0,&val);
+    xbt_dynar_set(variable->content,0,&val);
   }
   return no_error;
 }
 
-/**
- * xbt_cfg_set_string:
+/** @brief Set or add a string value to \a name within \a cfg
  * 
  * \arg cfg the config set
- * \arg name the name of the cell
+ * \arg name the name of the variable
  * \arg val the value to be added
  *
- * Set the value of the cell #name in #cfg with the provided value.
  */ 
 
 xbt_error_t
 xbt_cfg_set_string(xbt_cfg_t cfg,const char*name, const char*val) { 
-  xbt_cfgelm_t cell;
+  xbt_cfgelm_t variable;
   xbt_error_t errcode;
   char *newval = xbt_strdup(val);
 
   VERB2("Configuration setting: %s=%s",name,val);
-  TRY (xbt_cfgelm_get(cfg,name,xbt_cfgelm_string,&cell));
+  TRY (xbt_cfgelm_get(cfg,name,xbt_cfgelm_string,&variable));
 
-  if (cell->max > 1) {
-    xbt_dynar_push(cell->content,&newval);
+  if (variable->max > 1) {
+    xbt_dynar_push(variable->content,&newval);
   } else {
-    xbt_dynar_set(cell->content,0,&newval);
+    xbt_dynar_set(variable->content,0,&newval);
   }
   return no_error;
 }
 
-/**
- * xbt_cfg_set_host:
+/** @brief Set or add an host value to \a name within \a cfg
  * 
  * \arg cfg the config set
- * \arg name the name of the cell
+ * \arg name the name of the variable
  * \arg host the host
  * \arg port the port number
  *
- * Set the value of the cell #name in #cfg with the provided value 
- * on the given #host to the given #port
+ * \e host values are composed of a string (hostname) and an integer (port)
  */ 
 
 xbt_error_t 
 xbt_cfg_set_host(xbt_cfg_t cfg,const char*name, 
                  const char *host,int port) {
-  xbt_cfgelm_t cell;
+  xbt_cfgelm_t variable;
   xbt_error_t errcode;
   xbt_host_t *val=xbt_new(xbt_host_t,1);
 
@@ -785,38 +758,35 @@ xbt_cfg_set_host(xbt_cfg_t cfg,const char*name,
   val->name = xbt_strdup(name);
   val->port = port;
 
-  TRY (xbt_cfgelm_get(cfg,name,xbt_cfgelm_host,&cell));
+  TRY (xbt_cfgelm_get(cfg,name,xbt_cfgelm_host,&variable));
 
-  if (cell->max > 1) {
-    xbt_dynar_push(cell->content,&val);
+  if (variable->max > 1) {
+    xbt_dynar_push(variable->content,&val);
   } else {
-    xbt_dynar_set(cell->content,0,&val);
+    xbt_dynar_set(variable->content,0,&val);
   }
   return no_error;
 }
 
 /* ---- [ Removing ] ---- */
 
-/**
- * xbt_cfg_rm_int:
+/** @brief Remove the provided \e val integer value from a variable
  *
  * \arg cfg the config set
- * \arg name the name of the cell
+ * \arg name the name of the variable
  * \arg val the value to be removed
- *
- * Remove the provided #val from the cell #name in #cfg.
  */
 xbt_error_t xbt_cfg_rm_int(xbt_cfg_t cfg,const char*name, int val) {
 
-  xbt_cfgelm_t cell;
+  xbt_cfgelm_t variable;
   int cpt,seen;
   xbt_error_t errcode;
 
-  TRY (xbt_cfgelm_get(cfg,name,xbt_cfgelm_int,&cell));
+  TRY (xbt_cfgelm_get(cfg,name,xbt_cfgelm_int,&variable));
   
-  xbt_dynar_foreach(cell->content,cpt,seen) {
+  xbt_dynar_foreach(variable->content,cpt,seen) {
     if (seen == val) {
-      xbt_dynar_cursor_rm(cell->content,&cpt);
+      xbt_dynar_cursor_rm(variable->content,&cpt);
       return no_error;
     }
   }
@@ -826,27 +796,24 @@ xbt_error_t xbt_cfg_rm_int(xbt_cfg_t cfg,const char*name, int val) {
   return mismatch_error;
 }
 
-/**
- * xbt_cfg_rm_double:
+/** @brief Remove the provided \e val double value from a variable
  *
  * \arg cfg the config set
- * \arg name the name of the cell
+ * \arg name the name of the variable
  * \arg val the value to be removed
- *
- * Remove the provided #val from the cell #name in #cfg.
  */
 
 xbt_error_t xbt_cfg_rm_double(xbt_cfg_t cfg,const char*name, double val) {
-  xbt_cfgelm_t cell;
+  xbt_cfgelm_t variable;
   int cpt;
   double seen;
   xbt_error_t errcode;
 
-  TRY (xbt_cfgelm_get(cfg,name,xbt_cfgelm_double,&cell));
+  TRY (xbt_cfgelm_get(cfg,name,xbt_cfgelm_double,&variable));
   
-  xbt_dynar_foreach(cell->content,cpt,seen) {
+  xbt_dynar_foreach(variable->content,cpt,seen) {
     if (seen == val) {
-      xbt_dynar_cursor_rm(cell->content,&cpt);
+      xbt_dynar_cursor_rm(variable->content,&cpt);
       return no_error;
     }
   }
@@ -856,27 +823,24 @@ xbt_error_t xbt_cfg_rm_double(xbt_cfg_t cfg,const char*name, double val) {
   return mismatch_error;
 }
 
-/**
- * xbt_cfg_rm_string:
+/** @brief Remove the provided \e val string value from a variable
  *
  * \arg cfg the config set
- * \arg name the name of the cell
+ * \arg name the name of the variable
  * \arg val the value of the string which will be removed
- *
- * Remove the provided #val from the cell #name in #cfg.
  */
 xbt_error_t
 xbt_cfg_rm_string(xbt_cfg_t cfg,const char*name, const char *val) {
-  xbt_cfgelm_t cell;
+  xbt_cfgelm_t variable;
   int cpt;
   char *seen;
   xbt_error_t errcode;
 
-  TRY (xbt_cfgelm_get(cfg,name,xbt_cfgelm_string,&cell));
+  TRY (xbt_cfgelm_get(cfg,name,xbt_cfgelm_string,&variable));
   
-  xbt_dynar_foreach(cell->content,cpt,seen) {
+  xbt_dynar_foreach(variable->content,cpt,seen) {
     if (!strcpy(seen,val)) {
-      xbt_dynar_cursor_rm(cell->content,&cpt);
+      xbt_dynar_cursor_rm(variable->content,&cpt);
       return no_error;
     }
   }
@@ -886,29 +850,26 @@ xbt_cfg_rm_string(xbt_cfg_t cfg,const char*name, const char *val) {
   return mismatch_error;
 }
 
-/**
- * xbt_cfg_rm_host:
+/** @brief Remove the provided \e val host value from a variable
  * 
  * \arg cfg the config set
- * \arg name the name of the cell
+ * \arg name the name of the variable
  * \arg host the hostname
  * \arg port the port number
- *
- * Remove the provided #host:#port from the cell #name in #cfg.
  */
 
 xbt_error_t
 xbt_cfg_rm_host(xbt_cfg_t cfg,const char*name, const char *host,int port) {
-  xbt_cfgelm_t cell;
+  xbt_cfgelm_t variable;
   int cpt;
   xbt_host_t *seen;
   xbt_error_t errcode;
 
-  TRY (xbt_cfgelm_get(cfg,name,xbt_cfgelm_host,&cell));
+  TRY (xbt_cfgelm_get(cfg,name,xbt_cfgelm_host,&variable));
   
-  xbt_dynar_foreach(cell->content,cpt,seen) {
+  xbt_dynar_foreach(variable->content,cpt,seen) {
     if (!strcpy(seen->name,host) && seen->port == port) {
-      xbt_dynar_cursor_rm(cell->content,&cpt);
+      xbt_dynar_cursor_rm(variable->content,&cpt);
       return no_error;
     }
   }
@@ -918,48 +879,43 @@ xbt_cfg_rm_host(xbt_cfg_t cfg,const char*name, const char *host,int port) {
   return mismatch_error;
 }
 
-/* rm everything */
-
-/**
- * xbt_cfg_empty:
+/** @brief Remove all the values from a variable
  * 
  * \arg cfg the config set
- * \arg name the name of the cell
- *
- * rm evenything
+ * \arg name the name of the variable
  */
 
 xbt_error_t 
 xbt_cfg_empty(xbt_cfg_t cfg,const char*name) {
-  xbt_cfgelm_t cell;
+  xbt_cfgelm_t variable;
 
   xbt_error_t errcode;
 
   TRYCATCH(mismatch_error,
-          xbt_dict_get((xbt_dict_t)cfg,name,(void**)&cell));
+          xbt_dict_get((xbt_dict_t)cfg,name,(void**)&variable));
   if (errcode == mismatch_error) {
     ERROR1("Can't empty  '%s' since this config element does not exist",
           name);
     return mismatch_error;
   }
 
-  if (cell) {
-    xbt_dynar_reset(cell->content);
+  if (variable) {
+    xbt_dynar_reset(variable->content);
   }
   return no_error;
 }
 
 /*----[ Getting ]---------------------------------------------------------*/
 
-/**
- * xbt_cfg_get_int:
+/** @brief Retrieve an integer value of a variable (get a warning if not uniq)
+ *
  * \arg cfg the config set
- * \arg name the name of the cell
+ * \arg name the name of the variable
  * \arg val the wanted value
  *
  * Returns the first value from the config set under the given name.
- * If there is more than one value, it will issue a warning. Consider using xbt_cfg_get_dynar() 
- * instead.
+ * If there is more than one value, it will issue a warning. Consider using 
+ * xbt_cfg_get_dynar() instead.
  *
  * \warning the returned value is the actual content of the config set
  */
@@ -967,29 +923,29 @@ xbt_error_t
 xbt_cfg_get_int   (xbt_cfg_t  cfg,
                    const char *name,
                    int        *val) {
-  xbt_cfgelm_t cell;
+  xbt_cfgelm_t variable;
   xbt_error_t errcode;
 
-  TRY (xbt_cfgelm_get(cfg,name,xbt_cfgelm_int,&cell));
+  TRY (xbt_cfgelm_get(cfg,name,xbt_cfgelm_int,&variable));
 
-  if (xbt_dynar_length(cell->content) > 1) {
+  if (xbt_dynar_length(variable->content) > 1) {
     WARN2("You asked for the first value of the config element '%s', but there is %lu values",
-            name, xbt_dynar_length(cell->content));
+            name, xbt_dynar_length(variable->content));
   }
 
-  *val = xbt_dynar_get_as(cell->content, 0, int);
+  *val = xbt_dynar_get_as(variable->content, 0, int);
   return no_error;
 }
 
-/**
- * xbt_cfg_get_double:
+/** @brief Retrieve a double value of a variable (get a warning if not uniq)
+ * 
  * \arg cfg the config set
- * \arg name the name of the cell
+ * \arg name the name of the variable
  * \arg val the wanted value
  *
  * Returns the first value from the config set under the given name.
- * If there is more than one value, it will issue a warning. Consider using xbt_cfg_get_dynar() 
- * instead.
+ * If there is more than one value, it will issue a warning. Consider using 
+ * xbt_cfg_get_dynar() instead.
  *
  * \warning the returned value is the actual content of the config set
  */
@@ -998,30 +954,29 @@ xbt_error_t
 xbt_cfg_get_double(xbt_cfg_t  cfg,
                    const char *name,
                    double     *val) {
-  xbt_cfgelm_t cell;
+  xbt_cfgelm_t variable;
   xbt_error_t  errcode;
 
-  TRY (xbt_cfgelm_get(cfg,name,xbt_cfgelm_double,&cell));
+  TRY (xbt_cfgelm_get(cfg,name,xbt_cfgelm_double,&variable));
 
-  if (xbt_dynar_length(cell->content) > 1) {
+  if (xbt_dynar_length(variable->content) > 1) {
     WARN2("You asked for the first value of the config element '%s', but there is %lu values\n",
-            name, xbt_dynar_length(cell->content));
+            name, xbt_dynar_length(variable->content));
   }
 
-  *val = xbt_dynar_get_as(cell->content, 0, double);
+  *val = xbt_dynar_get_as(variable->content, 0, double);
   return no_error;
 }
 
-/**
- * xbt_cfg_get_string:
+/** @brief Retrieve a string value of a variable (get a warning if not uniq)
  *
  * \arg th the config set
- * \arg name the name of the cell
+ * \arg name the name of the variable
  * \arg val the wanted value
  *
  * Returns the first value from the config set under the given name.
- * If there is more than one value, it will issue a warning. Consider using xbt_cfg_get_dynar() 
- * instead.
+ * If there is more than one value, it will issue a warning. Consider using 
+ * xbt_cfg_get_dynar() instead.
  *
  * \warning the returned value is the actual content of the config set
  */
@@ -1029,33 +984,32 @@ xbt_cfg_get_double(xbt_cfg_t  cfg,
 xbt_error_t xbt_cfg_get_string(xbt_cfg_t  cfg,
                                 const char *name,
                                 char      **val) {
-  xbt_cfgelm_t  cell;
+  xbt_cfgelm_t  variable;
   xbt_error_t errcode;
 
   *val=NULL;
 
-  TRY (xbt_cfgelm_get(cfg,name,xbt_cfgelm_string,&cell));
+  TRY (xbt_cfgelm_get(cfg,name,xbt_cfgelm_string,&variable));
 
-  if (xbt_dynar_length(cell->content) > 1) {
+  if (xbt_dynar_length(variable->content) > 1) {
     WARN2("You asked for the first value of the config element '%s', but there is %lu values\n",
-            name, xbt_dynar_length(cell->content));
+            name, xbt_dynar_length(variable->content));
   }
 
-  *val = xbt_dynar_get_as(cell->content, 0, char *);
+  *val = xbt_dynar_get_as(variable->content, 0, char *);
   return no_error;
 }
 
-/**
- * xbt_cfg_get_host:
+/** @brief Retrieve an host value of a variable (get a warning if not uniq)
  *
  * \arg cfg the config set
- * \arg name the name of the cell
+ * \arg name the name of the variable
  * \arg host the host
  * \arg port the port number
  *
  * Returns the first value from the config set under the given name.
- * If there is more than one value, it will issue a warning. Consider using xbt_cfg_get_dynar() 
- * instead.
+ * If there is more than one value, it will issue a warning. Consider using
+ * xbt_cfg_get_dynar() instead.
  *
  * \warning the returned value is the actual content of the config set
  */
@@ -1064,50 +1018,50 @@ xbt_error_t xbt_cfg_get_host  (xbt_cfg_t  cfg,
                                 const char *name,
                                 char      **host,
                                 int        *port) {
-  xbt_cfgelm_t cell;
+  xbt_cfgelm_t variable;
   xbt_error_t  errcode;
   xbt_host_t  *val;
 
-  TRY (xbt_cfgelm_get(cfg,name,xbt_cfgelm_host,&cell));
+  TRY (xbt_cfgelm_get(cfg,name,xbt_cfgelm_host,&variable));
 
-  if (xbt_dynar_length(cell->content) > 1) {
+  if (xbt_dynar_length(variable->content) > 1) {
     WARN2("You asked for the first value of the config element '%s', but there is %lu values\n",
-            name, xbt_dynar_length(cell->content));
+            name, xbt_dynar_length(variable->content));
   }
 
-  val = xbt_dynar_get_as(cell->content, 0, xbt_host_t*);
+  val = xbt_dynar_get_as(variable->content, 0, xbt_host_t*);
   *host=val->name;
   *port=val->port;
   
   return no_error;
 }
 
-/**
- * xbt_cfg_get_dynar:
+/** @brief Retrieve the dynar of all the values stored in a variable
+ * 
  * \arg cfg where to search in
  * \arg name what to search for
  * \arg dynar result
  *
- * Get the data stored in the config bag
+ * Get the data stored in the config set
  *
  * \warning the returned value is the actual content of the config set
  */
 xbt_error_t xbt_cfg_get_dynar (xbt_cfg_t    cfg,
                                 const char   *name,
                                 xbt_dynar_t *dynar) {
-  xbt_cfgelm_t cell;
+  xbt_cfgelm_t variable;
   xbt_error_t  errcode = xbt_dict_get((xbt_dict_t)cfg,name,
-                                       (void**)&cell);
+                                       (void**)&variable);
 
   if (errcode == mismatch_error) {
-    ERROR1("No registered cell %s in this config set",
+    ERROR1("No registered variable %s in this config set",
           name);
     return mismatch_error;
   }
   if (errcode != no_error)
      return errcode;
 
-  *dynar = cell->content;
+  *dynar = variable->content;
   return no_error;
 }
 
index 6e367a0..5695fec 100644 (file)
@@ -3,7 +3,7 @@
 /* a fast and simple context switching library                              */
 
 /* Copyright (c) 2004 Arnaud Legrand.                                       */
-/* Copyright (c) 2004 Martin Quinson.                                       */
+/* Copyright (c) 2004, 2005 Martin Quinson.                                 */
 /* All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
 #include "xbt/dynar.h"
 #include "gras_config.h"
 
- /** \defgroup XBT_context User-level context library
-  *  \brief This section describes how to use high-level functions 
-  *  (as opposed to <tt>setjump/longjmp</tt>) to schedule non-preemptible 
-  *  threads.
-  */
-
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(context, xbt, "Context");
 
 /* #define WARNING(format, ...) (fprintf(stderr, "[%s , %s : %d] ", __FILE__, __FUNCTION__, __LINE__),\ */
@@ -45,9 +39,11 @@ static void __xbt_context_yield(xbt_context_t context)
 
   xbt_assert0(current_context,"You have to call context_init() first.");
   
-/*   WARNING("--------- current_context (%p) is yielding to context(%p) ---------",current_context,context); */
-/*   VOIRP(current_context); */
-/*   if(current_context) VOIRP(current_context->save); */
+  DEBUG2("--------- current_context (%p) is yielding to context(%p) ---------",
+        current_context,context);
+
+  if(current_context)
+    DEBUG1("current_context->save = %p",current_context->save);
 /*   VOIRP(context); */
 /*   if(context) VOIRP(context->save); */
 
index dde53e7..89e7d0a 100644 (file)
 
 #include "xbt/sysdep.h"
 #include "xbt/swag.h"
-#include "xbt/context.h"
+#include "xbt/dynar.h" /* void_f_pvoid_t */
 #include "portable.h" /* loads context system definitions */
 
+#include "xbt/context.h"
+
 #define STACK_SIZE 524288
 typedef struct s_xbt_context {
   s_xbt_swag_hookup_t hookup;
index 777f226..fc66a87 100644 (file)
@@ -14,9 +14,6 @@
 #include "xbt/dynar.h"
 #include <sys/types.h>
 
-/** \defgroup XBT_dynar A generic dynamic array
-  *  \brief This section describes the API to generic dynamic array (vector).
-  */
 
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(dynar,xbt,"Dynamic arrays");
@@ -123,8 +120,8 @@ _xbt_dynar_put_elm(const xbt_dynar_t  dynar,
   memcpy(elm, src, elmsize);
 }
 
-/**
- * \ingroup XBT_dynar
+/** @brief Constructor
+ * 
  * \param elmsize size of each element in the dynar
  * \param free_f function to call each time we want to get rid of an element (or NULL if nothing to do).
  *
@@ -147,12 +144,12 @@ xbt_dynar_new(const unsigned long           elmsize,
   return dynar;
 }
 
-/**
- * \ingroup XBT_dynar
+/** @brief Destructor of the structure not touching to the content
+ * 
  * \param dynar poor victim
  *
- * kilkil a dynar BUT NOT its content. Ie, the array is freed, but not what
- * its contain points to.
+ * kilkil a dynar BUT NOT its content. Ie, the array is freed, but the content
+ * is not touched (the \a free_f function is not used)
  */
 void
 xbt_dynar_free_container(xbt_dynar_t *dynar) {
@@ -170,11 +167,9 @@ xbt_dynar_free_container(xbt_dynar_t *dynar) {
   }
 }
 
-/**
- * \ingroup XBT_dynar
- * \param dynar who to squeeze
+/** @brief Frees the content and set the size to 0
  *
- * Frees the content and set the size to 0
+ * \param dynar who to squeeze
  */
 void
 xbt_dynar_reset(xbt_dynar_t const dynar) {
@@ -194,8 +189,8 @@ xbt_dynar_reset(xbt_dynar_t const dynar) {
   dynar->data = NULL;
 }
 
-/**
- * \ingroup XBT_dynar
+/** @brief Destructor
+ * 
  * \param dynar poor victim
  *
  * kilkil a dynar and its content
@@ -209,24 +204,20 @@ xbt_dynar_free(xbt_dynar_t * dynar) {
   }
 }
 
-/**
- * \ingroup XBT_dynar
+/** @brief Count of dynar's elements
+ * 
  * \param dynar the dynar we want to mesure
- *
- * Returns the count of elements in a dynar
  */
 unsigned long
 xbt_dynar_length(const xbt_dynar_t dynar) {
   return (dynar ? (unsigned long) dynar->used : (unsigned long)0);
 }
 
-/**
- * \ingroup XBT_dynar
+/** @brief Retrieve a copy of the Nth element of a dynar.
+ *
  * \param dynar information dealer
  * \param idx index of the slot we want to retrive
  * \param[out] dst where to put the result to.
- *
- * Retrieve a copy of the Nth element of a dynar.
  */
 void
 xbt_dynar_get_cpy(const xbt_dynar_t dynar,
@@ -240,14 +231,14 @@ xbt_dynar_get_cpy(const xbt_dynar_t dynar,
   _xbt_dynar_get_elm(dst, dynar, idx);
 }
 
-/**
- * \ingroup XBT_dynar
+/** @brief Retrieve a pointer to the Nth element of a dynar.
+ *
  * \param dynar information dealer
  * \param idx index of the slot we want to retrieve
- * \return the #idx-th element of #dynar.
+ * \return the \a idx-th element of \a dynar.
  *
- * Retrieve the Nth element of a dynar. Warning, the returned value is the actual content of 
- * the dynar. Make a copy before fooling with it.
+ * \warning The returned value is the actual content of the dynar. 
+ * Make a copy before fooling with it.
  */
 void*
 xbt_dynar_get_ptr(const xbt_dynar_t dynar,
@@ -260,15 +251,13 @@ xbt_dynar_get_ptr(const xbt_dynar_t dynar,
   return _xbt_dynar_elm(dynar, idx);
 }
 
-/**
- * \ingroup XBT_dynar
+/** @brief Set the Nth element of a dynar (expended if needed). Previous value at this position is NOT freed
+ * 
  * \param dynar information dealer
  * \param idx index of the slot we want to modify
  * \param src What will be feeded to the dynar
  *
- * Set the Nth element of a dynar, expanding the dynar if needed, BUT NOT freeing
- * the previous value at this position. If you want to free the previous content,
- * use xbt_dynar_replace().
+ * If you want to free the previous content, use xbt_dynar_replace().
  */
 void
 xbt_dynar_set(xbt_dynar_t         dynar,
@@ -287,8 +276,8 @@ xbt_dynar_set(xbt_dynar_t         dynar,
   _xbt_dynar_put_elm(dynar, idx, src);
 }
 
-/**
- * \ingroup XBT_dynar
+/** @brief Set the Nth element of a dynar (expended if needed). Previous value is freed
+ *
  * \param dynar
  * \param idx
  * \param object
@@ -314,16 +303,14 @@ xbt_dynar_replace(xbt_dynar_t         dynar,
   xbt_dynar_set(dynar, idx, object);
 }
 
-/**
- * \ingroup XBT_dynar
+/** @brief Make room for a new element, and return a pointer to it
  * 
- * Make room for a new element in the dynar, and return a pointer to
- * its position. You can then use regular affectation to set its value
- * instead of relying on the slow memcpy
+ * You can then use regular affectation to set its value instead of relying 
+ * on the slow memcpy. This is what xbt_dynar_insert_at_as() does.
  */
 void *
 xbt_dynar_insert_at_ptr(xbt_dynar_t const dynar,
-                        const int            idx) {
+                       const int            idx) {
    
   __sanity_check_dynar(dynar);
   __sanity_check_idx(idx);
@@ -349,20 +336,16 @@ xbt_dynar_insert_at_ptr(xbt_dynar_t const dynar,
   }
 }
 
-/**
- * \ingroup XBT_dynar
- * \param dynar
- * \param idx
- * \param src What will be feeded to the dynar
- *
+/** @brief Set the Nth dynar's element, expending the dynar and sliding the previous values to the right
+ * 
  * Set the Nth element of a dynar, expanding the dynar if needed, and
  * moving the previously existing value and all subsequent ones to one
  * position right in the dynar.
  */
 void
 xbt_dynar_insert_at(xbt_dynar_t  const dynar,
-                     const int            idx,
-                     const void   * const src) {
+                   const int            idx,
+                   const void   * const src) {
 
   /* checks done in xbt_dynar_insert_at_ptr */
   memcpy(xbt_dynar_insert_at_ptr(dynar,idx),
@@ -370,11 +353,7 @@ xbt_dynar_insert_at(xbt_dynar_t  const dynar,
         dynar->elmsize);
 }
 
-/**
- * \ingroup XBT_dynar
- * \param dynar 
- * \param idx
- * \param object
+/** @brief Remove the Nth dynar's element, sliding the previous values to the left
  *
  * Get the Nth element of a dynar, removing it from the dynar and moving
  * all subsequent values to one position left in the dynar.
@@ -409,23 +388,17 @@ xbt_dynar_remove_at(xbt_dynar_t  const dynar,
   }
 }
 
-/**
- * \ingroup XBT_dynar
- * 
- * Make room at the end of the dynar for a new element, and return a pointer to it
+/** @brief Make room at the end of the dynar for a new element, and return a pointer to it.
+ *
+ * You can then use regular affectation to set its value instead of relying 
+ * on the slow memcpy. This is what xbt_dynar_push_as() does.
  */
 void *
 xbt_dynar_push_ptr(xbt_dynar_t  const dynar) {
   return xbt_dynar_insert_at_ptr(dynar, dynar->used);    
 }
 
-/**
- * \ingroup XBT_dynar
- * \param dynar
- * \param src
- *
- * Add an element at the end of the dynar
- */
+/** @brief Add an element at the end of the dynar */
 void
 xbt_dynar_push(xbt_dynar_t  const dynar,
                 const void   * const src) {
@@ -433,11 +406,10 @@ xbt_dynar_push(xbt_dynar_t  const dynar,
   xbt_dynar_insert_at(dynar, dynar->used, src); 
 }
 
-/**
- * \param dynar
- * \param dst
+/** @brief Mark the last dynar's element as unused and return a pointer to it.
  *
- * Make the last element of the dynar as unused and return a pointer to it.
+ * You can then use regular affectation to set its value instead of relying 
+ * on the slow memcpy. This is what xbt_dynar_pop_as() does.
  */
 void *
 xbt_dynar_pop_ptr(xbt_dynar_t  const dynar) {
@@ -448,13 +420,7 @@ xbt_dynar_pop_ptr(xbt_dynar_t  const dynar) {
   return _xbt_dynar_elm(dynar,dynar->used);
 }
 
-/**
- * \ingroup XBT_dynar
- * \param dynar
- * \param[out] dst
- *
- * Get and remove the last element of the dynar
- */
+/** @brief Get and remove the last element of the dynar */
 void
 xbt_dynar_pop(xbt_dynar_t  const dynar,
                void         * const dst) {
@@ -464,13 +430,9 @@ xbt_dynar_pop(xbt_dynar_t  const dynar,
   xbt_dynar_remove_at(dynar, dynar->used-1, dst);
 }
 
-/**
- * \ingroup XBT_dynar
- * \param dynar
- * \param src
+/** @brief Add an element at the begining of the dynar.
  *
- * Add an element at the begining of the dynar (rather long, Use
- * xbt_dynar_push() when possible)
+ * This is less efficient than xbt_dynar_push()
  */
 void
 xbt_dynar_unshift(xbt_dynar_t  const dynar,
@@ -480,13 +442,9 @@ xbt_dynar_unshift(xbt_dynar_t  const dynar,
   xbt_dynar_insert_at(dynar, 0, src);
 }
 
-/**
- * \ingroup XBT_dynar
- * \param dynar
- * \param[out] dst
+/** @brief Get and remove the first element of the dynar.
  *
- * Get and remove the first element of the dynar (rather long, Use
- * xbt_dynar_pop() when possible)
+ * This is less efficient than xbt_dynar_pop()
  */
 void
 xbt_dynar_shift(xbt_dynar_t  const dynar,
@@ -496,13 +454,10 @@ xbt_dynar_shift(xbt_dynar_t  const dynar,
   xbt_dynar_remove_at(dynar, 0, dst);
 }
 
-/**
- * \ingroup XBT_dynar
- * \param dynar
- * \param operator
+/** @brief Apply a function to each member of a dynar
  *
- * Apply a function to each member of a dynar (this function may change the
- * value of the element itself, but should not mess with the dynar).
+ * The mapped function may change the value of the element itself, 
+ * but should not mess with the structure of the dynar.
  */
 void
 xbt_dynar_map(const xbt_dynar_t  dynar,
@@ -522,30 +477,20 @@ xbt_dynar_map(const xbt_dynar_t  dynar,
   }
 }
 
-/**
- * \ingroup XBT_dynar
- *
- * Put the cursor at the begining of the dynar. (actually, one step before
- * the begining, so that you can iterate over the dynar with a for loop).
- *
- * Dynar cursor are as dumb as possible. If you insert or remove elements
- * from the dynar between the creation and end, you'll fuck up your
- * cursors.
+/** @brief Put the cursor at the begining of the dynar.
  *
+ * Actually, the cursor is set one step before the begining, so that you
+ * can iterate over the dynar with a for loop.
  */
 void
 xbt_dynar_cursor_first(const xbt_dynar_t dynar,
-                       int        * const cursor) {
+                      int        * const cursor) {
 
   DEBUG1("Set cursor on %p to the first position",(void*)dynar);
   *cursor = 0;
 }
 
-/**
- * \ingroup XBT_dynar
- *
- * Move the cursor to the next value (and return true), or return false.
- */
+/** @brief Move the cursor to the next value */
 void
 xbt_dynar_cursor_step(const xbt_dynar_t dynar,
                       int        * const cursor) {
@@ -553,11 +498,7 @@ xbt_dynar_cursor_step(const xbt_dynar_t dynar,
   (*cursor)++;
 }
 
-/**
- * \ingroup XBT_dynar
- *
- * Get the current value of the cursor
- */
+/** @brief Get the data currently pointed by the cursor */
 int
 xbt_dynar_cursor_get(const xbt_dynar_t dynar,
                      int                * const cursor,
@@ -580,12 +521,9 @@ xbt_dynar_cursor_get(const xbt_dynar_t dynar,
 
 }
 
-/**
- * \ingroup XBT_dynar
- * \param dynar
- * \param cursor
+/** @brief Removes and free the entry pointed by the cursor 
  *
- * Remove (free) the entry pointed by the cursor, for use in the middle of a foreach
+ * This function can be used while traversing without problem.
  */
 void xbt_dynar_cursor_rm(xbt_dynar_t dynar,
                          int          * const cursor) {
index 907a1af..98d1b4a 100644 (file)
@@ -37,12 +37,21 @@ XBT_LOG_EXTERNAL_CATEGORY(xbt);
 XBT_LOG_DEFAULT_CATEGORY(xbt);
   
 /**
- * @brief Kill the prog
+ * @brief Kill the program with an error message 
  * \param msg 
  *
  * Things are so messed up that the only thing to do now, is to stop the program.
+ *
+ * The message is handled by a CRITICAL logging request
+ *
+ * If you want to pass arguments to the format, you can always write xbt_assert1(0,"fmt",args)
  */
 void xbt_die (const char *msg) {
    CRITICAL1("%s",msg);
    xbt_abort();
 }
+
+/** @brief Kill the program in silence */
+void xbt_abort(void) {
+   abort();
+}
index 87de1eb..72389dc 100644 (file)
@@ -8,7 +8,7 @@
 #ifndef _XBT_HEAP_PRIVATE_H
 #define _XBT_HEAP_PRIVATE_H
 
-#include <stdlib.h>
+#include "xbt/dynar.h" /* void_f_pvoid_t */
 #include "xbt/heap.h"
 
 typedef struct xbt_heapItem {
index 0a18cf8..aa5a0bb 100644 (file)
@@ -27,18 +27,13 @@ struct xbt_module_ {
   xbt_module_finalize_fct_t finalize;
 };
 
+/** @brief Initialize the xbt mecanisms. */
 void 
 xbt_init(int *argc, char **argv) {
   xbt_init_defaultlog(argc, argv, NULL);
 }
 
-/**
- * xbt_init_defaultlog:
- * @argc:
- * @argv:
- *
- * Initialize the xbt mecanisms.
- */
+/** @brief Initialize the xbt mecanisms. */
 void
 xbt_init_defaultlog(int *argc,char **argv, const char *defaultlog) {
   static short int first_run = 1;
@@ -51,12 +46,9 @@ xbt_init_defaultlog(int *argc,char **argv, const char *defaultlog) {
   xbt_log_init(argc,argv,defaultlog);
 }
 
-/**
- * xbt_exit:
- *
- * Finalize the xbt mecanisms.
- */
+/** @brief Finalize the xbt mecanisms. */
 void 
 xbt_exit(){
   xbt_log_exit();
 }
+
index 39c1032..1323a3f 100644 (file)
 
 #include "xbt/set.h"
 
-/** \defgroup XBT_set A generic set datatype
-  *  \brief A data container consisting in \ref XBT_dict and \ref XBT_dynar
-  */
-
-XBT_LOG_NEW_DEFAULT_SUBCATEGORY(set,xbt,"data container consisting in dict+dynar");
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(set,xbt,
+            "set: data container consisting in dict+dynar");
 
 /*####[ Type definition ]####################################################*/
 typedef struct xbt_set_ {
@@ -29,12 +26,7 @@ typedef struct xbt_set_ {
 } s_xbt_set_t;
 
 /*####[ Memory  ]############################################################*/
-/**
- * \ingroup XBT_set 
- * \return a new set
- *
- * Creates a new set.
- */
+/** @brief Constructor */
 xbt_set_t xbt_set_new (void) {
   xbt_set_t res=xbt_new(s_xbt_set_t,1);
 
@@ -44,12 +36,7 @@ xbt_set_t xbt_set_new (void) {
   return res;
 }
 
-/**
- * \ingroup XBT_set 
- * \param set
- *
- * Frees a set.
- */
+/** @brief Destructor */
 void  xbt_set_free(xbt_set_t *set) {
   if (*set) {
     xbt_dict_free ( &( (*set)->dict  ) );
@@ -59,16 +46,14 @@ void  xbt_set_free(xbt_set_t *set) {
   }
 }
 
-/**
- * \ingroup XBT_set 
+/** @brief Add an element to a set. 
+ *
  * \param set set to populate
  * \param elm element to add. 
  * \param free_func How to add the data 
  *
- * Add an element to a set. 
- *
  * elm->name must be set;
- * elm->name_len is used as is unless it's <= 0 (in which case it's recomputed);
+ * if elm->name_len <= 0, it is recomputed. If >0, it's used as is;
  * elm->ID is attributed automatically.
  */
 void xbt_set_add    (xbt_set_t      set,
@@ -108,13 +93,11 @@ void xbt_set_add    (xbt_set_t      set,
 
 }
 
-/**
- * \ingroup XBT_set 
+/** @brief Retrive data by providing its name.
+ * 
  * \param set
  * \param name Name of the searched cell
  * \param dst where to put the found data into
- *
- * get a data stored in the cell by providing its name.
  */
 xbt_error_t xbt_set_get_by_name    (xbt_set_t     set,
                                      const char     *name,
@@ -124,16 +107,16 @@ xbt_error_t xbt_set_get_by_name    (xbt_set_t     set,
   DEBUG2("Lookup key %s: %s",name,xbt_error_name(errcode));
   return errcode;
 }
-/**
- * \ingroup XBT_set 
+
+/** @brief Retrive data by providing its name and the length of the name
+ *
  * \param set
  * \param name Name of the searched cell
  * \param name_len length of the name, when strlen cannot be trusted
  * \param dst where to put the found data into
  *
- * get a data stored in the cell by providing its name (and the length
- * of the name, when strlen cannot be trusted because you don't use a char*
- * as name, you weird guy).
+ * This is useful when strlen cannot be trusted because you don't use a char*
+ * as name, you weirdo.
  */
 xbt_error_t xbt_set_get_by_name_ext(xbt_set_t      set,
                                      const char     *name,
@@ -143,13 +126,12 @@ xbt_error_t xbt_set_get_by_name_ext(xbt_set_t      set,
   return xbt_dict_get_ext (set->dict, name, name_len, (void**)dst);
 }
 
-/**
- * \ingroup XBT_set 
+/** @brief Retrive data by providing its ID
+ *
  * \param set
  * \param id what you're looking for
  * \param dst where to put the found data into
  *
- * get a data stored in the cell by providing its id. 
  * @warning, if the ID does not exists, you're getting into trouble
  */
 xbt_error_t xbt_set_get_by_id      (xbt_set_t      set,
@@ -173,13 +155,7 @@ typedef struct xbt_set_cursor_ {
   int val;
 } s_xbt_set_cursor_t;
 
-/**
- * \ingroup XBT_set 
- * \param set on what to let the cursor iterate
- * \param cursor dest address
- *
- * Create the cursor if it does not exists. Rewind it in any case.
- */
+/** @brief Create the cursor if it does not exists, rewind it in any case. */
 void         xbt_set_cursor_first       (xbt_set_t         set,
                                          xbt_set_cursor_t *cursor) {
 
@@ -197,23 +173,14 @@ void         xbt_set_cursor_first       (xbt_set_t         set,
   }
 }
 
-/**
- * \ingroup XBT_set 
- * \param cursor the cursor
- *
- * Move to the next element. 
- */
+/** @brief Move to the next element.  */
 void         xbt_set_cursor_step        (xbt_set_cursor_t cursor) {
   xbt_dynar_cursor_step(cursor->set->dynar, &( cursor->val ) );
 }
 
-/**
- * \ingroup XBT_set 
- * \param curs the cursor
- * \param elm an element
+/** @brief Get current data
+ * 
  * \return true if it's ok, false if there is no more data
- *
- * Get current data
  */
 int          xbt_set_cursor_get_or_free (xbt_set_cursor_t *curs,
                                          xbt_set_elm_t    *elm) {
index ecf11f6..a3b0a8a 100644 (file)
 
 #include <stdlib.h>
 
-/** \defgroup XBT_sysdep All system dependency
 *  \brief This section describes many macros/functions that can serve as
 *  an OS abstraction.
 */
+/* \defgroup XBT_sysdep All system dependency
* \brief This section describes many macros/functions that can serve as
+ *  an OS abstraction.
+ */
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(sysdep, xbt, "System dependency");
 
-/****
- **** Misc
- ****/
-
-void xbt_abort(void) {
-   abort();
-}