From 09a8b936343c5d37f47624ee84e8451ee7568776 Mon Sep 17 00:00:00 2001 From: Patrick Pelissier Date: Sun, 10 Oct 2021 10:17:55 +0200 Subject: [PATCH] Add method _remove for RBTREE --- m-rbtree.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/m-rbtree.h b/m-rbtree.h index 2bae1889..263d56f6 100644 --- a/m-rbtree.h +++ b/m-rbtree.h @@ -96,6 +96,7 @@ IT_NEXT(M_C(name,_next)), \ IT_PREVIOUS(M_C(name,_previous)), \ IT_CREF(M_C(name,_cref)), \ + IT_REMOVE(M_C(name,_remove)), \ CLEAN(M_C(name,_clean)), \ PUSH(M_C(name,_push)), \ GET_MIN(M_C(name,_min)), \ @@ -954,6 +955,12 @@ typedef enum { return true; \ } \ \ + static inline void M_C(name,_remove)(tree_t t, it_t it) \ + { \ + /* Not optimum: another search in the tree is performed */ \ + M_C(name, _pop_at)(NULL, t, *M_C(name,_cref)(it)); \ + } \ + \ M_IF_METHOD(EQUAL, oplist)( \ static inline bool M_C(name,_equal_p)(const tree_t t1, const tree_t t2) { \ M_RBTR33_CONTRACT(t1); \