tbb::flow::interface11::multifunction_node< Input, Output, Policy, Allocator > Class Template Reference

implements a function node that supports Input -> (set of outputs) More...

`#include <flow_graph.h>`

Inheritance diagram for tbb::flow::interface11::multifunction_node< Input, Output, Policy, Allocator >:
Collaboration diagram for tbb::flow::interface11::multifunction_node< Input, Output, Policy, Allocator >:

## Public Types

typedef Input | input_type
typedef null_type | output_type
typedef internal::wrap_tuple_elements< N, internal::multifunction_output, Output >::type | output_ports_type
typedef internal::multifunction_input< input_type, output_ports_type, Policy, internals_allocator > | input_impl_type
typedef internal::function_input_queue< input_type, internals_allocator > | input_queue_type
Public Types inherited from internal::multifunction_input< Input, internal::wrap_tuple_elements< tbb::flow::tuple_size< Output >::value, internal::multifunction_output, Output >::type, queueing, cache_aligned_allocator< Input > >
typedef Input | input_type
typedef internal::wrap_tuple_elements< tbb::flow::tuple_size< Output >::value, internal::multifunction_output, Output >::type | output_ports_type
typedef multifunction_body< input_type, output_ports_type > | multifunction_body_type
typedef multifunction_input< Input, internal::wrap_tuple_elements< tbb::flow::tuple_size< Output >::value, internal::multifunction_output, Output >::type, queueing, cache_aligned_allocator< Input > > | my_class
typedef function_input_base< Input, queueing, cache_aligned_allocator< Input >, my_class > | base_type
typedef function_input_queue< input_type, cache_aligned_allocator< Input > > | input_queue_type
Public Types inherited from internal::function_input_base< Input, Policy, A, ImplType >
typedef Input | input_type
| The input type of this receiver. More...
typedef receiver< input_type >::predecessor_type | predecessor_type
typedef predecessor_cache< input_type, null_mutex > | predecessor_cache_type
typedef function_input_queue< input_type, A > | input_queue_type
typedef tbb::internal::allocator_rebind< A, input_queue_type >::type | queue_allocator_type

## Public Member Functions

template<typename Body >
__TBB_NOINLINE_SYM | multifunction_node (graph &g, size_t concurrency,)
__TBB_NOINLINE_SYM | multifunction_node (const multifunction_node &other)
Public Member Functions inherited from tbb::flow::interface11::graph_node
| graph_node (graph &g)
virtual | ~graph_node ()
Public Member Functions inherited from internal::multifunction_input< Input, internal::wrap_tuple_elements< tbb::flow::tuple_size< Output >::value, internal::multifunction_output, Output >::type, queueing, cache_aligned_allocator< Input > >
| multifunction_input (graph &g, size_t max_concurrency,)
| multifunction_input (const multifunction_input &src)
| Copy constructor. More...
| ~multifunction_input ()
Body | copy_function_object ()
task * | apply_body_impl_bypass (const input_type &i)
output_ports_type & | output_ports ()
Public Member Functions inherited from internal::function_input_base< Input, Policy, A, ImplType >
| __TBB_STATIC_ASSERT (!((internal::has_policy< queueing, Policy >::value) &&(internal::has_policy< rejecting, Policy >::value)), "queueing and rejecting policies can't be specified simultaneously")
| function_input_base (graph &g, __TBB_FLOW_GRAPH_PRIORITY_ARG1(size_t max_concurrency, node_priority_t priority))
| Constructor for function_input_base. More...
| function_input_base (const function_input_base &src)
| Copy constructor. More...
virtual | ~function_input_base ()
| Destructor. More...
task * | try_put_task (const input_type &t) __TBB_override
bool | register_predecessor (predecessor_type &src) __TBB_override
| Adds src to the list of cached predecessors. More...
bool | remove_predecessor (predecessor_type &src) __TBB_override
| Removes src from the list of cached predecessors. More...

## Protected Member Functions

void | reset_node (reset_flags f) __TBB_override
Protected Member Functions inherited from internal::multifunction_input< Input, internal::wrap_tuple_elements< tbb::flow::tuple_size< Output >::value, internal::multifunction_output, Output >::type, queueing, cache_aligned_allocator< Input > >
void | reset (reset_flags f)
Protected Member Functions inherited from internal::function_input_base< Input, Policy, A, ImplType >
void | reset_function_input_base (reset_flags f)
void | reset_receiver (reset_flags f) __TBB_override
graph & | graph_reference () const __TBB_override
task * | try_get_postponed_task (const input_type &i)

## Static Protected Attributes

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

## Private Types

typedef cache_aligned_allocator< Input > | internals_allocator

## Private Member Functions

| __TBB_STATIC_ASSERT ((tbb::internal::is_same_type< Allocator, null_type >::value), "Allocator template parameter for flow graph nodes is deprecated and will be removed. " "Specify TBB_DEPRECATED_FLOW_NODE_ALLOCATOR to temporary enable the deprecated interface.")

## Additional Inherited Members

Static Public Attributes inherited from internal::multifunction_input< Input, internal::wrap_tuple_elements< tbb::flow::tuple_size< Output >::value, internal::multifunction_output, Output >::type, queueing, cache_aligned_allocator< Input > >
static const int | N
Protected Attributes inherited from tbb::flow::interface11::graph_node
graph & | my_graph
graph_node * | next
graph_node * | prev
Protected Attributes inherited from internal::multifunction_input< Input, internal::wrap_tuple_elements< tbb::flow::tuple_size< Output >::value, internal::multifunction_output, Output >::type, queueing, cache_aligned_allocator< Input > >
multifunction_body_type * | my_body
multifunction_body_type * | my_init_body
output_ports_type | my_output_ports
Protected Attributes inherited from internal::function_input_base< Input, Policy, A, ImplType >
graph & | my_graph_ref
const size_t | my_max_concurrency
size_t | my_concurrency
input_queue_type * | my_queue
predecessor_cache< input_type, null_mutex > | my_predecessors

## Detailed Description

### template<typename Input, typename Output, typename Policy = queueing, typename Allocator = __TBB_DEFAULT_NODE_ALLOCATOR(Input)>
class tbb::flow::interface11::multifunction_node< Input, Output, Policy, Allocator >

implements a function node that supports Input -> (set of outputs)

Definition at line 1576 of file flow_graph.h.

## Member Typedef Documentation

## input_impl_type

template<typename Input , typename Output , typename Policy = queueing, typename Allocator = __TBB_DEFAULT_NODE_ALLOCATOR(Input)>

typedef internal::multifunction_input< input_type, output_ports_type, Policy, internals_allocator> tbb::flow::interface11::multifunction_node< Input, Output, Policy, Allocator >::input_impl_type

Definition at line 1612 of file flow_graph.h.

## input_queue_type

template<typename Input , typename Output , typename Policy = queueing, typename Allocator = __TBB_DEFAULT_NODE_ALLOCATOR(Input)>

typedef internal::function_input_queue<input_type, internals_allocator> tbb::flow::interface11::multifunction_node< Input, Output, Policy, Allocator >::input_queue_type

Definition at line 1613 of file flow_graph.h.

## input_type

template<typename Input , typename Output , typename Policy = queueing, typename Allocator = __TBB_DEFAULT_NODE_ALLOCATOR(Input)>

typedef Input tbb::flow::interface11::multifunction_node< Input, Output, Policy, Allocator >::input_type

Definition at line 1608 of file flow_graph.h.

## internals_allocator

template<typename Input , typename Output , typename Policy = queueing, typename Allocator = __TBB_DEFAULT_NODE_ALLOCATOR(Input)>

typedef cache_aligned_allocator<Input> tbb::flow::interface11::multifunction_node< Input, Output, Policy, Allocator >::internals_allocator

private

Definition at line 1596 of file flow_graph.h.

## output_ports_type

template<typename Input , typename Output , typename Policy = queueing, typename Allocator = __TBB_DEFAULT_NODE_ALLOCATOR(Input)>

typedef internal::wrap_tuple_elements<N,internal::multifunction_output, Output>::type tbb::flow::interface11::multifunction_node< Input, Output, Policy, Allocator >::output_ports_type

Definition at line 1610 of file flow_graph.h.

## output_type

template<typename Input , typename Output , typename Policy = queueing, typename Allocator = __TBB_DEFAULT_NODE_ALLOCATOR(Input)>

typedef null_type tbb::flow::interface11::multifunction_node< Input, Output, Policy, Allocator >::output_type

Definition at line 1609 of file flow_graph.h.

## Constructor & Destructor Documentation

## multifunction_node() [1/2]

template<typename Input , typename Output , typename Policy = queueing, typename Allocator = __TBB_DEFAULT_NODE_ALLOCATOR(Input)>
template<typename Body >

__TBB_NOINLINE_SYM tbb::flow::interface11::multifunction_node< Input, Output, Policy, Allocator >::multifunction_node | ( | graph & | g,
|  | size_t | concurrency
| ) |  |

inline

Definition at line 1618 of file flow_graph.h.

: graph_node(g), input_impl_type(g, concurrency, __TBB_FLOW_GRAPH_PRIORITY_ARG1(body, priority)) {
tbb::internal::fgt_multioutput_node_with_body<N>(
CODEPTR(), tbb::internal::FLOW_MULTIFUNCTION_NODE,
&this->my_graph, static_cast<receiver<input_type> *>(this),
this->output_ports(), this->my_body
);
}
__TBB_FLOW_GRAPH_PRIORITY_ARG1
#define __TBB_FLOW_GRAPH_PRIORITY_ARG1(arg1, priority)
Definition: _flow_graph_impl.h:40
CODEPTR
#define CODEPTR()
Definition: _flow_graph_trace_impl.h:297
tbb::flow::concurrency
concurrency
An enumeration the provides the two most common concurrency levels: unlimited and serial.
Definition: flow_graph.h:106
tbb::flow::interface11::multifunction_node::input_impl_type
internal::multifunction_input< input_type, output_ports_type, Policy, internals_allocator > input_impl_type
Definition: flow_graph.h:1612
tbb::flow::interface11::graph_node::my_graph
graph & my_graph
Definition: _flow_graph_impl.h:464
tbb::flow::interface11::graph_node::graph_node
graph_node(graph &g)
Definition: flow_graph.h:888
internal::multifunction_input< Input, internal::wrap_tuple_elements< tbb::flow::tuple_size< Output >::value, internal::multifunction_output, Output >::type, queueing, cache_aligned_allocator< Input > >::my_body
multifunction_body_type * my_body
Definition: _flow_graph_node_impl.h:711
internal::multifunction_input< Input, internal::wrap_tuple_elements< tbb::flow::tuple_size< Output >::value, internal::multifunction_output, Output >::type, queueing, cache_aligned_allocator< Input > >::output_ports
output_ports_type & output_ports()
Definition: _flow_graph_node_impl.h:691

References CODEPTR, internal::multifunction_input< Input, internal::wrap_tuple_elements< tbb::flow::tuple_size< Output >::value, internal::multifunction_output, Output >::type, queueing, cache_aligned_allocator< Input > >::my_body, tbb::flow::interface11::graph_node::my_graph, and internal::multifunction_input< Input, internal::wrap_tuple_elements< tbb::flow::tuple_size< Output >::value, internal::multifunction_output, Output >::type, queueing, cache_aligned_allocator< Input > >::output_ports().

Here is the call graph for this function:

## multifunction_node() [2/2]

template<typename Input , typename Output , typename Policy = queueing, typename Allocator = __TBB_DEFAULT_NODE_ALLOCATOR(Input)>

__TBB_NOINLINE_SYM tbb::flow::interface11::multifunction_node< Input, Output, Policy, Allocator >::multifunction_node | ( | const multifunction_node< Input, Output, Policy, Allocator > & | other | ) |

inline

Definition at line 1654 of file flow_graph.h.

:
graph_node(other.my_graph), input_impl_type(other) {
tbb::internal::fgt_multioutput_node_with_body<N>( CODEPTR(), tbb::internal::FLOW_MULTIFUNCTION_NODE,
&this->my_graph, static_cast<receiver<input_type> *>(this),
this->output_ports(), this->my_body );
}

References CODEPTR, internal::multifunction_input< Input, internal::wrap_tuple_elements< tbb::flow::tuple_size< Output >::value, internal::multifunction_output, Output >::type, queueing, cache_aligned_allocator< Input > >::my_body, tbb::flow::interface11::graph_node::my_graph, and internal::multifunction_input< Input, internal::wrap_tuple_elements< tbb::flow::tuple_size< Output >::value, internal::multifunction_output, Output >::type, queueing, cache_aligned_allocator< Input > >::output_ports().

Here is the call graph for this function:

## Member Function Documentation

## __TBB_STATIC_ASSERT()

template<typename Input , typename Output , typename Policy = queueing, typename Allocator = __TBB_DEFAULT_NODE_ALLOCATOR(Input)>

tbb::flow::interface11::multifunction_node< Input, Output, Policy, Allocator >::__TBB_STATIC_ASSERT | ( | (tbb::internal::is_same_type< Allocator, null_type >::value) | ,
|  | "Allocator template parameter for flow graph nodes is deprecated and will be removed. " "Specify TBB_DEPRECATED_FLOW_NODE_ALLOCATOR to temporary enable the deprecated interface." |
| ) |  |

private

## reset_node()

template<typename Input , typename Output , typename Policy = queueing, typename Allocator = __TBB_DEFAULT_NODE_ALLOCATOR(Input)>

void tbb::flow::interface11::multifunction_node< Input, Output, Policy, Allocator >::reset_node | ( | reset_flags | f | ) |

inline protected virtual

Implements tbb::flow::interface11::graph_node.

Definition at line 1675 of file flow_graph.h.

{ input_impl_type::reset(f); }
internal::multifunction_input::reset
void reset(reset_flags f)
Definition: _flow_graph_node_impl.h:700

References internal::multifunction_input< Input, OutputPortSet, Policy, A >::reset().

Here is the call graph for this function:

## Member Data Documentation

## N

template<typename Input , typename Output , typename Policy = queueing, typename Allocator = __TBB_DEFAULT_NODE_ALLOCATOR(Input)>

const int tbb::flow::interface11::multifunction_node< Input, Output, Policy, Allocator >::N = tbb::flow::tuple_size<Output>::value

static protected

Definition at line 1606 of file flow_graph.h.

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

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