/* dict - a generic dictionary, variation over hash table */
-/* Copyright (c) 2004-2013. The SimGrid Team.
+/* Copyright (c) 2004-2014. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
static void xbt_dict_rehash(xbt_dict_t dict)
{
const int oldsize = dict->table_size + 1;
- register int newsize = oldsize * 2;
- register int i;
- register xbt_dictelm_t *currcell;
- register xbt_dictelm_t *twincell;
- register xbt_dictelm_t bucklet;
- register xbt_dictelm_t *pprev;
+ int newsize = oldsize * 2;
+ int i;
+ xbt_dictelm_t *currcell;
+ xbt_dictelm_t *twincell;
+ xbt_dictelm_t bucklet;
+ xbt_dictelm_t *pprev;
currcell =
(xbt_dictelm_t *) xbt_realloc((char *) dict->table,
return NULL;
}
+/**
+ * @brief retrieve the key associated to that xbt_dictelm_t.
+ *
+ */
+char *xbt_dict_get_elm_key(xbt_dictelm_t elm)
+{
+ return elm->key;
+}
+
/**
* \brief Retrieve data from the dict (null-terminated key)
*
XBT_INLINE void *xbt_dict_get_or_null(xbt_dict_t dict, const char *key)
{
xbt_dictelm_t current = xbt_dict_get_elm_or_null(dict, key);
-
+
if (current == NULL)
return NULL;
xbt_dict_free(&head);
}
+XBT_TEST_UNIT("ext", test_dict_int, "Test dictionnary with int keys")
+{
+ xbt_dict_t dict = xbt_dict_new();
+ int count = 500;
+
+ xbt_test_add("Insert elements");
+ int i;
+ for (i = 0; i < count; ++i)
+ xbt_dict_set_ext(dict, (char*) &i, sizeof(i), (void*) (intptr_t) i, NULL);
+ xbt_test_assert(xbt_dict_size(dict) == count,
+ "Bad number of elements in the dictionnary");
+
+ xbt_test_add("Check elements");
+ for (i = 0; i < count; ++i) {
+ int res = (int) (intptr_t) xbt_dict_get_ext(dict, (char*) &i, sizeof(i));
+ xbt_test_assert(xbt_dict_size(dict) == count,
+ "Unexpected value at index %i, expected %i but was %i", i, i, res);
+ }
+
+ xbt_test_add("Free the array");
+ xbt_dict_free(&dict);
+}
+
#endif /* SIMGRID_TEST */