17 #ifndef _TBB_intrusive_list_H 18 #define _TBB_intrusive_list_H 41 template <
class List,
class T>
55 template <
typename DereferenceType>
59 "Incorrect DereferenceType in iterator_impl");
126 #if TBB_USE_ASSERT >= 2 157 "Object with intrusive list node can be part of only one intrusive list simultaneously" );
198 template <
class T,
class U,
intrusive_list_node U::*NodePtr>
210 return *reinterpret_cast<T*>((
char*)
node - ((ptrdiff_t)&(reinterpret_cast<T*>(0x1000)->*NodePtr) - 0x1000));
214 return item(const_cast<intrusive_list_node*>(
node));
static const T & item(const intrusive_list_node *node)
iterator_impl operator--(int)
static const T & item(const intrusive_list_node *node)
intrusive_list_node my_head
Pointer to the head node.
List of element of type T, where T is derived from intrusive_list_node.
intrusive_list_node * my_prev_node
DereferenceType & operator *() const
iterator_impl< const T > const_iterator
DereferenceType * operator->() const
Double linked list of items of type T containing a member of type intrusive_list_node.
bool operator!=(const iterator_impl &rhs) const
static T & item(intrusive_list_node *node)
const_iterator end() const
static intrusive_list_node & node(T &val)
iterator_impl & operator=(const T &val)
iterator_impl(pointer_type pos)
bool operator==(const iterator_impl &rhs) const
Data structure to be inherited by the types that can form intrusive lists.
iterator_impl & operator++()
static const T & item(const intrusive_list_node *node)
iterator erase(iterator it)
static intrusive_list_node & node(T &item)
iterator_impl operator++(int)
size_t my_size
Number of list elements.
iterator_impl< T > iterator
static intrusive_list_node & node(T &val)
tbb::internal::conditional< tbb::internal::is_same_type< DereferenceType, T >::value, intrusive_list_node *, const intrusive_list_node * >::type pointer_type
static T & item(intrusive_list_node *node)
__TBB_STATIC_ASSERT((tbb::internal::is_same_type< DereferenceType, T >::value||tbb::internal::is_same_type< DereferenceType, const T >::value), "Incorrect DereferenceType in iterator_impl")
static T & item(intrusive_list_node *node)
Double linked list of items of type T that is derived from intrusive_list_node class.
Detects whether two given types are the same.
intrusive_list_node * my_next_node
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
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_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type type
const_iterator begin() const
iterator_impl & operator=(const iterator_impl &other)
iterator_impl & operator--()