Name

filter Class — Abstract base class that represents a filter in a pipeline.

Synopsis

#include "tbb/pipeline.h"

class filter;

Description

A filter represents a filter in a pipeline. A filter is parallel or serial. A parallel filter can process multiple items in parallel and possibly out of order. A serial filter processes items one at a time in the original stream order. Parallel filters are preferred when viable because they permit parallel speedup. Whether the filter is serial or parallel is specified by an argument to the constructor.

The filter class should be used only in conjunction with pipeline.

Members

	namespace tbb {
	    class filter {
	    protected:
	        filter( bool is_serial );
	    public:
	        bool is_serial() const;
	        virtual void* operator()( void* item ) = 0;
	        virtual ~filter();
	    };
	}
filter(bool is_serial)

Effects: constructs a serial filter if is_serial is true, or a parallel filter if is_serial is false.

~filter()

Effects: destroys the filter. The filter must not be in a pipeline; otherwise, memory might be corrupted. The debug version of the library raises an assertion failure if the filter is in a pipeline. Always clear or destroy the containing pipeline first. A way to remember this is that a pipeline acts like a container of filters, and a C++ container usually does not allow one to destroy an item while it is in the container.

boolis_serial()const

Returns: true if filter is serial; false if filter is parallel.

virtual void*operator()(void *item)

Effects: the derived filter should override this method to process an item and return a pointer to item to be processed by the next filter. The item parameter is NULL for the first filter in the pipeline.

Returns: the first filter in a pipeline should return NULL if there are no more items to process. The result of the last filter in a pipeline is ignored.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.227.0.192