//$$CDS-header$$
-#ifndef __CDS_INTRUSIVE_DETAILS_MICHAEL_LIST_BASE_H
-#define __CDS_INTRUSIVE_DETAILS_MICHAEL_LIST_BASE_H
+#ifndef CDSLIB_INTRUSIVE_DETAILS_MICHAEL_LIST_BASE_H
+#define CDSLIB_INTRUSIVE_DETAILS_MICHAEL_LIST_BASE_H
#include <type_traits>
#include <cds/intrusive/details/base.h>
#include <cds/opt/compare.h>
-#include <cds/cxx11_atomic.h>
+#include <cds/algo/atomic.h>
#include <cds/details/marked_ptr.h>
#include <cds/urcu/options.h>
/// Michael's list node
/**
Template parameters:
- - GC - garbage collector
- - Tag - a tag used to distinguish between different implementation
+ - \p GC - garbage collector
+ - \p Tag - a \ref cds_intrusive_hook_tag "tag"
*/
template <class GC, typename Tag = opt::none>
struct node
/**
\p Options are:
- opt::gc - garbage collector used.
- - opt::tag - tag
+ - opt::tag - a \ref cds_intrusive_hook_tag "tag"
*/
template < typename... Options >
struct base_hook: public hook< opt::base_hook_tag, Options... >
\p Options are:
- opt::gc - garbage collector used.
- - opt::tag - tag
+ - opt::tag - a \ref cds_intrusive_hook_tag "tag"
*/
template < size_t MemberOffset, typename... Options >
struct member_hook: public hook< opt::member_hook_tag, Options... >
\p Options are:
- opt::gc - garbage collector used.
- - opt::tag - tag
+ - opt::tag - a \ref cds_intrusive_hook_tag "tag"
*/
template <typename NodeTraits, typename... Options >
struct traits_hook: public hook< opt::traits_hook_tag, Options... >
static void is_empty( const node_type * pNode )
{
assert( pNode->m_pNext.load( atomics::memory_order_relaxed ) == nullptr );
+ CDS_UNUSED( pNode );
}
};
static const opt::link_check_type link_checker = opt::debug_check_link;
/// C++ memory ordering model
- /**
+ /**
Can be \p opt::v::relaxed_ordering (relaxed memory model, the default)
or \p opt::v::sequential_consistent (sequentially consisnent memory model).
*/
}} // namespace cds::intrusive
-#endif // #ifndef __CDS_INTRUSIVE_DETAILS_MICHAEL_LIST_BASE_H
+#endif // #ifndef CDSLIB_INTRUSIVE_DETAILS_MICHAEL_LIST_BASE_H