From a733502359f1e63732c9f75e423e0d8fb4a0c232 Mon Sep 17 00:00:00 2001 From: rolandreichweinbmw Date: Sat, 1 Mar 2025 19:24:30 +0100 Subject: [PATCH] Intrusive forward list add remove by pointer (#1026) * Add intrusive_forward_list::remove() element by pointer * Add test --- include/etl/intrusive_forward_list.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/include/etl/intrusive_forward_list.h b/include/etl/intrusive_forward_list.h index 12e3c3d3..307f110b 100644 --- a/include/etl/intrusive_forward_list.h +++ b/include/etl/intrusive_forward_list.h @@ -1011,6 +1011,29 @@ namespace etl } } + //************************************************************************* + // Removes the element specified by pointer. + //************************************************************************* + void remove(const_pointer element) + { + iterator i_item = begin(); + iterator i_last_item = before_begin(); + + while (i_item != end()) + { + if (&i_item == element) + { + i_item = erase_after(i_last_item); + return; + } + else + { + ++i_item; + ++i_last_item; + } + } + } + //************************************************************************* /// Removes according to a predicate. //*************************************************************************