Intel(R) Threading Building Blocks Doxygen Documentation
version 4.2.3
|
Go to the documentation of this file.
17 #ifndef __TBB__flow_graph_body_impl_H
18 #define __TBB__flow_graph_body_impl_H
22 #ifndef __TBB_flow_graph_H
23 #error Do not #include this internal file directly; use public TBB headers instead.
34 #if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
36 template<
typename ... Policies>
struct Policy {};
40 template<
typename ExpectedPolicy,
typename FirstPolicy,
typename ...Policies>
41 struct has_policy<ExpectedPolicy, FirstPolicy, Policies...> :
43 has_policy<ExpectedPolicy, Policies...>::value> {};
45 template<
typename ExpectedPolicy,
typename SinglePolicy>
49 template<
typename ExpectedPolicy,
typename ...Policies>
54 template<
typename P1,
typename P2 =
void>
struct Policy {};
56 template<
typename ExpectedPolicy,
typename SinglePolicy>
59 template<
typename ExpectedPolicy,
typename P>
60 struct has_policy<ExpectedPolicy, Policy<P> > : has_policy<ExpectedPolicy, P> {};
62 template<
typename ExpectedPolicy,
typename P1,
typename P2>
63 struct has_policy<ExpectedPolicy, Policy<P1, P2> > :
68 namespace graph_policy_namespace {
96 template<
typename Output >
101 #if TBB_DEPRECATED_INPUT_NODE_BODY
109 template <
typename Body>
112 "TBB Warning: input_node body requirements have been changed."
113 "To temporarily enforce deprecated API specify TBB_DEPRECATED_INPUT_NODE_BODY.");
116 template <
typename Body>
121 template <
typename ReturnType,
typename T>
124 "TBB Warning: input_node body requirements have been changed."
125 "To temporarily enforce deprecated API specify TBB_DEPRECATED_INPUT_NODE_BODY.");
129 template<
typename Output,
typename Body>
134 #if TBB_DEPRECATED_INPUT_NODE_BODY
150 template<
typename Output >
159 template<
typename Output,
typename Body>
176 template<
typename Input,
typename Output >
185 template <
typename Input,
typename Output,
typename B>
199 template <
typename B>
216 template <
typename Input,
typename B>
222 return continue_msg();
233 template <
typename Output,
typename B>
249 template<
typename Input,
typename OutputSet>
259 template<
typename Input,
typename OutputSet,
typename B >
277 template<
typename Input,
typename Output>
286 template<
typename Input,
typename Output>
294 template <
typename Input,
typename Output,
typename B>
307 template <
typename Input,
typename Output,
typename B>
327 template<
typename NodeType >
337 ) : graph_task(node_priority),
352 template<
typename NodeType,
typename Input >
363 ) : graph_task(node_priority),
377 template<
typename NodeType >
396 template<
typename Input,
typename Output >
398 Output
operator()(
const Input & )
const {
return Output(); }
401 template<
typename T,
typename DecrementType,
typename DummyType =
void>
404 template<
typename T,
typename DecrementType>
406 typename
tbb::internal::enable_if<
407 tbb::internal::is_integral<DecrementType>::value, void>
::type
413 task* result = my_node->decrement_counter(
value );
420 return my_node->my_graph;
425 #if TBB_DEPRECATED_FLOW_NODE_EXTRACTION
427 my_built_predecessors.clear();
440 #if TBB_DEPRECATED_FLOW_NODE_EXTRACTION
443 typedef typename receiver<DecrementType>::predecessor_type
predecessor_type;
445 typedef internal::edge_container<predecessor_type> built_predecessors_type;
446 typedef typename built_predecessors_type::edge_list_type predecessor_list_type;
447 built_predecessors_type &built_predecessors()
__TBB_override {
return my_built_predecessors; }
451 my_built_predecessors.add_edge(
s );
456 my_built_predecessors.delete_edge(
s);
459 void copy_predecessors( predecessor_list_type &v)
__TBB_override {
461 my_built_predecessors.copy_edges(v);
466 return my_built_predecessors.edge_count();
469 built_predecessors_type my_built_predecessors;
479 return my_node->decrement_counter( 1 );
485 return my_node->my_graph;
506 #endif // __TBB__flow_graph_body_impl_H
void check_input_node_body_input_type_impl(Body)
graph & graph_reference() const __TBB_override
Output operator()(const Input &i) __TBB_override
forward_task_bypass(NodeType &n)
receiver< input_type >::predecessor_type predecessor_type
input_body_leaf * clone() __TBB_override
type_to_key_function_body_leaf * clone() __TBB_override
A task that calls a node's forward_task function.
void operator()(const Input &input, OutputSet &oset) __TBB_override
decrementer(int number_of_predecessors=0)
virtual ~multifunction_body()
leaf for multifunction. OutputSet can be a std::tuple or a vector.
void check_input_node_body_input_type(Body)
#define __TBB_FLOW_GRAPH_PRIORITY_ARG1(arg1, priority)
A task that calls a node's apply_body_bypass function with no input.
virtual Output operator()(const Input &input)=0
the leaf for function_body specialized for Input and output of continue_msg
virtual type_to_key_function_body * clone()=0
The leaf for source_body.
Strips its template type argument from cv- and ref-qualifiers.
Base class for types that should not be assigned.
virtual ~type_to_key_function_body()
function_body_leaf * clone() __TBB_override
virtual Output operator()(flow_control &fc)=0
function_body_leaf(const B &_body)
task * execute() __TBB_override
function_body that takes an Input and a set of output ports
Output operator()(flow_control &fc) __TBB_override
static tbb::task *const SUCCESSFULLY_ENQUEUED
virtual function_body * clone()=0
virtual void operator()(const Input &, OutputSet &)=0
source_body_leaf * clone() __TBB_override
const Output & operator()(const Input &i) __TBB_override
multifunction_body_leaf(const B &_body)
virtual bool operator()(Output &output)=0
virtual multifunction_body * clone()=0
source_task_bypass(NodeType &n)
source_body_leaf(const Body &_body)
#define __TBB_STATIC_ASSERT(condition, msg)
the leaf for function_body
interface11::internal::Policy< queueing, lightweight > queueing_lightweight
static const node_priority_t no_priority
interface11::internal::Policy< rejecting, lightweight > rejecting_lightweight
task * execute() __TBB_override
virtual Output operator()(const Input &input)=0
task * execute() __TBB_override
Output operator()(const Input &i) __TBB_override
function_body_leaf * clone() __TBB_override
A functor that takes no input and generates a value of type Output.
unsigned int node_priority_t
the leaf for function_body specialized for Output of continue_msg
bool operator()(Output &output) __TBB_override
type_to_key_function_body_leaf(const B &_body)
virtual ~type_to_key_function_body()
Detects whether two given types are the same.
multifunction_body_leaf * clone() __TBB_override
A functor that takes an Input and generates an Output.
Output operator()(const Input &) const
function_body_leaf * clone() __TBB_override
virtual type_to_key_function_body * clone()=0
virtual const Output & operator()(const Input &input)=0
input_body_leaf(const Body &_body)
void const char const char int ITT_FORMAT __itt_group_sync s
graph & graph_reference() const __TBB_override
void reset_receiver(reset_flags f) __TBB_override
function_body_leaf * clone() __TBB_override
void suppress_unused_warning(const T1 &)
Utility template function to prevent "unused" warnings by various compilers.
An empty functor that takes an Input and returns a default constructed Output.
virtual source_body * clone()=0
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
function_body_leaf(const B &_body)
field of type K being used for matching.
function_body_leaf(const B &_body)
task * execute() __TBB_override
Base class for types that should not be copied or assigned.
#define __TBB_PREVIEW_FLOW_GRAPH_PRIORITIES
strip< K >::type base_key_type
Forwards messages only if the threshold has not been reached.
key_matching< tag_value > tag_matching
A task that calls a node's apply_body_bypass function, passing in an input of type Input.
Output operator()(const continue_msg &i) __TBB_override
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 __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long value
virtual void * get_body_ptr()=0
continue_msg operator()(const continue_msg &i) __TBB_override
continue_msg operator()(const Input &i) __TBB_override
apply_body_task_bypass(NodeType &n, const Input &i)
virtual input_body * clone()=0
void * get_body_ptr() __TBB_override
the leaf for function_body specialized for Input of continue_msg
task * try_put_task(const DecrementType &value) __TBB_override
function_body_leaf(const B &_body)
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 __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type type
type_to_key_function_body_leaf * clone() __TBB_override
tbb::internal::uint64_t tag_value
type_to_key_function_body_leaf(const B &_body)
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.