From 44dd55a2683a2bb21d7afb344974e5c2311f187b Mon Sep 17 00:00:00 2001 From: Martin Stein Date: Wed, 7 Mar 2018 13:57:49 +0100 Subject: [PATCH] nic_router: destroy_each for domain tree List method to destruct and deallocate each item of a domain tree. Ref #2670 --- repos/os/src/server/nic_router/domain.cc | 11 +++++++++++ repos/os/src/server/nic_router/domain.h | 2 ++ 2 files changed, 13 insertions(+) diff --git a/repos/os/src/server/nic_router/domain.cc b/repos/os/src/server/nic_router/domain.cc index a05016ab7f..c2cd211216 100644 --- a/repos/os/src/server/nic_router/domain.cc +++ b/repos/os/src/server/nic_router/domain.cc @@ -266,6 +266,7 @@ Domain &Domain_tree::domain(Avl_string_base const &node) return static_cast(&node)->domain(); } + Domain &Domain_tree::find_by_name(Domain_name name) { if (name == Domain_name() || !first()) { @@ -277,3 +278,13 @@ Domain &Domain_tree::find_by_name(Domain_name name) return domain(*node); } + + +void Domain_tree::destroy_each(Deallocator &dealloc) +{ + while (Avl_string_base *first_ = first()) { + Domain &domain_ = domain(*first_); + remove(first_); + destroy(dealloc, &domain_); + } +} diff --git a/repos/os/src/server/nic_router/domain.h b/repos/os/src/server/nic_router/domain.h index e27b6f0df3..7f645f42de 100644 --- a/repos/os/src/server/nic_router/domain.h +++ b/repos/os/src/server/nic_router/domain.h @@ -203,6 +203,8 @@ struct Net::Domain_tree : Genode::Avl_tree } void insert(Domain &domain) { Avl_tree::insert(&domain.avl_member()); } + + void destroy_each(Genode::Deallocator &dealloc); }; #endif /* _DOMAIN_H_ */