CUBRID Engine
latest
|
#include <lockfree_address_marker.hpp>
Public Member Functions | |
address_marker () | |
address_marker (T *addr) | |
bool | is_marked () const |
T * | get_address () const |
T * | get_address_no_strip () const |
Static Public Member Functions | |
static T * | set_adress_mark (T *addr) |
static T * | strip_address_mark (T *addr) |
static bool | is_address_marked (T *addr) |
static T * | atomic_strip_address_mark (T *addr) |
Private Types | |
using | convert_type = std::uint64_t |
Static Private Member Functions | |
static convert_type | to_cnv_type (T *addr) |
static T * | to_addr (convert_type ct) |
static bool | is_ct_marked (convert_type ct) |
static convert_type | set_ct_mark (convert_type ct) |
static convert_type | strip_ct_mark (convert_type ct) |
Private Attributes | |
std::atomic< T * > | m_addr |
Static Private Attributes | |
static const convert_type | MARK = 0x1 |
Definition at line 32 of file lockfree_address_marker.hpp.
|
private |
Definition at line 35 of file lockfree_address_marker.hpp.
lockfree::address_marker< T >::address_marker | ( | ) |
Definition at line 74 of file lockfree_address_marker.hpp.
References NULL.
Referenced by lockfree::address_marker< T >::atomic_strip_address_mark().
lockfree::address_marker< T >::address_marker | ( | T * | addr | ) |
Definition at line 80 of file lockfree_address_marker.hpp.
|
static |
Definition at line 164 of file lockfree_address_marker.hpp.
References lockfree::address_marker< T >::address_marker().
Referenced by lockfree::hashmap< Key, T >::iterator::iterate(), lockfree::hashmap< Key, T >::list_delete(), lockfree::hashmap< Key, T >::list_find(), and lockfree::hashmap< Key, T >::list_insert_internal().
T * lockfree::address_marker< T >::get_address | ( | ) | const |
Definition at line 108 of file lockfree_address_marker.hpp.
References lockfree::address_marker< T >::m_addr, and lockfree::address_marker< T >::strip_address_mark().
T * lockfree::address_marker< T >::get_address_no_strip | ( | ) | const |
Definition at line 115 of file lockfree_address_marker.hpp.
References lockfree::address_marker< T >::m_addr.
|
static |
Definition at line 157 of file lockfree_address_marker.hpp.
References lockfree::address_marker< T >::is_ct_marked(), and lockfree::address_marker< T >::to_cnv_type().
Referenced by lockfree::hashmap< Key, T >::destroy(), lockfree::hashmap< Key, T >::get_ptr(), lockfree::hashmap< Key, T >::get_ref(), lockfree::address_marker< T >::is_marked(), lockfree::hashmap< Key, T >::iterator::iterate(), lockfree::hashmap< Key, T >::list_find(), and lockfree::hashmap< Key, T >::list_insert_internal().
|
staticprivate |
Definition at line 122 of file lockfree_address_marker.hpp.
References lockfree::address_marker< T >::MARK.
Referenced by lockfree::address_marker< T >::is_address_marked().
bool lockfree::address_marker< T >::is_marked | ( | ) | const |
Definition at line 101 of file lockfree_address_marker.hpp.
References lockfree::address_marker< T >::is_address_marked(), and lockfree::address_marker< T >::m_addr.
|
static |
Definition at line 143 of file lockfree_address_marker.hpp.
References lockfree::address_marker< T >::set_ct_mark(), lockfree::address_marker< T >::to_addr(), and lockfree::address_marker< T >::to_cnv_type().
Referenced by lockfree::hashmap< Key, T >::clear(), lockfree::hashmap< Key, T >::init(), and lockfree::hashmap< Key, T >::list_delete().
|
staticprivate |
Definition at line 129 of file lockfree_address_marker.hpp.
References lockfree::address_marker< T >::MARK.
Referenced by lockfree::address_marker< T >::set_adress_mark().
|
static |
Definition at line 150 of file lockfree_address_marker.hpp.
References lockfree::address_marker< T >::strip_ct_mark(), lockfree::address_marker< T >::to_addr(), and lockfree::address_marker< T >::to_cnv_type().
Referenced by lockfree::hashmap< Key, T >::clear(), lockfree::address_marker< T >::get_address(), lockfree::hashmap< Key, T >::iterator::iterate(), lockfree::hashmap< Key, T >::list_delete(), lockfree::hashmap< Key, T >::list_find(), and lockfree::hashmap< Key, T >::list_insert_internal().
|
staticprivate |
Definition at line 136 of file lockfree_address_marker.hpp.
References lockfree::address_marker< T >::MARK.
Referenced by lockfree::address_marker< T >::strip_address_mark().
|
staticprivate |
Definition at line 94 of file lockfree_address_marker.hpp.
Referenced by lockfree::address_marker< T >::set_adress_mark(), and lockfree::address_marker< T >::strip_address_mark().
|
staticprivate |
Definition at line 87 of file lockfree_address_marker.hpp.
Referenced by lockfree::address_marker< T >::is_address_marked(), lockfree::address_marker< T >::set_adress_mark(), and lockfree::address_marker< T >::strip_address_mark().
|
private |
Definition at line 60 of file lockfree_address_marker.hpp.
Referenced by lockfree::address_marker< T >::get_address(), lockfree::address_marker< T >::get_address_no_strip(), and lockfree::address_marker< T >::is_marked().
|
staticprivate |
Definition at line 36 of file lockfree_address_marker.hpp.
Referenced by lockfree::address_marker< T >::is_ct_marked(), lockfree::address_marker< T >::set_ct_mark(), and lockfree::address_marker< T >::strip_ct_mark().