TPIE

11a2c2d
tpie::pipelining::virtual_chunk_pull_begin< Output > Class Template Reference

Virtual chunk that has no output (that is, virtual consumer). More...

#include <tpie/pipelining/virtual.h>

Public Member Functions

 virtual_chunk_pull_begin ()
 Constructor that leaves the virtual chunk unassigned. More...
 
template<typename fact_t >
 virtual_chunk_pull_begin (pullpipe_begin< fact_t > &&pipe, virtual_container *ctr=nullptr)
 Constructor that recursively constructs a node and takes ownership of it. More...
 
template<typename fact_t >
virtual_chunk_pull_beginoperator= (pullpipe_begin< fact_t > &&pipe)
 Construct a node and assign it to this virtual chunk. More...
 
virtual_chunk_base operator| (virtual_chunk_pull_end< Output > dest)
 Connect this virtual chunk to another chunk. More...
 
template<typename NextOutput >
virtual_chunk_pull_begin< NextOutput > operator| (virtual_chunk_pull< Output, NextOutput > dest)
 Connect this virtual chunk to another chunk. More...
 
 operator bool () const noexcept
 Test if it is not an empty chunk. More...
 

Friends

class bits::access
 

Detailed Description

template<typename Output>
class tpie::pipelining::virtual_chunk_pull_begin< Output >

Virtual chunk that has no output (that is, virtual consumer).

Definition at line 68 of file virtual.h.

Constructor & Destructor Documentation

◆ virtual_chunk_pull_begin() [1/2]

template<typename Output >
tpie::pipelining::virtual_chunk_pull_begin< Output >::virtual_chunk_pull_begin ( )
inline

Constructor that leaves the virtual chunk unassigned.

Definition at line 919 of file virtual.h.

920  : m_output(nullptr)
921  {}

◆ virtual_chunk_pull_begin() [2/2]

template<typename Output >
template<typename fact_t >
tpie::pipelining::virtual_chunk_pull_begin< Output >::virtual_chunk_pull_begin ( pullpipe_begin< fact_t > &&  pipe,
virtual_container ctr = nullptr 
)
inline

Constructor that recursively constructs a node and takes ownership of it.

Definition at line 928 of file virtual.h.

928  {
929  *this = std::forward<pullpipe_begin<fact_t>>(pipe);
930  set_container(ctr);
931  }

Member Function Documentation

◆ operator bool()

template<typename Output >
tpie::pipelining::virtual_chunk_pull_begin< Output >::operator bool ( ) const
inlineexplicitnoexcept

Test if it is not an empty chunk.

Definition at line 984 of file virtual.h.

984  {
985  return m_output != nullptr;
986  }

◆ operator=()

template<typename Output >
template<typename fact_t >
virtual_chunk_pull_begin& tpie::pipelining::virtual_chunk_pull_begin< Output >::operator= ( pullpipe_begin< fact_t > &&  pipe)
inline

Construct a node and assign it to this virtual chunk.

Definition at line 937 of file virtual.h.

937  {
938  if (this->m_node) {
939  log_error() << "Virtual chunk assigned twice" << std::endl;
940  throw tpie::exception("Virtual chunk assigned twice");
941  }
942 
943  typedef typename fact_t::constructed_type constructed_type;
944  m_output = new bits::virtpullsrc_impl<constructed_type, Output>(pipe.factory.construct());
945  this->m_node = bits::virt_node::take_own(m_output);
946  this->m_nodeMap = m_output->get_node_map();
947 
948  return *this;
949  }

References tpie::log_error(), and tpie::pipelining::bits::virt_node::take_own().

◆ operator|() [1/2]

template<typename Output >
template<typename NextOutput >
virtual_chunk_pull_begin<NextOutput> tpie::pipelining::virtual_chunk_pull_begin< Output >::operator| ( virtual_chunk_pull< Output, NextOutput >  dest)
inline

Connect this virtual chunk to another chunk.

Definition at line 970 of file virtual.h.

970  {
971  if (empty()) throw virtual_chunk_missing_begin();
972  if (dest.empty()) {
973  return *bits::assert_types_equal_and_return<Output, NextOutput, virtual_chunk_pull_begin<NextOutput> *>
974  ::go(this);
975  }
976  acc::get_input(dest)->set_source(get_output());
977  return acc::construct<virtual_chunk_pull_begin<NextOutput>>(*this, dest);
978  }

◆ operator|() [2/2]

template<typename Output >
virtual_chunk_base tpie::pipelining::virtual_chunk_pull_begin< Output >::operator| ( virtual_chunk_pull_end< Output >  dest)
inline

Connect this virtual chunk to another chunk.

Definition at line 955 of file virtual.h.

955  {
956  if (empty()) throw virtual_chunk_missing_begin();
957  if (dest.empty()) throw virtual_chunk_missing_end();
958  acc::get_input(dest)->set_source(get_output());
959  return acc::construct<virtual_chunk_base>(
960  this->m_nodeMap,
961  bits::virt_node::combine(get_node(), dest.get_node()));
962  }

References tpie::pipelining::bits::virt_node::combine().


The documentation for this class was generated from the following file:
tpie::pipelining::bits::virt_node::take_own
static ptr take_own(node *pipe)
Take std::new-ownership of given node.
Definition: virtual.h:309
tpie::log_error
logstream & log_error()
Return logstream for writing error log messages.
Definition: tpie_log.h:148
tpie::pipelining::node::get_node_map
bits::node_map::ptr get_node_map() const
Get the local node map, mapping node IDs to node pointers for all the nodes reachable from this one.
Definition: node.h:250
tpie::exception
Definition: exception.h:33
tpie::pipelining::bits::virt_node::combine
static ptr combine(ptr left, ptr right)
Aggregate ownership of virt_nodes.
Definition: virtual.h:319