Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Slight cleanup after removal of xbt_dict_new().
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Tue, 9 Jan 2018 12:40:49 +0000 (13:40 +0100)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Tue, 9 Jan 2018 12:50:02 +0000 (13:50 +0100)
include/xbt/dict.h
src/xbt/dict.cpp
src/xbt/dict_cursor.c
src/xbt/dict_elm.c
src/xbt/dict_private.h

index 4981e6a..30f9ec3 100644 (file)
@@ -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
  */
 
index d582cbf..2dec54d 100644 (file)
@@ -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.
  */
index 574a4e6..6ccf21c 100644 (file)
@@ -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);
 }
index 28c0901..a0dc8ea 100644 (file)
@@ -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);
 
index 83798fb..4d80294 100644 (file)
@@ -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()