diff options
author | George Hazan <ghazan@miranda.im> | 2018-03-15 21:05:06 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2018-03-15 21:05:06 +0300 |
commit | 59e6b15f513cc998ce13e9e49e2a6a3ace445ebb (patch) | |
tree | af52b73a17039ed1fbe398ba9f488c26a7071257 /include | |
parent | bdaa5cf8b48515af2ac39f3f3245dd1183cbad52 (diff) |
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
Diffstat (limited to 'include')
-rw-r--r-- | include/m_system_cpp.h | 7 |
1 files changed, 7 insertions, 0 deletions
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<class T> 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; }
|