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
task * | try_put_task (output_type const *v)
Public Member Functions inherited from internal::indexer_node_FE< InputTuple, OutputType, StructTypes >
| indexer_node_FE ()
input_type & | input_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_operation > | handler_type

## Private Member Functions

void | handle_operations (indexer_node_base_operation *op_list)

## Private Attributes

aggregator< handler_type, indexer_node_base_operation > | my_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.

{ reg_succ, rem_succ, try__put_task
#if TBB_DEPRECATED_FLOW_NODE_EXTRACTION
, add_blt_succ, del_blt_succ,
blt_succ_cnt, blt_succ_cpy
#endif
};
internal::indexer_node_base::rem_succ
@ rem_succ
Definition: _flow_graph_indexer_impl.h:186
internal::indexer_node_base::reg_succ
@ reg_succ
Definition: _flow_graph_indexer_impl.h:186
internal::indexer_node_base::try__put_task
@ try__put_task
Definition: _flow_graph_indexer_impl.h:186

## 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.

: graph_node(g), input_ports_type() {
indexer_helper<StructTypes,N>::set_indexer_node_pointer(this->my_inputs, this, g);
my_successors.set_owner(this);
my_aggregator.initialize_handler(handler_type(this));
}
internal::successor_cache::set_owner
void set_owner(owner_type *owner)
Definition: _flow_graph_cache_impl.h:326
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_FE::my_inputs
input_type my_inputs
Definition: _flow_graph_indexer_impl.h:164
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::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::input_ports_type
indexer_node_FE< InputTuple, output_type, StructTypes > input_ports_type
Definition: _flow_graph_indexer_impl.h:178

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.

: graph_node(other.my_graph), input_ports_type(), sender<output_type>() {
indexer_helper<StructTypes,N>::set_indexer_node_pointer(this->my_inputs, this, other.my_graph);
my_successors.set_owner(this);
my_aggregator.initialize_handler(handler_type(this));
}

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 | ) |

inline private

Definition at line 217 of file _flow_graph_indexer_impl.h.

{
indexer_node_base_operation *current;
while(op_list) {
current = op_list;
op_list = op_list->next;
switch(current->type) {
case reg_succ:
my_successors.register_successor(*(current->my_succ));
__TBB_store_with_release(current->status, SUCCEEDED);
break;
case rem_succ:
my_successors.remove_successor(*(current->my_succ));
__TBB_store_with_release(current->status, SUCCEEDED);
break;
case try__put_task: {
current->bypass_t = my_successors.try_put_task(*(current->my_arg));
__TBB_store_with_release(current->status, SUCCEEDED); // return of try_put_task actual return value
}
break;
#if TBB_DEPRECATED_FLOW_NODE_EXTRACTION
case add_blt_succ:
my_successors.internal_add_built_successor(*(current->my_succ));
__TBB_store_with_release(current->status, SUCCEEDED);
break;
case del_blt_succ:
my_successors.internal_delete_built_successor(*(current->my_succ));
__TBB_store_with_release(current->status, SUCCEEDED);
break;
case blt_succ_cnt:
current->cnt_val = my_successors.successor_count();
__TBB_store_with_release(current->status, SUCCEEDED);
break;
case blt_succ_cpy:
my_successors.copy_successors(*(current->succv));
__TBB_store_with_release(current->status, SUCCEEDED);
break;
#endif /* TBB_DEPRECATED_FLOW_NODE_EXTRACTION */
}
}
}
tbb::internal::__TBB_store_with_release
void __TBB_store_with_release(volatile T &location, V value)
Definition: tbb_machine.h:716
internal::SUCCEEDED
@ SUCCEEDED
Definition: _flow_graph_types_impl.h:719
internal::successor_cache::register_successor
void register_successor(successor_type &r)
Definition: _flow_graph_cache_impl.h:330
internal::successor_cache::remove_successor
void remove_successor(successor_type &r)
Definition: _flow_graph_cache_impl.h:335
internal::broadcast_cache::try_put_task
task * try_put_task(const T &t) __TBB_override
Definition: _flow_graph_cache_impl.h:478

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

Definition at line 273 of file _flow_graph_indexer_impl.h.

{
indexer_node_base_operation op_data(r, reg_succ);
my_aggregator.execute(&op_data);
return op_data.status == SUCCEEDED;
}

References internal::indexer_node_base< InputTuple, OutputType, StructTypes >::my_aggregator, internal::indexer_node_base< InputTuple, OutputType, StructTypes >::reg_succ, tbb::interface6::internal::aggregated_operation< Derived >::status, and internal::SUCCEEDED.

## remove_successor()

template<typename InputTuple , typename OutputType , typename StructTypes >

bool internal::indexer_node_base< InputTuple, OutputType, StructTypes >::remove_successor | ( | successor_type & | r | ) |

inline

Definition at line 279 of file _flow_graph_indexer_impl.h.

{
indexer_node_base_operation op_data(r, rem_succ);
my_aggregator.execute(&op_data);
return op_data.status == SUCCEEDED;
}

References internal::indexer_node_base< InputTuple, OutputType, StructTypes >::my_aggregator, internal::indexer_node_base< InputTuple, OutputType, StructTypes >::rem_succ, tbb::interface6::internal::aggregated_operation< Derived >::status, and internal::SUCCEEDED.

## reset_node()

template<typename InputTuple , typename OutputType , typename StructTypes >

void internal::indexer_node_base< InputTuple, OutputType, StructTypes >::reset_node | ( | reset_flags | f | ) |

inline protected

Definition at line 322 of file _flow_graph_indexer_impl.h.

{
if(f & rf_clear_edges) {
my_successors.clear();
indexer_helper<StructTypes,N>::reset_inputs(this->my_inputs,f);
}
}
tbb::flow::interface11::rf_clear_edges
@ rf_clear_edges
Definition: _flow_graph_impl.h:161
internal::successor_cache::clear
void clear()
Definition: _flow_graph_cache_impl.h:351
internal::indexer_helper::reset_inputs
static void reset_inputs(InputTuple &my_input, reset_flags f)
Definition: _flow_graph_indexer_impl.h:49

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, internal::indexer_helper< TupleTypes, N >::reset_inputs(), and tbb::flow::interface11::rf_clear_edges.

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

Definition at line 285 of file _flow_graph_indexer_impl.h.

{ // not a virtual method in this class
indexer_node_base_operation op_data(v, try__put_task);
my_aggregator.execute(&op_data);
return op_data.bypass_t;
}

References internal::indexer_node_base< InputTuple, OutputType, StructTypes >::indexer_node_base_operation::bypass_t, internal::indexer_node_base< InputTuple, OutputType, StructTypes >::my_aggregator, and internal::indexer_node_base< InputTuple, OutputType, StructTypes >::try__put_task.

## 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 213 of file _flow_graph_indexer_impl.h.

## Member Data Documentation

## my_aggregator

template<typename InputTuple , typename OutputType , typename StructTypes >

aggregator<handler_type, indexer_node_base_operation> internal::indexer_node_base< InputTuple, OutputType, StructTypes >::my_aggregator

private

Definition at line 215 of file _flow_graph_indexer_impl.h.

Referenced by internal::indexer_node_base< InputTuple, OutputType, StructTypes >::indexer_node_base(), internal::indexer_node_base< InputTuple, OutputType, StructTypes >::register_successor(), internal::indexer_node_base< InputTuple, OutputType, StructTypes >::remove_successor(), and internal::indexer_node_base< InputTuple, OutputType, StructTypes >::try_put_task().

## my_successors

template<typename InputTuple , typename OutputType , typename StructTypes >

broadcast_cache<output_type, null_rw_mutex> internal::indexer_node_base< InputTuple, OutputType, StructTypes >::my_successors

private

Definition at line 330 of file _flow_graph_indexer_impl.h.

Referenced by internal::indexer_node_base< InputTuple, OutputType, StructTypes >::handle_operations(), internal::indexer_node_base< InputTuple, OutputType, StructTypes >::indexer_node_base(), and internal::indexer_node_base< InputTuple, OutputType, StructTypes >::reset_node().

## 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:

- _flow_graph_indexer_impl.h

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.