Intel(R) Threading Building Blocks Doxygen Documentation version 4.2.3
Loading...
Searching...
No Matches
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

Definition at line 261 of file _flow_graph_indexer_impl.h.

261 : graph_node(g), input_ports_type() {
264 my_aggregator.initialize_handler(handler_type(this));
265 }
void set_owner(owner_type *owner)
static void set_indexer_node_pointer(PortTuple &my_input, IndexerNodeBaseType *p, graph &g)
aggregator< handler_type, indexer_node_base_operation > my_aggregator
broadcast_cache< output_type, null_rw_mutex > my_successors
internal::aggregating_functor< class_type, indexer_node_base_operation > handler_type
indexer_node_FE< InputTuple, output_type, StructTypes > input_ports_type

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:

◆ 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>() {
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 }
void __TBB_store_with_release(volatile T &location, V value)
void register_successor(successor_type &r)
void remove_successor(successor_type &r)
task * try_put_task(const T &t) __TBB_override

References 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

Definition at line 322 of file _flow_graph_indexer_impl.h.

322 {
323 if(f & rf_clear_edges) {
326 }
327 }
static void reset_inputs(InputTuple &my_input, reset_flags f)

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

Here is the call graph for this function:

◆ 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 Symbol 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 213 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:

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.