From: Arnaud Giersch Date: Tue, 9 Jan 2018 12:40:49 +0000 (+0100) Subject: Slight cleanup after removal of xbt_dict_new(). X-Git-Tag: v3.19~371 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/b3ea3997e7eadb26ad7e99731a40009386312d69?hp=4aa891bcff8d28d5dda4ed6ec9a4ac08dfdbfacd Slight cleanup after removal of xbt_dict_new(). --- diff --git a/include/xbt/dict.h b/include/xbt/dict.h index 4981e6a337..30f9ec32f1 100644 --- a/include/xbt/dict.h +++ b/include/xbt/dict.h @@ -25,14 +25,14 @@ SG_BEGIN_DECL() * Here is a little example of use: \verbatim - xbt_dict_t mydict = xbt_dict_new(); + xbt_dict_t mydict = xbt_dict_new_homogeneous(free); char buff[512]; sprintf(buff,"some very precious data"); - xbt_dict_set(mydict,"my data", strdup(buff), free); + xbt_dict_set(mydict,"my data", strdup(buff), NULL); sprintf(buff,"another good stuff"); - xbt_dict_set(mydict,"my data", strdup(buff), free); // previous data gets erased (and freed) by second add + xbt_dict_set(mydict,"my data", strdup(buff), NULL); // previous data gets erased (and freed) by second add \endverbatim */ diff --git a/src/xbt/dict.cpp b/src/xbt/dict.cpp index d582cbf616..2dec54d96b 100644 --- a/src/xbt/dict.cpp +++ b/src/xbt/dict.cpp @@ -24,7 +24,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_dict, xbt, "Dictionaries provide the same fu * \brief Constructor * \param free_ctn function to call with (\a data as argument) when \a data is removed from the dictionary * \return pointer to the destination - * \see xbt_dict_new(), xbt_dict_free() + * \see xbt_dict_free() * * Creates and initialize a new dictionary with a default hashtable size. * The dictionary is homogeneous: each element share the same free function. @@ -42,7 +42,6 @@ xbt_dict_t xbt_dict_new_homogeneous(void_f_pvoid_t free_ctn) dict->table = xbt_new0(xbt_dictelm_t, dict->table_size + 1); dict->count = 0; dict->fill = 0; - dict->homogeneous = 1; return dict; } @@ -129,20 +128,19 @@ static void xbt_dict_rehash(xbt_dict_t dict) * \param key the key to set the new data * \param key_len the size of the \a key * \param data the data to add in the dict - * \param free_ctn function to call with (\a data as argument) when \a data is removed from the dictionary. This param - * will only be considered when the dict was instantiated with xbt_dict_new() and not xbt_dict_new_homogeneous() + * \param free_ctn unused parameter (kept for compatibility) * * Set the \a data in the structure under the \a key, which can be any kind of data, as long as its length is provided * in \a key_len. */ -void xbt_dict_set_ext(xbt_dict_t dict, const char *key, int key_len, void *data, void_f_pvoid_t free_ctn) +void xbt_dict_set_ext(xbt_dict_t dict, const char* key, int key_len, void* data, + XBT_ATTRIB_UNUSED void_f_pvoid_t free_ctn) { unsigned int hash_code = xbt_str_hash_ext(key, key_len); xbt_dictelm_t current; xbt_dictelm_t previous = nullptr; - xbt_assert(not free_ctn, "Cannot set an individual free function in homogeneous dicts."); XBT_CDEBUG(xbt_dict, "ADD %.*s hash = %u, size = %d, & = %u", key_len, key, hash_code, dict->table_size, hash_code & dict->table_size); current = dict->table[hash_code & dict->table_size]; @@ -168,7 +166,7 @@ void xbt_dict_set_ext(xbt_dict_t dict, const char *key, int key_len, void *data, XBT_CDEBUG(xbt_dict, "Replace %.*s by %.*s under key %.*s", key_len, (char *) current->content, key_len, (char *) data, key_len, (char *) key); /* there is already an element with the same key: overwrite it */ - xbt_dictelm_set_data(dict, current, data, free_ctn); + xbt_dictelm_set_data(dict, current, data); } } @@ -178,8 +176,7 @@ void xbt_dict_set_ext(xbt_dict_t dict, const char *key, int key_len, void *data, * \param dict the dict * \param key the key to set the new data * \param data the data to add in the dict - * \param free_ctn function to call with (\a data as argument) when \a data is removed from the dictionary. This param - * will only be considered when the dict was instantiated with xbt_dict_new() and not xbt_dict_new_homogeneous() + * \param free_ctn unused parameter (kept for compatibility) * * set the \a data in the structure under the \a key, which is anull terminated string. */ diff --git a/src/xbt/dict_cursor.c b/src/xbt/dict_cursor.c index 574a4e6860..6ccf21c132 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-2017. The SimGrid Team. +/* Copyright (c) 2004-2018. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -169,10 +169,10 @@ inline void *xbt_dict_cursor_get_data(xbt_dict_cursor_t cursor) * @brief Set current data * @param cursor the cursor * @param data the new data - * @param free_ctn the function to free the new data + * @param free_ctn unused parameter (kept for compatibility) */ -inline void xbt_dict_cursor_set_data(xbt_dict_cursor_t cursor, void *data, void_f_pvoid_t free_ctn) +inline void xbt_dict_cursor_set_data(xbt_dict_cursor_t cursor, void* data, XBT_ATTRIB_UNUSED void_f_pvoid_t free_ctn) { __cursor_not_null(cursor); - xbt_dictelm_set_data(cursor->dict, cursor->current, data, free_ctn); + xbt_dictelm_set_data(cursor->dict, cursor->current, data); } diff --git a/src/xbt/dict_elm.c b/src/xbt/dict_elm.c index 28c0901024..a0dc8ea012 100644 --- a/src/xbt/dict_elm.c +++ b/src/xbt/dict_elm.c @@ -1,6 +1,6 @@ /* dict - a generic dictionary, variation over hash table */ -/* Copyright (c) 2004-2017. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2004-2018. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -42,12 +42,9 @@ void xbt_dictelm_free(xbt_dict_t dict, xbt_dictelm_t element) } } -void xbt_dictelm_set_data(xbt_dict_t dict, xbt_dictelm_t element, void *data, void_f_pvoid_t free_ctn) +void xbt_dictelm_set_data(xbt_dict_t dict, xbt_dictelm_t element, void* data) { - void_f_pvoid_t free_f; - free_f = dict->free_f; - xbt_assert(!free_ctn, "Cannot set an individual free function in homogeneous dicts."); - + void_f_pvoid_t free_f = dict->free_f; if (free_f && element->content) free_f(element->content); diff --git a/src/xbt/dict_private.h b/src/xbt/dict_private.h index 83798fb81c..4d80294131 100644 --- a/src/xbt/dict_private.h +++ b/src/xbt/dict_private.h @@ -1,7 +1,7 @@ /* dict_elm - elements of generic dictionnaries */ /* This file is not to be loaded from anywhere but dict.cpp */ -/* Copyright (c) 2004-2017. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2004-2018. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -27,7 +27,6 @@ typedef struct s_xbt_dict { int table_size; int count; int fill; - int homogeneous; } s_xbt_dict_t; typedef struct s_xbt_dict_cursor s_xbt_dict_cursor_t; @@ -40,7 +39,7 @@ XBT_PRIVATE void * dict_elm_mallocator_new_f(void); /*####[ Function prototypes ]################################################*/ XBT_PRIVATE xbt_dictelm_t xbt_dictelm_new(const char* key, int key_len, unsigned int hash_code, void* content); XBT_PRIVATE void xbt_dictelm_free(xbt_dict_t dict, xbt_dictelm_t element); -XBT_PRIVATE void xbt_dictelm_set_data(xbt_dict_t dict, xbt_dictelm_t element, void *data, void_f_pvoid_t free_ctn); +XBT_PRIVATE void xbt_dictelm_set_data(xbt_dict_t dict, xbt_dictelm_t element, void* data); SG_END_DECL()