TPIE

2362a60
tpie::pipelining::pipe_middle< fact_t > Class Template Reference

A pipe_middle class pushes input down the pipeline. More...

#include <tpie/pipelining/pipe_base.h>

Inherits tpie::pipelining::bits::pipe_nonterm_base< pipe_middle< fact_t > >.

Public Types

typedef fact_t factory_type
 

Public Member Functions

 pipe_middle (const pipe_middle &)=delete
 
 pipe_middle (pipe_middle &&)=default
 
pipe_middleoperator= (const pipe_middle &)=delete
 
pipe_middleoperator= (pipe_middle &&)=default
 
 pipe_middle (const fact_t &&o)=delete
 
 pipe_middle (fact_t &&o)
 
pipe_middleoperator= (const fact_t &)=delete
 
pipe_middleoperator= (fact_t &&o)
 
template<typename... T_ARGS>
 pipe_middle (T_ARGS &&...t)
 Forwards the arguments given to the constructor of the factory. More...
 
template<typename fact2_t >
pipe_middle
< bits::pair_factory< fact_t,
fact2_t > > 
operator| (pipe_middle< fact2_t > &&r)
 The pipe operator combines this generator/filter with another filter. More...
 
pipe_middle operator| (empty_pipe_middle &&)
 The pipe operator combines this generator/filter with another filter. More...
 
template<typename fact2_t >
pipe_end
< bits::termpair_factory
< fact_t, fact2_t > > 
operator| (pipe_end< fact2_t > &&r)
 This pipe operator combines this generator/filter with a terminator to make a pipeline. More...
 
constructed< dest_t >::type construct (const dest_t &dest)
 
pipe_middle< fact_t > memory (double amount)
 Set memory fraction for this node in the pipeline phase. More...
 
double memory () const
 Get memory fraction for this node in the pipeline phase. More...
 
pipe_middle< fact_t > name (const std::string &n, priority_type p=PRIORITY_USER)
 Set name for this node. More...
 
pipe_middle< fact_t > phase_name (const std::string &n, priority_type p=PRIORITY_USER)
 Set name for this phase. More...
 
pipe_middle< fact_t > add_to_set (node_set s)
 Get a refenerce to this node. More...
 
pipe_middle< fact_t > add_dependencies (node_set s)
 Add a depencency to a referenced node. More...
 
pipe_middle< fact_t > add_forwarding_dependencies (node_set s)
 Add a forwarding dependency to a referenced node. More...
 
pipe_middle< fact_t > breadcrumb (const std::string &n)
 Set a prefix for the name of this node. More...
 
pipe_middle< fact_t > forward_any (const std::string &key, any_noncopyable value)
 
pipe_middle< fact_t > forward (const std::string &key, T value)
 

Public Attributes

fact_t factory
 

Protected Member Functions

pipe_middle< fact_t > & self ()
 
const pipe_middle< fact_t > & self () const
 

Detailed Description

template<typename fact_t>
class tpie::pipelining::pipe_middle< fact_t >

A pipe_middle class pushes input down the pipeline.

Template Parameters
fact_tA factory with a construct() method like the factory_0, factory_1, etc. helpers.

Definition at line 241 of file pipe_base.h.

Constructor & Destructor Documentation

template<typename fact_t >
template<typename... T_ARGS>
tpie::pipelining::pipe_middle< fact_t >::pipe_middle ( T_ARGS &&...  t)
inline

Forwards the arguments given to the constructor of the factory.

The implementation either usesvariadic template(if supported by the compiler) or a bunch of overloads to support a variable number of constructor parameters.

Template Parameters
Argsthe variadic number of types of constructor parameters.
Parameters
argsthe variadic number of arguments to pass to the constructor of the factory

Definition at line 269 of file pipe_base.h.

269 : factory(std::forward<T_ARGS>(t)...) {}

Member Function Documentation

pipe_middle< fact_t > tpie::pipelining::bits::pipe_base< pipe_middle< fact_t > >::add_dependencies ( node_set  s)
inlineinherited

Add a depencency to a referenced node.

See also
factory_base::ref

Definition at line 127 of file pipe_base.h.

127  {
128  self().factory.add_dependencies(s);
129  return std::move(self());
130  }
pipe_middle< fact_t > tpie::pipelining::bits::pipe_base< pipe_middle< fact_t > >::add_forwarding_dependencies ( node_set  s)
inlineinherited

Add a forwarding dependency to a referenced node.

See also
factory_base::ref

Definition at line 137 of file pipe_base.h.

137  {
138  self().factory.add_forwarding_dependencies(s);
139  return std::move(self());
140  }
pipe_middle< fact_t > tpie::pipelining::bits::pipe_base< pipe_middle< fact_t > >::add_to_set ( node_set  s)
inlineinherited

Get a refenerce to this node.

This reference can be used to call add_dependency on another node

See also
factory_base::ref

Definition at line 117 of file pipe_base.h.

117  {
118  self().factory.add_to_set(s);
119  return std::move(self());
120  }
pipe_middle< fact_t > tpie::pipelining::bits::pipe_base< pipe_middle< fact_t > >::breadcrumb ( const std::string &  n)
inlineinherited

Set a prefix for the name of this node.

The name is used in the GraphViz plot generated by pipeline::plot.

See also
factory_base::push_breadcrumb

Definition at line 149 of file pipe_base.h.

149  {
150  self().factory.push_breadcrumb(n);
151  return std::move(self());
152  }
pipe_middle< fact_t > tpie::pipelining::bits::pipe_base< pipe_middle< fact_t > >::memory ( double  amount)
inlineinherited

Set memory fraction for this node in the pipeline phase.

In the absence of minimum and maximum memory requirements set by node implementations, the memory assigned to the node will be proportional to the amount parameter which sets the memory priority of this node in relation to the rest of the phase.

See also
factory_base::memory(double)

Definition at line 65 of file pipe_base.h.

65  {
66  self().factory.memory(amount);
67  return std::move(self());
68  }
double tpie::pipelining::bits::pipe_base< pipe_middle< fact_t > >::memory ( ) const
inlineinherited

Get memory fraction for this node in the pipeline phase.

See also
memory(double)
factory_base::memory()

Definition at line 76 of file pipe_base.h.

76  {
77  return self().factory.memory();
78  }
pipe_middle< fact_t > tpie::pipelining::bits::pipe_base< pipe_middle< fact_t > >::name ( const std::string &  n,
priority_type  p = PRIORITY_USER 
)
inlineinherited

Set name for this node.

The name is used in the GraphViz plot generated by pipeline::plot.

The name priority given in the second argument should indicate how important this node is for the current phase, and is used in naming the progress indicator for this phase. The node with the highest priority name gets to name the entire phase.

See also
factory_base::name

Definition at line 92 of file pipe_base.h.

92  {
93  self().factory.name(n, p);
94  return std::move(self());
95  }
template<typename fact_t >
template<typename fact2_t >
pipe_middle<bits::pair_factory<fact_t, fact2_t> > tpie::pipelining::pipe_middle< fact_t >::operator| ( pipe_middle< fact2_t > &&  r)
inline

The pipe operator combines this generator/filter with another filter.

Definition at line 276 of file pipe_base.h.

References tpie::pipelining::factory_base::set_destination_kind_push().

276  {
277  factory.set_destination_kind_push();
278  return bits::pair_factory<fact_t, fact2_t>(std::move(factory), std::move(r.factory));
279  }
template<typename fact_t >
pipe_middle tpie::pipelining::pipe_middle< fact_t >::operator| ( empty_pipe_middle< fact_t > &&  )
inline

The pipe operator combines this generator/filter with another filter.

Definition at line 284 of file pipe_base.h.

284 {return pipe_middle(std::move(factory));}
template<typename fact_t >
template<typename fact2_t >
pipe_end<bits::termpair_factory<fact_t, fact2_t> > tpie::pipelining::pipe_middle< fact_t >::operator| ( pipe_end< fact2_t > &&  r)
inline

This pipe operator combines this generator/filter with a terminator to make a pipeline.

Definition at line 292 of file pipe_base.h.

References tpie::pipelining::factory_base::set_destination_kind_push().

292  {
293  factory.set_destination_kind_push();
294  return bits::termpair_factory<fact_t, fact2_t>(std::move(factory), std::move(r.factory));
295  }
pipe_middle< fact_t > tpie::pipelining::bits::pipe_base< pipe_middle< fact_t > >::phase_name ( const std::string &  n,
priority_type  p = PRIORITY_USER 
)
inlineinherited

Set name for this phase.

The maximal priority phase name given for a phase wins.

See also
factory_base::phase_name

Definition at line 104 of file pipe_base.h.

104  {
105  self().factory.phase_name(n, p);
106  return std::move(self());
107  }

The documentation for this class was generated from the following file: