21 #ifndef __TBB__flow_graph_body_impl_H 22 #define __TBB__flow_graph_body_impl_H 24 #ifndef __TBB_flow_graph_H 25 #error Do not #include this internal file directly; use public TBB headers instead. 36 #if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT 38 template<
typename ... Policies>
struct Policy {};
42 template<
typename ExpectedPolicy,
typename FirstPolicy,
typename ...Policies>
43 struct has_policy<ExpectedPolicy, FirstPolicy, Policies...> :
45 has_policy<ExpectedPolicy, Policies...>::value> {};
47 template<
typename ExpectedPolicy,
typename SinglePolicy>
51 template<
typename ExpectedPolicy,
typename ...Policies>
56 template<
typename P1,
typename P2 =
void>
struct Policy {};
58 template<
typename ExpectedPolicy,
typename SinglePolicy>
61 template<
typename ExpectedPolicy,
typename P>
62 struct has_policy<ExpectedPolicy, Policy<P> > : has_policy<ExpectedPolicy, P> {};
64 template<
typename ExpectedPolicy,
typename P1,
typename P2>
65 struct has_policy<ExpectedPolicy, Policy<P1, P2> > :
70 namespace graph_policy_namespace {
99 template<
typename Output >
108 template<
typename Output,
typename Body>
122 template<
typename Input,
typename Output >
126 virtual Output
operator()(
const Input &input) = 0;
131 template <
typename Input,
typename Output,
typename B>
145 template <
typename B>
162 template <
typename Input,
typename B>
168 return continue_msg();
179 template <
typename Output,
typename B>
195 template<
typename Input,
typename OutputSet>
199 virtual void operator()(
const Input &, OutputSet &) = 0;
205 template<
typename Input,
typename OutputSet,
typename B >
223 template<
typename Input,
typename Output>
227 virtual Output
operator()(
const Input &input) = 0;
232 template<
typename Input,
typename Output>
236 virtual const Output & operator()(
const Input &input) = 0;
240 template <
typename Input,
typename Output,
typename B>
253 template <
typename Input,
typename Output,
typename B>
273 template<
typename NodeType >
283 ) : graph_task(node_priority),
298 template<
typename NodeType,
typename Input >
309 ) : graph_task(node_priority),
323 template<
typename NodeType >
342 template<
typename Input,
typename Output >
344 Output
operator()(
const Input & )
const {
return Output(); }
353 return my_node->decrement_counter();
380 #endif // __TBB__flow_graph_body_impl_H function_body_leaf * clone() __TBB_override
function_body_leaf * clone() __TBB_override
An empty functor that takes an Input and returns a default constructed Output.
A functor that takes no input and generates a value of type Output.
virtual ~multifunction_body()
static tbb::task *const SUCCESSFULLY_ENQUEUED
A task that calls a node's forward_task function.
the leaf for function_body specialized for Output of continue_msg
A functor that takes an Input and generates an Output.
key_matching< tag_value > tag_matching
#define __TBB_PREVIEW_FLOW_GRAPH_PRIORITIES
type_to_key_function_body_leaf * clone() __TBB_override
virtual source_body * clone()=0
field of type K being used for matching.
task * execute() __TBB_override
Output operator()(const Input &i) __TBB_override
source_body_leaf(const Body &_body)
strip< K >::type base_key_type
function_body_leaf(const B &_body)
decrementer(int number_of_predecessors=0)
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 __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_id __itt_string_handle __itt_metadata_type type
Base class for types that should not be copied or assigned.
the leaf for function_body specialized for Input and output of continue_msg
virtual ~type_to_key_function_body()
bool operator()(Output &output) __TBB_override
apply_body_task_bypass(NodeType &n, const Input &i)
A task that calls a node's apply_body_bypass function with no input.
virtual multifunction_body * clone()=0
virtual type_to_key_function_body * clone()=0
static const node_priority_t no_priority
virtual void operator()(const Input &, OutputSet &)=0
unsigned int node_priority_t
interface10::internal::Policy< queueing, lightweight > queueing_lightweight
virtual Output operator()(const Input &input)=0
Base class for types that should not be assigned.
function_body_leaf(const B &_body)
function_body_leaf(const B &_body)
function_body_leaf(const B &_body)
A task that calls a node's apply_body_bypass function, passing in an input of type Input.
task * execute() __TBB_override
Output operator()(const continue_msg &i) __TBB_override
virtual bool operator()(Output &output)=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
type_to_key_function_body_leaf * clone() __TBB_override
virtual void * get_body_ptr()=0
void * get_body_ptr() __TBB_override
virtual function_body * clone()=0
#define __TBB_FLOW_GRAPH_PRIORITY_ARG1(arg1, priority)
interface10::internal::Policy< rejecting, lightweight > rejecting_lightweight
multifunction_body_leaf(const B &_body)
multifunction_body_leaf * clone() __TBB_override
task * execute() __TBB_override
task * execute() __TBB_override
virtual ~type_to_key_function_body()
graph & graph_reference() __TBB_override
Output operator()(const Input &) const
The leaf for source_body.
function_body_leaf * clone() __TBB_override
Output operator()(const Input &i) __TBB_override
const Output & operator()(const Input &i) __TBB_override
the leaf for function_body specialized for Input of continue_msg
type_to_key_function_body_leaf(const B &_body)
virtual Output operator()(const Input &input)=0
the leaf for function_body
tbb::internal::uint64_t tag_value
type_to_key_function_body_leaf(const B &_body)
Strips its template type argument from cv- and ref-qualifiers.
forward_task_bypass(NodeType &n)
continue_msg operator()(const Input &i) __TBB_override
void operator()(const Input &input, OutputSet &oset) __TBB_override
leaf for multifunction. OutputSet can be a std::tuple or a vector.
function_body_leaf * clone() __TBB_override
source_task_bypass(NodeType &n)
source_body_leaf * clone() __TBB_override
continue_msg operator()(const continue_msg &i) __TBB_override