Intel(R) Threading Building Blocks Doxygen Documentation  version 4.2.3
tbb::interface6::filter_t< T, U > Class Template Reference

Class representing a chain of type-safe pipeline filters. More...

#include <pipeline.h>

Collaboration diagram for tbb::interface6::filter_t< T, U >:

Public Member Functions

 filter_t ()
 
 filter_t (const filter_t< T, U > &rhs)
 
template<typename Body >
 filter_t (tbb::filter::mode mode, const Body &body)
 
void operator= (const filter_t< T, U > &rhs)
 
 ~filter_t ()
 
void clear ()
 

Private Types

typedef internal::filter_node filter_node
 

Private Member Functions

 filter_t (filter_node *root_)
 

Private Attributes

filter_noderoot
 

Friends

class internal::pipeline_proxy
 
template<typename T_ , typename U_ , typename Body >
filter_t< T_, U_ > make_filter (tbb::filter::mode, const Body &)
 Create a filter to participate in parallel_pipeline. More...
 
template<typename T_ , typename V_ , typename U_ >
filter_t< T_, U_ > operator& (const filter_t< T_, V_ > &, const filter_t< V_, U_ > &)
 

Detailed Description

template<typename T, typename U>
class tbb::interface6::filter_t< T, U >

Class representing a chain of type-safe pipeline filters.

Definition at line 50 of file pipeline.h.

Member Typedef Documentation

◆ filter_node

template<typename T, typename U>
typedef internal::filter_node tbb::interface6::filter_t< T, U >::filter_node
private

Definition at line 583 of file pipeline.h.

Constructor & Destructor Documentation

◆ filter_t() [1/4]

template<typename T, typename U>
tbb::interface6::filter_t< T, U >::filter_t ( filter_node root_)
inlineprivate

Definition at line 585 of file pipeline.h.

585  : root(root_) {
586  root->add_ref();
587  }
filter_node * root
Definition: pipeline.h:584

References tbb::interface6::filter_t< T, U >::root.

◆ filter_t() [2/4]

template<typename T, typename U>
tbb::interface6::filter_t< T, U >::filter_t ( )
inline

Definition at line 595 of file pipeline.h.

595 : root(NULL) {}
filter_node * root
Definition: pipeline.h:584

◆ filter_t() [3/4]

template<typename T, typename U>
tbb::interface6::filter_t< T, U >::filter_t ( const filter_t< T, U > &  rhs)
inline

Definition at line 596 of file pipeline.h.

596  : root(rhs.root) {
597  if( root ) root->add_ref();
598  }
filter_node * root
Definition: pipeline.h:584

References tbb::interface6::filter_t< T, U >::root.

◆ filter_t() [4/4]

template<typename T, typename U>
template<typename Body >
tbb::interface6::filter_t< T, U >::filter_t ( tbb::filter::mode  mode,
const Body &  body 
)
inline

Definition at line 600 of file pipeline.h.

600  :
601  root( new internal::filter_node_leaf<T,U,Body>(mode, body) ) {
602  root->add_ref();
603  }
filter_node * root
Definition: pipeline.h:584
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 mode

References tbb::interface6::filter_t< T, U >::root.

◆ ~filter_t()

template<typename T, typename U>
tbb::interface6::filter_t< T, U >::~filter_t ( )
inline

Definition at line 613 of file pipeline.h.

613  {
614  if( root ) root->remove_ref();
615  }
filter_node * root
Definition: pipeline.h:584

References tbb::interface6::filter_t< T, U >::root.

Member Function Documentation

◆ clear()

template<typename T, typename U>
void tbb::interface6::filter_t< T, U >::clear ( )
inline

Definition at line 616 of file pipeline.h.

616  {
617  // Like operator= with filter_t() on right side.
618  if( root ) {
619  filter_node* old = root;
620  root = NULL;
621  old->remove_ref();
622  }
623  }
internal::filter_node filter_node
Definition: pipeline.h:583
filter_node * root
Definition: pipeline.h:584

References tbb::interface6::filter_t< T, U >::root.

◆ operator=()

template<typename T, typename U>
void tbb::interface6::filter_t< T, U >::operator= ( const filter_t< T, U > &  rhs)
inline

Definition at line 605 of file pipeline.h.

605  {
606  // Order of operations below carefully chosen so that reference counts remain correct
607  // in unlikely event that remove_ref throws exception.
608  filter_node* old = root;
609  root = rhs.root;
610  if( root ) root->add_ref();
611  if( old ) old->remove_ref();
612  }
internal::filter_node filter_node
Definition: pipeline.h:583
filter_node * root
Definition: pipeline.h:584

References tbb::interface6::filter_t< T, U >::root.

Friends And Related Function Documentation

◆ internal::pipeline_proxy

template<typename T, typename U>
friend class internal::pipeline_proxy
friend

Definition at line 588 of file pipeline.h.

◆ make_filter

template<typename T, typename U>
template<typename T_ , typename U_ , typename Body >
filter_t<T_,U_> make_filter ( tbb::filter::mode  mode,
const Body &  body 
)
friend

Create a filter to participate in parallel_pipeline.

Definition at line 569 of file pipeline.h.

569  {
570  return new internal::filter_node_leaf<T,U,Body>(mode, body);
571 }
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 mode

◆ operator&

template<typename T, typename U>
template<typename T_ , typename V_ , typename U_ >
filter_t<T_,U_> operator& ( const filter_t< T_, V_ > &  ,
const filter_t< V_, U_ > &   
)
friend

Member Data Documentation

◆ root


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

Copyright © 2005-2019 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.