X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/7410b72db09489e8b9d3ee3cb087f35882397d93..ea74f5d95928a521a588737e81f1de94eef25d19:/src/xbt/dict_cursor.c diff --git a/src/xbt/dict_cursor.c b/src/xbt/dict_cursor.c index ab5872c158..894a56e14c 100644 --- a/src/xbt/dict_cursor.c +++ b/src/xbt/dict_cursor.c @@ -1,6 +1,6 @@ /* dict_cursor - iterators over dictionaries */ -/* Copyright (c) 2004-2014. The SimGrid Team. +/* Copyright (c) 2004-2022. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -19,17 +19,12 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_dict_cursor, xbt_dict, "To traverse dictiona /* Don't add or remove entries to the dict while traversing !!! */ /*###########################################################################*/ -#undef xbt_dict_CURSOR_DEBUG -/*#define xbt_dict_CURSOR_DEBUG 1*/ - /** @brief Creator * @param dict the dict */ -inline xbt_dict_cursor_t xbt_dict_cursor_new(const xbt_dict_t dict) +inline xbt_dict_cursor_t xbt_dict_cursor_new(const_xbt_dict_t dict) { - xbt_dict_cursor_t res = NULL; - - res = xbt_new(s_xbt_dict_cursor_t, 1); + xbt_dict_cursor_t res = xbt_new(struct s_xbt_dict_cursor, 1); res->dict = dict; xbt_dict_cursor_rewind(res); @@ -50,7 +45,7 @@ inline void xbt_dict_cursor_free(xbt_dict_cursor_t * cursor) /* * Sanity check to see if the head contains something */ -static inline void __cursor_not_null(xbt_dict_cursor_t cursor) +static inline void __cursor_not_null(const_xbt_dict_cursor_t cursor) { xbt_assert(cursor, "Null cursor"); } @@ -75,7 +70,7 @@ inline void xbt_dict_cursor_rewind(xbt_dict_cursor_t cursor) * @param dict on what to let the cursor iterate * @param[out] cursor dest address */ -inline void xbt_dict_cursor_first(const xbt_dict_t dict, xbt_dict_cursor_t * cursor) +inline void xbt_dict_cursor_first(const_xbt_dict_t dict, xbt_dict_cursor_t* cursor) { XBT_CDEBUG(xbt_dict_cursor, "xbt_dict_cursor_first"); if (!*cursor) { @@ -89,7 +84,7 @@ inline void xbt_dict_cursor_first(const xbt_dict_t dict, xbt_dict_cursor_t * cur } } -/** \brief Move to the next element. */ +/** @brief Move to the next element. */ inline void xbt_dict_cursor_step(xbt_dict_cursor_t cursor) { xbt_dictelm_t current; @@ -108,7 +103,8 @@ inline void xbt_dict_cursor_step(xbt_dict_cursor_t cursor) XBT_CDEBUG(xbt_dict_cursor, "next element: %p", current); } - while (current == NULL && ++line <= cursor->dict->table_size) { + while (current == NULL && (line + 1) <= cursor->dict->table_size) { + line++; XBT_CDEBUG(xbt_dict_cursor, "current is NULL, take the next line"); current = cursor->dict->table[line]; XBT_CDEBUG(xbt_dict_cursor, "element in the next line: %p", current); @@ -127,22 +123,22 @@ inline void xbt_dict_cursor_step(xbt_dict_cursor_t cursor) */ inline int xbt_dict_cursor_get_or_free(xbt_dict_cursor_t * cursor, char **key, void **data) { - xbt_dictelm_t current; + const struct s_xbt_dictelm* current; XBT_CDEBUG(xbt_dict_cursor, "xbt_dict_get_or_free"); if (!cursor || !(*cursor)) - return FALSE; + return 0; current = (*cursor)->current; if (current == NULL) { /* no data left */ xbt_dict_cursor_free(cursor); - return FALSE; + return 0; } *key = current->key; *data = current->content; - return TRUE; + return 1; } /** @@ -150,7 +146,7 @@ inline int xbt_dict_cursor_get_or_free(xbt_dict_cursor_t * cursor, char **key, v * @param cursor: the cursor * @returns the current key */ -inline char *xbt_dict_cursor_get_key(xbt_dict_cursor_t cursor) +inline char* xbt_dict_cursor_get_key(const_xbt_dict_cursor_t cursor) { __cursor_not_null(cursor); @@ -162,21 +158,9 @@ inline char *xbt_dict_cursor_get_key(xbt_dict_cursor_t cursor) * @param cursor the cursor * @returns the current data */ -inline void *xbt_dict_cursor_get_data(xbt_dict_cursor_t cursor) +inline void* xbt_dict_cursor_get_data(const_xbt_dict_cursor_t cursor) { __cursor_not_null(cursor); return cursor->current->content; } - -/** - * @brief Set current data - * @param cursor the cursor - * @param data the new data - * @param free_ctn the function to free the new data - */ -inline void xbt_dict_cursor_set_data(xbt_dict_cursor_t cursor, void *data, void_f_pvoid_t free_ctn) -{ - __cursor_not_null(cursor); - xbt_dictelm_set_data(cursor->dict, cursor->current, data, free_ctn); -}