- /** @brief Configuration set are only special dynars. But don't rely on it, it may change. */
- typedef xbt_dynar_t xbt_cfg_t;
-
-XBT_PUBLIC(void) xbt_cfg_set(xbt_cfg_t cfg, const char *name, ...);
-XBT_PUBLIC(void) xbt_cfg_set_vargs(xbt_cfg_t cfg, const char *name,
- va_list pa);
-XBT_PUBLIC(void) xbt_cfg_set_parse(xbt_cfg_t cfg, const char *options);
-
-
-/*
- Set the value of the cell \a name in \a cfg with the provided value.
- */
-XBT_PUBLIC(void) xbt_cfg_set_int(xbt_cfg_t cfg, const char *name, int val);
-XBT_PUBLIC(void) xbt_cfg_set_double(xbt_cfg_t cfg, const char *name,
- double val);
-XBT_PUBLIC(void) xbt_cfg_set_string(xbt_cfg_t cfg, const char *name,
- const char *val);
-XBT_PUBLIC(void) xbt_cfg_set_peer(xbt_cfg_t cfg, const char *name,
- const char *peer, int port);
-
-/*
- Remove the provided value from the cell @name in @cfg.
- */
-XBT_PUBLIC(void) xbt_cfg_rm_int(xbt_cfg_t cfg, const char *name, int val);
-XBT_PUBLIC(void) xbt_cfg_rm_double(xbt_cfg_t cfg, const char *name,
- double val);
-XBT_PUBLIC(void) xbt_cfg_rm_string(xbt_cfg_t cfg, const char *name,
- const char *val);
-XBT_PUBLIC(void) xbt_cfg_rm_peer(xbt_cfg_t cfg, const char *name,
- const char *peer, int port);
+/** @brief Configuration set's data type is opaque. */
+#ifdef __cplusplus
+namespace simgrid {
+namespace config {
+class Config;
+}
+}
+typedef simgrid::config::Config* xbt_cfg_t;
+#else
+typedef void* xbt_cfg_t;
+#endif
+
+XBT_PUBLIC(void) xbt_cfg_set_parse(const char *options);
+
+/* Set the value of the cell \a name in \a cfg with the provided value.*/
+XBT_PUBLIC(void) xbt_cfg_set_int (const char *name, int val);
+XBT_PUBLIC(void) xbt_cfg_set_double (const char *name, double val);
+XBT_PUBLIC(void) xbt_cfg_set_string (const char *name, const char *val);
+XBT_PUBLIC(void) xbt_cfg_set_boolean (const char *name, const char *val);
+XBT_PUBLIC(void) xbt_cfg_set_as_string(const char *name, const char *val);