- /** @brief Cursor on dictionnaries (opaque type) */
- typedef struct xbt_dict_cursor_ *xbt_dict_cursor_t;
- XBT_PUBLIC(xbt_dict_cursor_t) xbt_dict_cursor_new(const xbt_dict_t dict);
- XBT_PUBLIC(void) xbt_dict_cursor_free(xbt_dict_cursor_t *cursor);
-
- XBT_PUBLIC(void) xbt_dict_cursor_rewind(xbt_dict_cursor_t cursor);
-
-
- XBT_PUBLIC(char *) xbt_dict_cursor_get_key (xbt_dict_cursor_t cursor);
- XBT_PUBLIC(void *) xbt_dict_cursor_get_data (xbt_dict_cursor_t cursor);
-
- XBT_PUBLIC(void) xbt_dict_cursor_first (const xbt_dict_t dict,
- xbt_dict_cursor_t *cursor);
- XBT_PUBLIC(void) xbt_dict_cursor_step (xbt_dict_cursor_t cursor);
- XBT_PUBLIC(int) xbt_dict_cursor_get_or_free (xbt_dict_cursor_t *cursor,
- char **key,
- void **data);
- /** @def xbt_dict_foreach
- @hideinitializer */
+ /** @brief Cursor on dictionaries (opaque type) */
+typedef struct s_xbt_dict_cursor *xbt_dict_cursor_t;
+
+static inline xbt_dictelm_t xbt_dict_cursor_get_elm(xbt_dict_cursor_t cursor) {
+ return cursor->current;
+}
+
+XBT_PUBLIC(xbt_dict_cursor_t) xbt_dict_cursor_new(const xbt_dict_t dict);
+XBT_PUBLIC(void) xbt_dict_cursor_free(xbt_dict_cursor_t * cursor);
+
+XBT_PUBLIC(void) xbt_dict_cursor_rewind(xbt_dict_cursor_t cursor);
+
+xbt_dictelm_t xbt_dict_cursor_get_elm(xbt_dict_cursor_t cursor);
+XBT_PUBLIC(char *) xbt_dict_cursor_get_key(xbt_dict_cursor_t cursor);
+XBT_PUBLIC(void *) xbt_dict_cursor_get_data(xbt_dict_cursor_t cursor);
+XBT_PUBLIC(void) xbt_dict_cursor_set_data(xbt_dict_cursor_t cursor,
+ void *data,
+ void_f_pvoid_t free_ctn);
+
+XBT_PUBLIC(void) xbt_dict_cursor_first(const xbt_dict_t dict,
+ xbt_dict_cursor_t * cursor);
+XBT_PUBLIC(void) xbt_dict_cursor_step(xbt_dict_cursor_t cursor);
+XBT_PUBLIC(int) xbt_dict_cursor_get_or_free(xbt_dict_cursor_t * cursor,
+ char **key, void **data);
+/** @def xbt_dict_foreach
+ * @param dict a \ref xbt_dict_t iterator
+ * @param cursor an \ref xbt_dict_cursor_t used as cursor
+ * @param key a char*
+ * @param data a void** output
+ * @hideinitializer
+ *
+ * \note An example of usage:
+ * \code
+xbt_dict_cursor_t cursor = NULL;
+char *key;
+char *data;
+
+xbt_dict_foreach(head, cursor, key, data) {
+ printf("Key %s with data %s\n",key,data);
+}
+\endcode
+ */