Intel(R) Threading Building Blocks Doxygen Documentation  version 4.2.3
internal::indexer_node_base< InputTuple, OutputType, StructTypes > Class Template Reference

indexer_node_base More...

#include <_flow_graph_indexer_impl.h>

Inheritance diagram for internal::indexer_node_base< InputTuple, OutputType, StructTypes >:
Collaboration diagram for internal::indexer_node_base< InputTuple, OutputType, StructTypes >:

Classes

class  indexer_node_base_operation
 

Public Types

typedef OutputType output_type
 
typedef StructTypes tuple_types
 
typedef sender< output_type >::successor_type successor_type
 
typedef indexer_node_FE< InputTuple, output_type, StructTypes > input_ports_type
 
- Public Types inherited from internal::indexer_node_FE< InputTuple, OutputType, StructTypes >
typedef OutputType output_type
 
typedef InputTuple input_type
 

Public Member Functions

 indexer_node_base (graph &g)
 
 indexer_node_base (const indexer_node_base &other)
 
bool register_successor (successor_type &r) __TBB_override
 
bool remove_successor (successor_type &r) __TBB_override
 
tasktry_put_task (output_type const *v)
 
- Public Member Functions inherited from internal::indexer_node_FE< InputTuple, OutputType, StructTypes >
 indexer_node_FE ()
 
input_typeinput_ports ()
 

Static Public Attributes

static const size_t N = tbb::flow::tuple_size<InputTuple>::value
 
- Static Public Attributes inherited from internal::indexer_node_FE< InputTuple, OutputType, StructTypes >
static const int N = tbb::flow::tuple_size<InputTuple>::value
 

Protected Member Functions

void reset_node (reset_flags f) __TBB_override
 

Private Types

enum  op_type { reg_succ, rem_succ, try__put_task }
 
typedef indexer_node_base< InputTuple, output_type, StructTypes > class_type
 
typedef internal::aggregating_functor< class_type, indexer_node_base_operationhandler_type
 

Private Member Functions

void handle_operations (indexer_node_base_operation *op_list)
 

Private Attributes

aggregator< handler_type, indexer_node_base_operationmy_aggregator
 
broadcast_cache< output_type, null_rw_mutex > my_successors
 

Friends

class internal::aggregating_functor< class_type, indexer_node_base_operation >
 

Additional Inherited Members

- Protected Attributes inherited from internal::indexer_node_FE< InputTuple, OutputType, StructTypes >
input_type my_inputs
 

Detailed Description

template<typename InputTuple, typename OutputType, typename StructTypes>
class internal::indexer_node_base< InputTuple, OutputType, StructTypes >

indexer_node_base

Definition at line 169 of file _flow_graph_indexer_impl.h.

Member Typedef Documentation

◆ class_type

template<typename InputTuple , typename OutputType , typename StructTypes >
typedef indexer_node_base<InputTuple,output_type,StructTypes> internal::indexer_node_base< InputTuple, OutputType, StructTypes >::class_type
private

Definition at line 192 of file _flow_graph_indexer_impl.h.

◆ handler_type

template<typename InputTuple , typename OutputType , typename StructTypes >
typedef internal::aggregating_functor<class_type, indexer_node_base_operation> internal::indexer_node_base< InputTuple, OutputType, StructTypes >::handler_type
private

Definition at line 213 of file _flow_graph_indexer_impl.h.

◆ input_ports_type

template<typename InputTuple , typename OutputType , typename StructTypes >
typedef indexer_node_FE<InputTuple, output_type,StructTypes> internal::indexer_node_base< InputTuple, OutputType, StructTypes >::input_ports_type

Definition at line 178 of file _flow_graph_indexer_impl.h.

◆ output_type

template<typename InputTuple , typename OutputType , typename StructTypes >
typedef OutputType internal::indexer_node_base< InputTuple, OutputType, StructTypes >::output_type

Definition at line 175 of file _flow_graph_indexer_impl.h.

◆ successor_type

template<typename InputTuple , typename OutputType , typename StructTypes >
typedef sender<output_type>::successor_type internal::indexer_node_base< InputTuple, OutputType, StructTypes >::successor_type

Definition at line 177 of file _flow_graph_indexer_impl.h.

◆ tuple_types

template<typename InputTuple , typename OutputType , typename StructTypes >
typedef StructTypes internal::indexer_node_base< InputTuple, OutputType, StructTypes >::tuple_types

Definition at line 176 of file _flow_graph_indexer_impl.h.

Member Enumeration Documentation

◆ op_type

template<typename InputTuple , typename OutputType , typename StructTypes >
enum internal::indexer_node_base::op_type
private
Enumerator
reg_succ 
rem_succ 
try__put_task 

Definition at line 186 of file _flow_graph_indexer_impl.h.

187 #if TBB_DEPRECATED_FLOW_NODE_EXTRACTION
188  , add_blt_succ, del_blt_succ,
189  blt_succ_cnt, blt_succ_cpy
190 #endif
191  };

Constructor & Destructor Documentation

◆ indexer_node_base() [1/2]

template<typename InputTuple , typename OutputType , typename StructTypes >
internal::indexer_node_base< InputTuple, OutputType, StructTypes >::indexer_node_base ( graph &  g)
inline

◆ indexer_node_base() [2/2]

template<typename InputTuple , typename OutputType , typename StructTypes >
internal::indexer_node_base< InputTuple, OutputType, StructTypes >::indexer_node_base ( const indexer_node_base< InputTuple, OutputType, StructTypes > &  other)
inline

Definition at line 267 of file _flow_graph_indexer_impl.h.

267  : graph_node(other.my_graph), input_ports_type(), sender<output_type>() {
269  my_successors.set_owner(this);
270  my_aggregator.initialize_handler(handler_type(this));
271  }

References internal::indexer_node_base< InputTuple, OutputType, StructTypes >::my_aggregator, internal::indexer_node_FE< InputTuple, OutputType, StructTypes >::my_inputs, internal::indexer_node_base< InputTuple, OutputType, StructTypes >::my_successors, internal::indexer_helper< TupleTypes, N >::set_indexer_node_pointer(), and internal::successor_cache< T, M >::set_owner().

Here is the call graph for this function:

Member Function Documentation

◆ handle_operations()

template<typename InputTuple , typename OutputType , typename StructTypes >
void internal::indexer_node_base< InputTuple, OutputType, StructTypes >::handle_operations ( indexer_node_base_operation op_list)
inlineprivate

Definition at line 217 of file _flow_graph_indexer_impl.h.

217  {
218  indexer_node_base_operation *current;
219  while(op_list) {
220  current = op_list;
221  op_list = op_list->next;
222  switch(current->type) {
223 
224  case reg_succ:
225  my_successors.register_successor(*(current->my_succ));
226  __TBB_store_with_release(current->status, SUCCEEDED);
227  break;
228 
229  case rem_succ:
230  my_successors.remove_successor(*(current->my_succ));
231  __TBB_store_with_release(current->status, SUCCEEDED);
232  break;
233  case try__put_task: {
234  current->bypass_t = my_successors.try_put_task(*(current->my_arg));
235  __TBB_store_with_release(current->status, SUCCEEDED); // return of try_put_task actual return value
236  }
237  break;
238 #if TBB_DEPRECATED_FLOW_NODE_EXTRACTION
239  case add_blt_succ:
240  my_successors.internal_add_built_successor(*(current->my_succ));
241  __TBB_store_with_release(current->status, SUCCEEDED);
242  break;
243  case del_blt_succ:
244  my_successors.internal_delete_built_successor(*(current->my_succ));
245  __TBB_store_with_release(current->status, SUCCEEDED);
246  break;
247  case blt_succ_cnt:
248  current->cnt_val = my_successors.successor_count();
249  __TBB_store_with_release(current->status, SUCCEEDED);
250  break;
251  case blt_succ_cpy:
252  my_successors.copy_successors(*(current->succv));
253  __TBB_store_with_release(current->status, SUCCEEDED);
254  break;
255 #endif /* TBB_DEPRECATED_FLOW_NODE_EXTRACTION */
256  }
257  }
258  }

References tbb::internal::__TBB_store_with_release(), internal::indexer_node_base< InputTuple, OutputType, StructTypes >::indexer_node_base_operation::bypass_t, internal::indexer_node_base< InputTuple, OutputType, StructTypes >::indexer_node_base_operation::my_arg, internal::indexer_node_base< InputTuple, OutputType, StructTypes >::indexer_node_base_operation::my_succ, internal::indexer_node_base< InputTuple, OutputType, StructTypes >::my_successors, tbb::interface6::internal::aggregated_operation< Derived >::next, internal::indexer_node_base< InputTuple, OutputType, StructTypes >::reg_succ, internal::successor_cache< T, M >::register_successor(), internal::indexer_node_base< InputTuple, OutputType, StructTypes >::rem_succ, internal::successor_cache< T, M >::remove_successor(), tbb::interface6::internal::aggregated_operation< Derived >::status, internal::SUCCEEDED, internal::indexer_node_base< InputTuple, OutputType, StructTypes >::try__put_task, internal::broadcast_cache< T, M >::try_put_task(), and internal::indexer_node_base< InputTuple, OutputType, StructTypes >::indexer_node_base_operation::type.

Here is the call graph for this function:

◆ register_successor()

template<typename InputTuple , typename OutputType , typename StructTypes >
bool internal::indexer_node_base< InputTuple, OutputType, StructTypes >::register_successor ( successor_type r)
inline

◆ remove_successor()

template<typename InputTuple , typename OutputType , typename StructTypes >
bool internal::indexer_node_base< InputTuple, OutputType, StructTypes >::remove_successor ( successor_type r)
inline

◆ reset_node()

template<typename InputTuple , typename OutputType , typename StructTypes >
void internal::indexer_node_base< InputTuple, OutputType, StructTypes >::reset_node ( reset_flags  f)
inlineprotected

◆ try_put_task()

template<typename InputTuple , typename OutputType , typename StructTypes >
task* internal::indexer_node_base< InputTuple, OutputType, StructTypes >::try_put_task ( output_type const *  v)
inline

Friends And Related Function Documentation

◆ internal::aggregating_functor< class_type, indexer_node_base_operation >

template<typename InputTuple , typename OutputType , typename StructTypes >
friend class internal::aggregating_functor< class_type, indexer_node_base_operation >
friend

Definition at line 214 of file _flow_graph_indexer_impl.h.

Member Data Documentation

◆ my_aggregator

◆ my_successors

◆ N

template<typename InputTuple , typename OutputType , typename StructTypes >
const size_t internal::indexer_node_base< InputTuple, OutputType, StructTypes >::N = tbb::flow::tuple_size<InputTuple>::value
static

Definition at line 174 of file _flow_graph_indexer_impl.h.


The documentation for this class was generated from the following file:
internal::successor_cache::clear
void clear()
Definition: _flow_graph_cache_impl.h:351
internal::SUCCEEDED
@ SUCCEEDED
Definition: _flow_graph_types_impl.h:719
internal::indexer_node_base::my_aggregator
aggregator< handler_type, indexer_node_base_operation > my_aggregator
Definition: _flow_graph_indexer_impl.h:215
internal::indexer_node_base::my_successors
broadcast_cache< output_type, null_rw_mutex > my_successors
Definition: _flow_graph_indexer_impl.h:330
internal::broadcast_cache::try_put_task
task * try_put_task(const T &t) __TBB_override
Definition: _flow_graph_cache_impl.h:478
internal::indexer_node_FE::my_inputs
input_type my_inputs
Definition: _flow_graph_indexer_impl.h:164
internal::successor_cache::register_successor
void register_successor(successor_type &r)
Definition: _flow_graph_cache_impl.h:330
internal::indexer_node_base::reg_succ
@ reg_succ
Definition: _flow_graph_indexer_impl.h:186
internal::successor_cache::remove_successor
void remove_successor(successor_type &r)
Definition: _flow_graph_cache_impl.h:335
internal::indexer_helper::reset_inputs
static void reset_inputs(InputTuple &my_input, reset_flags f)
Definition: _flow_graph_indexer_impl.h:49
tbb::internal::__TBB_store_with_release
void __TBB_store_with_release(volatile T &location, V value)
Definition: tbb_machine.h:713
internal::indexer_node_base::input_ports_type
indexer_node_FE< InputTuple, output_type, StructTypes > input_ports_type
Definition: _flow_graph_indexer_impl.h:178
internal::successor_cache::set_owner
void set_owner(owner_type *owner)
Definition: _flow_graph_cache_impl.h:326
tbb::flow::interface11::rf_clear_edges
@ rf_clear_edges
Definition: _flow_graph_impl.h:161
internal::indexer_node_base::rem_succ
@ rem_succ
Definition: _flow_graph_indexer_impl.h:186
internal::indexer_helper::set_indexer_node_pointer
static void set_indexer_node_pointer(PortTuple &my_input, IndexerNodeBaseType *p, graph &g)
Definition: _flow_graph_indexer_impl.h:42
internal::indexer_node_base::handler_type
internal::aggregating_functor< class_type, indexer_node_base_operation > handler_type
Definition: _flow_graph_indexer_impl.h:213
internal::indexer_node_base::try__put_task
@ try__put_task
Definition: _flow_graph_indexer_impl.h:186

Copyright © 2005-2020 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.