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
Base class for types that should not be copied or assigned.
virtual multifunction_body * clone()=0
virtual void * get_body_ptr()=0
the leaf for function_body specialized for Input of continue_msg
const Output & operator()(const Input &i) __TBB_override
source_body_leaf * clone() __TBB_override
bool operator()(Output &output) __TBB_override
virtual void operator()(const Input &, OutputSet &)=0
Base class for types that should not be assigned.
virtual ~type_to_key_function_body()
The leaf for source_body.
leaf for multifunction. OutputSet can be a std::tuple or a vector.
#define __TBB_FLOW_GRAPH_PRIORITY_ARG1(arg1, priority)
the leaf for function_body specialized for Output of continue_msg
Output operator()(const Input &i) __TBB_override
task * execute() __TBB_override
void operator()(const Input &input, OutputSet &oset) __TBB_override
function_body_leaf(const B &_body)
virtual function_body * clone()=0
the leaf for function_body
multifunction_body_leaf(const B &_body)
A functor that takes no input and generates a value of type Output.
static tbb::task *const SUCCESSFULLY_ENQUEUED
A task that calls a node's apply_body_bypass function, passing in an input of type Input.
function_body_leaf * clone() __TBB_override
virtual ~multifunction_body()
multifunction_body_leaf * clone() __TBB_override
task * try_put_task(const DecrementType &value) __TBB_override
task * execute() __TBB_override
function_body_leaf(const B &_body)
interface11::internal::Policy< queueing, lightweight > queueing_lightweight
static const node_priority_t no_priority
type_to_key_function_body_leaf(const B &_body)
interface11::internal::Policy< rejecting, lightweight > rejecting_lightweight
type_to_key_function_body_leaf * clone() __TBB_override
function_body_leaf * clone() __TBB_override
Forwards messages only if the threshold has not been reached.
void reset_receiver(reset_flags f) __TBB_override
source_task_bypass(NodeType &n)
An empty functor that takes an Input and returns a default constructed Output.
unsigned int node_priority_t
forward_task_bypass(NodeType &n)
function_body_leaf(const B &_body)
untyped_sender predecessor_type
The predecessor type for this node.
void const char const char int ITT_FORMAT __itt_group_sync s
decrementer(int number_of_predecessors=0)
void suppress_unused_warning(const T1 &)
Utility template function to prevent "unused" warnings by various compilers.
graph & graph_reference() const __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 * task
virtual bool operator()(Output &output)=0
A task that calls a node's apply_body_bypass function with no input.
virtual source_body * clone()=0
#define __TBB_PREVIEW_FLOW_GRAPH_PRIORITIES
type_to_key_function_body_leaf * clone() __TBB_override
Output operator()(const Input &i) __TBB_override
key_matching< tag_value > tag_matching
function_body that takes an Input and a set of output ports
virtual Output operator()(const Input &input)=0
the leaf for function_body specialized for Input and output of continue_msg
apply_body_task_bypass(NodeType &n, const Input &i)
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
continue_msg operator()(const Input &i) __TBB_override
A task that calls a node's forward_task function.
function_body_leaf * clone() __TBB_override
virtual type_to_key_function_body * clone()=0
A functor that takes an Input and generates an Output.
continue_msg operator()(const continue_msg &i) __TBB_override
Output operator()(const continue_msg &i) __TBB_override
Output operator()(const Input &) const
function_body_leaf(const B &_body)
field of type K being used for matching.
type_to_key_function_body_leaf(const B &_body)
Strips its template type argument from cv- and ref-qualifiers.
strip< K >::type base_key_type
function_body_leaf * clone() __TBB_override
receiver< input_type >::predecessor_type predecessor_type
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
void * get_body_ptr() __TBB_override
virtual ~type_to_key_function_body()
task * execute() __TBB_override
tbb::internal::uint64_t tag_value
task * execute() __TBB_override
source_body_leaf(const Body &_body)
virtual Output operator()(const Input &input)=0
graph & graph_reference() const __TBB_override
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.