Intel(R) Threading Building Blocks Doxygen Documentation  version 4.2.3
tbb::interface10::internal::concurrent_skip_list< Traits > Class Template Reference

#include <_concurrent_skip_list_impl.h>

Collaboration diagram for tbb::interface10::internal::concurrent_skip_list< Traits >:

Classes

class  const_range_type
 
struct  not_greater_compare
 
class  range_type
 

Public Member Functions

 concurrent_skip_list ()
 
 concurrent_skip_list (const key_compare &comp, const allocator_type &alloc=allocator_type())
 
template<class InputIt >
 concurrent_skip_list (InputIt first, InputIt last, const key_compare &comp=key_compare(), const allocator_type &alloc=allocator_type())
 
 concurrent_skip_list (const concurrent_skip_list &other)
 
 concurrent_skip_list (const concurrent_skip_list &other, const allocator_type &alloc)
 
 concurrent_skip_list (concurrent_skip_list &&other)
 
 concurrent_skip_list (concurrent_skip_list &&other, const allocator_type &alloc)
 
 ~concurrent_skip_list ()
 
concurrent_skip_listoperator= (const concurrent_skip_list &other)
 
concurrent_skip_listoperator= (concurrent_skip_list &&other)
 
concurrent_skip_listoperator= (std::initializer_list< value_type > il)
 
std::pair< iterator, bool > insert (const value_type &value)
 
std::pair< iterator, bool > insert (value_type &&value)
 
iterator insert (const_iterator, const_reference value)
 
iterator insert (const_iterator, value_type &&value)
 
template<typename InputIterator >
void insert (InputIterator first, InputIterator last)
 
void insert (std::initializer_list< value_type > init)
 
std::pair< iterator, bool > insert (node_type &&nh)
 
iterator insert (const_iterator, node_type &&nh)
 
template<typename... Args>
std::pair< iterator, bool > emplace (Args &&... args)
 
template<typename... Args>
iterator emplace_hint (const_iterator, Args &&... args)
 
iterator unsafe_erase (iterator pos)
 
iterator unsafe_erase (const_iterator first, const_iterator last)
 
size_type unsafe_erase (const key_type &key)
 
node_type unsafe_extract (const_iterator pos)
 
node_type unsafe_extract (const key_type &key)
 
iterator lower_bound (const key_type &key)
 
const_iterator lower_bound (const key_type &key) const
 
template<typename K , typename = typename std::enable_if<tbb::internal::has_is_transparent<key_compare>::value, K>::type>
iterator lower_bound (const K &key)
 
template<typename K , typename = typename std::enable_if<tbb::internal::has_is_transparent<key_compare>::value, K>::type>
const_iterator lower_bound (const K &key) const
 
iterator upper_bound (const key_type &key)
 
const_iterator upper_bound (const key_type &key) const
 
template<typename K , typename = typename std::enable_if<tbb::internal::has_is_transparent<key_compare>::value, K>::type>
iterator upper_bound (const K &key)
 
template<typename K , typename = typename std::enable_if<tbb::internal::has_is_transparent<key_compare>::value, K>::type>
const_iterator upper_bound (const K &key) const
 
iterator find (const key_type &key)
 
const_iterator find (const key_type &key) const
 
template<typename K , typename = typename std::enable_if<tbb::internal::has_is_transparent<key_compare>::value, K>::type>
iterator find (const K &key)
 
template<typename K , typename = typename std::enable_if<tbb::internal::has_is_transparent<key_compare>::value, K>::type>
const_iterator find (const K &key) const
 
size_type count (const key_type &key) const
 
template<typename K , typename = typename std::enable_if<tbb::internal::has_is_transparent<key_compare>::value, K>::type>
size_type count (const K &key) const
 
bool contains (const key_type &key) const
 
template<typename K , typename = typename std::enable_if<tbb::internal::has_is_transparent<key_compare>::value, K>::type>
bool contains (const K &key) const
 
void clear () noexcept
 
iterator begin ()
 
const_iterator begin () const
 
const_iterator cbegin () const
 
iterator end ()
 
const_iterator end () const
 
const_iterator cend () const
 
size_type size () const
 
size_type max_size () const
 
bool empty () const
 
allocator_type get_allocator () const
 
void swap (concurrent_skip_list &other)
 
std::pair< iterator, iteratorequal_range (const key_type &key)
 
std::pair< const_iterator, const_iteratorequal_range (const key_type &key) const
 
template<typename K , typename = typename std::enable_if<tbb::internal::has_is_transparent<key_compare>::value, K>::type>
std::pair< iterator, iteratorequal_range (const K &key)
 
template<typename K , typename = typename std::enable_if<tbb::internal::has_is_transparent<key_compare>::value, K>::type>
std::pair< const_iterator, const_iteratorequal_range (const K &key) const
 
key_compare key_comp () const
 
value_compare value_comp () const
 
range_type range ()
 
const_range_type range () const
 

Static Public Attributes

static bool const allow_multimapping = traits_type::allow_multimapping
 

Protected Types

using traits_type = Traits
 
using allocator_type = typename traits_type::allocator_type
 
using allocator_traits_type = std::allocator_traits< allocator_type >
 
using key_compare = typename traits_type::compare_type
 
using value_compare = typename traits_type::value_compare
 
using key_type = typename traits_type::key_type
 
using value_type = typename traits_type::value_type
 
using node_type = typename traits_type::node_type
 
using list_node_type = skip_list_node< value_type, typename traits_type::mutex_type >
 
using iterator = skip_list_iterator< list_node_type, false >
 
using const_iterator = skip_list_iterator< list_node_type, true >
 
using reverse_iterator = std::reverse_iterator< iterator >
 
using const_reverse_iterator = std::reverse_iterator< const_iterator >
 
using reference = value_type &
 
using const_reference = const value_type &
 
using pointer = typename allocator_traits_type::pointer
 
using const_pointer = typename allocator_traits_type::const_pointer
 
using size_type = std::size_t
 
using difference_type = std::ptrdiff_t
 
using random_level_generator_type = typename traits_type::random_level_generator_type
 
using node_allocator_type = typename std::allocator_traits< allocator_type >::template rebind_alloc< uint8_t >
 
using node_allocator_traits = typename std::allocator_traits< allocator_type >::template rebind_traits< uint8_t >
 
using node_ptr = list_node_type *
 
using array_type = std::array< node_ptr, MAX_LEVEL >
 
using lock_array = std::array< typename list_node_type::lock_type, MAX_LEVEL >
 

Protected Member Functions

template<typename SourceType >
void internal_merge (SourceType &&source)
 

Static Protected Attributes

static constexpr size_type MAX_LEVEL = traits_type::MAX_LEVEL
 

Private Member Functions

void internal_move (concurrent_skip_list &&other)
 
template<typename K >
iterator internal_find (const K &key)
 
template<typename K >
const_iterator internal_find (const K &key) const
 
template<typename K >
size_type internal_count (const K &key) const
 
template<typename K , typename pointer_type , typename comparator >
pointer_type internal_find_position (size_type level, pointer_type &prev, const K &key, const comparator &cmp) const
 
template<typename comparator >
void fill_prev_next_arrays (array_type &prev_nodes, array_type &next_nodes, node_ptr prev, const key_type &key, const comparator &cmp)
 
template<typename... Args>
std::pair< iterator, bool > internal_insert (Args &&... args)
 
std::pair< iterator, bool > internal_insert_node (node_ptr new_node)
 
bool try_insert_node (node_ptr new_node, array_type &prev_nodes, array_type &next_nodes)
 
bool try_lock_nodes (size_type height, array_type &prevs, array_type &next_nodes, lock_array &locks)
 
template<typename K , typename comparator >
const_iterator internal_get_bound (const K &key, const comparator &cmp) const
 
template<typename K , typename comparator >
iterator internal_get_bound (const K &key, const comparator &cmp)
 
std::pair< node_ptr, node_ptrinternal_extract (const_iterator it)
 
void internal_copy (const concurrent_skip_list &other)
 
template<typename Iterator >
void internal_copy (Iterator first, Iterator last)
 
size_type random_level ()
 
template<typename... Args>
node_ptr create_node (Args &&... args)
 
void create_dummy_head ()
 
template<bool is_dummy = false>
void delete_node (node_ptr node)
 
void deallocate_node (node_ptr node, size_type sz)
 
void delete_dummy_head ()
 
void internal_move_assign (concurrent_skip_list &&other, std::true_type)
 
void internal_move_assign (concurrent_skip_list &&other, std::false_type)
 

Static Private Member Functions

static const key_typeget_key (node_ptr n)
 
static size_type calc_node_size (size_type height)
 
static iterator get_iterator (const_iterator it)
 

Private Attributes

node_allocator_type my_node_allocator
 
key_compare my_compare
 
random_level_generator_type my_rnd_generator
 
node_ptr dummy_head
 
std::atomic< size_typemy_size
 

Friends

template<typename OtherTraits >
class concurrent_skip_list
 

Detailed Description

template<typename Traits>
class tbb::interface10::internal::concurrent_skip_list< Traits >

Definition at line 215 of file _concurrent_skip_list_impl.h.

Member Typedef Documentation

◆ allocator_traits_type

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::allocator_traits_type = std::allocator_traits<allocator_type>
protected

Definition at line 219 of file _concurrent_skip_list_impl.h.

◆ allocator_type

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::allocator_type = typename traits_type::allocator_type
protected

Definition at line 218 of file _concurrent_skip_list_impl.h.

◆ array_type

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::array_type = std::array<node_ptr, MAX_LEVEL>
protected

Definition at line 246 of file _concurrent_skip_list_impl.h.

◆ const_iterator

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::const_iterator = skip_list_iterator<list_node_type, true>
protected

Definition at line 228 of file _concurrent_skip_list_impl.h.

◆ const_pointer

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::const_pointer = typename allocator_traits_type::const_pointer
protected

Definition at line 235 of file _concurrent_skip_list_impl.h.

◆ const_reference

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::const_reference = const value_type&
protected

Definition at line 233 of file _concurrent_skip_list_impl.h.

◆ const_reverse_iterator

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::const_reverse_iterator = std::reverse_iterator<const_iterator>
protected

Definition at line 230 of file _concurrent_skip_list_impl.h.

◆ difference_type

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::difference_type = std::ptrdiff_t
protected

Definition at line 237 of file _concurrent_skip_list_impl.h.

◆ iterator

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::iterator = skip_list_iterator<list_node_type, false>
protected

Definition at line 227 of file _concurrent_skip_list_impl.h.

◆ key_compare

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::key_compare = typename traits_type::compare_type
protected

Definition at line 220 of file _concurrent_skip_list_impl.h.

◆ key_type

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::key_type = typename traits_type::key_type
protected

Definition at line 222 of file _concurrent_skip_list_impl.h.

◆ list_node_type

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::list_node_type = skip_list_node<value_type, typename traits_type::mutex_type>
protected

Definition at line 225 of file _concurrent_skip_list_impl.h.

◆ lock_array

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::lock_array = std::array<typename list_node_type::lock_type, MAX_LEVEL>
protected

Definition at line 247 of file _concurrent_skip_list_impl.h.

◆ node_allocator_traits

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::node_allocator_traits = typename std::allocator_traits<allocator_type>::template rebind_traits<uint8_t>
protected

Definition at line 241 of file _concurrent_skip_list_impl.h.

◆ node_allocator_type

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::node_allocator_type = typename std::allocator_traits<allocator_type>::template rebind_alloc<uint8_t>
protected

Definition at line 240 of file _concurrent_skip_list_impl.h.

◆ node_ptr

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::node_ptr = list_node_type*
protected

Definition at line 242 of file _concurrent_skip_list_impl.h.

◆ node_type

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::node_type = typename traits_type::node_type
protected

Definition at line 224 of file _concurrent_skip_list_impl.h.

◆ pointer

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::pointer = typename allocator_traits_type::pointer
protected

Definition at line 234 of file _concurrent_skip_list_impl.h.

◆ random_level_generator_type

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::random_level_generator_type = typename traits_type::random_level_generator_type
protected

Definition at line 239 of file _concurrent_skip_list_impl.h.

◆ reference

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::reference = value_type&
protected

Definition at line 232 of file _concurrent_skip_list_impl.h.

◆ reverse_iterator

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::reverse_iterator = std::reverse_iterator<iterator>
protected

Definition at line 229 of file _concurrent_skip_list_impl.h.

◆ size_type

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::size_type = std::size_t
protected

Definition at line 236 of file _concurrent_skip_list_impl.h.

◆ traits_type

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::traits_type = Traits
protected

Definition at line 217 of file _concurrent_skip_list_impl.h.

◆ value_compare

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::value_compare = typename traits_type::value_compare
protected

Definition at line 221 of file _concurrent_skip_list_impl.h.

◆ value_type

template<typename Traits >
using tbb::interface10::internal::concurrent_skip_list< Traits >::value_type = typename traits_type::value_type
protected

Definition at line 223 of file _concurrent_skip_list_impl.h.

Constructor & Destructor Documentation

◆ concurrent_skip_list() [1/7]

template<typename Traits >
tbb::interface10::internal::concurrent_skip_list< Traits >::concurrent_skip_list ( )
inline

Default constructor. Construct empty skip list.

Definition at line 255 of file _concurrent_skip_list_impl.h.

◆ concurrent_skip_list() [2/7]

◆ concurrent_skip_list() [3/7]

template<typename Traits >
template<class InputIt >
tbb::interface10::internal::concurrent_skip_list< Traits >::concurrent_skip_list ( InputIt  first,
InputIt  last,
const key_compare comp = key_compare(),
const allocator_type alloc = allocator_type() 
)
inline

Definition at line 266 of file _concurrent_skip_list_impl.h.

◆ concurrent_skip_list() [4/7]

template<typename Traits >
tbb::interface10::internal::concurrent_skip_list< Traits >::concurrent_skip_list ( const concurrent_skip_list< Traits > &  other)
inline

Copy constructor

Definition at line 275 of file _concurrent_skip_list_impl.h.

References __TBB_ASSERT, and tbb::interface10::internal::concurrent_skip_list< Traits >::my_size.

276  : my_node_allocator(node_allocator_traits::select_on_container_copy_construction(other.get_allocator())),
277  my_compare(other.my_compare), my_rnd_generator(other.my_rnd_generator), my_size(0)
278  {
280  internal_copy(other);
281  __TBB_ASSERT(my_size == other.my_size, "Wrong size of copy-constructed container");
282  }
void internal_copy(const concurrent_skip_list &other)
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
Definition: tbb_stddef.h:165

◆ concurrent_skip_list() [5/7]

template<typename Traits >
tbb::interface10::internal::concurrent_skip_list< Traits >::concurrent_skip_list ( const concurrent_skip_list< Traits > &  other,
const allocator_type alloc 
)
inline

Definition at line 284 of file _concurrent_skip_list_impl.h.

References __TBB_ASSERT, and tbb::interface10::internal::concurrent_skip_list< Traits >::my_size.

285  : my_node_allocator(alloc), my_compare(other.my_compare),
286  my_rnd_generator(other.my_rnd_generator), my_size(0)
287  {
289  internal_copy(other);
290  __TBB_ASSERT(my_size == other.my_size, "Wrong size of copy-constructed container");
291  }
void internal_copy(const concurrent_skip_list &other)
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
Definition: tbb_stddef.h:165

◆ concurrent_skip_list() [6/7]

template<typename Traits >
tbb::interface10::internal::concurrent_skip_list< Traits >::concurrent_skip_list ( concurrent_skip_list< Traits > &&  other)
inline

Definition at line 293 of file _concurrent_skip_list_impl.h.

References tbb::move().

294  : my_node_allocator(std::move(other.my_node_allocator)), my_compare(other.my_compare),
295  my_rnd_generator(other.my_rnd_generator)
296  {
297  internal_move(std::move(other));
298  }
void move(tbb_thread &t1, tbb_thread &t2)
Definition: tbb_thread.h:305
Here is the call graph for this function:

◆ concurrent_skip_list() [7/7]

template<typename Traits >
tbb::interface10::internal::concurrent_skip_list< Traits >::concurrent_skip_list ( concurrent_skip_list< Traits > &&  other,
const allocator_type alloc 
)
inline

Definition at line 300 of file _concurrent_skip_list_impl.h.

References tbb::move().

301  : my_node_allocator(alloc), my_compare(other.my_compare),
302  my_rnd_generator(other.my_rnd_generator)
303  {
304  if (alloc == other.get_allocator()) {
305  internal_move(std::move(other));
306  } else {
307  my_size = 0;
309  internal_copy(std::make_move_iterator(other.begin()), std::make_move_iterator(other.end()));
310  }
311  }
void internal_copy(const concurrent_skip_list &other)
void move(tbb_thread &t1, tbb_thread &t2)
Definition: tbb_thread.h:305
Here is the call graph for this function:

◆ ~concurrent_skip_list()

Member Function Documentation

◆ begin() [1/2]

template<typename Traits >
iterator tbb::interface10::internal::concurrent_skip_list< Traits >::begin ( )
inline

Definition at line 524 of file _concurrent_skip_list_impl.h.

Referenced by tbb::interface10::internal::concurrent_skip_list< Traits >::internal_copy().

Here is the caller graph for this function:

◆ begin() [2/2]

template<typename Traits >
const_iterator tbb::interface10::internal::concurrent_skip_list< Traits >::begin ( ) const
inline

Definition at line 528 of file _concurrent_skip_list_impl.h.

◆ calc_node_size()

template<typename Traits >
static size_type tbb::interface10::internal::concurrent_skip_list< Traits >::calc_node_size ( size_type  height)
inlinestaticprivate

Definition at line 913 of file _concurrent_skip_list_impl.h.

913  {
914  return sizeof(list_node_type) + height*sizeof(typename list_node_type::atomic_node_pointer);
915  }
skip_list_node< value_type, typename traits_type::mutex_type > list_node_type

◆ cbegin()

template<typename Traits >
const_iterator tbb::interface10::internal::concurrent_skip_list< Traits >::cbegin ( ) const
inline

Definition at line 532 of file _concurrent_skip_list_impl.h.

◆ cend()

template<typename Traits >
const_iterator tbb::interface10::internal::concurrent_skip_list< Traits >::cend ( ) const
inline

Definition at line 544 of file _concurrent_skip_list_impl.h.

544  {
545  return const_iterator(nullptr);
546  }
skip_list_iterator< list_node_type, true > const_iterator

◆ clear()

template<typename Traits >
void tbb::interface10::internal::concurrent_skip_list< Traits >::clear ( )
inlinenoexcept

Definition at line 507 of file _concurrent_skip_list_impl.h.

References __TBB_ASSERT, tbb::interface10::internal::skip_list_node< Value, Mutex >::next(), and tbb::interface10::internal::skip_list_node< Value, Mutex >::set_next().

507  {
508  __TBB_ASSERT(dummy_head->height() > 0, NULL);
509 
510  node_ptr current = dummy_head->next(0);
511  while (current) {
512  __TBB_ASSERT(current->height() > 0, NULL);
513  node_ptr next = current->next(0);
514  delete_node(current);
515  current = next;
516  }
517 
518  my_size = 0;
519  for (size_type i = 0; i < dummy_head->height(); ++i) {
520  dummy_head->set_next(i, nullptr);
521  }
522  }
void set_next(size_type level, node_pointer next)
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
Definition: tbb_stddef.h:165
Here is the call graph for this function:

◆ contains() [1/2]

template<typename Traits >
bool tbb::interface10::internal::concurrent_skip_list< Traits >::contains ( const key_type key) const
inline

Definition at line 498 of file _concurrent_skip_list_impl.h.

References end, type, and value.

498  {
499  return find(key) != end();
500  }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key

◆ contains() [2/2]

template<typename Traits >
template<typename K , typename = typename std::enable_if<tbb::internal::has_is_transparent<key_compare>::value, K>::type>
bool tbb::interface10::internal::concurrent_skip_list< Traits >::contains ( const K &  key) const
inline

Definition at line 503 of file _concurrent_skip_list_impl.h.

References end.

503  {
504  return find(key) != end();
505  }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key

◆ count() [1/2]

template<typename Traits >
size_type tbb::interface10::internal::concurrent_skip_list< Traits >::count ( const key_type key) const
inline

Definition at line 489 of file _concurrent_skip_list_impl.h.

References type, and value.

489  {
490  return internal_count(key);
491  }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key

◆ count() [2/2]

template<typename Traits >
template<typename K , typename = typename std::enable_if<tbb::internal::has_is_transparent<key_compare>::value, K>::type>
size_type tbb::interface10::internal::concurrent_skip_list< Traits >::count ( const K &  key) const
inline

Definition at line 494 of file _concurrent_skip_list_impl.h.

494  {
495  return internal_count(key);
496  }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key

◆ create_dummy_head()

template<typename Traits >
void tbb::interface10::internal::concurrent_skip_list< Traits >::create_dummy_head ( )
inlineprivate

Definition at line 947 of file _concurrent_skip_list_impl.h.

947  {
949 
950  dummy_head = reinterpret_cast<node_ptr>(node_allocator_traits::allocate(my_node_allocator, sz));
951  // TODO: investigate linkage fail in debug without this workaround
952  auto max_level = MAX_LEVEL;
953 
954  try {
955  node_allocator_traits::construct(my_node_allocator, dummy_head, max_level);
956  }
957  catch(...) {
959  throw;
960  }
961  }

◆ create_node()

template<typename Traits >
template<typename... Args>
node_ptr tbb::interface10::internal::concurrent_skip_list< Traits >::create_node ( Args &&...  args)
inlineprivate

Creates new node

Definition at line 919 of file _concurrent_skip_list_impl.h.

References tbb::interface10::internal::skip_list_node< Value, Mutex >::storage().

919  {
920  size_type levels = random_level();
921 
922  size_type sz = calc_node_size(levels);
923 
924  node_ptr node = reinterpret_cast<node_ptr>(node_allocator_traits::allocate(my_node_allocator, sz));
925 
926  try {
927  node_allocator_traits::construct(my_node_allocator, node, levels);
928 
929  }
930  catch(...) {
931  deallocate_node(node, sz);
932  throw;
933  }
934 
935  try {
936  node_allocator_traits::construct(my_node_allocator, node->storage(), std::forward<Args>(args)...);
937  }
938  catch (...) {
939  node_allocator_traits::destroy(my_node_allocator, node);
940  deallocate_node(node, sz);
941  throw;
942  }
943 
944  return node;
945  }
Here is the call graph for this function:

◆ deallocate_node()

template<typename Traits >
void tbb::interface10::internal::concurrent_skip_list< Traits >::deallocate_node ( node_ptr  node,
size_type  sz 
)
inlineprivate

Definition at line 974 of file _concurrent_skip_list_impl.h.

974  {
975  node_allocator_traits::deallocate(my_node_allocator, reinterpret_cast<uint8_t*>(node), sz);
976  }

◆ delete_dummy_head()

template<typename Traits >
void tbb::interface10::internal::concurrent_skip_list< Traits >::delete_dummy_head ( )
inlineprivate

Definition at line 978 of file _concurrent_skip_list_impl.h.

978  {
979  delete_node<true>(dummy_head);
980  }

◆ delete_node()

template<typename Traits >
template<bool is_dummy = false>
void tbb::interface10::internal::concurrent_skip_list< Traits >::delete_node ( node_ptr  node)
inlineprivate

Definition at line 964 of file _concurrent_skip_list_impl.h.

References tbb::interface10::internal::skip_list_node< Value, Mutex >::height(), and tbb::interface10::internal::skip_list_node< Value, Mutex >::storage().

964  {
965  size_type sz = calc_node_size(node->height());
966  // Destroy value
967  if (!is_dummy) node_allocator_traits::destroy(my_node_allocator, node->storage());
968  // Destroy node
969  node_allocator_traits::destroy(my_node_allocator, node);
970  // Deallocate memory
971  deallocate_node(node, sz);
972  }
Here is the call graph for this function:

◆ emplace()

template<typename Traits >
template<typename... Args>
std::pair<iterator, bool> tbb::interface10::internal::concurrent_skip_list< Traits >::emplace ( Args &&...  args)
inline

Definition at line 393 of file _concurrent_skip_list_impl.h.

393  {
394  return internal_insert(std::forward<Args>(args)...);
395  }
std::pair< iterator, bool > internal_insert(Args &&... args)

◆ emplace_hint()

template<typename Traits >
template<typename... Args>
iterator tbb::interface10::internal::concurrent_skip_list< Traits >::emplace_hint ( const_iterator  ,
Args &&...  args 
)
inline

Definition at line 398 of file _concurrent_skip_list_impl.h.

398  {
399  // Ignore hint
400  return emplace(std::forward<Args>(args)...).first;
401  }
std::pair< iterator, bool > emplace(Args &&... args)

◆ empty()

template<typename Traits >
bool tbb::interface10::internal::concurrent_skip_list< Traits >::empty ( ) const
inline

Definition at line 556 of file _concurrent_skip_list_impl.h.

References size.

556  {
557  return 0 == size();
558  }

◆ end() [1/2]

template<typename Traits >
iterator tbb::interface10::internal::concurrent_skip_list< Traits >::end ( )
inline

Definition at line 536 of file _concurrent_skip_list_impl.h.

Referenced by tbb::interface10::internal::concurrent_skip_list< Traits >::internal_copy().

536  {
537  return iterator(nullptr);
538  }
skip_list_iterator< list_node_type, false > iterator
Here is the caller graph for this function:

◆ end() [2/2]

template<typename Traits >
const_iterator tbb::interface10::internal::concurrent_skip_list< Traits >::end ( ) const
inline

Definition at line 540 of file _concurrent_skip_list_impl.h.

540  {
541  return const_iterator(nullptr);
542  }
skip_list_iterator< list_node_type, true > const_iterator

◆ equal_range() [1/4]

template<typename Traits >
std::pair<iterator, iterator> tbb::interface10::internal::concurrent_skip_list< Traits >::equal_range ( const key_type key)
inline

Definition at line 577 of file _concurrent_skip_list_impl.h.

577  {
578  return std::pair<iterator, iterator>(lower_bound(key), upper_bound(key));
579  }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key

◆ equal_range() [2/4]

template<typename Traits >
std::pair<const_iterator, const_iterator> tbb::interface10::internal::concurrent_skip_list< Traits >::equal_range ( const key_type key) const
inline

Definition at line 581 of file _concurrent_skip_list_impl.h.

References type, and value.

581  {
582  return std::pair<const_iterator, const_iterator>(lower_bound(key), upper_bound(key));
583  }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key

◆ equal_range() [3/4]

template<typename Traits >
template<typename K , typename = typename std::enable_if<tbb::internal::has_is_transparent<key_compare>::value, K>::type>
std::pair<iterator, iterator> tbb::interface10::internal::concurrent_skip_list< Traits >::equal_range ( const K &  key)
inline

Definition at line 586 of file _concurrent_skip_list_impl.h.

References type.

586  {
587  return std::pair<iterator, iterator>(lower_bound(key), upper_bound(key));
588  }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key

◆ equal_range() [4/4]

template<typename Traits >
template<typename K , typename = typename std::enable_if<tbb::internal::has_is_transparent<key_compare>::value, K>::type>
std::pair<const_iterator, const_iterator> tbb::interface10::internal::concurrent_skip_list< Traits >::equal_range ( const K &  key) const
inline

Definition at line 591 of file _concurrent_skip_list_impl.h.

591  {
592  return std::pair<const_iterator, const_iterator>(lower_bound(key), upper_bound(key));
593  }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key

◆ fill_prev_next_arrays()

template<typename Traits >
template<typename comparator >
void tbb::interface10::internal::concurrent_skip_list< Traits >::fill_prev_next_arrays ( array_type prev_nodes,
array_type next_nodes,
node_ptr  prev,
const key_type key,
const comparator &  cmp 
)
inlineprivate

Definition at line 718 of file _concurrent_skip_list_impl.h.

References h, tbb::interface10::internal::skip_list_node< Value, Mutex >::height(), and tbb::interface10::internal::skip_list_node< Value, Mutex >::next().

719  {
720  prev_nodes.fill(dummy_head);
721  next_nodes.fill(nullptr);
722 
723  for (size_type h = prev->height(); h > 0; --h) {
724  node_ptr next = internal_find_position(h - 1, prev, key, cmp);
725  prev_nodes[h - 1] = prev;
726  next_nodes[h - 1] = next;
727  }
728  }
pointer_type internal_find_position(size_type level, pointer_type &prev, const K &key, const comparator &cmp) const
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function h
Here is the call graph for this function:

◆ find() [1/4]

template<typename Traits >
iterator tbb::interface10::internal::concurrent_skip_list< Traits >::find ( const key_type key)
inline

Definition at line 471 of file _concurrent_skip_list_impl.h.

471  {
472  return internal_find(key);
473  }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key

◆ find() [2/4]

template<typename Traits >
const_iterator tbb::interface10::internal::concurrent_skip_list< Traits >::find ( const key_type key) const
inline

Definition at line 475 of file _concurrent_skip_list_impl.h.

References type, and value.

475  {
476  return internal_find(key);
477  }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key

◆ find() [3/4]

template<typename Traits >
template<typename K , typename = typename std::enable_if<tbb::internal::has_is_transparent<key_compare>::value, K>::type>
iterator tbb::interface10::internal::concurrent_skip_list< Traits >::find ( const K &  key)
inline

Definition at line 480 of file _concurrent_skip_list_impl.h.

References type, and value.

480  {
481  return internal_find(key);
482  }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key

◆ find() [4/4]

template<typename Traits >
template<typename K , typename = typename std::enable_if<tbb::internal::has_is_transparent<key_compare>::value, K>::type>
const_iterator tbb::interface10::internal::concurrent_skip_list< Traits >::find ( const K &  key) const
inline

Definition at line 485 of file _concurrent_skip_list_impl.h.

485  {
486  return internal_find(key);
487  }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key

◆ get_allocator()

template<typename Traits >
allocator_type tbb::interface10::internal::concurrent_skip_list< Traits >::get_allocator ( ) const
inline

Definition at line 560 of file _concurrent_skip_list_impl.h.

560  {
561  return my_node_allocator;
562  }

◆ get_iterator()

template<typename Traits >
static iterator tbb::interface10::internal::concurrent_skip_list< Traits >::get_iterator ( const_iterator  it)
inlinestaticprivate

Definition at line 982 of file _concurrent_skip_list_impl.h.

References tbb::interface10::internal::skip_list_iterator< NodeType, is_const >::my_node_ptr.

982  {
983  return iterator(it.my_node_ptr);
984  }
skip_list_iterator< list_node_type, false > iterator

◆ get_key()

template<typename Traits >
static const key_type& tbb::interface10::internal::concurrent_skip_list< Traits >::get_key ( node_ptr  n)
inlinestaticprivate

Definition at line 667 of file _concurrent_skip_list_impl.h.

References __TBB_ASSERT, and tbb::interface10::internal::skip_list_node< Value, Mutex >::value().

667  {
668  __TBB_ASSERT(n, NULL);
669  return traits_type::get_key(n->value());
670  }
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
Definition: tbb_stddef.h:165
Here is the call graph for this function:

◆ insert() [1/8]

template<typename Traits >
std::pair<iterator, bool> tbb::interface10::internal::concurrent_skip_list< Traits >::insert ( const value_type value)
inline

Definition at line 348 of file _concurrent_skip_list_impl.h.

348  {
349  return internal_insert(value);
350  }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long value
std::pair< iterator, bool > internal_insert(Args &&... args)

◆ insert() [2/8]

template<typename Traits >
std::pair<iterator, bool> tbb::interface10::internal::concurrent_skip_list< Traits >::insert ( value_type &&  value)
inline

Definition at line 352 of file _concurrent_skip_list_impl.h.

References tbb::move(), and tbb::interface10::internal::skip_list_node< Value, Mutex >::value().

352  {
354  }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long value
void move(tbb_thread &t1, tbb_thread &t2)
Definition: tbb_thread.h:305
std::pair< iterator, bool > internal_insert(Args &&... args)
Here is the call graph for this function:

◆ insert() [3/8]

template<typename Traits >
iterator tbb::interface10::internal::concurrent_skip_list< Traits >::insert ( const_iterator  ,
const_reference  value 
)
inline

Definition at line 356 of file _concurrent_skip_list_impl.h.

356  {
357  // Ignore hint
358  return insert(value).first;
359  }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long value
std::pair< iterator, bool > insert(const value_type &value)

◆ insert() [4/8]

template<typename Traits >
iterator tbb::interface10::internal::concurrent_skip_list< Traits >::insert ( const_iterator  ,
value_type &&  value 
)
inline

Definition at line 361 of file _concurrent_skip_list_impl.h.

References tbb::move(), and tbb::interface10::internal::skip_list_node< Value, Mutex >::value().

361  {
362  // Ignore hint
363  return insert(std::move(value)).first;
364  }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long value
std::pair< iterator, bool > insert(const value_type &value)
void move(tbb_thread &t1, tbb_thread &t2)
Definition: tbb_thread.h:305
Here is the call graph for this function:

◆ insert() [5/8]

template<typename Traits >
template<typename InputIterator >
void tbb::interface10::internal::concurrent_skip_list< Traits >::insert ( InputIterator  first,
InputIterator  last 
)
inline

Definition at line 367 of file _concurrent_skip_list_impl.h.

References tbb::internal::last().

367  {
368  for (InputIterator it = first; it != last; ++it)
369  insert(*it);
370  }
auto last(Container &c) -> decltype(begin(c))
auto first(Container &c) -> decltype(begin(c))
std::pair< iterator, bool > insert(const value_type &value)
Here is the call graph for this function:

◆ insert() [6/8]

template<typename Traits >
void tbb::interface10::internal::concurrent_skip_list< Traits >::insert ( std::initializer_list< value_type init)
inline

Definition at line 372 of file _concurrent_skip_list_impl.h.

372  {
373  insert(init.begin(), init.end());
374  }
std::pair< iterator, bool > insert(const value_type &value)

◆ insert() [7/8]

template<typename Traits >
std::pair<iterator, bool> tbb::interface10::internal::concurrent_skip_list< Traits >::insert ( node_type &&  nh)
inline

Definition at line 376 of file _concurrent_skip_list_impl.h.

References end.

376  {
377  if(!nh.empty()) {
378  std::pair<iterator, bool> insert_result = internal_insert_node(nh.my_node);
379  if(insert_result.second) {
380  nh.deactivate();
381  }
382  return insert_result;
383  }
384  return std::pair<iterator, bool>(end(), false);
385  }
std::pair< iterator, bool > internal_insert_node(node_ptr new_node)

◆ insert() [8/8]

template<typename Traits >
iterator tbb::interface10::internal::concurrent_skip_list< Traits >::insert ( const_iterator  ,
node_type &&  nh 
)
inline

Definition at line 387 of file _concurrent_skip_list_impl.h.

References tbb::move().

387  {
388  // Ignore hint
389  return insert(std::move(nh)).first;
390  }
std::pair< iterator, bool > insert(const value_type &value)
void move(tbb_thread &t1, tbb_thread &t2)
Definition: tbb_thread.h:305
Here is the call graph for this function:

◆ internal_copy() [1/2]

template<typename Traits >
void tbb::interface10::internal::concurrent_skip_list< Traits >::internal_copy ( const concurrent_skip_list< Traits > &  other)
inlineprivate

Definition at line 890 of file _concurrent_skip_list_impl.h.

References tbb::interface10::internal::concurrent_skip_list< Traits >::begin(), and tbb::interface10::internal::concurrent_skip_list< Traits >::end().

890  {
891  internal_copy(other.begin(), other.end());
892  }
void internal_copy(const concurrent_skip_list &other)
Here is the call graph for this function:

◆ internal_copy() [2/2]

template<typename Traits >
template<typename Iterator >
void tbb::interface10::internal::concurrent_skip_list< Traits >::internal_copy ( Iterator  first,
Iterator  last 
)
inlineprivate

Definition at line 895 of file _concurrent_skip_list_impl.h.

References tbb::internal::last().

895  {
896  clear();
897  try {
898  for (auto it = first; it != last; ++it)
899  insert(*it);
900  }
901  catch (...) {
902  clear();
904  throw;
905  }
906  }
auto last(Container &c) -> decltype(begin(c))
auto first(Container &c) -> decltype(begin(c))
std::pair< iterator, bool > insert(const value_type &value)
Here is the call graph for this function:

◆ internal_count()

template<typename Traits >
template<typename K >
size_type tbb::interface10::internal::concurrent_skip_list< Traits >::internal_count ( const K &  key) const
inlineprivate

Definition at line 685 of file _concurrent_skip_list_impl.h.

References end.

685  {
686  if (allow_multimapping) {
687  std::pair<const_iterator, const_iterator> range = equal_range(key);
688  return std::distance(range.first, range.second);
689  }
690  return (find(key) == end()) ? size_type(0) : size_type(1);
691  }
std::pair< iterator, iterator > equal_range(const key_type &key)
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key

◆ internal_extract()

template<typename Traits >
std::pair<node_ptr, node_ptr> tbb::interface10::internal::concurrent_skip_list< Traits >::internal_extract ( const_iterator  it)
inlineprivate

Definition at line 838 of file _concurrent_skip_list_impl.h.

References __TBB_ASSERT, end, tbb::interface10::internal::skip_list_node< Value, Mutex >::height(), key, and tbb::interface10::internal::skip_list_node< Value, Mutex >::next().

838  {
839  if ( it != end() ) {
840  key_type key = traits_type::get_key(*it);
841  node_ptr prev = dummy_head;
842  __TBB_ASSERT(dummy_head->height() > 0, NULL);
843 
844  array_type prev_nodes;
845  array_type next_nodes;
846 
847  fill_prev_next_arrays(prev_nodes, next_nodes, prev, key, my_compare);
848 
849  node_ptr erase_node = next_nodes[0];
850  node_ptr next_node = erase_node->next(0);
851 
852  if (erase_node && !my_compare(key, get_key(erase_node))) {
853  for(size_type level = 0; level < erase_node->height(); ++level) {
854  __TBB_ASSERT(prev_nodes[level]->height() > level, NULL);
855  __TBB_ASSERT(next_nodes[level] == erase_node, NULL);
856  prev_nodes[level]->set_next(level, erase_node->next(level));
857  }
858  --my_size;
859  return std::pair<node_ptr, node_ptr>(erase_node, next_node);
860  }
861  }
862  return std::pair<node_ptr, node_ptr>(nullptr, nullptr);
863  }
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
Definition: tbb_stddef.h:165
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key
void fill_prev_next_arrays(array_type &prev_nodes, array_type &next_nodes, node_ptr prev, const key_type &key, const comparator &cmp)
Here is the call graph for this function:

◆ internal_find() [1/2]

template<typename Traits >
template<typename K >
iterator tbb::interface10::internal::concurrent_skip_list< Traits >::internal_find ( const K &  key)
inlineprivate

Definition at line 673 of file _concurrent_skip_list_impl.h.

References end.

673  {
674  iterator it = lower_bound(key);
675  return (it == end() || my_compare(key, traits_type::get_key(*it))) ? end() : it;
676  }
skip_list_iterator< list_node_type, false > iterator
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key

◆ internal_find() [2/2]

template<typename Traits >
template<typename K >
const_iterator tbb::interface10::internal::concurrent_skip_list< Traits >::internal_find ( const K &  key) const
inlineprivate

Definition at line 679 of file _concurrent_skip_list_impl.h.

References end.

679  {
681  return (it == end() || my_compare(key, traits_type::get_key(*it))) ? end() : it;
682  }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key
skip_list_iterator< list_node_type, true > const_iterator

◆ internal_find_position()

template<typename Traits >
template<typename K , typename pointer_type , typename comparator >
pointer_type tbb::interface10::internal::concurrent_skip_list< Traits >::internal_find_position ( size_type  level,
pointer_type &  prev,
const K &  key,
const comparator &  cmp 
) const
inlineprivate

Finds position on the

Parameters
levelusing
cmp
level- on which level search prev node
prev- pointer to the start node to search
key- key to search
cmp- callable object to compare two objects (my_compare member is default comparator)
Returns
pointer to the node which is not satisfy the comparison with
Parameters
key

Definition at line 703 of file _concurrent_skip_list_impl.h.

References __TBB_ASSERT, and tbb::interface10::internal::skip_list_node< Value, Mutex >::height().

704  {
705  __TBB_ASSERT(level < prev->height(), "Wrong level to find position");
706  pointer_type curr = prev->next(level);
707 
708  while (curr && cmp(get_key(curr), key)) {
709  prev = curr;
710  __TBB_ASSERT(level < prev->height(), NULL);
711  curr = prev->next(level);
712  }
713 
714  return curr;
715  }
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
Definition: tbb_stddef.h:165
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key
Here is the call graph for this function:

◆ internal_get_bound() [1/2]

template<typename Traits >
template<typename K , typename comparator >
const_iterator tbb::interface10::internal::concurrent_skip_list< Traits >::internal_get_bound ( const K &  key,
const comparator &  cmp 
) const
inlineprivate

Definition at line 812 of file _concurrent_skip_list_impl.h.

References __TBB_ASSERT, h, tbb::interface10::internal::skip_list_node< Value, Mutex >::height(), and tbb::interface10::internal::skip_list_node< Value, Mutex >::next().

812  {
813  node_ptr prev = dummy_head;
814  __TBB_ASSERT(dummy_head->height() > 0, NULL);
815  node_ptr next = nullptr;
816 
817  for (size_type h = prev->height(); h > 0; --h) {
818  next = internal_find_position(h - 1, prev, key, cmp);
819  }
820 
821  return const_iterator(next);
822  }
pointer_type internal_find_position(size_type level, pointer_type &prev, const K &key, const comparator &cmp) const
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
Definition: tbb_stddef.h:165
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key
skip_list_iterator< list_node_type, true > const_iterator
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function h
Here is the call graph for this function:

◆ internal_get_bound() [2/2]

template<typename Traits >
template<typename K , typename comparator >
iterator tbb::interface10::internal::concurrent_skip_list< Traits >::internal_get_bound ( const K &  key,
const comparator &  cmp 
)
inlineprivate

Definition at line 825 of file _concurrent_skip_list_impl.h.

References __TBB_ASSERT, h, tbb::interface10::internal::skip_list_node< Value, Mutex >::height(), and tbb::interface10::internal::skip_list_node< Value, Mutex >::next().

825  {
826  node_ptr prev = dummy_head;
827  __TBB_ASSERT(dummy_head->height() > 0, NULL);
828  node_ptr next = nullptr;
829 
830  for (size_type h = prev->height(); h > 0; --h) {
831  next = internal_find_position(h - 1, prev, key, cmp);
832  }
833 
834  return iterator(next);
835  }
pointer_type internal_find_position(size_type level, pointer_type &prev, const K &key, const comparator &cmp) const
skip_list_iterator< list_node_type, false > iterator
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
Definition: tbb_stddef.h:165
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function h
Here is the call graph for this function:

◆ internal_insert()

template<typename Traits >
template<typename... Args>
std::pair<iterator, bool> tbb::interface10::internal::concurrent_skip_list< Traits >::internal_insert ( Args &&...  args)
inlineprivate

Definition at line 731 of file _concurrent_skip_list_impl.h.

731  {
732  node_ptr new_node = create_node(std::forward<Args>(args)...);
733  std::pair<iterator, bool> insert_result = internal_insert_node(new_node);
734  if(!insert_result.second) {
735  delete_node(new_node);
736  }
737  return insert_result;
738  }
std::pair< iterator, bool > internal_insert_node(node_ptr new_node)

◆ internal_insert_node()

template<typename Traits >
std::pair<iterator, bool> tbb::interface10::internal::concurrent_skip_list< Traits >::internal_insert_node ( node_ptr  new_node)
inlineprivate

Definition at line 740 of file _concurrent_skip_list_impl.h.

References __TBB_ASSERT, tbb::interface10::internal::skip_list_node< Value, Mutex >::fully_linked(), tbb::interface10::internal::skip_list_node< Value, Mutex >::height(), and tbb::interface10::internal::skip_list_node< Value, Mutex >::next().

740  {
741  array_type prev_nodes;
742  array_type next_nodes;
743  __TBB_ASSERT(dummy_head->height() >= new_node->height(), "Wrong height for new node");
744 
745  do {
746  if (allow_multimapping) {
747  fill_prev_next_arrays(prev_nodes, next_nodes, dummy_head, get_key(new_node),
748  not_greater_compare(my_compare));
749  } else {
750  fill_prev_next_arrays(prev_nodes, next_nodes, dummy_head, get_key(new_node), my_compare);
751  }
752 
753  node_ptr next = next_nodes[0];
754  if (next && !allow_multimapping && !my_compare(get_key(new_node), get_key(next))) {
755  // TODO: do we really need to wait?
756  while (!next->fully_linked()) {
757  // TODO: atomic backoff
758  }
759 
760  return std::pair<iterator, bool>(iterator(next), false);
761  }
762  __TBB_ASSERT(allow_multimapping || !next || my_compare(get_key(new_node), get_key(next)),
763  "Wrong elements order");
764 
765  } while (!try_insert_node(new_node, prev_nodes, next_nodes));
766 
767  __TBB_ASSERT(new_node, NULL);
768  return std::pair<iterator, bool>(iterator(new_node), true);
769  }
skip_list_iterator< list_node_type, false > iterator
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
Definition: tbb_stddef.h:165
void fill_prev_next_arrays(array_type &prev_nodes, array_type &next_nodes, node_ptr prev, const key_type &key, const comparator &cmp)
bool try_insert_node(node_ptr new_node, array_type &prev_nodes, array_type &next_nodes)
Here is the call graph for this function:

◆ internal_merge()

template<typename Traits >
template<typename SourceType >
void tbb::interface10::internal::concurrent_skip_list< Traits >::internal_merge ( SourceType &&  source)
inlineprotected

Definition at line 867 of file _concurrent_skip_list_impl.h.

References __TBB_ASSERT, __TBB_STATIC_ASSERT, tbb::move(), type, and value.

867  {
868  using source_type = typename std::decay<SourceType>::type;
869  using source_iterator = typename source_type::iterator;
870  __TBB_STATIC_ASSERT((std::is_same<node_type, typename source_type::node_type>::value), "Incompatible containers cannot be merged");
871 
872  for(source_iterator it = source.begin(); it != source.end();) {
873  source_iterator where = it++;
874  if (allow_multimapping || !contains(traits_type::get_key(*where))) {
875  std::pair<node_ptr, node_ptr> extract_result = source.internal_extract(where);
876 
877  //If the insertion fails - return the node into source
878  node_type handle(extract_result.first);
879  __TBB_ASSERT(!handle.empty(), "Extracted handle in merge is empty");
880 
881  if (!insert(std::move(handle)).second) {
882  source.insert(std::move(handle));
883  }
884  handle.deactivate();
885  }
886  }
887  }
#define __TBB_STATIC_ASSERT(condition, msg)
Definition: tbb_stddef.h:532
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long value
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
Definition: tbb_stddef.h:165
std::pair< iterator, bool > insert(const value_type &value)
void move(tbb_thread &t1, tbb_thread &t2)
Definition: tbb_thread.h:305
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type type
Here is the call graph for this function:

◆ internal_move()

template<typename Traits >
void tbb::interface10::internal::concurrent_skip_list< Traits >::internal_move ( concurrent_skip_list< Traits > &&  other)
inlineprivate

Definition at line 658 of file _concurrent_skip_list_impl.h.

658  {
659  dummy_head = other.dummy_head;
660  other.dummy_head = nullptr;
661  other.create_dummy_head();
662 
663  my_size = other.my_size.load();
664  other.my_size = 0;
665  }

◆ internal_move_assign() [1/2]

template<typename Traits >
void tbb::interface10::internal::concurrent_skip_list< Traits >::internal_move_assign ( concurrent_skip_list< Traits > &&  other,
std::true_type   
)
inlineprivate

Definition at line 986 of file _concurrent_skip_list_impl.h.

References tbb::internal::allocator_move_assignment(), and tbb::move().

986  {
989  internal_move(std::move(other));
990  }
void move(tbb_thread &t1, tbb_thread &t2)
Definition: tbb_thread.h:305
void allocator_move_assignment(MyAlloc &my_allocator, OtherAlloc &other_allocator, traits_true_type)
bool_constant< true > true_type
Definition: tbb_stddef.h:468
Here is the call graph for this function:

◆ internal_move_assign() [2/2]

template<typename Traits >
void tbb::interface10::internal::concurrent_skip_list< Traits >::internal_move_assign ( concurrent_skip_list< Traits > &&  other,
std::false_type   
)
inlineprivate

Definition at line 992 of file _concurrent_skip_list_impl.h.

References tbb::move().

992  {
993  if (my_node_allocator == other.my_node_allocator) {
995  internal_move(std::move(other));
996  } else {
997  internal_copy(std::make_move_iterator(other.begin()), std::make_move_iterator(other.end()));
998  }
999  }
void internal_copy(const concurrent_skip_list &other)
void move(tbb_thread &t1, tbb_thread &t2)
Definition: tbb_thread.h:305
Here is the call graph for this function:

◆ key_comp()

template<typename Traits >
key_compare tbb::interface10::internal::concurrent_skip_list< Traits >::key_comp ( ) const
inline

◆ lower_bound() [1/4]

template<typename Traits >
iterator tbb::interface10::internal::concurrent_skip_list< Traits >::lower_bound ( const key_type key)
inline

Definition at line 435 of file _concurrent_skip_list_impl.h.

435  {
437  }
const_iterator internal_get_bound(const K &key, const comparator &cmp) const
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key

◆ lower_bound() [2/4]

template<typename Traits >
const_iterator tbb::interface10::internal::concurrent_skip_list< Traits >::lower_bound ( const key_type key) const
inline

Definition at line 439 of file _concurrent_skip_list_impl.h.

References type, and value.

439  {
441  }
const_iterator internal_get_bound(const K &key, const comparator &cmp) const
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key

◆ lower_bound() [3/4]

template<typename Traits >
template<typename K , typename = typename std::enable_if<tbb::internal::has_is_transparent<key_compare>::value, K>::type>
iterator tbb::interface10::internal::concurrent_skip_list< Traits >::lower_bound ( const K &  key)
inline

Definition at line 444 of file _concurrent_skip_list_impl.h.

References type, and value.

444  {
446  }
const_iterator internal_get_bound(const K &key, const comparator &cmp) const
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key

◆ lower_bound() [4/4]

template<typename Traits >
template<typename K , typename = typename std::enable_if<tbb::internal::has_is_transparent<key_compare>::value, K>::type>
const_iterator tbb::interface10::internal::concurrent_skip_list< Traits >::lower_bound ( const K &  key) const
inline

Definition at line 449 of file _concurrent_skip_list_impl.h.

449  {
451  }
const_iterator internal_get_bound(const K &key, const comparator &cmp) const
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key

◆ max_size()

template<typename Traits >
size_type tbb::interface10::internal::concurrent_skip_list< Traits >::max_size ( ) const
inline

Definition at line 552 of file _concurrent_skip_list_impl.h.

552  {
553  return my_node_allocator.max_size();
554  }

◆ operator=() [1/3]

template<typename Traits >
concurrent_skip_list& tbb::interface10::internal::concurrent_skip_list< Traits >::operator= ( const concurrent_skip_list< Traits > &  other)
inline

Definition at line 318 of file _concurrent_skip_list_impl.h.

References tbb::internal::allocator_copy_assignment(), tbb::interface10::internal::concurrent_skip_list< Traits >::my_compare, tbb::interface10::internal::concurrent_skip_list< Traits >::my_node_allocator, and tbb::interface10::internal::concurrent_skip_list< Traits >::my_rnd_generator.

318  {
319  if (this != &other) {
320  using pocca_type = typename node_allocator_traits::propagate_on_container_copy_assignment;
321  clear();
322  tbb::internal::allocator_copy_assignment(my_node_allocator, other.my_node_allocator, pocca_type());
323  my_compare = other.my_compare;
324  my_rnd_generator = other.my_rnd_generator;
325  internal_copy(other);
326  }
327  return *this;
328  }
void internal_copy(const concurrent_skip_list &other)
void allocator_copy_assignment(MyAlloc &my_allocator, OtherAlloc &other_allocator, traits_true_type)
Here is the call graph for this function:

◆ operator=() [2/3]

template<typename Traits >
concurrent_skip_list& tbb::interface10::internal::concurrent_skip_list< Traits >::operator= ( concurrent_skip_list< Traits > &&  other)
inline

Definition at line 330 of file _concurrent_skip_list_impl.h.

References tbb::move().

330  {
331  if (this != &other) {
332  using pocma_type = typename node_allocator_traits::propagate_on_container_move_assignment;
333  clear();
334  my_compare = other.my_compare;
335  my_rnd_generator = other.my_rnd_generator;
336  internal_move_assign(std::move(other), pocma_type());
337  }
338  return *this;
339  }
void move(tbb_thread &t1, tbb_thread &t2)
Definition: tbb_thread.h:305
void internal_move_assign(concurrent_skip_list &&other, std::true_type)
Here is the call graph for this function:

◆ operator=() [3/3]

template<typename Traits >
concurrent_skip_list& tbb::interface10::internal::concurrent_skip_list< Traits >::operator= ( std::initializer_list< value_type il)
inline

Definition at line 341 of file _concurrent_skip_list_impl.h.

342  {
343  clear();
344  insert(il.begin(),il.end());
345  return *this;
346  }
std::pair< iterator, bool > insert(const value_type &value)

◆ random_level()

template<typename Traits >
size_type tbb::interface10::internal::concurrent_skip_list< Traits >::random_level ( )
inlineprivate

Generate random level

Definition at line 909 of file _concurrent_skip_list_impl.h.

909  {
910  return my_rnd_generator();
911  }

◆ range() [1/2]

template<typename Traits >
range_type tbb::interface10::internal::concurrent_skip_list< Traits >::range ( )
inline

Definition at line 654 of file _concurrent_skip_list_impl.h.

654 { return range_type(*this); }

◆ range() [2/2]

template<typename Traits >
const_range_type tbb::interface10::internal::concurrent_skip_list< Traits >::range ( ) const
inline

Definition at line 655 of file _concurrent_skip_list_impl.h.

655 { return const_range_type(*this); }

◆ size()

template<typename Traits >
size_type tbb::interface10::internal::concurrent_skip_list< Traits >::size ( ) const
inline

◆ swap()

template<typename Traits >
void tbb::interface10::internal::concurrent_skip_list< Traits >::swap ( concurrent_skip_list< Traits > &  other)
inline

Definition at line 564 of file _concurrent_skip_list_impl.h.

References tbb::internal::allocator_swap(), tbb::interface10::internal::concurrent_skip_list< Traits >::dummy_head, tbb::interface10::internal::concurrent_skip_list< Traits >::my_compare, tbb::interface10::internal::concurrent_skip_list< Traits >::my_node_allocator, tbb::interface10::internal::concurrent_skip_list< Traits >::my_rnd_generator, tbb::interface10::internal::concurrent_skip_list< Traits >::my_size, tbb::internal::swap(), and tbb::swap().

564  {
565  using std::swap;
566  using pocs_type = typename node_allocator_traits::propagate_on_container_swap;
567  tbb::internal::allocator_swap(my_node_allocator, other.my_node_allocator, pocs_type());
568  swap(my_compare, other.my_compare);
569  swap(my_rnd_generator, other.my_rnd_generator);
570  swap(dummy_head, other.dummy_head);
571 
572  size_type tmp = my_size;
573  my_size.store(other.my_size);
574  other.my_size.store(tmp);
575  }
void allocator_swap(MyAlloc &my_allocator, OtherAlloc &other_allocator, traits_true_type)
void swap(atomic< T > &lhs, atomic< T > &rhs)
Definition: atomic.h:535
Here is the call graph for this function:

◆ try_insert_node()

template<typename Traits >
bool tbb::interface10::internal::concurrent_skip_list< Traits >::try_insert_node ( node_ptr  new_node,
array_type prev_nodes,
array_type next_nodes 
)
inlineprivate

Definition at line 771 of file _concurrent_skip_list_impl.h.

References __TBB_ASSERT, tbb::interface10::internal::skip_list_node< Value, Mutex >::height(), tbb::interface10::internal::skip_list_node< Value, Mutex >::mark_linked(), tbb::interface10::internal::skip_list_node< Value, Mutex >::next(), and tbb::interface10::internal::skip_list_node< Value, Mutex >::set_next().

771  {
772  __TBB_ASSERT(dummy_head->height() >= new_node->height(), NULL);
773 
774  lock_array locks;
775 
776  if (!try_lock_nodes(new_node->height(), prev_nodes, next_nodes, locks)) {
777  return false;
778  }
779 
781  ((prev_nodes[0] == dummy_head ||
782  my_compare(get_key(prev_nodes[0]), get_key(new_node))) &&
783  (next_nodes[0] == nullptr || my_compare(get_key(new_node), get_key(next_nodes[0])))),
784  "Wrong elements order");
785 
786  for (size_type level = 0; level < new_node->height(); ++level) {
787  __TBB_ASSERT(prev_nodes[level]->height() > level, NULL);
788  __TBB_ASSERT(prev_nodes[level]->next(level) == next_nodes[level], NULL);
789  new_node->set_next(level, next_nodes[level]);
790  prev_nodes[level]->set_next(level, new_node);
791  }
792  new_node->mark_linked();
793 
794  ++my_size;
795 
796  return true;
797  }
bool try_lock_nodes(size_type height, array_type &prevs, array_type &next_nodes, lock_array &locks)
std::array< typename list_node_type::lock_type, MAX_LEVEL > lock_array
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
Definition: tbb_stddef.h:165
Here is the call graph for this function:

◆ try_lock_nodes()

template<typename Traits >
bool tbb::interface10::internal::concurrent_skip_list< Traits >::try_lock_nodes ( size_type  height,
array_type prevs,
array_type next_nodes,
lock_array locks 
)
inlineprivate

Definition at line 799 of file _concurrent_skip_list_impl.h.

References tbb::interface10::internal::skip_list_node< Value, Mutex >::height(), and tbb::interface10::internal::skip_list_node< Value, Mutex >::next().

799  {
800  for (size_type l = 0; l < height; ++l) {
801  if (l == 0 || prevs[l] != prevs[l - 1])
802  locks[l] = prevs[l]->acquire();
803 
804  node_ptr next = prevs[l]->next(l);
805  if ( next != next_nodes[l]) return false;
806  }
807 
808  return true;
809  }
Here is the call graph for this function:

◆ unsafe_erase() [1/3]

template<typename Traits >
iterator tbb::interface10::internal::concurrent_skip_list< Traits >::unsafe_erase ( iterator  pos)
inline

Definition at line 403 of file _concurrent_skip_list_impl.h.

References end.

403  {
404  std::pair<node_ptr, node_ptr> extract_result = internal_extract(pos);
405  if(extract_result.first) { // node was extracted
406  delete_node(extract_result.first);
407  return extract_result.second;
408  }
409  return end();
410  }
std::pair< node_ptr, node_ptr > internal_extract(const_iterator it)

◆ unsafe_erase() [2/3]

template<typename Traits >
iterator tbb::interface10::internal::concurrent_skip_list< Traits >::unsafe_erase ( const_iterator  first,
const_iterator  last 
)
inline

Definition at line 412 of file _concurrent_skip_list_impl.h.

412  {
413  while(first != last) {
415  }
416  return get_iterator(first);
417  }
auto last(Container &c) -> decltype(begin(c))
auto first(Container &c) -> decltype(begin(c))

◆ unsafe_erase() [3/3]

template<typename Traits >
size_type tbb::interface10::internal::concurrent_skip_list< Traits >::unsafe_erase ( const key_type key)
inline

Definition at line 419 of file _concurrent_skip_list_impl.h.

419  {
420  std::pair<iterator, iterator> range = equal_range(key);
421  size_type sz = std::distance(range.first, range.second);
422  unsafe_erase(range.first, range.second);
423  return sz;
424  }
std::pair< iterator, iterator > equal_range(const key_type &key)
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key

◆ unsafe_extract() [1/2]

template<typename Traits >
node_type tbb::interface10::internal::concurrent_skip_list< Traits >::unsafe_extract ( const_iterator  pos)
inline

Definition at line 426 of file _concurrent_skip_list_impl.h.

426  {
427  std::pair<node_ptr, node_ptr> extract_result = internal_extract(pos);
428  return extract_result.first ? node_type(extract_result.first) : node_type();
429  }
std::pair< node_ptr, node_ptr > internal_extract(const_iterator it)

◆ unsafe_extract() [2/2]

template<typename Traits >
node_type tbb::interface10::internal::concurrent_skip_list< Traits >::unsafe_extract ( const key_type key)
inline

Definition at line 431 of file _concurrent_skip_list_impl.h.

431  {
432  return unsafe_extract(find(key));
433  }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key

◆ upper_bound() [1/4]

template<typename Traits >
iterator tbb::interface10::internal::concurrent_skip_list< Traits >::upper_bound ( const key_type key)
inline

Definition at line 453 of file _concurrent_skip_list_impl.h.

453  {
454  return internal_get_bound(key, not_greater_compare(my_compare));
455  }
const_iterator internal_get_bound(const K &key, const comparator &cmp) const
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key

◆ upper_bound() [2/4]

template<typename Traits >
const_iterator tbb::interface10::internal::concurrent_skip_list< Traits >::upper_bound ( const key_type key) const
inline

Definition at line 457 of file _concurrent_skip_list_impl.h.

References type, and value.

457  {
458  return internal_get_bound(key, not_greater_compare(my_compare));
459  }
const_iterator internal_get_bound(const K &key, const comparator &cmp) const
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key

◆ upper_bound() [3/4]

template<typename Traits >
template<typename K , typename = typename std::enable_if<tbb::internal::has_is_transparent<key_compare>::value, K>::type>
iterator tbb::interface10::internal::concurrent_skip_list< Traits >::upper_bound ( const K &  key)
inline

Definition at line 462 of file _concurrent_skip_list_impl.h.

References type, and value.

462  {
463  return internal_get_bound(key, not_greater_compare(my_compare));
464  }
const_iterator internal_get_bound(const K &key, const comparator &cmp) const
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key

◆ upper_bound() [4/4]

template<typename Traits >
template<typename K , typename = typename std::enable_if<tbb::internal::has_is_transparent<key_compare>::value, K>::type>
const_iterator tbb::interface10::internal::concurrent_skip_list< Traits >::upper_bound ( const K &  key) const
inline

Definition at line 467 of file _concurrent_skip_list_impl.h.

467  {
468  return internal_get_bound(key, not_greater_compare(my_compare));
469  }
const_iterator internal_get_bound(const K &key, const comparator &cmp) const
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key

◆ value_comp()

template<typename Traits >
value_compare tbb::interface10::internal::concurrent_skip_list< Traits >::value_comp ( ) const
inline

Definition at line 597 of file _concurrent_skip_list_impl.h.

597 { return traits_type::value_comp(my_compare); }

Friends And Related Function Documentation

◆ concurrent_skip_list

template<typename Traits >
template<typename OtherTraits >
friend class concurrent_skip_list
friend

Definition at line 1018 of file _concurrent_skip_list_impl.h.

Member Data Documentation

◆ allow_multimapping

template<typename Traits >
bool const tbb::interface10::internal::concurrent_skip_list< Traits >::allow_multimapping = traits_type::allow_multimapping
static

Definition at line 250 of file _concurrent_skip_list_impl.h.

◆ dummy_head

template<typename Traits >
node_ptr tbb::interface10::internal::concurrent_skip_list< Traits >::dummy_head
private

◆ MAX_LEVEL

template<typename Traits >
constexpr size_type tbb::interface10::internal::concurrent_skip_list< Traits >::MAX_LEVEL = traits_type::MAX_LEVEL
staticprotected

Definition at line 244 of file _concurrent_skip_list_impl.h.

◆ my_compare

◆ my_node_allocator

◆ my_rnd_generator

◆ my_size


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

Copyright © 2005-2019 Intel Corporation. All Rights Reserved.

Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are registered trademarks or trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

* Other names and brands may be claimed as the property of others.