libjmmcg
release_579_6_g8cffd
A C++ library containing an eclectic mix of useful, advanced components.
|
Singly-linked intrusive node details. Inherit from this to provide the linkage structure and object-lifetime semantics of the list, which are specifically shared_ptr semantics. More...
#include <intrusive.hpp>
Public Types | |
using | base_t = sp_counter_itf_type< long > |
using | lock_traits = LkT |
using | atomic_ctr_t = base_t |
using | atomic_ptr_t = typename lock_traits::template atomic< node_details_itf * > |
![]() | |
typedef long | value_type |
typedef default_delete< sp_counter_itf_type > | deleter_t |
The default deletion method for objects that inherit from this intrusively-counted type, which is just heap-deletion, if the objects are heap-allocated. More... | |
Public Member Functions | |
virtual | ~node_details_itf () noexcept(true) FORCE_INLINE |
virtual tstring | to_string () const noexcept(false) FORCE_INLINE |
![]() | |
virtual | ~sp_counter_itf_type () |
virtual value_type | sp_count () const noexcept(true) |
virtual value_type | sp_acquire () noexcept(true) |
virtual bool | sp_release () noexcept(true) |
virtual bool | sp_noop_ctr () const noexcept(true) |
virtual bool __fastcall | operator< (const value_type) const noexcept(true) |
virtual bool __fastcall | operator> (const value_type) const noexcept(true) |
virtual bool __fastcall | operator>= (const value_type) const noexcept(true) |
constexpr bool FORCE_INLINE | operator== (const value_type v) const noexcept(true) |
virtual void | deleter () |
Call the correct deleter_t object to delete the object. More... | |
virtual tstring | sp_to_string () const noexcept(false) |
Public Attributes | |
atomic_ptr_t | next |
Protected Member Functions | |
node_details_itf () noexcept(true) FORCE_INLINE | |
![]() | |
constexpr | sp_counter_itf_type () noexcept(true) |
Additional Inherited Members | |
![]() | |
static constexpr ppd::generic_traits::memory_access_modes | memory_access_mode |
Singly-linked intrusive node details. Inherit from this to provide the linkage structure and object-lifetime semantics of the list, which are specifically shared_ptr semantics.
The use of the shared_ptr is very important: it solves the ABA problem that this implementation would otherwise suffer from.
Definition at line 43 of file intrusive.hpp.
using jmmcg::LIBJMMCG_VER_NAMESPACE::intrusive::node_details_itf< LkT >::atomic_ctr_t = base_t |
Definition at line 47 of file intrusive.hpp.
using jmmcg::LIBJMMCG_VER_NAMESPACE::intrusive::node_details_itf< LkT >::atomic_ptr_t = typename lock_traits::template atomic<node_details_itf *> |
Definition at line 48 of file intrusive.hpp.
using jmmcg::LIBJMMCG_VER_NAMESPACE::intrusive::node_details_itf< LkT >::base_t = sp_counter_itf_type<long> |
Definition at line 45 of file intrusive.hpp.
using jmmcg::LIBJMMCG_VER_NAMESPACE::intrusive::node_details_itf< LkT >::lock_traits = LkT |
Definition at line 46 of file intrusive.hpp.
|
inlinevirtualnoexcept |
Definition at line 52 of file intrusive.hpp.
|
inlineprotectednoexcept |
Definition at line 60 of file intrusive.hpp.
References jmmcg::LIBJMMCG_VER_NAMESPACE::intrusive::node_details_itf< LkT >::next.
|
inlinevirtualnoexcept |
Reimplemented in jmmcg::LIBJMMCG_VER_NAMESPACE::intrusive::private_::node_details< LkT >, jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::closure::thread_wk< generic_traits::return_data::nonjoinable, OST, ThrW, WFlg, Del, AtCtr, CFG >, jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::closure::thread_wk< generic_traits::return_data::joinable, OST, ThrW, WFlg, Del, AtCtr, CFG >, jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::closure::algo_thread_wk< OST, ThrW, WFlg, Del, AtCtr, CFG >, jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::closure::algo_thread_wk_buffered< OST, ThrW, WFlg, SubDivAlgWk, Del, AtCtr, CFG >, jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::closure::algo_thread_wk_buffered< os_traits, ThrW, WFlg, SubDivAlgWk, default_delete, atomic_wrapper_t, cfg_type >, jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::closure::thread_wk_async_t< generic_traits::return_data::nonjoinable, OST, Del, AtCtr, CFG >, jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::closure::thread_wk_async_t< generic_traits::return_data::joinable, OST, Del, AtCtr, CFG >, and jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::closure::thread_wk_base< OST, CFG >.
Definition at line 55 of file intrusive.hpp.
atomic_ptr_t jmmcg::LIBJMMCG_VER_NAMESPACE::intrusive::node_details_itf< LkT >::next |
Definition at line 50 of file intrusive.hpp.
Referenced by jmmcg::LIBJMMCG_VER_NAMESPACE::intrusive::node_details_itf< LkT >::node_details_itf().