libjmmcg
release_579_6_g8cffd
A C++ library containing an eclectic mix of useful, advanced components.
|
A "good enough for PPD" implementation of a singly-linked, hybrid, intrusive, pointer-based list. More...
#include <intrusive.hpp>
Public Member Functions | |
__stdcall | slist () noexcept(true) FORCE_INLINE |
slist (slist &&) noexcept(true) FORCE_INLINE | |
__stdcall | ~slist () noexcept(true) FORCE_INLINE |
iterator __fastcall | find (const_reference v) noexcept(true) FORCE_INLINE |
Find if the element is within the container. More... | |
const_iterator __fastcall | find (const_reference v) const noexcept(true) FORCE_INLINE |
Find if the element is within the container. More... | |
size_type __fastcall | erase (const_reference v) noexcept(true) FORCE_INLINE |
Remove the element from the container. More... | |
value_type __fastcall | front () noexcept(true) FORCE_INLINE |
value_type __fastcall | front () const noexcept(true) FORCE_INLINE |
value_type __fastcall | back () noexcept(true) FORCE_INLINE |
value_type __fastcall | back () const noexcept(true) FORCE_INLINE |
void __fastcall | push_front (value_type const &v) noexcept(true) FORCE_INLINE |
void __fastcall | push_front (value_type &&v) noexcept(true) FORCE_INLINE |
void __fastcall | pop_front () noexcept(true) FORCE_INLINE |
void __fastcall | push_back (value_type const &v) noexcept(true) FORCE_INLINE |
void __fastcall | push_back (value_type &&v) noexcept(true) FORCE_INLINE |
bool | penultimate_reachable_from_prefront () const noexcept(true) FORCE_INLINE |
void __fastcall | erase (iterator v) noexcept(true) FORCE_INLINE |
Remove the element from the container. More... | |
size_type __fastcall | erase (const_reference v) noexcept(true) FORCE_INLINE |
Non-atomically remove the element from the container. More... | |
![]() | |
BOOST_MPL_ASSERT ((std::is_base_of< typename node_details_t::base_t, typename value_type::value_type >)) | |
__stdcall | stack () noexcept(true) FORCE_INLINE |
stack (stack const &)=delete | |
stack (stack &&) noexcept(true) FORCE_INLINE | |
virtual __stdcall | ~stack () noexcept(true) FORCE_INLINE |
iterator __fastcall | begin () noexcept(true) FORCE_INLINE |
const_iterator __fastcall | begin () const noexcept(true) FORCE_INLINE |
iterator __fastcall | end () noexcept(true) FORCE_INLINE |
const_iterator __fastcall | end () const noexcept(true) FORCE_INLINE |
bool __fastcall | empty () const noexcept(true) FORCE_INLINE |
Return true if the container is empty, false otherwise. More... | |
size_type __fastcall | size () const noexcept(true) FORCE_INLINE |
Atomically return the number of elements in the container. More... | |
size_type __fastcall | size_n () const noexcept(true) FORCE_INLINE |
Non-atomically return the number of elements in the container. More... | |
void __fastcall | erase (iterator v) noexcept(true) FORCE_INLINE |
Remove the element from the container. More... | |
size_type __fastcall | erase (const_reference v) noexcept(true) FORCE_INLINE |
Non-atomically remove the element from the container. More... | |
void __fastcall | clear () noexcept(true) FORCE_INLINE |
Remove all of the elements from the container. More... | |
value_type __fastcall | top () noexcept(true) FORCE_INLINE |
value_type __fastcall | top () const noexcept(true) FORCE_INLINE |
void __fastcall | push (value_type const &v) noexcept(true) FORCE_INLINE |
void __fastcall | push (value_type &&v) noexcept(true) FORCE_INLINE |
void __fastcall | push_front (value_type const &v) noexcept(true) FORCE_INLINE |
void __fastcall | push_front (value_type &&v) noexcept(true) FORCE_INLINE |
void __fastcall | pop () noexcept(true) FORCE_INLINE |
void __fastcall | pop_front () noexcept(true) FORCE_INLINE |
value_type __fastcall | pop_top_nochk () noexcept(true) FORCE_INLINE |
A "good enough for PPD" implementation of a singly-linked, hybrid, intrusive, pointer-based list.
When inserting a node, no memory allocations are required, which is good in a multi-threading environment as it reduces calls to any memory allocator. If you don't like the cut-down interface of this container, blame YAGNI & TDD.
Definition at line 489 of file intrusive.hpp.
typedef stack<V, LkT> jmmcg::LIBJMMCG_VER_NAMESPACE::intrusive::slist< V, LkT >::base_t |
Definition at line 491 of file intrusive.hpp.
typedef base_t::const_iterator jmmcg::LIBJMMCG_VER_NAMESPACE::intrusive::slist< V, LkT >::const_iterator |
Definition at line 497 of file intrusive.hpp.
typedef base_t::const_pointer jmmcg::LIBJMMCG_VER_NAMESPACE::intrusive::slist< V, LkT >::const_pointer |
Definition at line 501 of file intrusive.hpp.
typedef base_t::const_reference jmmcg::LIBJMMCG_VER_NAMESPACE::intrusive::slist< V, LkT >::const_reference |
Definition at line 502 of file intrusive.hpp.
typedef base_t::ctr_type jmmcg::LIBJMMCG_VER_NAMESPACE::intrusive::slist< V, LkT >::ctr_type |
Definition at line 505 of file intrusive.hpp.
typedef base_t::deleter_t jmmcg::LIBJMMCG_VER_NAMESPACE::intrusive::slist< V, LkT >::deleter_t |
Definition at line 504 of file intrusive.hpp.
typedef base_t::difference_type jmmcg::LIBJMMCG_VER_NAMESPACE::intrusive::slist< V, LkT >::difference_type |
Definition at line 498 of file intrusive.hpp.
typedef base_t::exception_type jmmcg::LIBJMMCG_VER_NAMESPACE::intrusive::slist< V, LkT >::exception_type |
Definition at line 506 of file intrusive.hpp.
typedef base_t::iterator jmmcg::LIBJMMCG_VER_NAMESPACE::intrusive::slist< V, LkT >::iterator |
Definition at line 496 of file intrusive.hpp.
typedef base_t::lock_traits jmmcg::LIBJMMCG_VER_NAMESPACE::intrusive::slist< V, LkT >::lock_traits |
Definition at line 493 of file intrusive.hpp.
typedef base_t::pointer jmmcg::LIBJMMCG_VER_NAMESPACE::intrusive::slist< V, LkT >::pointer |
Definition at line 499 of file intrusive.hpp.
typedef base_t::reference jmmcg::LIBJMMCG_VER_NAMESPACE::intrusive::slist< V, LkT >::reference |
Definition at line 500 of file intrusive.hpp.
typedef base_t::size_ctr_t jmmcg::LIBJMMCG_VER_NAMESPACE::intrusive::slist< V, LkT >::size_ctr_t |
Definition at line 494 of file intrusive.hpp.
typedef base_t::size_type jmmcg::LIBJMMCG_VER_NAMESPACE::intrusive::slist< V, LkT >::size_type |
Definition at line 495 of file intrusive.hpp.
typedef base_t::value_type jmmcg::LIBJMMCG_VER_NAMESPACE::intrusive::slist< V, LkT >::value_type |
Definition at line 492 of file intrusive.hpp.
|
inlinenoexcept |
Definition at line 259 of file intrusive_impl.hpp.
|
inlinenoexcept |
Definition at line 265 of file intrusive_impl.hpp.
|
inlinenoexcept |
Algorithmic complexity: O(n)
Definition at line 329 of file intrusive_impl.hpp.
|
inlinenoexcept |
Algorithmic complexity: O(1)
Definition at line 341 of file intrusive_impl.hpp.
|
inlinenoexcept |
Algorithmic complexity: O(1)
Definition at line 334 of file intrusive_impl.hpp.
|
inlinenoexcept |
Non-atomically remove the element from the container.
Algorithmic complexity: O(n).
v | The value equivalent to the element to be removed. |
Definition at line 402 of file intrusive_impl.hpp.
|
inlinenoexcept |
Remove the element from the container.
Algorithmic complexity: O(n).
v | The value equivalent to the element to be removed. |
Definition at line 317 of file intrusive_impl.hpp.
|
inlinenoexcept |
Remove the element from the container.
Algorithmic complexity: O(1)
v | Iterator to the element to be removed. |
Definition at line 394 of file intrusive_impl.hpp.
|
inlinenoexcept |
Find if the element is within the container.
Algorithmic complexity: O(n).
v | The element to be found. |
Definition at line 298 of file intrusive_impl.hpp.
|
inlinenoexcept |
Find if the element is within the container.
Algorithmic complexity: O(n).
v | The element to be found. |
Definition at line 288 of file intrusive_impl.hpp.
|
inlinenoexcept |
Algorithmic complexity: O(1)
Definition at line 282 of file intrusive_impl.hpp.
|
inlinenoexcept |
Algorithmic complexity: O(1)
Definition at line 276 of file intrusive_impl.hpp.
|
inlinenoexcept |
Algorithmic complexity: O(n)
Definition at line 409 of file intrusive_impl.hpp.
|
inlinenoexcept |
Algorithmic complexity: O(1)
Definition at line 308 of file intrusive_impl.hpp.
|
inlinenoexcept |
Note that this is NOT atomic! So NOT thread-safe. Algorithmic complexity: O(1)
v | The element to be added. |
Definition at line 396 of file intrusive_impl.hpp.
|
inlinenoexcept |
Note that this is NOT atomic! So NOT thread-safe. Algorithmic complexity: O(1)
v | The element to be added. |
Definition at line 383 of file intrusive_impl.hpp.
|
inlinenoexcept |
Algorithmic complexity: O(1)
v | The element to be added. |
Definition at line 361 of file intrusive_impl.hpp.
|
inlinenoexcept |
Algorithmic complexity: O(1)
v | The element to be added. |
Definition at line 348 of file intrusive_impl.hpp.