internal::join_node_FE< queueing, InputTuple, OutputTuple > Class Template Reference

`#include <_flow_graph_join_impl.h>`

Inheritance diagram for internal::join_node_FE< queueing, InputTuple, OutputTuple >:
Collaboration diagram for internal::join_node_FE< queueing, InputTuple, OutputTuple >:

## Public Types

typedef OutputTuple | output_type
typedef InputTuple | input_type
typedef join_node_base< queueing, InputTuple, OutputTuple > | base_node_type

## Public Member Functions

| join_node_FE (graph &g)
| join_node_FE (const join_node_FE &other)
void | set_my_node (base_node_type *new_my_node)
void | reset_port_count ()
task * | decrement_port_count (bool handle_task) __TBB_override
void | increment_port_count () __TBB_override
input_type & | input_ports ()
Public Member Functions inherited from internal::forwarding_base
| forwarding_base (graph &g)
virtual | ~forwarding_base ()
Public Member Functions inherited from tbb::internal::no_assign
void | operator= (const no_assign &)=delete
| no_assign (const no_assign &)=default
| no_assign ()=default

## Static Public Attributes

static const int | N = tbb::flow::tuple_size<OutputTuple>::value

## Protected Member Functions

void | reset (reset_flags f)
bool | tuple_build_may_succeed ()
bool | try_to_make_tuple (output_type &out)
void | tuple_accepted ()
void | tuple_rejected ()

## Protected Attributes

input_type | my_inputs
base_node_type * | my_node
atomic< size_t > | ports_with_no_items

## Additional Inherited Members

Public Attributes inherited from internal::forwarding_base
graph & | graph_ref

## Detailed Description

### template<typename InputTuple, typename OutputTuple>
class internal::join_node_FE< queueing, InputTuple, OutputTuple >

Definition at line 953 of file _flow_graph_join_impl.h.

## Member Typedef Documentation

## base_node_type

template<typename InputTuple , typename OutputTuple >

typedef join_node_base<queueing, InputTuple, OutputTuple> internal::join_node_FE< queueing, InputTuple, OutputTuple >::base_node_type

Definition at line 958 of file _flow_graph_join_impl.h.

## input_type

template<typename InputTuple , typename OutputTuple >

typedef InputTuple internal::join_node_FE< queueing, InputTuple, OutputTuple >::input_type

Definition at line 957 of file _flow_graph_join_impl.h.

## output_type

template<typename InputTuple , typename OutputTuple >

typedef OutputTuple internal::join_node_FE< queueing, InputTuple, OutputTuple >::output_type

Definition at line 956 of file _flow_graph_join_impl.h.

## Constructor & Destructor Documentation

## join_node_FE() [1/2]

template<typename InputTuple , typename OutputTuple >

internal::join_node_FE< queueing, InputTuple, OutputTuple >::join_node_FE | ( | graph & | g | ) |

inline

Definition at line 960 of file _flow_graph_join_impl.h.

: forwarding_base(g), my_node(NULL) {
ports_with_no_items = N;
join_helper<N>::set_join_node_pointer(my_inputs, this);
}

References internal::join_helper< N >::set_join_node_pointer().

Here is the call graph for this function:

## join_node_FE() [2/2]

template<typename InputTuple , typename OutputTuple >

internal::join_node_FE< queueing, InputTuple, OutputTuple >::join_node_FE | ( | const join_node_FE< queueing, InputTuple, OutputTuple > & | other | ) |

inline

Definition at line 965 of file _flow_graph_join_impl.h.

: forwarding_base((other.forwarding_base::graph_ref)), my_node(NULL) {
ports_with_no_items = N;
join_helper<N>::set_join_node_pointer(my_inputs, this);
}

References internal::join_helper< N >::set_join_node_pointer().

Here is the call graph for this function:

## Member Function Documentation

## decrement_port_count()

template<typename InputTuple , typename OutputTuple >

task* internal::join_node_FE< queueing, InputTuple, OutputTuple >::decrement_port_count | ( | bool | handle_task | ) |

inline virtual

Implements internal::forwarding_base.

Definition at line 978 of file _flow_graph_join_impl.h.

{
if(ports_with_no_items.fetch_and_decrement() == 1) {
if(internal::is_graph_active(this->graph_ref)) {
task *rtask = new ( task::allocate_additional_child_of( *(this->graph_ref.root_task()) ) )
forward_task_bypass <base_node_type>(*my_node);
if(!handle_task) return rtask;
internal::spawn_in_graph_arena(this->graph_ref, *rtask);
}
}
return NULL;
}

References tbb::flow::interface11::internal::is_graph_active(), tbb::flow::interface11::internal::spawn_in_graph_arena(), and task.

Here is the call graph for this function:

## increment_port_count()

template<typename InputTuple , typename OutputTuple >

void internal::join_node_FE< queueing, InputTuple, OutputTuple >::increment_port_count | ( |  | ) |

inline virtual

Implements internal::forwarding_base.

Definition at line 991 of file _flow_graph_join_impl.h.

{ __TBB_ASSERT(false, NULL); } // should never be called

References __TBB_ASSERT.

## input_ports()

template<typename InputTuple , typename OutputTuple >

input_type& internal::join_node_FE< queueing, InputTuple, OutputTuple >::input_ports | ( |  | ) |

inline

Definition at line 993 of file _flow_graph_join_impl.h.

{ return my_inputs; }

## reset()

template<typename InputTuple , typename OutputTuple >

void internal::join_node_FE< queueing, InputTuple, OutputTuple >::reset | ( | reset_flags | f | ) |

inline protected

Definition at line 997 of file _flow_graph_join_impl.h.

{
reset_port_count();
join_helper<N>::reset_inputs(my_inputs, f );
}

References internal::join_helper< N >::reset_inputs().

Here is the call graph for this function:

## reset_port_count()

template<typename InputTuple , typename OutputTuple >

void internal::join_node_FE< queueing, InputTuple, OutputTuple >::reset_port_count | ( |  | ) |

inline

Definition at line 973 of file _flow_graph_join_impl.h.

{
ports_with_no_items = N;
}

## set_my_node()

template<typename InputTuple , typename OutputTuple >

void internal::join_node_FE< queueing, InputTuple, OutputTuple >::set_my_node | ( | base_node_type * | new_my_node | ) |

inline

Definition at line 971 of file _flow_graph_join_impl.h.

{ my_node = new_my_node; }

## try_to_make_tuple()

template<typename InputTuple , typename OutputTuple >

bool internal::join_node_FE< queueing, InputTuple, OutputTuple >::try_to_make_tuple | ( | output_type & | out | ) |

inline protected

Definition at line 1014 of file _flow_graph_join_impl.h.

{
if(ports_with_no_items) return false;
return join_helper<N>::get_items(my_inputs, out);
}

References internal::join_helper< N >::get_items().

Here is the call graph for this function:

## tuple_accepted()

template<typename InputTuple , typename OutputTuple >

void internal::join_node_FE< queueing, InputTuple, OutputTuple >::tuple_accepted | ( |  | ) |

inline protected

Definition at line 1019 of file _flow_graph_join_impl.h.

{
reset_port_count();
join_helper<N>::reset_ports(my_inputs);
}

References internal::join_helper< N >::reset_ports().

Here is the call graph for this function:

## tuple_build_may_succeed()

template<typename InputTuple , typename OutputTuple >

bool internal::join_node_FE< queueing, InputTuple, OutputTuple >::tuple_build_may_succeed | ( |  | ) |

inline protected

Definition at line 1010 of file _flow_graph_join_impl.h.

{
return !ports_with_no_items;
}

## tuple_rejected()

template<typename InputTuple , typename OutputTuple >

void internal::join_node_FE< queueing, InputTuple, OutputTuple >::tuple_rejected | ( |  | ) |

inline protected

Definition at line 1023 of file _flow_graph_join_impl.h.

{
// nothing to do.
}

## Member Data Documentation

## my_inputs

template<typename InputTuple , typename OutputTuple >

input_type internal::join_node_FE< queueing, InputTuple, OutputTuple >::my_inputs

protected

Definition at line 1027 of file _flow_graph_join_impl.h.

## my_node

template<typename InputTuple , typename OutputTuple >

base_node_type* internal::join_node_FE< queueing, InputTuple, OutputTuple >::my_node

protected

Definition at line 1028 of file _flow_graph_join_impl.h.

## N

template<typename InputTuple , typename OutputTuple >

const int internal::join_node_FE< queueing, InputTuple, OutputTuple >::N = tbb::flow::tuple_size<OutputTuple>::value

static

Definition at line 955 of file _flow_graph_join_impl.h.

## ports_with_no_items

template<typename InputTuple , typename OutputTuple >

atomic<size_t> internal::join_node_FE< queueing, InputTuple, OutputTuple >::ports_with_no_items

protected

Definition at line 1029 of file _flow_graph_join_impl.h.

The documentation for this class was generated from the following file:

- _flow_graph_join_impl.h

internal::join_node_FE< queueing, InputTuple, OutputTuple >::N
static const int N
Definition: _flow_graph_join_impl.h:955
tbb::flow::interface11::internal::is_graph_active
bool is_graph_active(tbb::flow::interface10::graph &g)
Definition: _flow_graph_impl.h:494
tbb::flow::interface11::internal::spawn_in_graph_arena
void spawn_in_graph_arena(tbb::flow::interface10::graph &g, tbb::task &arena_task)
Spawns a task inside graph arena.
Definition: _flow_graph_impl.h:521
__TBB_ASSERT
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
Definition: tbb_stddef.h:165
internal::join_helper::reset_ports
static void reset_ports(InputTuple &my_input)
Definition: _flow_graph_join_impl.h:100
internal::join_helper::set_join_node_pointer
static void set_join_node_pointer(TupleType &my_input, PortType *port)
Definition: _flow_graph_join_impl.h:51
internal::forwarding_base::graph_ref
graph & graph_ref
Definition: _flow_graph_join_impl.h:34
task
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 * task
Definition: ittnotify_static.h:119
internal::join_helper::get_items
static bool get_items(InputTuple &my_input, OutputTuple &out)
Definition: _flow_graph_join_impl.h:89
internal::forwarding_base::forwarding_base
forwarding_base(graph &g)
Definition: _flow_graph_join_impl.h:27
internal::join_node_FE< queueing, InputTuple, OutputTuple >::my_inputs
input_type my_inputs
Definition: _flow_graph_join_impl.h:1027
internal::join_node_FE< queueing, InputTuple, OutputTuple >::my_node
base_node_type * my_node
Definition: _flow_graph_join_impl.h:1028
internal::join_helper::reset_inputs
static void reset_inputs(InputTuple &my_input, reset_flags f)
Definition: _flow_graph_join_impl.h:120
internal::join_node_FE< queueing, InputTuple, OutputTuple >::reset_port_count
void reset_port_count()
Definition: _flow_graph_join_impl.h:973
internal::join_node_FE< queueing, InputTuple, OutputTuple >::ports_with_no_items
atomic< size_t > ports_with_no_items
Definition: _flow_graph_join_impl.h:1029

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.