};
/** \brief Callback types. They get the name of the modified entry, and the position of the changed value */
-typedef void (*xbt_cfg_cb_t) (const char *);
+typedef void (*xbt_cfg_cb_t) (const char * name);
+typedef void (*xbt_cfg_cb_ext_t)(const char * name, void* cb_data);
+typedef void (*xbt_cfg_cb_free_t)(void* cb_data);
XBT_PUBLIC(xbt_cfg_t) xbt_cfg_new(void);
-XBT_PUBLIC(void) xbt_cfg_cpy(xbt_cfg_t tocopy, /* OUT */xbt_cfg_t * whereto);
XBT_PUBLIC(void) xbt_cfg_free(xbt_cfg_t * cfg);
XBT_PUBLIC(void) xbt_cfg_dump(const char *name, const char *indent, xbt_cfg_t cfg);
XBT_PUBLIC(void) xbt_cfg_register_alias(const char *newname, const char *oldname);
XBT_PUBLIC(void) xbt_cfg_register_str(xbt_cfg_t * cfg, const char *entry);
+XBT_PUBLIC(void) xbt_cfg_register_ext(
+ const char *name, const char *desc, e_xbt_cfgelm_type_t type,
+ xbt_cfg_cb_ext_t cb, void* data, xbt_cfg_cb_free_t data_free);
+
XBT_PUBLIC(void) xbt_cfg_aliases(void);
XBT_PUBLIC(void) xbt_cfg_help(void);
XBT_PUBLIC(e_xbt_cfgelm_type_t) xbt_cfg_get_type(xbt_cfg_t cfg, const char *name);