-xbt_dynar_t all_sizes = nullptr;
-/** @brief shows some debugging info about the bucklet repartition */
-void xbt_dict_dump_sizes(xbt_dict_t dict)
-{
- unsigned int count;
- unsigned int size;
-
- printf("Dict %p: %d bucklets, %d used cells (of %d) ", dict, dict->count, dict->fill, dict->table_size);
-
- if (!dict) {
- printf("\n");
- return;
- }
- xbt_dynar_t sizes = xbt_dynar_new(sizeof(int), nullptr);
-
- for (int i = 0; i < dict->table_size; i++) {
- xbt_dictelm_t element = dict->table[i];
- size = 0;
- if (element) {
- while (element != nullptr) {
- size++;
- element = element->next;
- }
- }
- if (xbt_dynar_length(sizes) <= size) {
- int prevsize = 1;
- xbt_dynar_set(sizes, size, &prevsize);
- } else {
- int prevsize;
- xbt_dynar_get_cpy(sizes, size, &prevsize);
- prevsize++;
- xbt_dynar_set(sizes, size, &prevsize);
- }
- }
- if (!all_sizes)
- all_sizes = xbt_dynar_new(sizeof(int), nullptr);
-
- xbt_dynar_foreach(sizes, count, size) {
- /* Copy values of this one into all_sizes */
- int prevcount;
- if (xbt_dynar_length(all_sizes) <= count) {
- prevcount = size;
- xbt_dynar_set(all_sizes, count, &prevcount);
- } else {
- xbt_dynar_get_cpy(all_sizes, count, &prevcount);
- prevcount += size;
- xbt_dynar_set(all_sizes, count, &prevcount);
- }
-
- /* Report current sizes */
- if (count != 0 && size != 0)
- printf("%uelm x %u cells; ", count, size);
- }
- printf("\n");
- xbt_dynar_free(&sizes);
-}
-