Commit Graph

31 Commits

Author SHA1 Message Date
Max Kellermann
df15c418c7 util/IntrusiveList: fix swap() implementation if second list is empty 2022-11-11 18:29:50 +01:00
Max Kellermann
04ab8ae27b util/IntrusiveList: add type aliases value_type, pointer, reference 2022-11-11 17:15:20 +01:00
Max Kellermann
b4a64af15e util/IntrusiveList: constant_time_size is a template argument, not a variable 2022-11-11 17:15:16 +01:00
Max Kellermann
838c057231 util/IntrusiveList: use auto
Fixes typos in the const_iterator return types, and fixes returning
references to stack values.
2022-11-11 16:33:49 +01:00
Max Kellermann
af544bb16f util/IntrusiveList: fix typos 2022-11-11 10:11:42 +01:00
Max Kellermann
84fd401d21 util/IntrusiveList: add method splice() 2022-11-11 10:05:20 +01:00
Max Kellermann
b5d224496f util/IntrusiveList: iterators are bidirectional 2022-11-11 09:20:09 +01:00
Max Kellermann
5670d98c54 util/IntrusiveList: move code to IntrusiveListNode::Connect() 2022-11-10 16:52:34 +01:00
Max Kellermann
5140eaa5e7 util/IntrusiveList: use std::is_base_of_v 2022-06-29 17:30:11 +02:00
Max Kellermann
8a68d085b4 util/IntrusiveList: add option "constant_time_size" 2022-06-29 17:28:39 +02:00
Max Kellermann
e437cc4faf util/IntrusiveList: add size() 2022-06-29 17:28:35 +02:00
Max Kellermann
1fb858e2d7 util/IntrusiveList: add struct IntrusiveListMemberHookTraits 2022-06-29 17:28:16 +02:00
Max Kellermann
5348a446a7 util/IntrusiveList: move various static functions to struct IntrusiveListBaseHook 2022-06-29 17:27:40 +02:00
Max Kellermann
e8e33d5fc4 util/IntrusiveList: add missing ToHook() calls 2022-06-29 17:27:37 +02:00
Max Kellermann
c28580745b util/IntrusiveList: move struct HookDetection to top-level 2022-06-29 17:24:08 +02:00
Max Kellermann
0ed24f3a05 util/IntrusiveList: disallow copying IntrusiveListHook 2021-12-03 13:50:05 +01:00
Max Kellermann
8d679e7e00 util/IntrusiveList: add IntrusiveList::swap() 2021-10-13 11:04:42 +02:00
Max Kellermann
2b30ac2351 util/IntrusiveList: add another missing ToNode() call 2021-10-13 11:04:21 +02:00
Max Kellermann
1c97793b49 util/IntrusiveList: do not use the deprecated class std::iterator
Deprecated in C++17.  Since C++17, one is supposed to declare those 5
types manually.
2021-10-13 11:03:49 +02:00
Max Kellermann
a6eb264770 util/IntrusiveList: add type alias "Hook"
By casting to SafeLinkIntrusiveListHook if appropriate, this fixes a
bug in the erase() method, where erase() calls
IntrusiveListHook::unlink() instead of
SafeLinkIntrusiveListHook::unlink().
2021-03-02 17:51:50 +01:00
Max Kellermann
946b3c1f80 util/IntrusiveList: add method erase_and_dispose() 2021-02-25 14:12:47 +01:00
Max Kellermann
a0dc398f36 util/IntrusiveList: erase() returns an iterator 2021-02-25 14:12:39 +01:00
Max Kellermann
b54d2d984a util/IntrusiveList: use ToHook() in erase() 2021-02-25 14:12:10 +01:00
Max Kellermann
4ab73f9de9 util/IntrusiveList: add missing ToNode() cast in iterator_to() 2021-02-25 14:10:55 +01:00
Max Kellermann
1048f23680 util/IntrusiveList: add hook class SafeLinkIntrusiveListHook
Similar to boost::intrusive::safe_link.
2021-02-24 20:29:16 +01:00
Max Kellermann
8fe8f09027 util/IntrusiveList: add noexcept 2021-02-24 20:17:28 +01:00
Max Kellermann
78670c0941 util/IntrusiveList: add constexpr 2021-02-24 20:16:54 +01:00
Max Kellermann
75e8795e3f util/IntrusiveList: add method insert() 2021-02-22 23:32:51 +01:00
Max Kellermann
4912466d50 util/IntrusiveList: add method erase() 2021-02-22 23:32:47 +01:00
Max Kellermann
7fe0095fa7 util/IntrusiveList: add noexcept to defaulted constructor 2021-02-11 21:22:15 +01:00
Max Kellermann
6f0ad2b6c5 util/IntrusiveList: replacement for boost::intrusive::list 2020-10-18 19:23:34 +02:00