CUBRID Engine  latest
lockfree::address_marker< T > Class Template Reference

#include <lockfree_address_marker.hpp>

Collaboration diagram for lockfree::address_marker< T >:
Collaboration graph

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
 

Detailed Description

template<class T>
class lockfree::address_marker< T >

Definition at line 32 of file lockfree_address_marker.hpp.

Member Typedef Documentation

template<class T>
using lockfree::address_marker< T >::convert_type = std::uint64_t
private

Definition at line 35 of file lockfree_address_marker.hpp.

Constructor & Destructor Documentation

template<class T >
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().

Here is the caller graph for this function:

template<class T>
lockfree::address_marker< T >::address_marker ( T *  addr)

Definition at line 80 of file lockfree_address_marker.hpp.

Member Function Documentation

template<class T>
T * lockfree::address_marker< T >::atomic_strip_address_mark ( T *  addr)
static
template<class T >
T * lockfree::address_marker< T >::get_address ( ) const
template<class T >
T * lockfree::address_marker< T >::get_address_no_strip ( ) const
template<class T >
bool lockfree::address_marker< T >::is_ct_marked ( convert_type  ct)
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().

Here is the caller graph for this function:

template<class T >
bool lockfree::address_marker< T >::is_marked ( ) const
template<class T >
address_marker< T >::convert_type lockfree::address_marker< T >::set_ct_mark ( convert_type  ct)
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().

Here is the caller graph for this function:

template<class T >
address_marker< T >::convert_type lockfree::address_marker< T >::strip_ct_mark ( convert_type  ct)
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().

Here is the caller graph for this function:

template<class T >
T * lockfree::address_marker< T >::to_addr ( convert_type  ct)
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().

Here is the caller graph for this function:

template<class T>
address_marker< T >::convert_type lockfree::address_marker< T >::to_cnv_type ( T *  addr)
staticprivate

Member Data Documentation


The documentation for this class was generated from the following file: