Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
"new ruby host method"
[simgrid.git] / src / xbt / dict.c
index 93b29eb..60937b3 100644 (file)
@@ -80,7 +80,9 @@ void xbt_dict_free(xbt_dict_t * dict)
   if (dict != NULL && *dict != NULL) {
     table_size = (*dict)->table_size;
     table = (*dict)->table;
-    for (i = 0; (*dict)->count && i < table_size; i++) {
+    /* Warning: the size of the table is 'table_size+1'...
+     * This is because table_size is used as a binary mask in xbt_dict_rehash */
+    for (i = 0; (*dict)->count && i <= table_size; i++) {
       current = table[i];
       while (current != NULL) {
         previous = current;
@@ -98,7 +100,7 @@ void xbt_dict_free(xbt_dict_t * dict)
 /**
  * Returns the amount of elements in the dict
  */
-unsigned int xbt_dict_size(xbt_dict_t dict)
+XBT_INLINE unsigned int xbt_dict_size(xbt_dict_t dict)
 {
   return dict->count;
 }
@@ -295,7 +297,7 @@ XBT_INLINE void xbt_dict_set_ext(xbt_dict_t dict,
  * set the \a data in the structure under the \a key, which is a
  * null terminated string.
  */
-void xbt_dict_set(xbt_dict_t dict,
+XBT_INLINE void xbt_dict_set(xbt_dict_t dict,
                   const char *key, void *data, void_f_pvoid_t free_ctn)
 {
 
@@ -312,7 +314,7 @@ void xbt_dict_set(xbt_dict_t dict,
  *
  * Search the given \a key. Throws not_found_error when not found.
  */
-void *xbt_dict_get_ext(xbt_dict_t dict, const char *key, int key_len)
+XBT_INLINE void *xbt_dict_get_ext(xbt_dict_t dict, const char *key, int key_len)
 {
 
 
@@ -362,7 +364,7 @@ void *xbt_dict_get_or_null_ext(xbt_dict_t dict, const char *key, int key_len)
  *
  * Returns NULL if the object cannot be found
  */
-char *xbt_dict_get_key(xbt_dict_t dict, void*data) {
+char *xbt_dict_get_key(xbt_dict_t dict, const void*data) {
   int i;
   xbt_dictelm_t current;
 
@@ -390,7 +392,7 @@ char *xbt_dict_get_key(xbt_dict_t dict, void*data) {
  * Check xbt_dict_get_or_null() for a version returning NULL without exception when
  * not found.
  */
-void *xbt_dict_get(xbt_dict_t dict, const char *key)
+XBT_INLINE void *xbt_dict_get(xbt_dict_t dict, const char *key)
 {
 
   unsigned int hash_code = xbt_dict_hash(key);
@@ -412,7 +414,7 @@ void *xbt_dict_get(xbt_dict_t dict, const char *key)
 /**
  * \brief like xbt_dict_get(), but returning NULL when not found
  */
-void *xbt_dict_get_or_null(xbt_dict_t dict, const char *key)
+XBT_INLINE void *xbt_dict_get_or_null(xbt_dict_t dict, const char *key)
 {
   unsigned int hash_code = xbt_dict_hash(key);
   xbt_dictelm_t current;
@@ -440,7 +442,7 @@ void *xbt_dict_get_or_null(xbt_dict_t dict, const char *key)
  *
  * Remove the entry associated with the given \a key (throws not_found)
  */
-void xbt_dict_remove_ext(xbt_dict_t dict, const char *key, int key_len)
+XBT_INLINE void xbt_dict_remove_ext(xbt_dict_t dict, const char *key, int key_len)
 {
 
 
@@ -482,7 +484,7 @@ void xbt_dict_remove_ext(xbt_dict_t dict, const char *key, int key_len)
  *
  * Remove the entry associated with the given \a key
  */
-void xbt_dict_remove(xbt_dict_t dict, const char *key)
+XBT_INLINE void xbt_dict_remove(xbt_dict_t dict, const char *key)
 {
   xbt_dict_remove_ext(dict, key, strlen(key));
 }
@@ -520,7 +522,7 @@ void xbt_dict_reset(xbt_dict_t dict)
  * \brief Return the number of elements in the dict.
  * \param dict a dictionary
  */
-int xbt_dict_length(xbt_dict_t dict)
+XBT_INLINE int xbt_dict_length(xbt_dict_t dict)
 {
   xbt_assert(dict);