+
+void xbt_dictelm_set_data(xbt_dict_t dict, xbt_dictelm_t element, void *data, void_f_pvoid_t free_ctn)
+{
+ void_f_pvoid_t free_f;
+ if (dict->homogeneous) {
+ free_f = dict->free_f;
+ xbt_assert(!free_ctn, "Cannot set an individual free function in homogeneous dicts.");
+ } else {
+ xbt_het_dictelm_t het_element = (xbt_het_dictelm_t)element;
+ free_f = het_element->free_f;
+ het_element->free_f = free_ctn;
+ }
+
+ if (free_f && element->content)
+ free_f(element->content);
+
+ element->content = data;
+}
+
+void *dict_elm_mallocator_new_f(void)
+{
+ return xbt_new(s_xbt_dictelm_t, 1);
+}
+
+void *dict_het_elm_mallocator_new_f(void)
+{
+ return xbt_new(s_xbt_het_dictelm_t, 1);
+}