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, Allocator > | input_impl_type
typedef internal::function_input_queue< input_type, 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, Policy, Allocator >
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, Policy, Allocator > | my_class
typedef function_input_base< Input, Policy, Allocator, my_class > | base_type
typedef function_input_queue< input_type, Allocator > | input_queue_type
Public Types inherited from internal::function_input_base< Input, Policy, Allocator, multifunction_input< Input, internal::wrap_tuple_elements< tbb::flow::tuple_size< Output >::value, internal::multifunction_output, Output >::type, Policy, Allocator > >
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, Allocator > | input_queue_type
typedef Allocator ::template rebind< input_queue_type >::other | queue_allocator_type
Public Types inherited from tbb::flow::interface11::internal::untyped_receiver
typedef untyped_sender | predecessor_type
| The predecessor type for this node. More...

## 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, Policy, Allocator >
| 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, Allocator, multifunction_input< Input, internal::wrap_tuple_elements< tbb::flow::tuple_size< Output >::value, internal::multifunction_output, Output >::type, Policy, Allocator > >
| __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
| Put item to successor; return task to run the successor if possible. More...
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...
Public Member Functions inherited from tbb::flow::interface11::receiver< Input >
bool | try_put (const typename internal::async_helpers< Input >::filtered_type &t)
| Put an item to the receiver. More...
bool | try_put (const typename internal::async_helpers< Input >::async_type &t)
Public Member Functions inherited from tbb::flow::interface11::internal::untyped_receiver
virtual | ~untyped_receiver ()
| Destructor. More...
template<typename X >
bool | try_put (const X &t)
| Put an item to the receiver. 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, Policy, Allocator >
void | reset (reset_flags f)
Protected Member Functions inherited from internal::function_input_base< Input, Policy, Allocator, multifunction_input< Input, internal::wrap_tuple_elements< tbb::flow::tuple_size< Output >::value, internal::multifunction_output, Output >::type, Policy, Allocator > >
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)
Protected Member Functions inherited from tbb::flow::interface11::receiver< Input >
virtual task * | try_put_task_wrapper (const void *p, bool is_async) __TBB_override
Protected Member Functions inherited from tbb::flow::interface11::internal::untyped_receiver
template<typename X >
task * | try_put_task (const X &t)
virtual void | reset_receiver (reset_flags f=rf_reset_protocol)=0
| put receiver back in initial state More...
virtual bool | is_continue_receiver ()

## Static Protected Attributes

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

## Private Types

typedef internal::multifunction_input< input_type, output_ports_type, Policy, Allocator > | base_type

## Additional Inherited Members

Public Attributes inherited from tbb::flow::interface11::receiver< Input >
__TBB_DEPRECATED typedef Input | input_type
| The input type of this receiver. More...
__TBB_DEPRECATED typedef internal::async_helpers< Input >::filtered_type | filtered_type
Static Public Attributes inherited from internal::multifunction_input< Input, internal::wrap_tuple_elements< tbb::flow::tuple_size< Output >::value, internal::multifunction_output, Output >::type, Policy, Allocator >
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, Policy, Allocator >
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, Allocator, multifunction_input< Input, internal::wrap_tuple_elements< tbb::flow::tuple_size< Output >::value, internal::multifunction_output, Output >::type, Policy, Allocator > >
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 = cache_aligned_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 1260 of file flow_graph.h.

## Member Typedef Documentation

## base_type

template<typename Input, typename Output, typename Policy = queueing, typename Allocator = cache_aligned_allocator<Input>>

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

private

Definition at line 1282 of file flow_graph.h.

## input_impl_type

template<typename Input, typename Output, typename Policy = queueing, typename Allocator = cache_aligned_allocator<Input>>

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

Definition at line 1279 of file flow_graph.h.

## input_queue_type

template<typename Input, typename Output, typename Policy = queueing, typename Allocator = cache_aligned_allocator<Input>>

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

Definition at line 1280 of file flow_graph.h.

## input_type

template<typename Input, typename Output, typename Policy = queueing, typename Allocator = cache_aligned_allocator<Input>>

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

Definition at line 1276 of file flow_graph.h.

## output_ports_type

template<typename Input, typename Output, typename Policy = queueing, typename Allocator = cache_aligned_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 1278 of file flow_graph.h.

## output_type

template<typename Input, typename Output, typename Policy = queueing, typename Allocator = cache_aligned_allocator<Input>>

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

Definition at line 1277 of file flow_graph.h.

## Constructor & Destructor Documentation

## multifunction_node() [1/2]

template<typename Input, typename Output, typename Policy = queueing, typename Allocator = cache_aligned_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 1286 of file flow_graph.h.

: graph_node(g), base_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
);
}

## multifunction_node() [2/2]

template<typename Input, typename Output, typename Policy = queueing, typename Allocator = cache_aligned_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 1322 of file flow_graph.h.

:
graph_node(other.my_graph), base_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 );
}

## Member Function Documentation

## reset_node()

template<typename Input, typename Output, typename Policy = queueing, typename Allocator = cache_aligned_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 1343 of file flow_graph.h.

{ base_type::reset(f); }

## Member Data Documentation

## N

template<typename Input, typename Output, typename Policy = queueing, typename Allocator = cache_aligned_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 1274 of file flow_graph.h.

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

- flow_graph.h

CODEPTR
#define CODEPTR()
Definition: _flow_graph_trace_impl.h:297
tbb::flow::interface11::graph_node::graph_node
graph_node(graph &g)
Definition: flow_graph.h:880
__TBB_FLOW_GRAPH_PRIORITY_ARG1
#define __TBB_FLOW_GRAPH_PRIORITY_ARG1(arg1, priority)
Definition: _flow_graph_impl.h:40
internal::multifunction_input::reset
void reset(reset_flags f)
Definition: _flow_graph_node_impl.h:700
internal::multifunction_input< Input, internal::wrap_tuple_elements< tbb::flow::tuple_size< Output >::value, internal::multifunction_output, Output >::type, Policy, Allocator >::output_ports
output_ports_type & output_ports()
Definition: _flow_graph_node_impl.h:691
tbb::flow::interface11::graph_node::my_graph
graph & my_graph
Definition: _flow_graph_impl.h:464
tbb::flow::concurrency
concurrency
An enumeration the provides the two most common concurrency levels: unlimited and serial.
Definition: flow_graph.h:98
internal::multifunction_input< Input, internal::wrap_tuple_elements< tbb::flow::tuple_size< Output >::value, internal::multifunction_output, Output >::type, Policy, Allocator >::my_body
multifunction_body_type * my_body
Definition: _flow_graph_node_impl.h:711
tbb::flow::interface11::multifunction_node::base_type
internal::multifunction_input< input_type, output_ports_type, Policy, Allocator > base_type
Definition: flow_graph.h:1282

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.