- XBT_DEBUG("removeChildContainer (%s) FromContainer (%s) ",
- child->name,
- parent->name);
- xbt_dict_remove (parent->children, child->name);
- }
-}
-
-void PJ_container_free (container_t container)
-{
- if (container == nullptr){
- THROWF (tracing_error, 0, "trying to free a nullptr container");
- }
- XBT_DEBUG("destroy container %s", container->name);
-
- //obligation to dump previous events because they might
- //reference the container that is about to be destroyed
- TRACE_last_timestamp_to_dump = surf_get_clock();
- TRACE_paje_dump_buffer(1);
-
- //trace my destruction
- if (!TRACE_disable_destroy() && container != PJ_container_get_root()){
- //do not trace the container destruction if user requests
- //or if the container is root
- new_pajeDestroyContainer(container);
- }
-
- //remove it from allContainers data structure
- xbt_dict_remove (allContainers, container->name);
-
- //free
- xbt_free (container->name);
- xbt_free (container->id);
- xbt_dict_free (&container->children);
- xbt_free (container);
- container = nullptr;
-}
-
-static void recursiveDestroyContainer (container_t container)
-{
- if (container == nullptr){
- THROWF (tracing_error, 0, "trying to recursively destroy a nullptr container");
- }
- XBT_DEBUG("recursiveDestroyContainer %s", container->name);
- xbt_dict_cursor_t cursor = nullptr;
- container_t child;
- char *child_name;
- xbt_dict_foreach(container->children, cursor, child_name, child) {
- recursiveDestroyContainer (child);
- }
- PJ_container_free (container);
-}
-
-void PJ_container_free_all ()
-{
- container_t root = PJ_container_get_root();
- if (root == nullptr){
- THROWF (tracing_error, 0, "trying to free all containers, but root is nullptr");
- }
- recursiveDestroyContainer (root);
- rootContainer = nullptr;
-
- //checks
- if (!xbt_dict_is_empty(allContainers)){
- THROWF(tracing_error, 0, "some containers still present even after destroying all of them");