21 #ifndef GRPPI_POLY_PIPELINE_H 22 #define GRPPI_POLY_PIPELINE_H 25 #include "../common/support.h" 29 template <
typename Execution,
typename Transformer,
30 typename ... MoreTransformers,
31 requires_arguments<Transformer> = 0>
32 pipeline_info<Execution,Transformer,MoreTransformers...>
33 transform_pipeline(Execution & ex, std::tuple<Transformer, MoreTransformers ...> && transform_ops)
35 return pipeline_info<Execution,Transformer, MoreTransformers...> (ex,std::forward<std::tuple<Transformer,MoreTransformers...>>(transform_ops));
41 template <
typename Generator,
typename ... Transformers>
48 template <
typename E,
typename ... O,
49 typename Generator,
typename ... Transformers,
52 Transformers && ... transform_ops)
55 std::forward<Transformers>(transform_ops) ...);
58 template <
typename E,
typename ... O,
59 typename Generator,
typename ... Transformers,
62 Transformers && ... transform_ops)
64 if (
typeid(E) == ex.
type()) {
66 std::forward<Generator>(generate_op),
67 std::forward<Transformers>(transform_ops)...);
71 std::forward<Transformers>(transform_ops)...);
92 template <
typename Generator,
typename ... Transformers,
95 Transformers && ... transform_ops)
102 >(ex, std::forward<Generator>(generate_op),
103 std::forward<Transformers>(transform_ops) ...);
Definition: callable_traits.h:24
Definition: patterns.h:29
typename std::enable_if_t<!internal::has_arguments< F >(), int > requires_no_arguments
Definition: callable_traits.h:86
pipeline_info< Execution, Transformer, MoreTransformers... > transform_pipeline(Execution &ex, std::tuple< Transformer, MoreTransformers... > &&transform_ops)
Definition: poly/pipeline.h:33
Native parallel execution policy. This policy uses ISO C++ threads as implementation building block a...
Definition: parallel_execution_native.h:136
const std::type_info & type() const noexcept
Definition: polymorphic_execution.h:77
void pipeline(parallel_execution_native &ex, Generator &&generate_op, Transformers &&...transform_ops)
Invoke Pipeline pattern on a data stream with native parallel execution.
Definition: native/pipeline.h:500
std::enable_if_t< is_supported< E >(), int > requires_execution_supported
Definition: support.h:32
OpenMP parallel execution policy.
Definition: parallel_execution_omp.h:40
TBB parallel execution policy.
Definition: parallel_execution_tbb.h:37
E * execution_ptr()
Get the execution pointer for a given type.
Definition: polymorphic_execution.h:91
Sequential execution policy.
Definition: sequential_execution.h:31
Definition: polymorphic_execution.h:63
std::enable_if_t<!is_supported< E >(), int > requires_execution_not_supported
Definition: support.h:36
void pipeline_multi_impl(polymorphic_execution &, Generator &&, Transformers &&...)
Definition: poly/pipeline.h:42