Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Sanitize the way surf options are declared: in surf_config not dupplicated in simix...
[simgrid.git] / include / xbt / config.h
index a4b1bf1..b250561 100644 (file)
@@ -12,6 +12,7 @@
 #ifndef _XBT_CONFIG_H_
 #define _XBT_CONFIG_H_
 
+#include <stdarg.h>
 #include "xbt/dynar.h"
 
 SG_BEGIN_DECL()
@@ -19,31 +20,31 @@ SG_BEGIN_DECL()
 /** @addtogroup XBT_config
  *  @brief Changing the configuration of SimGrid components (grounding feature)
  *
- *  All modules of the SimGrid toolkit can be configured with this API. 
- *  User modules and libraries can also use these facilities to handle 
+ *  All modules of the SimGrid toolkit can be configured with this API.
+ *  User modules and libraries can also use these facilities to handle
  *  their own configuration.
  *
  *  A configuration set contain several \e variables which have a unique name
- *  in the set and can take a given type of value. For example, it may 
- *  contain a \a size variable, accepting \e int values. 
+ *  in the set and can take a given type of value. For example, it may
+ *  contain a \a size variable, accepting \e int values.
  *
  *  It is impossible to set a value to a variable which has not been registered before.
  *  Usually, the module registers all the options it accepts in the configuration set,
  *  during its initialization and user code then set and unset values.
  *
- *  The easiest way to register a variable is to use the xbt_str_register_str function, 
- *  which accepts a string representation of the config element descriptor. The syntax 
+ *  The easiest way to register a variable is to use the xbt_str_register_str function,
+ *  which accepts a string representation of the config element descriptor. The syntax
  *  is the following: \verbatim <name>:<min nb>_to_<max nb>_<type>\endverbatim
  *
- *  For example, <tt>size:1_to_1_int</tt> describes a variable called \e size which 
- *  must take exactly one value, and the value being an integer. Set the maximum to 0 to 
+ *  For example, <tt>size:1_to_1_int</tt> describes a variable called \e size which
+ *  must take exactly one value, and the value being an integer. Set the maximum to 0 to
  *  disable the upper bound on data count.
  *
  *  Another example could be <tt>outputfiles:0_to_10_string</tt> which describes a variable
  *  called \e outputfiles and which can take between 0 and 10 strings as value.
  *
  *  To some extend, configuration sets can be seen as typed hash structures.
- * 
+ *
  *  \todo This great mechanism is not used in SimGrid yet...
  *
  *
@@ -67,24 +68,24 @@ SG_BEGIN_DECL()
  *  \skip dyn
  *  \until cfg_free
  *
- *  All those functions throws mismatch_error if asked to deal with an 
+ *  All those functions throws mismatch_error if asked to deal with an
  *  unregistered variable.
  *  \skip myset
  *  \until cfg_free
- * 
+ *
  */
 /** @defgroup XBT_cfg_use User interface: changing values
  *  @ingroup XBT_config
  *
- * This is the only interface you should use unless you want to let your 
+ * This is the only interface you should use unless you want to let your
  * own code become configurable with this.
  *
- * If the variable accept at most one value, those functions replace the 
- * current value with the provided one. If max>1, the provided value is 
+ * If the variable accept at most one value, those functions replace the
+ * current value with the provided one. If max>1, the provided value is
  * appended to the list.
  *
  * string values are strdup'ed before use, so you can (and should) free
- * your copy  
+ * your copy
  *
  * @{
  */
@@ -163,13 +164,14 @@ XBT_PUBLIC(void) xbt_cfg_dump(const char *name, const char *indent,
 /** @defgroup XBT_cfg_register  Registering stuff
  *  @ingroup XBT_config
  *
- *  This how to add new variables to an existing configuration set. Use it to make your code 
+ *  This how to add new variables to an existing configuration set. Use it to make your code
  *  configurable.
  *
  *  @{
  */
 XBT_PUBLIC(void) xbt_cfg_register(xbt_cfg_t cfg,
-                                  const char *name, e_xbt_cfgelm_type_t type,
+                                  const char *name, const char *description,
+                                  e_xbt_cfgelm_type_t type,
                                   int min, int max,
                                   xbt_cfg_cb_t cb_set, xbt_cfg_cb_t cb_rm);
 XBT_PUBLIC(void) xbt_cfg_unregister(xbt_cfg_t cfg, const char *name);
@@ -181,11 +183,11 @@ XBT_PUBLIC(e_xbt_cfgelm_type_t) xbt_cfg_get_type(xbt_cfg_t cfg,
 /** @defgroup XBT_cfg_get Getting the stored values
  *  @ingroup XBT_config
  *
- * This is how to retrieve the values stored in the configuration set. This is only 
+ * This is how to retrieve the values stored in the configuration set. This is only
  * intended to configurable code, naturally.
  *
- * Note that those function return a pointer to the values actually stored 
- * in the set. Do not modify them unless you really know what you're doing. 
+ * Note that those function return a pointer to the values actually stored
+ * in the set. Do not modify them unless you really know what you're doing.
  * Likewise, do not free the strings after use, they are not copy of the data,
  * but the data themselves.
  *