22 #ifndef __TBB__flow_graph_hash_buffer_impl_H 23 #define __TBB__flow_graph_hash_buffer_impl_H 25 #ifndef __TBB_flow_graph_H 26 #error Do not #include this internal file directly; use public TBB headers instead. 33 template<
typename ValueType>
71 for(
size_t i=0; i < sz - 1; ++i ) {
72 la[i].second = &(la[i+1]);
74 la[sz-1].second = NULL;
102 DoCleanup my_cleanup(new_pointer_array, new_elements_array,
new_size);
105 for(
size_t i=0; i <
new_size; ++i) new_pointer_array[i] = NULL;
108 for(
size_t i=0; i <
my_size; ++i) {
110 value_type *ov = reinterpret_cast<value_type *>(&(op->first));
115 my_cleanup.my_pa = NULL;
116 my_cleanup.my_elements = NULL;
131 size_t l_mask = p_sz-1;
133 size_t h = this->hash((*
my_key)(v)) & l_mask;
134 __TBB_ASSERT(p_free_list,
"Error: free list not set up.");
137 my_elem->second = p_pointer_array[
h];
138 p_pointer_array[
h] = my_elem;
151 for(
size_t i = 0; i < sz; ++i ) {
155 internal::punned_cast<value_type *>(&(
p->first))->~
value_type();
208 size_t i = this->hash(k) &
mask();
210 pointer_type pv = reinterpret_cast<pointer_type>(&(
p->first));
212 if(this->equal((*
my_key)(*pv), k)) {
231 size_t h = this->hash(k) &
mask();
234 value_type *vp = reinterpret_cast<value_type *>(&(
p->first));
236 if(this->equal((*
my_key)(*vp), k)) {
238 if(prev) prev->second =
p->second;
249 #endif // __TBB__flow_graph_hash_buffer_impl_H void set_key_func(ValueToKey *vtk)
bool find_with_key(const Knoref &k, value_type &v)
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
pointer_array_type pointer_array
tbb::internal::strip< Key >::type Knoref
static const size_t INITIAL_SIZE
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 new_size
value_type * pointer_type
bool find_ref_with_key(const Knoref &k, pointer_type &v)
void internal_insert_with_key(element_type **p_pointer_array, size_t p_sz, list_array_type &p_free_list, const value_type &v)
void set_up_free_list(element_type **p_free_list, list_array_type la, size_t sz)
Allocator::template rebind< list_array_type >::other pointer_array_allocator_type
aligned_pair< ValueType, void * >::type type
void const char const char int ITT_FORMAT __itt_group_sync p
list_array_type * my_elements
static void internal_free_buffer(pointer_array_type &pa, list_array_type &el, size_t &sz, size_t &ne)
list_array_type * pointer_array_type
ValueToKey * get_key_func()
pointer_array_type * my_pa
Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.
void internal_initialize_buffer()
buffer_element_type< value_type >::type element_type
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
Allocator::template rebind< element_type >::other elements_array_allocator
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
void delete_with_key(const Knoref &k)
DoCleanup(pointer_array_type &pa, list_array_type &my_els, size_t sz)
element_type * list_array_type
list_array_type elements_array
bool insert_with_key(const value_type &v)