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
20 #ifndef __TBB_flow_graph_H
21 #error Do not #include this internal file directly; use public TBB headers instead.
32 #if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
34 template<
typename ... Policies>
struct Policy {};
38 template<
typename ExpectedPolicy,
typename FirstPolicy,
typename ...Policies>
39 struct has_policy<ExpectedPolicy, FirstPolicy, Policies...> :
41 has_policy<ExpectedPolicy, Policies...>::value> {};
43 template<
typename ExpectedPolicy,
typename SinglePolicy>
47 template<
typename ExpectedPolicy,
typename ...Policies>
52 template<
typename P1,
typename P2 =
void>
struct Policy {};
54 template<
typename ExpectedPolicy,
typename SinglePolicy>
57 template<
typename ExpectedPolicy,
typename P>
58 struct has_policy<ExpectedPolicy, Policy<P> > : has_policy<ExpectedPolicy, P> {};
60 template<
typename ExpectedPolicy,
typename P1,
typename P2>
61 struct has_policy<ExpectedPolicy, Policy<P1, P2> > :
66 namespace graph_policy_namespace {
95 template<
typename Output >
104 template<
typename Output,
typename Body>
118 template<
typename Input,
typename Output >
122 virtual Output
operator()(
const Input &input) = 0;
127 template <
typename Input,
typename Output,
typename B>
141 template <
typename B>
158 template <
typename Input,
typename B>
164 return continue_msg();
175 template <
typename Output,
typename B>
191 template<
typename Input,
typename OutputSet>
195 virtual void operator()(
const Input &, OutputSet &) = 0;
201 template<
typename Input,
typename OutputSet,
typename B >
219 template<
typename Input,
typename Output>
223 virtual Output
operator()(
const Input &input) = 0;
228 template<
typename Input,
typename Output>
232 virtual const Output & operator()(
const Input &input) = 0;
236 template <
typename Input,
typename Output,
typename B>
249 template <
typename Input,
typename Output,
typename B>
269 template<
typename NodeType >
279 ) : graph_task(node_priority),
294 template<
typename NodeType,
typename Input >
305 ) : graph_task(node_priority),
319 template<
typename NodeType >
338 template<
typename Input,
typename Output >
340 Output
operator()(
const Input & )
const {
return Output(); }
343 template<
typename T,
typename DecrementType,
typename DummyType =
void>
346 template<
typename T,
typename DecrementType>
348 typename
tbb::internal::enable_if<
349 tbb::internal::is_integral<DecrementType>::value, void>
::type
355 task* result = my_node->decrement_counter(
value );
362 return my_node->my_graph;
367 #if TBB_DEPRECATED_FLOW_NODE_EXTRACTION
369 my_built_predecessors.clear();
382 #if TBB_DEPRECATED_FLOW_NODE_EXTRACTION
387 typedef internal::edge_container<predecessor_type> built_predecessors_type;
388 typedef typename built_predecessors_type::edge_list_type predecessor_list_type;
389 built_predecessors_type &built_predecessors()
__TBB_override {
return my_built_predecessors; }
393 my_built_predecessors.add_edge(
s );
398 my_built_predecessors.delete_edge(
s);
401 void copy_predecessors( predecessor_list_type &v)
__TBB_override {
403 my_built_predecessors.copy_edges(v);
408 return my_built_predecessors.edge_count();
411 built_predecessors_type my_built_predecessors;
421 return my_node->decrement_counter( 1 );
427 return my_node->my_graph;
448 #endif // __TBB__flow_graph_body_impl_H
source_body_leaf(const Body &_body)
Strips its template type argument from cv- and ref-qualifiers.
receiver< input_type >::predecessor_type predecessor_type
function_body_leaf * clone() __TBB_override
function_body_leaf * clone() __TBB_override
virtual Output operator()(const Input &input)=0
Output operator()(const Input &) const
field of type K being used for matching.
Base class for types that should not be assigned.
virtual ~type_to_key_function_body()
virtual type_to_key_function_body * clone()=0
strip< K >::type base_key_type
task * execute() __TBB_override
A task that calls a node's apply_body_bypass function with no input.
#define __TBB_FLOW_GRAPH_PRIORITY_ARG1(arg1, priority)
continue_msg operator()(const continue_msg &i) __TBB_override
task * execute() __TBB_override
Output operator()(const Input &i) __TBB_override
leaf for multifunction. OutputSet can be a std::tuple or a vector.
void * get_body_ptr() __TBB_override
task * try_put_task(const DecrementType &value) __TBB_override
apply_body_task_bypass(NodeType &n, const Input &i)
bool operator()(Output &output) __TBB_override
function_body_leaf(const B &_body)
the leaf for function_body specialized for Input of continue_msg
virtual ~multifunction_body()
A task that calls a node's apply_body_bypass function, passing in an input of type Input.
static tbb::task *const SUCCESSFULLY_ENQUEUED
the leaf for function_body
continue_msg operator()(const Input &i) __TBB_override
The leaf for source_body.
type_to_key_function_body_leaf * clone() __TBB_override
source_body_leaf * clone() __TBB_override
function_body_leaf(const B &_body)
function_body_leaf * clone() __TBB_override
const Output & operator()(const Input &i) __TBB_override
interface11::internal::Policy< queueing, lightweight > queueing_lightweight
static const node_priority_t no_priority
interface11::internal::Policy< rejecting, lightweight > rejecting_lightweight
type_to_key_function_body_leaf(const B &_body)
function_body_leaf(const B &_body)
void operator()(const Input &input, OutputSet &oset) __TBB_override
type_to_key_function_body_leaf(const B &_body)
the leaf for function_body specialized for Output of continue_msg
unsigned int node_priority_t
Base class for types that should not be copied or assigned.
function_body_leaf(const B &_body)
multifunction_body_leaf * clone() __TBB_override
void const char const char int ITT_FORMAT __itt_group_sync s
Output operator()(const Input &i) __TBB_override
decrementer(int number_of_predecessors=0)
void suppress_unused_warning(const T1 &)
Utility template function to prevent "unused" warnings by various compilers.
function_body that takes an Input and a set of output ports
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
the leaf for function_body specialized for Input and output of continue_msg
#define __TBB_PREVIEW_FLOW_GRAPH_PRIORITIES
Forwards messages only if the threshold has not been reached.
key_matching< tag_value > tag_matching
function_body_leaf * clone() __TBB_override
multifunction_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 value
A functor that takes an Input and generates an Output.
forward_task_bypass(NodeType &n)
virtual source_body * clone()=0
Output operator()(const continue_msg &i) __TBB_override
graph & graph_reference() const __TBB_override
virtual Output operator()(const Input &input)=0
virtual void * get_body_ptr()=0
void reset_receiver(reset_flags f) __TBB_override
virtual void operator()(const Input &, OutputSet &)=0
An empty functor that takes an Input and returns a default constructed Output.
__TBB_DEPRECATED typedef sender< T > predecessor_type
The predecessor type for this node.
A task that calls a node's forward_task function.
task * execute() __TBB_override
graph & graph_reference() const __TBB_override
virtual bool operator()(Output &output)=0
source_task_bypass(NodeType &n)
task * execute() __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 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
virtual ~type_to_key_function_body()
tbb::internal::uint64_t tag_value
virtual multifunction_body * clone()=0
virtual function_body * clone()=0
type_to_key_function_body_leaf * clone() __TBB_override
A functor that takes no input and generates a value of type Output.
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.