From 59e6b15f513cc998ce13e9e49e2a6a3ace445ebb Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 15 Mar 2018 21:05:06 +0300 Subject: LIST<> iterators: - new method LIST::removeItem added to save a pointer to removed record; - code cleaning related to the fact that LIST::remove() shall be the last operation inside an iterator, because otherwise the reference to it will point to a record next to deleted one; - a few remaining cycles converted to iterators --- include/m_system_cpp.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'include') diff --git a/include/m_system_cpp.h b/include/m_system_cpp.h index 729ddcb414..b262254dfb 100644 --- a/include/m_system_cpp.h +++ b/include/m_system_cpp.h @@ -233,6 +233,13 @@ template struct LIST __inline int insert(T *p) { return List_InsertPtr((SortedList*)this, p); } __inline int remove(T *p) { return List_RemovePtr((SortedList*)this, p); } + __inline T* removeItem(T **p) + { + T *savePtr = *p; + List_Remove((SortedList*)this, int(p - items)); + return savePtr; + } + __inline void put(int idx, T *p) { items[idx] = p; } __inline T** begin() const { return items; } -- cgit v1.2.3