You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

236 lines
15 KiB

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
  3. <title>tbb::filter Class Reference</title>
  4. <link href="doxygen.css" rel="stylesheet" type="text/css">
  5. <link href="tabs.css" rel="stylesheet" type="text/css">
  6. </head><body>
  7. <!-- Generated by Doxygen 1.4.7 -->
  8. <div class="tabs">
  9. <ul>
  10. <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
  11. <li><a href="modules.html"><span>Modules</span></a></li>
  12. <li><a href="namespaces.html"><span>Namespaces</span></a></li>
  13. <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
  14. <li><a href="files.html"><span>Files</span></a></li>
  15. <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
  16. </ul></div>
  17. <div class="tabs">
  18. <ul>
  19. <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
  20. <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
  21. <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
  22. </ul></div>
  23. <div class="nav">
  24. <a class="el" href="a00428.html">tbb</a>::<a class="el" href="a00294.html">filter</a></div>
  25. <h1>tbb::filter Class Reference<br>
  26. <small>
  27. [<a class="el" href="a00441.html">Algorithms</a>]</small>
  28. </h1><!-- doxytag: class="tbb::filter" -->A stage in a pipeline.
  29. <a href="#_details">More...</a>
  30. <p>
  31. <code>#include &lt;pipeline.h&gt;</code>
  32. <p>
  33. <p>Inheritance diagram for tbb::filter:
  34. <p><center><img src="a00294.png" usemap="#tbb::filter_map" border="0" alt=""></center>
  35. <map name="tbb::filter_map">
  36. <area href="a00361.html" alt="tbb::thread_bound_filter" shape="rect" coords="0,56,145,80">
  37. </map>
  38. <a href="a00107.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
  39. <tr><td></td></tr>
  40. <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
  41. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fcfec27656a69ff2072802ac001e936f"></a><!-- doxytag: member="tbb::filter::is_serial" ref="fcfec27656a69ff2072802ac001e936f" args="() const " -->
  42. bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00294.html#fcfec27656a69ff2072802ac001e936f">is_serial</a> () const </td></tr>
  43. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">True if filter is serial. <br></td></tr>
  44. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cd53206c4795ef2df5df26b795caf692"></a><!-- doxytag: member="tbb::filter::is_ordered" ref="cd53206c4795ef2df5df26b795caf692" args="() const " -->
  45. bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00294.html#cd53206c4795ef2df5df26b795caf692">is_ordered</a> () const </td></tr>
  46. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">True if filter must receive stream in order. <br></td></tr>
  47. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="15c29cae5d237e6d63dbfe5c94af89d5"></a><!-- doxytag: member="tbb::filter::is_bound" ref="15c29cae5d237e6d63dbfe5c94af89d5" args="() const " -->
  48. bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00294.html#15c29cae5d237e6d63dbfe5c94af89d5">is_bound</a> () const </td></tr>
  49. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">True if filter is thread-bound. <br></td></tr>
  50. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8ec4dfe053e94a2349d56781ddea8477"></a><!-- doxytag: member="tbb::filter::object_may_be_null" ref="8ec4dfe053e94a2349d56781ddea8477" args="()" -->
  51. bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00294.html#8ec4dfe053e94a2349d56781ddea8477">object_may_be_null</a> ()</td></tr>
  52. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">true if an input filter can emit null <br></td></tr>
  53. <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00294.html#fa1b3dc1f4f47563ccab7f4d92f5b543">operator()</a> (void *item)=0</td></tr>
  54. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Operate on an item from the input stream, and return item for output stream. <a href="#fa1b3dc1f4f47563ccab7f4d92f5b543"></a><br></td></tr>
  55. <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual __TBB_EXPORTED_METHOD&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00294.html#66d159f362293e3964ba3da8bc1d2604">~filter</a> ()</td></tr>
  56. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy filter. <a href="#66d159f362293e3964ba3da8bc1d2604"></a><br></td></tr>
  57. <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00294.html#56275eb889c77c4807967133e21401bd">finalize</a> (void *)</td></tr>
  58. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroys item if pipeline was cancelled. <a href="#56275eb889c77c4807967133e21401bd"></a><br></td></tr>
  59. <tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
  60. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1edba30e1e64e82ee4b7c6f227825817"></a><!-- doxytag: member="tbb::filter::x1" ref="1edba30e1e64e82ee4b7c6f227825817" args="((is_serial_?serial:parallel)|exact_exception_propagation))" -->
  61. &nbsp;</td><td class="memItemRight" valign="bottom"><b>x1</b> ((is_serial_?serial:parallel)|<a class="el" href="a00294.html#f17200974c33be21f42a5f00893de028">exact_exception_propagation</a>))</td></tr>
  62. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a06145c3e7ad273ece95eb8be642b0a2"></a><!-- doxytag: member="tbb::filter::prev_filter_in_pipeline" ref="a06145c3e7ad273ece95eb8be642b0a2" args="(not_in_pipeline())" -->
  63. &nbsp;</td><td class="memItemRight" valign="bottom"><b>prev_filter_in_pipeline</b> (not_in_pipeline())</td></tr>
  64. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7a54082a9165275bf7725970d756f132"></a><!-- doxytag: member="tbb::filter::my_pipeline" ref="7a54082a9165275bf7725970d756f132" args="(NULL)" -->
  65. &nbsp;</td><td class="memItemRight" valign="bottom"><b>my_pipeline</b> (NULL)</td></tr>
  66. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d66d6e9e27b1be74fdb9c07f899d4837"></a><!-- doxytag: member="tbb::filter::next_segment" ref="d66d6e9e27b1be74fdb9c07f899d4837" args="(NULL)" -->
  67. &nbsp;</td><td class="memItemRight" valign="bottom"><b>next_segment</b> (NULL)</td></tr>
  68. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3f49df3c34a3e5a8884001c30230a94"></a><!-- doxytag: member="tbb::filter::filter" ref="a3f49df3c34a3e5a8884001c30230a94" args="(mode filter_mode)" -->
  69. &nbsp;</td><td class="memItemRight" valign="bottom"><b>filter</b> (mode filter_mode)</td></tr>
  70. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b2b9c0dd8123a8186b46bc100d9469f5"></a><!-- doxytag: member="tbb::filter::set_end_of_input" ref="b2b9c0dd8123a8186b46bc100d9469f5" args="()" -->
  71. void __TBB_EXPORTED_METHOD&nbsp;</td><td class="memItemRight" valign="bottom"><b>set_end_of_input</b> ()</td></tr>
  72. <tr><td colspan="2"><br><h2>Static Protected Attributes</h2></td></tr>
  73. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4b7de3a76e744f3d9c1bc5d437ea851d"></a><!-- doxytag: member="tbb::filter::filter_is_serial" ref="4b7de3a76e744f3d9c1bc5d437ea851d" args="" -->
  74. static const unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00294.html#4b7de3a76e744f3d9c1bc5d437ea851d">filter_is_serial</a> = 0x1</td></tr>
  75. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The lowest bit 0 is for parallel vs. serial. <br></td></tr>
  76. <tr><td class="memItemLeft" nowrap align="right" valign="top">static const unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00294.html#2e5eb65f95d8050186278077e433c5b1">filter_is_out_of_order</a> = 0x1&lt;&lt;4</td></tr>
  77. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">4th bit distinguishes ordered vs unordered filters. <a href="#2e5eb65f95d8050186278077e433c5b1"></a><br></td></tr>
  78. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="dd6a6e7210efc9bcaf2c5e08767d92b5"></a><!-- doxytag: member="tbb::filter::filter_is_bound" ref="dd6a6e7210efc9bcaf2c5e08767d92b5" args="" -->
  79. static const unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00294.html#dd6a6e7210efc9bcaf2c5e08767d92b5">filter_is_bound</a> = 0x1&lt;&lt;5</td></tr>
  80. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">5th bit distinguishes thread-bound and regular filters. <br></td></tr>
  81. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bdd02a434a6e7499dd1e8f43aae96793"></a><!-- doxytag: member="tbb::filter::filter_may_emit_null" ref="bdd02a434a6e7499dd1e8f43aae96793" args="" -->
  82. static const unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00294.html#bdd02a434a6e7499dd1e8f43aae96793">filter_may_emit_null</a> = 0x1&lt;&lt;6</td></tr>
  83. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">6th bit marks input filters emitting small objects <br></td></tr>
  84. <tr><td class="memItemLeft" nowrap align="right" valign="top">static const unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00294.html#f17200974c33be21f42a5f00893de028">exact_exception_propagation</a></td></tr>
  85. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">7th bit defines exception propagation mode expected by the application. <a href="#f17200974c33be21f42a5f00893de028"></a><br></td></tr>
  86. <tr><td colspan="2"><br><h2>Friends</h2></td></tr>
  87. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8228ce0751009045e8158d2e642715a6"></a><!-- doxytag: member="tbb::filter::internal::stage_task" ref="8228ce0751009045e8158d2e642715a6" args="" -->
  88. class&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal::stage_task</b></td></tr>
  89. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="05d67150ca324698ba852553e223d3eb"></a><!-- doxytag: member="tbb::filter::internal::pipeline_root_task" ref="05d67150ca324698ba852553e223d3eb" args="" -->
  90. class&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal::pipeline_root_task</b></td></tr>
  91. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b211ee58bada099e24280d478017cbff"></a><!-- doxytag: member="tbb::filter::pipeline" ref="b211ee58bada099e24280d478017cbff" args="" -->
  92. class&nbsp;</td><td class="memItemRight" valign="bottom"><b>pipeline</b></td></tr>
  93. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e43b69a482df8e053cb199af69eb5139"></a><!-- doxytag: member="tbb::filter::thread_bound_filter" ref="e43b69a482df8e053cb199af69eb5139" args="" -->
  94. class&nbsp;</td><td class="memItemRight" valign="bottom"><b>thread_bound_filter</b></td></tr>
  95. </table>
  96. <hr><a name="_details"></a><h2>Detailed Description</h2>
  97. A stage in a pipeline.
  98. <p>
  99. <hr><h2>Constructor &amp; Destructor Documentation</h2>
  100. <a class="anchor" name="66d159f362293e3964ba3da8bc1d2604"></a><!-- doxytag: member="tbb::filter::~filter" ref="66d159f362293e3964ba3da8bc1d2604" args="()" -->
  101. <div class="memitem">
  102. <div class="memproto">
  103. <table class="memname">
  104. <tr>
  105. <td class="memname">virtual __TBB_EXPORTED_METHOD tbb::filter::~filter </td>
  106. <td>(</td>
  107. <td class="paramname"> </td>
  108. <td>&nbsp;)&nbsp;</td>
  109. <td width="100%"><code> [virtual]</code></td>
  110. </tr>
  111. </table>
  112. </div>
  113. <div class="memdoc">
  114. <p>
  115. Destroy filter.
  116. <p>
  117. If the filter was added to a pipeline, the pipeline must be destroyed first.
  118. </div>
  119. </div><p>
  120. <hr><h2>Member Function Documentation</h2>
  121. <a class="anchor" name="56275eb889c77c4807967133e21401bd"></a><!-- doxytag: member="tbb::filter::finalize" ref="56275eb889c77c4807967133e21401bd" args="(void *)" -->
  122. <div class="memitem">
  123. <div class="memproto">
  124. <table class="memname">
  125. <tr>
  126. <td class="memname">virtual void tbb::filter::finalize </td>
  127. <td>(</td>
  128. <td class="paramtype">void *&nbsp;</td>
  129. <td class="paramname"> </td>
  130. <td>&nbsp;)&nbsp;</td>
  131. <td width="100%"><code> [inline, virtual]</code></td>
  132. </tr>
  133. </table>
  134. </div>
  135. <div class="memdoc">
  136. <p>
  137. Destroys item if pipeline was cancelled.
  138. <p>
  139. Required to prevent memory leaks. Note it can be called concurrently even for serial filters.
  140. </div>
  141. </div><p>
  142. <a class="anchor" name="fa1b3dc1f4f47563ccab7f4d92f5b543"></a><!-- doxytag: member="tbb::filter::operator()" ref="fa1b3dc1f4f47563ccab7f4d92f5b543" args="(void *item)=0" -->
  143. <div class="memitem">
  144. <div class="memproto">
  145. <table class="memname">
  146. <tr>
  147. <td class="memname">virtual void* tbb::filter::operator() </td>
  148. <td>(</td>
  149. <td class="paramtype">void *&nbsp;</td>
  150. <td class="paramname"> <em>item</em> </td>
  151. <td>&nbsp;)&nbsp;</td>
  152. <td width="100%"><code> [pure virtual]</code></td>
  153. </tr>
  154. </table>
  155. </div>
  156. <div class="memdoc">
  157. <p>
  158. Operate on an item from the input stream, and return item for output stream.
  159. <p>
  160. Returns NULL if filter is a sink.
  161. </div>
  162. </div><p>
  163. <hr><h2>Member Data Documentation</h2>
  164. <a class="anchor" name="f17200974c33be21f42a5f00893de028"></a><!-- doxytag: member="tbb::filter::exact_exception_propagation" ref="f17200974c33be21f42a5f00893de028" args="" -->
  165. <div class="memitem">
  166. <div class="memproto">
  167. <table class="memname">
  168. <tr>
  169. <td class="memname">const unsigned char <a class="el" href="a00294.html#f17200974c33be21f42a5f00893de028">tbb::filter::exact_exception_propagation</a><code> [static, protected]</code> </td>
  170. </tr>
  171. </table>
  172. </div>
  173. <div class="memdoc">
  174. <p>
  175. <b>Initial value:</b><div class="fragment"><pre class="fragment">
  176. <span class="preprocessor">#if TBB_USE_CAPTURED_EXCEPTION</span>
  177. <span class="preprocessor"> 0x0</span>
  178. </pre></div>7th bit defines exception propagation mode expected by the application.
  179. <p>
  180. </div>
  181. </div><p>
  182. <a class="anchor" name="2e5eb65f95d8050186278077e433c5b1"></a><!-- doxytag: member="tbb::filter::filter_is_out_of_order" ref="2e5eb65f95d8050186278077e433c5b1" args="" -->
  183. <div class="memitem">
  184. <div class="memproto">
  185. <table class="memname">
  186. <tr>
  187. <td class="memname">const unsigned char <a class="el" href="a00294.html#2e5eb65f95d8050186278077e433c5b1">tbb::filter::filter_is_out_of_order</a> = 0x1&lt;&lt;4<code> [static, protected]</code> </td>
  188. </tr>
  189. </table>
  190. </div>
  191. <div class="memdoc">
  192. <p>
  193. 4th bit distinguishes ordered vs unordered filters.
  194. <p>
  195. The bit was not set for parallel filters in TBB 2.1 and earlier, but <a class="el" href="a00294.html#cd53206c4795ef2df5df26b795caf692">is_ordered()</a> function always treats parallel filters as out of order.
  196. </div>
  197. </div><p>
  198. <hr>The documentation for this class was generated from the following file:<ul>
  199. <li>pipeline.h</ul>
  200. <hr>
  201. <p></p>
  202. Copyright &copy; 2005-2013 Intel Corporation. All Rights Reserved.
  203. <p></p>
  204. Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
  205. registered trademarks or trademarks of Intel Corporation or its
  206. subsidiaries in the United States and other countries.
  207. <p></p>
  208. * Other names and brands may be claimed as the property of others.