-# ifndef CDS_CXX11_LAMBDA_SUPPORT
- template <typename Func>
- class insert_functor_wrapper: protected cds::details::functor_wrapper<Func>
- {
- typedef cds::details::functor_wrapper<Func> base_class;
- public:
- insert_functor_wrapper( Func f ): base_class(f) {}
-
- void operator()(node_type& node)
- {
- base_class::get()( node.m_Value );
- }
- };
-
- template <typename Func, typename Q>
- class ensure_functor_wrapper: protected cds::details::functor_wrapper<Func>
- {
- typedef cds::details::functor_wrapper<Func> base_class;
- Q const& m_val;
- public:
- ensure_functor_wrapper( Func f, Q const& v ): base_class(f), m_val(v) {}
-
- void operator()( bool bNew, node_type& item, node_type const& /*val*/ )
- {
- base_class::get()( bNew, item.m_Value, m_val );
- }
- };
-
- template <typename Func>
- class find_functor_wrapper: protected cds::details::functor_wrapper<Func>
- {
- typedef cds::details::functor_wrapper<Func> base_class;
- public:
- find_functor_wrapper( Func f ): base_class(f) {}
-
- template <typename Q>
- void operator()( node_type& item, Q& val )
- {
- base_class::get()( item.m_Value, val );
- }
- };
-
- struct empty_find_functor
- {
- template <typename Q>
- void operator()( node_type&, Q& )
- {}
- };
-
- template <typename Func>
- class erase_functor_wrapper: protected cds::details::functor_wrapper<Func>
- {
- typedef cds::details::functor_wrapper<Func> base_class;
- public:
- erase_functor_wrapper( Func f ): base_class( f ) {}
-
- void operator()(node_type& node)
- {
- base_class::get()( node.m_Value );
- }
- };
-# endif // ifndef CDS_CXX11_LAMBDA_SUPPORT
- //@endcond
-
- protected:
- /// Forward iterator
- /**
- \p IsConst - constness boolean flag
-
- The forward iterator for a split-list has the following features:
- - it has no post-increment operator
- - it depends on underlying ordered list iterator
- - it is safe to iterate only inside RCU critical section
- - deleting an item pointed by the iterator can cause to deadlock
-
- Therefore, the use of iterators in concurrent environment is not good idea.
- Use it for debug purpose only.
- */