+/** @brief Remove an element from a set.
+ *
+ * \param set a set
+ * \param elm element to remove
+ */
+void xbt_set_remove(xbt_set_t set, xbt_set_elm_t elm)
+{
+ int id = elm->ID;
+ xbt_dynar_push_as(set->available_ids, int, id); /* this id becomes available now */
+ xbt_dict_remove_ext(set->dict, elm->name, elm->name_len);
+ elm = NULL;
+ xbt_dynar_set(set->dynar, id, &elm);
+}
+
+/** @brief Remove an element from a set providing its name.
+ *
+ * \param set a set
+ * \param key name of the element to remove
+ */
+void xbt_set_remove_by_name(xbt_set_t set, const char *key)
+{
+ xbt_set_elm_t elm = xbt_set_get_by_name(set, key);
+ xbt_set_remove(set, elm);
+}
+
+/** @brief Remove an element from a set providing its name
+ * and the length of the name.
+ *
+ * \param set a set
+ * \param key name of the element to remove
+ * \param key_len length of \a name
+ */
+void xbt_set_remove_by_name_ext(xbt_set_t set, const char *key,
+ int key_len)
+{
+ xbt_set_elm_t elm = xbt_set_get_by_name_ext(set, key, key_len);
+ xbt_set_remove(set, elm);
+}
+
+/** @brief Remove an element from a set providing its id.
+ *
+ * \param set a set
+ * \param id id of the element to remove
+ */
+void xbt_set_remove_by_id(xbt_set_t set, int id)
+{
+ xbt_set_elm_t elm = xbt_set_get_by_id(set, id);
+ xbt_set_remove(set, elm);
+}
+
+/** @brief Retrieve data by providing its name.
+ *