|
Slick OrderBook 1.1.0
High-Performance C++23 OrderBook Library
|
Intrusive doubly-linked list for zero-allocation order management. More...
#include <intrusive_list.hpp>
Classes | |
| class | ConstIterator |
| Const iterator. More... | |
| class | ConstReverseIterator |
| Const reverse iterator. More... | |
| class | Iterator |
| Forward iterator for intrusive list We store a pointer to the list's tail to handle decrement from end() More... | |
| class | ReverseIterator |
| Reverse iterator for intrusive list Cannot use std::reverse_iterator because end() (nullptr) cannot be decremented We store a pointer to the list's head to handle decrement from rend() More... | |
Public Types | |
| using | value_type = T |
| using | pointer = T * |
| using | const_pointer = const T * |
| using | reference = T & |
| using | const_reference = const T & |
| using | size_type = std::size_t |
| using | iterator = Iterator |
| using | const_iterator = ConstIterator |
| using | reverse_iterator = ReverseIterator |
| using | const_reverse_iterator = ConstReverseIterator |
Public Member Functions | |
| constexpr | IntrusiveList () noexcept |
| Constructor. | |
| ~IntrusiveList () noexcept=default | |
| Destructor - does not delete elements (intrusive design) | |
| IntrusiveList (const IntrusiveList &)=delete | |
| IntrusiveList & | operator= (const IntrusiveList &)=delete |
| constexpr | IntrusiveList (IntrusiveList &&other) noexcept |
| constexpr IntrusiveList & | operator= (IntrusiveList &&other) noexcept |
| constexpr bool | empty () const noexcept |
| Check if list is empty. | |
| constexpr size_type | size () const noexcept |
| Get number of elements. | |
| constexpr pointer | front () noexcept |
| Get front element. | |
| constexpr const_pointer | front () const noexcept |
| constexpr pointer | back () noexcept |
| Get back element. | |
| constexpr const_pointer | back () const noexcept |
| constexpr void | push_front (T *node) noexcept |
| Add element to front (newest order, used for LIFO if needed) | |
| constexpr void | push_back (T *node) noexcept |
| Add element to back (oldest order, FIFO time priority) | |
| constexpr pointer | pop_front () noexcept |
| Remove front element. | |
| constexpr pointer | pop_back () noexcept |
| Remove back element. | |
| constexpr void | erase (T *node) noexcept |
| Remove specific element from list O(1) operation - no search required. | |
| constexpr void | insert_before (T *pos, T *node) noexcept |
| Insert element before given position O(1) operation. | |
| constexpr void | insert_after (T *pos, T *node) noexcept |
| Insert element after given position O(1) operation. | |
| constexpr void | clear () noexcept |
| Clear list (does not delete elements) | |
| constexpr iterator | begin () noexcept |
| Iterators. | |
| constexpr const_iterator | begin () const noexcept |
| constexpr const_iterator | cbegin () const noexcept |
| constexpr iterator | end () noexcept |
| constexpr const_iterator | end () const noexcept |
| constexpr const_iterator | cend () const noexcept |
| constexpr reverse_iterator | rbegin () noexcept |
| Reverse iterators. | |
| constexpr const_reverse_iterator | rbegin () const noexcept |
| constexpr const_reverse_iterator | crbegin () const noexcept |
| constexpr reverse_iterator | rend () noexcept |
| constexpr const_reverse_iterator | rend () const noexcept |
| constexpr const_reverse_iterator | crend () const noexcept |
Intrusive doubly-linked list for zero-allocation order management.
This list requires elements to have next and prev pointer members. Benefits:
Usage:
| T | Element type (must have next/prev pointers) |
| NextPtr | Pointer-to-member for next pointer |
| PrevPtr | Pointer-to-member for prev pointer |
Definition at line 39 of file intrusive_list.hpp.
| using slick::orderbook::detail::IntrusiveList< T, NextPtr, PrevPtr >::const_iterator = ConstIterator |
Definition at line 300 of file intrusive_list.hpp.
| using slick::orderbook::detail::IntrusiveList< T, NextPtr, PrevPtr >::const_pointer = const T* |
Definition at line 43 of file intrusive_list.hpp.
| using slick::orderbook::detail::IntrusiveList< T, NextPtr, PrevPtr >::const_reference = const T& |
Definition at line 45 of file intrusive_list.hpp.
| using slick::orderbook::detail::IntrusiveList< T, NextPtr, PrevPtr >::const_reverse_iterator = ConstReverseIterator |
Definition at line 302 of file intrusive_list.hpp.
| using slick::orderbook::detail::IntrusiveList< T, NextPtr, PrevPtr >::iterator = Iterator |
Definition at line 299 of file intrusive_list.hpp.
| using slick::orderbook::detail::IntrusiveList< T, NextPtr, PrevPtr >::pointer = T* |
Definition at line 42 of file intrusive_list.hpp.
| using slick::orderbook::detail::IntrusiveList< T, NextPtr, PrevPtr >::reference = T& |
Definition at line 44 of file intrusive_list.hpp.
| using slick::orderbook::detail::IntrusiveList< T, NextPtr, PrevPtr >::reverse_iterator = ReverseIterator |
Definition at line 301 of file intrusive_list.hpp.
| using slick::orderbook::detail::IntrusiveList< T, NextPtr, PrevPtr >::size_type = std::size_t |
Definition at line 46 of file intrusive_list.hpp.
| using slick::orderbook::detail::IntrusiveList< T, NextPtr, PrevPtr >::value_type = T |
Definition at line 41 of file intrusive_list.hpp.
|
inlineconstexprnoexcept |
Constructor.
Definition at line 305 of file intrusive_list.hpp.
|
defaultnoexcept |
Destructor - does not delete elements (intrusive design)
|
delete |
|
inlineconstexprnoexcept |
Definition at line 315 of file intrusive_list.hpp.
|
inlineconstexprnoexcept |
Definition at line 358 of file intrusive_list.hpp.
|
inlineconstexprnoexcept |
Get back element.
Definition at line 354 of file intrusive_list.hpp.
|
inlineconstexprnoexcept |
Definition at line 536 of file intrusive_list.hpp.
|
inlineconstexprnoexcept |
Iterators.
Definition at line 532 of file intrusive_list.hpp.
Referenced by slick::orderbook::detail::PriceLevelL3::insertOrder().
|
inlineconstexprnoexcept |
Definition at line 540 of file intrusive_list.hpp.
|
inlineconstexprnoexcept |
Definition at line 552 of file intrusive_list.hpp.
|
inlineconstexprnoexcept |
Clear list (does not delete elements)
Definition at line 516 of file intrusive_list.hpp.
|
inlineconstexprnoexcept |
Definition at line 565 of file intrusive_list.hpp.
|
inlineconstexprnoexcept |
Definition at line 577 of file intrusive_list.hpp.
|
inlineconstexprnoexcept |
Check if list is empty.
Definition at line 335 of file intrusive_list.hpp.
Referenced by slick::orderbook::detail::PriceLevelL3::getBestOrder(), slick::orderbook::detail::PriceLevelL3::getBestOrder(), and slick::orderbook::detail::PriceLevelL3::isEmpty().
|
inlineconstexprnoexcept |
Definition at line 548 of file intrusive_list.hpp.
|
inlineconstexprnoexcept |
Definition at line 544 of file intrusive_list.hpp.
Referenced by slick::orderbook::detail::PriceLevelL3::insertOrder().
|
inlineconstexprnoexcept |
Remove specific element from list O(1) operation - no search required.
Definition at line 438 of file intrusive_list.hpp.
Referenced by slick::orderbook::detail::PriceLevelL3::removeOrder().
|
inlineconstexprnoexcept |
Definition at line 349 of file intrusive_list.hpp.
|
inlineconstexprnoexcept |
Get front element.
Definition at line 345 of file intrusive_list.hpp.
Referenced by slick::orderbook::detail::PriceLevelL3::getBestOrder(), and slick::orderbook::detail::PriceLevelL3::getBestOrder().
|
inlineconstexprnoexcept |
Insert element after given position O(1) operation.
Definition at line 491 of file intrusive_list.hpp.
|
inlineconstexprnoexcept |
Insert element before given position O(1) operation.
Definition at line 465 of file intrusive_list.hpp.
Referenced by slick::orderbook::detail::PriceLevelL3::insertOrder().
|
delete |
|
inlineconstexprnoexcept |
Definition at line 322 of file intrusive_list.hpp.
|
inlineconstexprnoexcept |
Remove back element.
Definition at line 415 of file intrusive_list.hpp.
|
inlineconstexprnoexcept |
Remove front element.
Definition at line 393 of file intrusive_list.hpp.
|
inlineconstexprnoexcept |
Add element to back (oldest order, FIFO time priority)
Definition at line 378 of file intrusive_list.hpp.
Referenced by slick::orderbook::detail::PriceLevelL3::insertOrder().
|
inlineconstexprnoexcept |
Add element to front (newest order, used for LIFO if needed)
Definition at line 363 of file intrusive_list.hpp.
|
inlineconstexprnoexcept |
Definition at line 561 of file intrusive_list.hpp.
|
inlineconstexprnoexcept |
Reverse iterators.
Definition at line 557 of file intrusive_list.hpp.
|
inlineconstexprnoexcept |
Definition at line 573 of file intrusive_list.hpp.
|
inlineconstexprnoexcept |
Definition at line 569 of file intrusive_list.hpp.
|
inlineconstexprnoexcept |
Get number of elements.
Definition at line 340 of file intrusive_list.hpp.
Referenced by slick::orderbook::detail::PriceLevelL3::orderCount().