[tbb] 13/64: Imported Upstream version 2.1r017

Graham Inggs ginggs at moszumanska.debian.org
Mon Jul 3 12:27:40 UTC 2017


This is an automated email from the git hooks/post-receive script.

ginggs pushed a commit to branch master
in repository tbb.

commit 924368fecaf90316deed7c94792062a1aa8c0a82
Author: Graham Inggs <ginggs at debian.org>
Date:   Mon Jul 3 14:13:30 2017 +0200

    Imported Upstream version 2.1r017
---
 CHANGES                                            |   18 +
 build/FreeBSD.gcc.inc                              |    5 -
 build/FreeBSD.inc                                  |    2 +
 build/Makefile.tbbmalloc                           |   18 +-
 build/SunOS.gcc.inc                                |    5 -
 build/SunOS.inc                                    |    2 +
 build/SunOS.suncc.inc                              |    9 +-
 build/common_rules.inc                             |   12 +-
 build/linux.gcc.inc                                |    9 +-
 build/linux.icc.inc                                |    8 +-
 build/linux.inc                                    |    1 +
 build/macos.inc                                    |    1 +
 build/test_launcher.bat                            |   36 +
 build/test_launcher.sh                             |   15 +-
 build/windows.cl.inc                               |    3 +-
 build/windows.icl.inc                              |    7 +-
 build/windows.inc                                  |    2 +
 doc/Release_Notes.txt                              |    2 +-
 doc/html/a00001.html                               |   25 +-
 doc/html/a00005.html                               |   45 +
 doc/html/a00006.html                               |   41 +
 doc/html/a00007.html                               |   43 +
 doc/html/a00008.html                               |   49 +
 doc/html/a00010.html                               |   35 +
 doc/html/a00012.html                               |   34 +
 doc/html/a00013.html                               |   83 +
 doc/html/a00014.html                               |   41 +
 doc/html/a00015.html                               |   41 +-
 doc/html/a00016.html                               |   26 -
 doc/html/a00017.html                               |   28 -
 doc/html/a00018.html                               |   34 -
 doc/html/a00019.html                               |   59 +
 doc/html/a00020.html                               |   20 -
 doc/html/a00021.html                               |   92 +
 doc/html/a00022.html                               |   24 -
 doc/html/a00024.html                               |   40 +-
 doc/html/a00025.html                               |   41 +-
 doc/html/a00026.html                               |   19 -
 doc/html/a00027.html                               |   75 -
 doc/html/a00028.html                               |   26 -
 doc/html/a00029.html                               |   24 -
 doc/html/a00030.html                               |   34 +
 doc/html/a00031.html                               |   33 +
 doc/html/a00032.html                               |   33 +
 doc/html/a00033.html                               |   48 +-
 doc/html/a00034.html                               |   27 +-
 doc/html/a00035.html                               |   26 -
 doc/html/a00036.html                               |   41 +-
 doc/html/a00037.html                               |   58 -
 doc/html/a00038.html                               |   37 +
 doc/html/a00039.html                               |   66 +-
 doc/html/a00040.html                               |   40 +
 doc/html/a00041.html                               |   29 +-
 doc/html/a00042.html                               |   52 +-
 doc/html/a00043.html                               |   39 +
 doc/html/a00044.html                               |  118 +-
 doc/html/a00045.html                               |   38 +
 doc/html/a00046.html                               |   38 +
 doc/html/a00047.html                               |   44 +-
 doc/html/a00048.html                               |   24 -
 doc/html/a00049.html                               |   35 +
 doc/html/a00051.html                               |   38 +
 doc/html/a00052.html                               |   38 +
 doc/html/a00053.html                               |   27 +-
 doc/html/a00054.html                               |   40 +
 doc/html/a00055.html                               |   43 +
 doc/html/a00057.html                               |   83 +
 doc/html/a00058.html                               |   81 +
 doc/html/a00059.html                               |   39 +
 doc/html/a00060.html                               |   41 +
 doc/html/a00061.html                               |   20 -
 doc/html/a00062.html                               |   43 +-
 doc/html/a00063.html                               |   67 -
 doc/html/a00064.html                               |   35 +
 doc/html/a00065.html                               |   24 -
 doc/html/a00066.html                               |   73 +-
 doc/html/a00067.html                               |   37 +
 doc/html/a00068.html                               |   80 +-
 doc/html/a00069.html                               |   83 +-
 doc/html/a00070.html                               |   75 +-
 doc/html/a00071.html                               |   69 -
 doc/html/a00072.html                               |   67 -
 doc/html/a00073.html                               |   68 -
 doc/html/a00074.html                               |   23 -
 doc/html/a00075.html                               |   18 -
 doc/html/a00076.html                               |   18 -
 doc/html/a00077.html                               |   75 +-
 doc/html/a00078.html                               |   71 -
 doc/html/a00079.html                               |   77 +-
 doc/html/a00080.html                               |   82 +-
 doc/html/a00081.html                               |   26 -
 doc/html/a00082.html                               |   20 -
 doc/html/a00083.html                               |   18 -
 doc/html/a00084.html                               |   68 -
 doc/html/a00085.html                               |   67 -
 doc/html/a00086.html                               |   67 -
 doc/html/a00087.html                               |   23 -
 doc/html/a00088.html                               |   20 -
 doc/html/a00089.html                               |   22 -
 doc/html/a00090.html                               |   21 -
 doc/html/a00091.html                               |   59 +
 doc/html/a00092.html                               |   60 +-
 doc/html/a00093.html                               |   54 +
 doc/html/a00094.html                               |   58 +-
 doc/html/a00095.html                               |   64 +
 doc/html/a00096.html                               |   58 +-
 doc/html/a00097.html                               |  225 ++-
 doc/html/a00098.html                               |   85 +-
 doc/html/a00099.html                               |   93 +-
 doc/html/a00100.html                               |  114 +-
 doc/html/a00101.html                               |   67 +-
 doc/html/a00102.html                               |  147 +-
 doc/html/a00103.html                               |  573 +++++-
 doc/html/a00104.html                               |   76 +-
 doc/html/a00105.html                               |   89 +
 doc/html/a00106.html                               |  295 +++-
 doc/html/a00107.html                               |  438 +++++
 doc/html/a00108.html                               |   50 +-
 doc/html/a00109.html                               |  194 +-
 doc/html/a00110.html                               |   51 +-
 doc/html/a00111.html                               |  170 +-
 doc/html/a00112.html                               |   74 +
 doc/html/a00113.html                               |   95 +
 doc/html/a00114.html                               |   65 +
 doc/html/a00115.html                               |  140 ++
 doc/html/a00116.html                               |   99 ++
 doc/html/a00117.html                               |   53 +
 doc/html/a00118.html                               |   75 +
 doc/html/a00119.html                               |  115 +-
 doc/html/a00120.html                               |   86 +-
 doc/html/a00121.html                               |  153 ++
 doc/html/a00122.html                               |  119 +-
 doc/html/a00123.html                               |  137 +-
 doc/html/a00124.html                               |  113 +-
 doc/html/a00125.html                               |   68 +-
 doc/html/a00126.html                               |   64 +
 doc/html/a00127.html                               |  112 +-
 doc/html/a00128.html                               |   71 +
 doc/html/a00129.html                               |   68 +-
 doc/html/a00130.html                               |  153 ++
 doc/html/a00131.html                               |   46 +-
 doc/html/a00132.html                               |  633 ++++++-
 doc/html/a00133.html                               |  184 +-
 doc/html/a00134.html                               |   85 +-
 doc/html/a00135.html                               |  161 +-
 doc/html/a00136.html                               |  130 ++
 doc/html/a00137.html                               |   65 +
 doc/html/a00138.html                               |  141 ++
 doc/html/a00139.html                               |   56 +
 doc/html/a00140.html                               |   68 +
 doc/html/a00141.html                               |   83 +
 doc/html/a00142.html                               |   49 +-
 doc/html/a00144.html                               |   18 -
 doc/html/a00145.html                               |   19 -
 doc/html/a00149.html                               |   21 -
 doc/html/a00151.html                               |   33 -
 doc/html/a00153.html                               |   20 -
 doc/html/a00154.html                               |   26 -
 doc/html/a00167.html                               |   75 +
 doc/html/a00181.html                               |  501 ++++++
 doc/html/a00183.html                               |  236 +++
 doc/html/a00184.html                               |   38 +
 doc/html/a00185.html                               |  285 +++
 doc/html/a00186.html                               |   50 +
 doc/html/a00187.html                               |   32 +
 doc/html/a00188.html                               |   50 +-
 doc/html/a00189.html                               |  124 +-
 doc/html/a00190.html                               |   43 -
 doc/html/a00191.html                               |   83 +-
 doc/html/a00192.html                               |   42 -
 doc/html/a00193.html                               |  477 ++++-
 doc/html/a00194.html                               |   33 -
 doc/html/a00195.html                               |  257 ---
 doc/html/a00196.html                               |   69 -
 doc/html/a00197.html                               |   76 -
 doc/html/a00198.html                               |   90 -
 doc/html/a00199.html                               |   42 -
 doc/html/a00200.html                               |  258 ++-
 doc/html/a00201.html                               |  738 ++------
 doc/html/a00202.html                               |  156 +-
 doc/html/a00203.html                               |  191 +-
 doc/html/a00204.html                               |  337 ----
 doc/html/a00205.html                               | 1063 +++++++++--
 doc/html/a00206.html                               |   36 -
 doc/html/a00207.html                               |   99 --
 doc/html/a00208.html                               |   70 -
 doc/html/a00209.html                               |  464 -----
 doc/html/a00210.html                               |  156 --
 doc/html/a00211.html                               |   36 -
 doc/html/a00212.html                               |   43 -
 doc/html/a00213.html                               |  382 +++-
 doc/html/a00214.html                               |   43 -
 doc/html/a00215.html                               |   31 -
 doc/html/a00216.html                               |  200 ---
 doc/html/a00217.html                               |   36 -
 doc/html/a00218.html                               |   48 -
 doc/html/a00219.html                               |  846 ++++++++-
 doc/html/a00220.html                               |   41 -
 doc/html/a00221.html                               |   52 -
 doc/html/a00222.html                               |   58 -
 doc/html/a00223.html                               |   80 -
 doc/html/a00224.html                               |   85 -
 doc/html/a00225.html                               |   54 -
 doc/html/a00226.html                               |  181 --
 doc/html/a00227.html                               |   50 -
 doc/html/a00228.html                               |  265 ++-
 doc/html/a00229.html                               |   92 +-
 doc/html/a00230.html                               |   38 -
 doc/html/a00231.html                               |   52 -
 doc/html/a00232.html                               |  108 +-
 doc/html/a00233.html                               |   42 -
 doc/html/a00234.html                               |  603 +++++--
 doc/html/a00235.html                               |   47 -
 doc/html/a00236.html                               |   90 -
 doc/html/a00237.html                               |   36 -
 doc/html/a00238.html                               |   51 -
 doc/html/a00239.html                               |  116 --
 doc/html/a00240.html                               |   57 -
 doc/html/a00241.html                               |  162 --
 doc/html/a00242.html                               |   39 -
 doc/html/a00243.html                               |  194 +-
 doc/html/a00244.html                               |   66 -
 doc/html/a00245.html                               |  462 ++++-
 doc/html/a00246.html                               |   88 -
 doc/html/a00247.html                               |   88 -
 doc/html/a00248.html                               |   42 -
 doc/html/a00249.html                               |   44 -
 doc/html/a00250.html                               |   82 -
 doc/html/a00251.html                               |  367 +++-
 doc/html/a00252.html                               |   48 -
 doc/html/a00253.html                               |  162 --
 doc/html/a00254.html                               |   34 -
 doc/html/a00255.html                               |   44 -
 doc/html/a00256.html                               |  252 ++-
 doc/html/a00257.html                               |   48 -
 doc/html/a00258.html                               |   48 -
 doc/html/a00259.html                               |   36 -
 doc/html/a00260.html                               |  226 ++-
 doc/html/a00261.html                               |  743 --------
 doc/html/a00262.html                               |  190 --
 doc/html/a00263.html                               |   62 -
 doc/html/a00264.html                               |  260 ++-
 doc/html/a00265.html                               |  170 --
 doc/html/a00266.html                               |  100 --
 doc/html/a00267.html                               |   42 -
 doc/html/a00268.html                               |  148 --
 doc/html/a00269.html                               |  207 ++-
 doc/html/a00270.html                               |  188 +-
 doc/html/a00271.html                               |  180 +-
 doc/html/a00272.html                               |  231 ++-
 doc/html/a00273.html                               |  237 ++-
 doc/html/a00274.html                               |  251 +--
 doc/html/a00275.html                               |  196 ++-
 doc/html/a00276.html                               |  586 ++++++-
 doc/html/a00277.html                               |   46 -
 doc/html/a00278.html                               |   43 -
 doc/html/a00279.html                               |   38 -
 doc/html/a00285.html                               |   99 ++
 doc/html/a00286.html                               |   90 +
 doc/html/a00288.html                               |  149 ++
 doc/html/a00289.html                               |  221 +++
 doc/html/a00290.html                               |  587 +++++++
 doc/html/a00293.html                               |  125 ++
 doc/html/a00294.html                               |  273 +++
 doc/html/a00299.html                               |  298 ++++
 doc/html/a00304.html                               |  343 ----
 doc/html/a00307.html                               |  164 ++
 doc/html/a00318.html                               |  585 -------
 doc/html/a00319.html                               |  812 ---------
 doc/html/a00321.html                               |  496 ------
 doc/html/a00322.html                               |   92 -
 doc/html/a00323.html                               |   59 -
 doc/html/a00324.html                               |  443 -----
 doc/html/a00325.html                               |  113 --
 doc/html/a00326.html                               |   99 --
 doc/html/a00327.html                               |  117 --
 doc/html/a00328.html                               |  129 --
 doc/html/a00329.html                               |  931 ----------
 doc/html/a00330.html                               |  350 ----
 doc/html/a00331.html                               |  815 ---------
 doc/html/a00332.html                               |  187 --
 doc/html/a00333.html                               |   66 -
 doc/html/a00334.html                               |   68 -
 doc/html/a00335.html                               |  468 -----
 doc/html/a00336.html                               |  161 --
 doc/html/a00337.html                               |  424 -----
 doc/html/a00338.html                               |  321 ----
 doc/html/a00339.html                               |  211 ---
 doc/html/a00340.html                               |  182 --
 doc/html/a00341.html                               |  217 ---
 doc/html/a00342.html                               |  181 --
 doc/html/a00343.html                               |  110 --
 doc/html/a00344.html                               |  142 --
 doc/html/a00345.html                               |  197 ---
 doc/html/a00346.html                               |  171 --
 doc/html/a00347.html                               |  140 --
 doc/html/a00348.html                               |  181 --
 doc/html/a00349.html                               |  556 ------
 doc/html/a00350.html                               |   85 -
 doc/html/a00351.html                               |   76 -
 doc/html/a00352.html                               |  135 --
 doc/html/a00353.html                               |  207 ---
 doc/html/a00354.html                               |  576 ------
 doc/html/a00355.html                               |  111 --
 doc/html/a00356.html                               |  250 ---
 doc/html/a00357.html                               |  284 ---
 doc/html/a00358.html                               |  150 --
 doc/html/annotated.html                            |  163 +-
 doc/html/concepts.html                             |   17 +-
 doc/html/deprecated.html                           |   17 +-
 doc/html/doxygen.css                               |  143 +-
 doc/html/files.html                                |   92 +-
 doc/html/functions.html                            |  430 ++---
 doc/html/functions_enum.html                       |   39 +-
 doc/html/functions_eval.html                       |   56 +-
 doc/html/functions_func.html                       |  355 ++--
 doc/html/functions_rela.html                       |   37 +-
 doc/html/functions_type.html                       |   58 +-
 doc/html/functions_vars.html                       |   51 +-
 doc/html/globals.html                              |   47 +-
 doc/html/globals_func.html                         |   45 +-
 doc/html/graph_legend.html                         |   17 +-
 doc/html/hierarchy.html                            |  181 +-
 doc/html/index.html                                |   17 +-
 doc/html/modules.html                              |   20 +-
 doc/html/namespacemembers.html                     |  116 +-
 doc/html/namespacemembers_enum.html                |   34 +-
 doc/html/namespacemembers_eval.html                |   38 +-
 doc/html/namespacemembers_func.html                |   68 +-
 doc/html/namespacemembers_type.html                |   43 +-
 doc/html/namespacemembers_vars.html                |   23 -
 doc/html/namespaces.html                           |   21 +-
 doc/html/pages.html                                |   27 +-
 doc/html/parallel_do_body_req.html                 |   29 +-
 doc/html/parallel_for_body_req.html                |   25 +-
 doc/html/parallel_reduce_body_req.html             |   27 +-
 doc/html/parallel_reduce_lambda_req.html           |   13 +-
 doc/html/parallel_scan_body_req.html               |   29 +-
 doc/html/parallel_sort_iter_req.html               |   23 +-
 doc/html/range_req.html                            |   29 +-
 doc/html/tab_b.gif                                 |  Bin 0 -> 35 bytes
 doc/html/tab_l.gif                                 |  Bin 0 -> 706 bytes
 doc/html/tab_r.gif                                 |  Bin 0 -> 2585 bytes
 doc/html/tabs.css                                  |  102 ++
 .../vc7.1/sub_string_finder.vcproj                 |    4 +-
 .../vc7.1/sub_string_finder_extended.vcproj        |    4 +-
 .../vc7.1/sub_string_finder_pretty.vcproj          |    4 +-
 .../sub_string_finder/vc8/sub_string_finder.vcproj |    4 +
 .../vc8/sub_string_finder_extended.vcproj          |    4 +
 .../vc8/sub_string_finder_pretty.vcproj            |    4 +
 .../sub_string_finder/vc9/sub_string_finder.vcproj |    4 +
 .../vc9/sub_string_finder_extended.vcproj          |    4 +
 .../vc9/sub_string_finder_pretty.vcproj            |    4 +
 .../count_strings/count_strings.cpp                |    5 +
 .../count_strings/vc7.1/count_strings.vcproj       |    4 +-
 .../count_strings/vc8/count_strings.vcproj         |    4 +
 .../count_strings/vc9/count_strings.vcproj         |    4 +
 .../vc7.1/parallel_preorder.vcproj                 |    4 +-
 .../parallel_preorder/vc8/parallel_preorder.vcproj |    4 +
 .../parallel_preorder/vc9/parallel_preorder.vcproj |    4 +
 examples/parallel_for/polygon_overlay/Makefile     |    1 -
 .../polygon_overlay/vc7.1/pover.vcproj             |   12 +-
 .../parallel_for/polygon_overlay/vc8/pover.vcproj  |   10 +-
 .../parallel_for/polygon_overlay/vc9/pover.sln     |   32 +-
 .../parallel_for/polygon_overlay/vc9/pover.vcproj  |    8 +
 .../xcode/English.lproj/InfoPlist.strings          |    3 -
 .../xcode/PolygonOverlay.xcodeproj/project.pbxproj |  626 ++++---
 examples/parallel_for/seismic/Makefile             |    1 -
 .../seismic/vc7.1/SeismicSimulation.vcproj         |    8 +-
 .../seismic/vc8/SeismicSimulation.vcproj           |    8 +
 .../seismic/vc9/SeismicSimulation.vcproj           |    8 +
 .../seismic/xcode/English.lproj/InfoPlist.strings  |    3 -
 .../SeismicSimulation.xcodeproj/project.pbxproj    |  578 +++---
 examples/parallel_for/tachyon/Makefile             |    1 -
 .../tachyon/vc7.1/tachyon.serial.vcproj            |    4 +
 .../parallel_for/tachyon/vc7.1/tachyon.tbb.vcproj  |    4 +
 .../tachyon/vc7.1/tachyon.tbb1d.vcproj             |    4 +
 .../parallel_for/tachyon/vc8/tachyon.serial.vcproj |    4 +
 .../parallel_for/tachyon/vc8/tachyon.tbb.vcproj    |    4 +
 .../parallel_for/tachyon/vc8/tachyon.tbb1d.vcproj  |    4 +
 .../parallel_for/tachyon/vc9/tachyon.serial.vcproj |    4 +
 .../parallel_for/tachyon/vc9/tachyon.tbb.vcproj    |    4 +
 .../parallel_for/tachyon/vc9/tachyon.tbb1d.vcproj  |    4 +
 .../tachyon/xcode/English.lproj/InfoPlist.strings  |    3 -
 .../xcode/tachyon.xcodeproj/project.pbxproj        | 1844 ++++++++++----------
 .../convex_hull/vc7.1/convex_hull_bench.vcproj     |    4 +-
 .../convex_hull/vc7.1/convex_hull_sample.vcproj    |    4 +-
 .../convex_hull/vc8/convex_hull_benchmark.vcproj   |    4 +
 .../convex_hull/vc8/convex_hull_sample.vcproj      |    4 +
 .../convex_hull/vc9/convex_hull_benchmark.vcproj   |    4 +
 .../convex_hull/vc9/convex_hull_sample.vcproj      |    4 +
 .../parallel_reduce/primes/vc7.1/primes.vcproj     |    4 +-
 examples/parallel_reduce/primes/vc8/primes.vcproj  |    4 +
 examples/parallel_reduce/primes/vc9/primes.vcproj  |    4 +
 .../vc7.1/parallel_preorder.vcproj                 |    4 +-
 .../parallel_preorder/vc8/parallel_preorder.vcproj |    4 +
 .../parallel_preorder/vc9/parallel_preorder.vcproj |    4 +
 examples/pipeline/square/square.cpp                |    4 +-
 examples/pipeline/square/vc7.1/square.vcproj       |    4 +-
 examples/pipeline/square/vc8/square.vcproj         |    4 +
 examples/pipeline/square/vc9/square.vcproj         |    4 +
 .../pipeline/text_filter/vc7.1/text_filter.vcproj  |    4 +-
 .../pipeline/text_filter/vc8/text_filter.vcproj    |    4 +
 .../pipeline/text_filter/vc9/text_filter.vcproj    |    4 +
 examples/task/tree_sum/vc7.1/tree_sum.vcproj       |    4 +-
 examples/task/tree_sum/vc8/tree_sum.vcproj         |    4 +
 examples/task/tree_sum/vc9/tree_sum.vcproj         |    4 +
 examples/test_all/fibonacci/vc7.1/fibonacci.vcproj |    4 +-
 examples/test_all/fibonacci/vc8/fibonacci.vcproj   |    4 +
 examples/test_all/fibonacci/vc9/fibonacci.vcproj   |    4 +
 include/tbb/cache_aligned_allocator.h              |   18 +-
 include/tbb/concurrent_queue.h                     |    6 +-
 include/tbb/concurrent_vector.h                    |    4 +-
 include/tbb/parallel_do.h                          |    1 -
 include/tbb/scalable_allocator.h                   |   26 +-
 include/tbb/tbb_allocator.h                        |   18 +-
 include/tbb/tbb_stddef.h                           |   16 +-
 src/index.html                                     |    8 +-
 src/perf/harness_barrier.h                         |   68 -
 src/tbb/concurrent_queue.cpp                       |    8 +-
 src/tbb/tbb_assert_impl.h                          |    4 +-
 src/tbbmalloc/Customize.h                          |    4 +
 src/tbbmalloc/MemoryAllocator.cpp                  |   36 +-
 src/tbbmalloc/Statistics.h                         |    7 +-
 src/tbbmalloc/lin32-proxy-export.def               |    2 +-
 src/tbbmalloc/lin64-proxy-export.def               |    2 +-
 src/tbbmalloc/lin64ipf-proxy-export.def            |    2 +-
 src/tbbmalloc/proxy.cpp                            |    4 +-
 src/tbbmalloc/proxy.h                              |    1 +
 src/tbbmalloc/tbbmalloc.cpp                        |   19 +-
 src/test/harness.h                                 |   22 +
 src/test/test_ScalableAllocator.cpp                |   10 +-
 src/test/test_ScalableAllocator_STL.cpp            |   18 +-
 src/test/test_allocator.h                          |   11 -
 src/test/test_allocator_STL.h                      |  100 ++
 src/test/test_cache_aligned_allocator_STL.cpp      |   16 +-
 src/test/test_malloc_compliance.cpp                | 1337 ++++++++------
 src/test/test_malloc_overload.cpp                  |  164 ++
 src/test/test_malloc_regression.cpp                |    1 -
 src/test/test_tbb_version.cpp                      |    5 +-
 440 files changed, 22871 insertions(+), 25142 deletions(-)

diff --git a/CHANGES b/CHANGES
index 31a98ec..0b88742 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,21 @@
+TBB 2.1 Update 4 commercial-aligned release
+
+Changes (w.r.t. TBB 2.1 U3 commercial-aligned release):
+
+- Added tests for aligned memory allocations and malloc replacement.
+- Several improvements for better bundling with Intel(R) C++ Compiler.
+- A few other small changes in code and documentaion.
+
+Bugs fixed: 
+
+- 150 - request to build TBB examples with debug info in release mode.
+- backward compatibility issue with concurrent_queue on Windows.
+- dependency on VS 2005 SP1 runtime libraries removed.
+- compilation of GUI examples under XCode* 3.1 (1577).
+- On Windows, TBB allocator classes can be instantiated with const types 
+    for compatibility with MS implementation of STL containers (1566).
+
+------------------------------------------------------------------------
 TBB 2.1 Update 3 commercial-aligned release
 
 Changes (w.r.t. TBB 2.1 U2 commercial-aligned release):
diff --git a/build/FreeBSD.gcc.inc b/build/FreeBSD.gcc.inc
index aad1e78..3efcb52 100644
--- a/build/FreeBSD.gcc.inc
+++ b/build/FreeBSD.gcc.inc
@@ -73,11 +73,6 @@ endif
 #------------------------------------------------------------------------------
 # Setting assembler data.
 #------------------------------------------------------------------------------
-%.$(OBJ): %.s
-	cpp $(ASM_FLAGS) <$< | grep -v '^#' >$*.tmp
-	$(ASM) -o $@ $*.tmp
-	rm $*.tmp
-
 ASSEMBLY_SOURCE=$(arch)-gas
 ifeq (itanium,$(arch))
     ASM=as
diff --git a/build/FreeBSD.inc b/build/FreeBSD.inc
index 72f56ac..e0b03cc 100644
--- a/build/FreeBSD.inc
+++ b/build/FreeBSD.inc
@@ -77,3 +77,5 @@ MALLOC.DLL = libtbbmalloc$(DEBUG_SUFFIX).$(DLL)
 MALLOC.LIB = $(MALLOC.DLL)
 
 TBB_NOSTRICT=1
+
+TEST_LAUNCHER=sh $(tbb_root)/build/test_launcher.sh
diff --git a/build/Makefile.tbbmalloc b/build/Makefile.tbbmalloc
index f10b443..046b261 100644
--- a/build/Makefile.tbbmalloc
+++ b/build/Makefile.tbbmalloc
@@ -38,8 +38,8 @@ MALLOC_SOURCE_ROOT ?= $(MALLOC_ROOT)
 VPATH = $(tbb_root)/src/tbb/$(ASSEMBLY_SOURCE) $(tbb_root)/src/tbb $(tbb_root)/src/test
 VPATH += $(MALLOC_ROOT) $(MALLOC_SOURCE_ROOT)
 
-KNOWN_NOSTRICT = test_ScalableAllocator_STL.$(OBJ) #test_malloc_compliance.$(OBJ)
-KNOWN_WARNINGS = test_malloc_compliance.$(OBJ)
+KNOWN_NOSTRICT = test_ScalableAllocator_STL.$(OBJ) test_malloc_compliance.$(OBJ) test_malloc_overload.$(OBJ)
+KNOWN_WARNINGS =
 
 CPLUS_FLAGS += $(if $(crosstest),$(DEFINE_KEY)__TBBMALLOC_NO_IMPLICIT_LINKAGE=1)
 
@@ -116,6 +116,8 @@ endif
 
 malloc: $(MALLOC.DLL) $(MALLOCPROXY.DLL)
 
+.PHONY: malloc
+
 #------------------------------------------------------
 # End of rules for making the TBBMalloc shared library
 #------------------------------------------------------
@@ -129,6 +131,12 @@ cross_suffix=$(if $(crosstest),$(if $(DEBUG_SUFFIX),$(subst _debug,,$(1)),$(call
 
 MALLOC_MAIN_TESTS = test_ScalableAllocator.exe test_ScalableAllocator_STL.exe test_malloc_compliance.exe test_malloc_regression.exe
 MALLOC_C_TESTS = test_malloc_pure_c.exe
+MALLOC_OVERLOAD_TESTS =  test_malloc_overload.exe test_malloc_overload_proxy.exe
+
+test_malloc_overload.exe: test_malloc_overload.$(OBJ) 
+	$(CPLUS) $(OUTPUT_KEY)$@ $(CPLUS_FLAGS) $^ $(LIBDL) $(LIBS) $(LINK_FLAGS)
+test_malloc_overload_proxy.exe: test_malloc_overload.$(OBJ) $(call cross_suffix,$(MALLOCPROXY.LIB))
+	$(CPLUS) $(OUTPUT_KEY)$@ $(CPLUS_FLAGS) $^ $(LIBDL) $(LIBS) $(LINK_FLAGS)
 
 $(MALLOC_MAIN_TESTS): %.exe: %.$(OBJ) $(call cross_suffix,$(MALLOC.LIB))
 	$(CPLUS) $(OUTPUT_KEY)$@ $(CPLUS_FLAGS) $^ $(LIBS) $(LINK_FLAGS)
@@ -136,8 +144,10 @@ $(MALLOC_C_TESTS): %.exe: %.$(OBJ) $(call cross_suffix,$(MALLOC.LIB))
 	$(CPLUS) $(OUTPUT_KEY)$@ $(CPLUS_FLAGS) $^ $(LIBS) $(LINK_FLAGS)
 
 # run_cmd is usually empty
-malloc_test: $(call cross_suffix,$(MALLOC.DLL)) $(MALLOC_MAIN_TESTS) $(MALLOC_C_TESTS)
-	$(run_cmd) $(TEST_LAUNCHER) ./test_malloc_compliance.exe
+malloc_test: $(call cross_suffix,$(MALLOC.DLL)) $(MALLOC_MAIN_TESTS) $(MALLOC_C_TESTS) $(MALLOC_OVERLOAD_TESTS)
+	$(run_cmd) $(TEST_LAUNCHER) -l $(MALLOCPROXY.DLL) test_malloc_overload.exe
+	$(run_cmd) $(TEST_LAUNCHER) test_malloc_overload_proxy.exe
+	$(run_cmd) $(TEST_LAUNCHER) test_malloc_compliance.exe 1:4
 	$(run_cmd) ./test_ScalableAllocator.exe
 	$(run_cmd) ./test_ScalableAllocator_STL.exe
 	$(run_cmd) ./test_malloc_regression.exe
diff --git a/build/SunOS.gcc.inc b/build/SunOS.gcc.inc
index fff7124..b8cc312 100644
--- a/build/SunOS.gcc.inc
+++ b/build/SunOS.gcc.inc
@@ -79,11 +79,6 @@ endif
 #------------------------------------------------------------------------------
 # Setting assembler data.
 #------------------------------------------------------------------------------
-%.$(OBJ): %.s
-	cpp $(ASM_FLAGS) <$< | grep -v '^#' >$*.tmp
-	$(ASM) -o $@ $*.tmp
-	rm $*.tmp
-
 ASSEMBLY_SOURCE=$(arch)-gas
 ifeq (itanium,$(arch))
     ASM=ias
diff --git a/build/SunOS.inc b/build/SunOS.inc
index 1ca8dcb..caafa8f 100644
--- a/build/SunOS.inc
+++ b/build/SunOS.inc
@@ -84,3 +84,5 @@ MALLOC.DLL = libtbbmalloc$(DEBUG_SUFFIX).$(DLL)
 MALLOC.LIB = $(MALLOC.DLL)
 
 TBB_NOSTRICT=1
+
+TEST_LAUNCHER=sh $(tbb_root)/build/test_launcher.sh
diff --git a/build/SunOS.suncc.inc b/build/SunOS.suncc.inc
index 10f2ae3..540cb56 100644
--- a/build/SunOS.suncc.inc
+++ b/build/SunOS.suncc.inc
@@ -48,10 +48,10 @@ LIBS = -lpthread -lrt -R .
 C_FLAGS = $(CPLUS_FLAGS)
 
 ifeq ($(cfg), release)
-        CPLUS_FLAGS = -xO2 -library=stlport4 -DUSE_PTHREAD $(WARNING_SUPPRESS)
+        CPLUS_FLAGS = -mt -xO2 -library=stlport4 -DUSE_PTHREAD $(WARNING_SUPPRESS)
 endif
 ifeq ($(cfg), debug)
-        CPLUS_FLAGS = -DTBB_USE_DEBUG -g -library=stlport4 -DUSE_PTHREAD $(WARNING_SUPPRESS)
+        CPLUS_FLAGS = -mt -DTBB_USE_DEBUG -g -library=stlport4 -DUSE_PTHREAD $(WARNING_SUPPRESS)
 endif
 
 ASM=
@@ -80,11 +80,6 @@ endif
 #------------------------------------------------------------------------------
 # Setting assembler data.
 #------------------------------------------------------------------------------
-%.$(OBJ): %.s
-	cpp $(ASM_FLAGS) <$< | grep -v '^#' >$*.tmp
-	$(ASM) $(ASM_FLAGS) -o $@ $*.tmp
-	rm $*.tmp
-
 ASSEMBLY_SOURCE=$(arch)-fbe
 #------------------------------------------------------------------------------
 # End of setting assembler data.
diff --git a/build/common_rules.inc b/build/common_rules.inc
index db98d8f..a751a22 100644
--- a/build/common_rules.inc
+++ b/build/common_rules.inc
@@ -61,6 +61,11 @@ CONLY ?= $(CPLUS)
 %.$(OBJ): %.asm
 	$(ASM) $(ASM_FLAGS) $<
 
+%.$(OBJ): %.s
+	cpp <$< | grep -v '^#' >$*.tmp
+	$(ASM) $(ASM_FLAGS) -o $@ $*.tmp
+	rm $*.tmp
+
 # Rule for generating .E file if needed for visual inspection
 %.E: %.cpp
 	$(CPLUS) $(CPLUS_FLAGS) $(INCLUDES) $(PREPROC_ONLY) $< >$@
@@ -74,14 +79,14 @@ CONLY ?= $(CPLUS)
 	$(CPLUS) -S $(CPLUS_FLAGS) $(INCLUDES) $<
 
 # Customizations
+
 ifeq (1,$(TBB_NOSTRICT))
 # GNU 3.2.3 headers have a ISO syntax that is rejected by Intel compiler in -strict_ansi mode.
 # The Mac uses gcc, so the list is empty for that platform.
 # The files below need the -strict_ansi flag downgraded to -ansi to compile
 
-$(KNOWN_NOSTRICT): %.o: %.cpp
+$(KNOWN_NOSTRICT): %.$(OBJ): %.cpp
 	$(CPLUS) $(COMPILE_ONLY) $(CPLUS_FLAGS_NOSTRICT) $(INCLUDES) $<
-
 endif
 
 $(KNOWN_WARNINGS): %.$(OBJ): %.cpp
@@ -101,7 +106,8 @@ tbbvars:
 
 ifneq (,$(TBB.MANIFEST))
 $(TBB.MANIFEST):
-	cmd /C "echo int main(){return 0;} >tbbmanifest.c"
+	cmd /C "echo #include ^<stdio.h^> >tbbmanifest.c"
+	cmd /C "echo int main(){return 0;} >>tbbmanifest.c"
 	cl $(C_FLAGS) tbbmanifest.c
 
 version_string.tmp: $(TBB.MANIFEST)
diff --git a/build/linux.gcc.inc b/build/linux.gcc.inc
index f233f57..8565bf7 100644
--- a/build/linux.gcc.inc
+++ b/build/linux.gcc.inc
@@ -40,9 +40,10 @@ LIBDL = -ldl
 TBB_NOSTRICT = 1
 
 CPLUS = g++ 
+CONLY = gcc
 LIB_LINK_FLAGS = -shared -Wl,-soname=$(BUILDING_LIBRARY)
 LIBS = -lpthread -lrt 
-C_FLAGS = $(CPLUS_FLAGS) -x c
+C_FLAGS = $(CPLUS_FLAGS)
 
 ifeq ($(cfg), release)
         CPLUS_FLAGS = -DDO_ITT_NOTIFY -O2 -DUSE_PTHREAD
@@ -80,14 +81,10 @@ endif
 #------------------------------------------------------------------------------
 # Setting assembler data.
 #------------------------------------------------------------------------------
-%.$(OBJ): %.s
-	cpp $(ASM_FLAGS) <$< | grep -v '^#' >$*.tmp
-	$(ASM) -o $@ $*.tmp
-	rm $*.tmp
-
 ASSEMBLY_SOURCE=$(arch)-gas
 ifeq (itanium,$(arch))
     ASM=as
+    ASM_FLAGS += -xexplicit
     TBB_ASM.OBJ = atomic_support.o lock_byte.o log2.o pause.o
 endif 
 #------------------------------------------------------------------------------
diff --git a/build/linux.icc.inc b/build/linux.icc.inc
index 8e02c5e..fe851fd 100644
--- a/build/linux.icc.inc
+++ b/build/linux.icc.inc
@@ -41,6 +41,7 @@ export COMPILER_VERSION := ICC: $(shell icc -V </dev/null 2>&1 | grep 'Version')
 TBB_NOSTRICT = 1
 
 CPLUS = icpc 
+CONLY = icc
 
 ifeq (release,$(cfg))
 CPLUS_FLAGS = -O2 -strict_ansi -DUSE_PTHREAD
@@ -57,7 +58,7 @@ endif
 OPENMP_FLAG = -openmp
 LIB_LINK_FLAGS = -shared -i-static -Wl,-soname=$(BUILDING_LIBRARY)
 LIBS = -lpthread -lrt 
-C_FLAGS = $(CPLUS_FLAGS) -x c
+C_FLAGS = $(CPLUS_FLAGS)
 
 ASM=
 ASM_FLAGS=
@@ -72,11 +73,6 @@ endif
 #------------------------------------------------------------------------------
 # Setting assembler data.
 #------------------------------------------------------------------------------
-%.$(OBJ): %.s
-	cpp $(ASM_FLAGS) <$< | grep -v '^#' >$*.tmp
-	$(ASM) -o $@ $*.tmp
-	rm $*.tmp
-
 ASSEMBLY_SOURCE=$(arch)-gas
 ifeq (itanium,$(arch))
     ASM=ias
diff --git a/build/linux.inc b/build/linux.inc
index 7714688..a411d30 100644
--- a/build/linux.inc
+++ b/build/linux.inc
@@ -96,6 +96,7 @@ LINK_MALLOC.LIB = $(MALLOC_NO_VERSION.DLL)
 MALLOCPROXY_NO_VERSION.DLL = libtbbmalloc_proxy$(DEBUG_SUFFIX).$(DLL)
 MALLOCPROXY.DEF = $(MALLOC_ROOT)/$(def_prefix)-proxy-export.def
 MALLOCPROXY.DLL = $(MALLOCPROXY_NO_VERSION.DLL).$(SONAME_SUFFIX)
+MALLOCPROXY.LIB = $(MALLOCPROXY_NO_VERSION.DLL)
 
 
 TBB_NOSTRICT=1
diff --git a/build/macos.inc b/build/macos.inc
index 5106529..c99e390 100644
--- a/build/macos.inc
+++ b/build/macos.inc
@@ -82,3 +82,4 @@ MALLOC.LIB = $(MALLOC.DLL)
 
 TBB_NOSTRICT=1
 
+TEST_LAUNCHER=sh $(tbb_root)/build/test_launcher.sh
diff --git a/build/test_launcher.bat b/build/test_launcher.bat
new file mode 100644
index 0000000..bc52a44
--- /dev/null
+++ b/build/test_launcher.bat
@@ -0,0 +1,36 @@
+ at echo off
+REM
+REM Copyright 2005-2009 Intel Corporation.  All Rights Reserved.
+REM
+REM This file is part of Threading Building Blocks.
+REM
+REM Threading Building Blocks is free software; you can redistribute it
+REM and/or modify it under the terms of the GNU General Public License
+REM version 2 as published by the Free Software Foundation.
+REM
+REM Threading Building Blocks is distributed in the hope that it will be
+REM useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+REM of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+REM GNU General Public License for more details.
+REM
+REM You should have received a copy of the GNU General Public License
+REM along with Threading Building Blocks; if not, write to the Free Software
+REM Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+REM
+REM As a special exception, you may use this file as part of a free software
+REM library without restriction.  Specifically, if other files instantiate
+REM templates or use macros or inline functions from this file, or you compile
+REM this file and link it with other files to produce an executable, this
+REM file does not by itself cause the resulting executable to be covered by
+REM the GNU General Public License.  This exception does not however
+REM invalidate any other reasons why the executable file might be covered by
+REM the GNU General Public License.
+REM
+
+REM no LD_PRELOAD under Windows
+if "%1"=="-l" (
+    echo skip
+    exit
+)
+
+%*
diff --git a/build/test_launcher.sh b/build/test_launcher.sh
index 247e1dd..0f691ba 100644
--- a/build/test_launcher.sh
+++ b/build/test_launcher.sh
@@ -26,6 +26,17 @@
 # invalidate any other reasons why the executable file might be covered by
 # the GNU General Public License.
 
-# Set stack limit and run the command line passed via parameters
+while getopts  "l:" flag #
+do #
+    if [ `uname` != 'Linux' ] ; then #
+        echo 'skip' #
+        exit #
+    fi #
+    LD_PRELOAD=$OPTARG #
+    shift `expr $OPTIND - 1` #
+done #
+# Set stack limit
 ulimit -s 10240 # 
-$* # 
+# Run the command line passed via parameters
+export LD_PRELOAD #
+./$* # 
diff --git a/build/windows.cl.inc b/build/windows.cl.inc
index e0f10b9..f7aa6d9 100644
--- a/build/windows.cl.inc
+++ b/build/windows.cl.inc
@@ -71,6 +71,7 @@ EXPORT_KEY = /DEF:
 ifeq ($(runtime),vc8)
         OPENMP_FLAG = /openmp
         WARNING_KEY += /Wp64
+        CPLUS_FLAGS += /D_USE_RTM_VERSION
 endif
 ifeq ($(runtime),vc9)
         OPENMP_FLAG = /openmp
@@ -84,7 +85,7 @@ endif
 
 CPLUS_FLAGS += /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE \
         /D_WIN32_WINNT=$(_WIN32_WINNT)
-C_FLAGS = $(CPLUS_FLAGS) /TC
+C_FLAGS = $(CPLUS_FLAGS)
 #------------------------------------------------------------------------------
 # End of setting compiler flags.
 #------------------------------------------------------------------------------
diff --git a/build/windows.icl.inc b/build/windows.icl.inc
index 83c4a20..5dd5c2a 100644
--- a/build/windows.icl.inc
+++ b/build/windows.icl.inc
@@ -85,7 +85,12 @@ endif
 OPENMP_FLAG = /Qopenmp
 CPLUS_FLAGS += /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE \
                /D_WIN32_WINNT=$(_WIN32_WINNT)
-C_FLAGS = $(CPLUS_FLAGS) /TC
+
+ifeq ($(runtime),vc8)
+        CPLUS_FLAGS += /D_USE_RTM_VERSION
+endif
+
+C_FLAGS = $(CPLUS_FLAGS)
 
 VCVERSION:=$(runtime)
 VCCOMPAT_FLAG := $(if $(findstring vc7.1, $(VCVERSION)),/Qvc7.1)
diff --git a/build/windows.inc b/build/windows.inc
index ddb6bf9..dc4cb49 100644
--- a/build/windows.inc
+++ b/build/windows.inc
@@ -84,3 +84,5 @@ endif
 
 MAKE_VERSIONS = cmd /C cscript /nologo /E:jscript $(subst \,/,$(tbb_root))/build/version_info_windows.js $(compiler) $(arch) $(subst \,/,"$(CPLUS) $(CPLUS_FLAGS) $(INCLUDES)") > version_string.tmp
 MAKE_TBBVARS  = cmd /C "$(subst /,\,$(tbb_root))\build\generate_tbbvars.bat"
+
+TEST_LAUNCHER =  $(subst /,\,$(tbb_root))\build\test_launcher.bat
diff --git a/doc/Release_Notes.txt b/doc/Release_Notes.txt
index f5eebf5..5529cb1 100644
--- a/doc/Release_Notes.txt
+++ b/doc/Release_Notes.txt
@@ -72,7 +72,7 @@ Software - Supported Operating Systems
 	Asianux* 3.0
 	Debian* GNU/Linux* 4.0
 	Ubuntu* 7.04, 7.10, 8.04, 8.10
-	SuSE* Linux* Enterprise Server (SLES) 9, 10
+	SuSE* Linux* Enterprise Server (SLES) 9, 10, 11
 	SGI* Propack* 4.0 (with Intel(R) Itanium(R) processors only)
 	SGI* Propack* 5.0 (not with IA-32 architecture processors)
 	Turbolinux* GreatTurbo Enterprise Server 10 SP1, Turbolinux* 11
diff --git a/doc/html/a00001.html b/doc/html/a00001.html
index 8f7052c..3a28afa 100644
--- a/doc/html/a00001.html
+++ b/doc/html/a00001.html
@@ -2,12 +2,27 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Member List</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::aligned_space< T, N > Member List</h1>This is the complete list of members for <a class="el" href="a00190.html">tbb::aligned_space< T, N ></a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00190.html#a0">begin</a>()</td><td><a class="el" href="a00190.html">tbb::aligned_space< T, N ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00190.html#a1">end</a>()</td><td><a class="el" href="a00190.html">tbb::aligned_space< T, N ></a></td><td><code> [inline]</code></td></tr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::aligned_space< T, N > Member List</h1>This is the complete list of members for <a class="el" href="a00092.html">tbb::aligned_space< T, N ></a>, including all inherited members.<p><table>
+  <tr class="memlist"><td><a class="el" href="a00092.html#0d702fc6b9e9d061ace3501b3c861cdf">begin</a>()</td><td><a class="el" href="a00092.html">tbb::aligned_space< T, N ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00092.html#024be075c23c0394c9a2518d993bcd9e">end</a>()</td><td><a class="el" href="a00092.html">tbb::aligned_space< T, N ></a></td><td><code> [inline]</code></td></tr>
 </table><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/a00005.html b/doc/html/a00005.html
new file mode 100644
index 0000000..74cb0d9
--- /dev/null
+++ b/doc/html/a00005.html
@@ -0,0 +1,45 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::blocked_range< Value > Member List</h1>This is the complete list of members for <a class="el" href="a00097.html">tbb::blocked_range< Value ></a>, including all inherited members.<p><table>
+  <tr class="memlist"><td><a class="el" href="a00097.html#18d2258400756ac1446dac7676b18df3">begin</a>() const </td><td><a class="el" href="a00097.html">tbb::blocked_range< Value ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00097.html#94607755c5110d199202234d58d022ac">blocked_range</a>()</td><td><a class="el" href="a00097.html">tbb::blocked_range< Value ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00097.html#14795a36ead1414b4371dbe1a4656359">blocked_range</a>(Value begin_, Value end_, size_type grainsize_=1)</td><td><a class="el" href="a00097.html">tbb::blocked_range< Value ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00097.html#4c0efd2be3f96a0ab3ba5085e8b3fcc7">blocked_range</a>(blocked_range &r, split)</td><td><a class="el" href="a00097.html">tbb::blocked_range< Value ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>blocked_range2d</b> (defined in <a class="el" href="a00097.html">tbb::blocked_range< Value ></a>)</td><td><a class="el" href="a00097.html">tbb::blocked_range< Value ></a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>blocked_range3d</b> (defined in <a class="el" href="a00097.html">tbb::blocked_range< Value ></a>)</td><td><a class="el" href="a00097.html">tbb::blocked_range< Value ></a></td><td><code> [friend]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00097.html#1a8d05842c2b3dfc177bc4d347e4cef7">const_iterator</a> typedef</td><td><a class="el" href="a00097.html">tbb::blocked_range< Value ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00097.html#8f4f02f530eb3f2e7ea26e06f76aef9d">empty</a>() const </td><td><a class="el" href="a00097.html">tbb::blocked_range< Value ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00097.html#8b929d93ddc13f148b11bceef3a3bdf8">end</a>() const </td><td><a class="el" href="a00097.html">tbb::blocked_range< Value ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00097.html#fcd2e5b8b6c11fd3f20fc0aa9f11bbc2">grainsize</a>() const </td><td><a class="el" href="a00097.html">tbb::blocked_range< Value ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00097.html#41a58b703d574b6e1ca155df3576f578">is_divisible</a>() const </td><td><a class="el" href="a00097.html">tbb::blocked_range< Value ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00097.html#9eaa0b6beff1420f688570bbf6b8c462">size</a>() const </td><td><a class="el" href="a00097.html">tbb::blocked_range< Value ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00097.html#f5707bffea38eee5c9680f37358afb8e">size_type</a> typedef</td><td><a class="el" href="a00097.html">tbb::blocked_range< Value ></a></td><td></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00006.html b/doc/html/a00006.html
new file mode 100644
index 0000000..bd25f57
--- /dev/null
+++ b/doc/html/a00006.html
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::blocked_range2d< RowValue, ColValue > Member List</h1>This is the complete list of members for <a class="el" href="a00098.html">tbb::blocked_range2d< RowValue, ColValue ></a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>blocked_range2d</b>(RowValue row_begin, RowValue row_end, typename row_range_type::size_type row_grainsize, ColValue col_begin, ColValue col_end, typename col_range_type::size_type col_grainsize) (defined in <a class="el" href="a00098.html">tbb::blocked_range2d< RowValue, ColValue ></a>)</td><td><a class="el" href="a00098.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>blocked_range2d</b>(RowValue row_begin, RowValue row_end, ColValue col_begin, ColValue col_end) (defined in <a class="el" href="a00098.html">tbb::blocked_range2d< RowValue, ColValue ></a>)</td><td><a class="el" href="a00098.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>blocked_range2d</b>(blocked_range2d &r, split) (defined in <a class="el" href="a00098.html">tbb::blocked_range2d< RowValue, ColValue ></a>)</td><td><a class="el" href="a00098.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>col_range_type</b> typedef (defined in <a class="el" href="a00098.html">tbb::blocked_range2d< RowValue, ColValue ></a>)</td><td><a class="el" href="a00098.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00098.html#392a46759af2c884957115771affa7f4">cols</a>() const </td><td><a class="el" href="a00098.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00098.html#d144cb2d88cef553420311aca8667a44">empty</a>() const </td><td><a class="el" href="a00098.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00098.html#ad36a9b38e4fef26d376f99552ce2d92">is_divisible</a>() const </td><td><a class="el" href="a00098.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00098.html#a807a22fe658ec38b8edfd69521d0383">row_range_type</a> typedef</td><td><a class="el" href="a00098.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00098.html#f496e7348a82652fba581203477cc07c">rows</a>() const </td><td><a class="el" href="a00098.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00007.html b/doc/html/a00007.html
new file mode 100644
index 0000000..31800eb
--- /dev/null
+++ b/doc/html/a00007.html
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::blocked_range3d< PageValue, RowValue, ColValue > Member List</h1>This is the complete list of members for <a class="el" href="a00099.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>blocked_range3d</b>(PageValue page_begin, PageValue page_end, RowValue row_begin, RowValue row_end, ColValue col_begin, ColValue col_end) (defined in <a class="el" href="a00099.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>)</td><td><a class="el" href="a00099.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>blocked_range3d</b>(PageValue page_begin, PageValue page_end, typename page_range_type::size_type page_grainsize, RowValue row_begin, RowValue row_end, typename row_range_type::size_type row_grainsize, ColValue col_begin, ColValue col_end, typename col_range_type::size_type col_grainsize) (defined in <a class="el" href="a00099.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>)</td><td><a class="el" href="a00099.html">tbb::blocked_range3d [...]
+  <tr bgcolor="#f0f0f0"><td><b>blocked_range3d</b>(blocked_range3d &r, split) (defined in <a class="el" href="a00099.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>)</td><td><a class="el" href="a00099.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>col_range_type</b> typedef (defined in <a class="el" href="a00099.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>)</td><td><a class="el" href="a00099.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00099.html#3336ba9480fd6c43e158f9beb024c050">cols</a>() const </td><td><a class="el" href="a00099.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00099.html#356860e1c977d91711e8216bd55c0b25">empty</a>() const </td><td><a class="el" href="a00099.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00099.html#39d69191721c488e737ae5d9c5336b9c">is_divisible</a>() const </td><td><a class="el" href="a00099.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00099.html#b8ebf17a552ba47825e9b3887855b719">page_range_type</a> typedef</td><td><a class="el" href="a00099.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00099.html#cf971430aa12361d3ed245344b7c6764">pages</a>() const </td><td><a class="el" href="a00099.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>row_range_type</b> typedef (defined in <a class="el" href="a00099.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>)</td><td><a class="el" href="a00099.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00099.html#1584623e59ff32a8aa82006827508be4">rows</a>() const </td><td><a class="el" href="a00099.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00008.html b/doc/html/a00008.html
new file mode 100644
index 0000000..b4bfb79
--- /dev/null
+++ b/doc/html/a00008.html
@@ -0,0 +1,49 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::cache_aligned_allocator< T > Member List</h1>This is the complete list of members for <a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>address</b>(reference x) const  (defined in <a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a>)</td><td><a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>address</b>(const_reference x) const  (defined in <a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a>)</td><td><a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00100.html#4cdeea67af6c1fcd8f1d5e9c4cab61e8">allocate</a>(size_type n, const void *hint=0)</td><td><a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>cache_aligned_allocator</b>() (defined in <a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a>)</td><td><a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>cache_aligned_allocator</b>(const cache_aligned_allocator &) (defined in <a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a>)</td><td><a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>cache_aligned_allocator</b>(const cache_aligned_allocator< U > &) (defined in <a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a>)</td><td><a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>const_pointer</b> typedef (defined in <a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a>)</td><td><a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>const_reference</b> typedef (defined in <a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a>)</td><td><a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00100.html#958ee8745c86c275bfc9533af565e017">construct</a>(pointer p, const value_type &value)</td><td><a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00100.html#3d4eadf188f7d85d3805ae534e0b8e1c">deallocate</a>(pointer p, size_type)</td><td><a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00100.html#cd298895a4f1654b5149ec84b591ecb5">destroy</a>(pointer p)</td><td><a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>difference_type</b> typedef (defined in <a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a>)</td><td><a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00100.html#fb23b687b4c0429dab4c7f8017266cf0">max_size</a>() const </td><td><a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>pointer</b> typedef (defined in <a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a>)</td><td><a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>reference</b> typedef (defined in <a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a>)</td><td><a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>size_type</b> typedef (defined in <a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a>)</td><td><a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>value_type</b> typedef (defined in <a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a>)</td><td><a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a></td><td></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00010.html b/doc/html/a00010.html
new file mode 100644
index 0000000..9c70250
--- /dev/null
+++ b/doc/html/a00010.html
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::cache_aligned_allocator< void > Member List</h1>This is the complete list of members for <a class="el" href="a00101.html">tbb::cache_aligned_allocator< void ></a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>const_pointer</b> typedef (defined in <a class="el" href="a00101.html">tbb::cache_aligned_allocator< void ></a>)</td><td><a class="el" href="a00101.html">tbb::cache_aligned_allocator< void ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>pointer</b> typedef (defined in <a class="el" href="a00101.html">tbb::cache_aligned_allocator< void ></a>)</td><td><a class="el" href="a00101.html">tbb::cache_aligned_allocator< void ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>value_type</b> typedef (defined in <a class="el" href="a00101.html">tbb::cache_aligned_allocator< void ></a>)</td><td><a class="el" href="a00101.html">tbb::cache_aligned_allocator< void ></a></td><td></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00012.html b/doc/html/a00012.html
new file mode 100644
index 0000000..3ec643d
--- /dev/null
+++ b/doc/html/a00012.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::tbb_hash_compare< T > Member List</h1>This is the complete list of members for <a class="el" href="a00139.html">tbb::tbb_hash_compare< T ></a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>equal</b>(const T &a, const T &b) (defined in <a class="el" href="a00139.html">tbb::tbb_hash_compare< T ></a>)</td><td><a class="el" href="a00139.html">tbb::tbb_hash_compare< T ></a></td><td><code> [inline, static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>hash</b>(const T &t) (defined in <a class="el" href="a00139.html">tbb::tbb_hash_compare< T ></a>)</td><td><a class="el" href="a00139.html">tbb::tbb_hash_compare< T ></a></td><td><code> [inline, static]</code></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00013.html b/doc/html/a00013.html
new file mode 100644
index 0000000..bae62a5
--- /dev/null
+++ b/doc/html/a00013.html
@@ -0,0 +1,83 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::concurrent_hash_map< Key, T, HashCompare, A > Member List</h1>This is the complete list of members for <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>allocator_type</b> typedef (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>begin</b>() (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>begin</b>() const  (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>chain</b> (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [friend]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00103.html#36bcd50fd5383f3682032323b2d74333">clear</a>()</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00103.html#6a65733441a84e3581491eb49e305cf8">concurrent_hash_map</a>(const allocator_type &a=allocator_type())</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00103.html#6af4e2b7d2434bc72a645b7e5eb3959f">concurrent_hash_map</a>(const concurrent_hash_map &table, const allocator_type &a=allocator_type())</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00103.html#51cccc7b42e83884462dcadede034822">concurrent_hash_map</a>(I first, I last, const allocator_type &a=allocator_type())</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>const_accessor</b> (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>const_iterator</b> typedef (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>const_pointer</b> typedef (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>const_range_type</b> typedef (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>const_reference</b> typedef (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00103.html#345daf26f2f7e2b4d93382fea80b3a7f">count</a>(const Key &key) const </td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>difference_type</b> typedef (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00103.html#b9599dd587892366ed31dea23e5c5837">empty</a>() const </td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>end</b>() (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>end</b>() const  (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>equal_range</b>(const Key &key) (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>equal_range</b>(const Key &key) const  (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00103.html#58df7a1e4373c55eb4c2fa9dc69516b1">erase</a>(const Key &key)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00103.html#cc090be8a6c0a3765360ec363cf2474e">erase</a>(const_accessor &item_accessor)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00103.html#b5bd8c8f49f8d0e72afedca53caa6b15">erase</a>(accessor &item_accessor)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00103.html#ae4b9cb9aa025de8251f90f5f21e9e95">find</a>(const_accessor &result, const Key &key) const </td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00103.html#68a6bd5b8a0bc2d5066e5eb175fd5ba9">find</a>(accessor &result, const Key &key)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00103.html#14255f38f7b10bb892b233fce283fbce">get_allocator</a>() const </td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00103.html#2c10a645a8b40c6438c2bb119a61e93b">insert</a>(const_accessor &result, const Key &key)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00103.html#da381dd244a7dbad494e1e60743b5afa">insert</a>(accessor &result, const Key &key)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00103.html#7fa987ae247a894ce9f1ca097a919fd4">insert</a>(const_accessor &result, const value_type &value)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00103.html#2182c693d5898106675b76b443812b47">insert</a>(accessor &result, const value_type &value)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00103.html#70017dbe0ebbe8c83b9740cd54a6b7e0">insert</a>(const value_type &value)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00103.html#06a95a56a40fcbdf3897051d22aaab19">insert</a>(I first, I last)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::hash_map_iterator</b> (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::hash_map_range</b> (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>iterator</b> typedef (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>key_type</b> typedef (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>mapped_type</b> typedef (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00103.html#62d1fdc2c4d37d84b0dca1cd45f1cf1f">max_size</a>() const </td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>node</b> (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [friend]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00103.html#d70ad33f97ce38d004620580bb1b09ba">operator=</a>(const concurrent_hash_map &table)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>pointer</b> typedef (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>range</b>(size_type grainsize=1) (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>range</b>(size_type grainsize=1) const  (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>range_type</b> typedef (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>reference</b> typedef (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>segment</b> (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [friend]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00103.html#75bb57a153952ffadfcf2e4c73deabb1">size</a>() const </td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>size_type</b> typedef (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00103.html#74990f452286f35ad6aa08cab6c5a8cd">swap</a>(concurrent_hash_map &table)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>value_type</b> typedef (defined in <a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00103.html#5a683e8db50438b9976e46e7d4f60e65">~concurrent_hash_map</a>()</td><td><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00014.html b/doc/html/a00014.html
new file mode 100644
index 0000000..2cda8ac
--- /dev/null
+++ b/doc/html/a00014.html
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor Member List</h1>This is the complete list of members for <a class="el" href="a00105.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>accessor</b> (defined in <a class="el" href="a00105.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>)</td><td><a class="el" href="a00105.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>concurrent_hash_map< Key, T, HashCompare, A ></b> (defined in <a class="el" href="a00105.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>)</td><td><a class="el" href="a00105.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td><code> [friend]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00105.html#2a73cc49914e218e579eb77d3d9d6551">const_accessor</a>()</td><td><a class="el" href="a00105.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00105.html#38712b9809d23d2fba5e4780bb3c4f18">empty</a>() const </td><td><a class="el" href="a00105.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00105.html#ea4d48e45dd039a2be10178df9336001">operator *</a>() const </td><td><a class="el" href="a00105.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00105.html#def170ba3b18905cd4e9d90f8a9a9cd9">operator-></a>() const </td><td><a class="el" href="a00105.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00105.html#c7f3f43eb5f98d8451b2b1d456a4ccd4">release</a>()</td><td><a class="el" href="a00105.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00105.html#b5fe45b58ccc252b8ce70ac6c896c648">value_type</a> typedef</td><td><a class="el" href="a00105.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00105.html#9b3fdcb8850d6f6dc749b72dbf2d593d">~const_accessor</a>()</td><td><a class="el" href="a00105.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td><code> [inline]</code></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00015.html b/doc/html/a00015.html
index 515e7d1..a0eff77 100644
--- a/doc/html/a00015.html
+++ b/doc/html/a00015.html
@@ -2,23 +2,32 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Member List</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::blocked_range< Value > Member List</h1>This is the complete list of members for <a class="el" href="a00195.html">tbb::blocked_range< Value ></a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00195.html#a2">begin</a>() const </td><td><a class="el" href="a00195.html">tbb::blocked_range< Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00195.html#a0">blocked_range</a>()</td><td><a class="el" href="a00195.html">tbb::blocked_range< Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00195.html#a1">blocked_range</a>(Value begin_, Value end_, size_type grainsize_=1)</td><td><a class="el" href="a00195.html">tbb::blocked_range< Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00195.html#a8">blocked_range</a>(blocked_range &r, split)</td><td><a class="el" href="a00195.html">tbb::blocked_range< Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>blocked_range2d</b> (defined in <a class="el" href="a00195.html">tbb::blocked_range< Value ></a>)</td><td><a class="el" href="a00195.html">tbb::blocked_range< Value ></a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>blocked_range3d</b> (defined in <a class="el" href="a00195.html">tbb::blocked_range< Value ></a>)</td><td><a class="el" href="a00195.html">tbb::blocked_range< Value ></a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00195.html#w0">const_iterator</a> typedef</td><td><a class="el" href="a00195.html">tbb::blocked_range< Value ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00195.html#a6">empty</a>() const </td><td><a class="el" href="a00195.html">tbb::blocked_range< Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00195.html#a3">end</a>() const </td><td><a class="el" href="a00195.html">tbb::blocked_range< Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00195.html#a5">grainsize</a>() const </td><td><a class="el" href="a00195.html">tbb::blocked_range< Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00195.html#a7">is_divisible</a>() const </td><td><a class="el" href="a00195.html">tbb::blocked_range< Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00195.html#a4">size</a>() const </td><td><a class="el" href="a00195.html">tbb::blocked_range< Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00195.html#w1">size_type</a> typedef</td><td><a class="el" href="a00195.html">tbb::blocked_range< Value ></a></td><td></td></tr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor Member List</h1>This is the complete list of members for <a class="el" href="a00104.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>, including all inherited members.<p><table>
+  <tr class="memlist"><td><a class="el" href="a00105.html#2a73cc49914e218e579eb77d3d9d6551">const_accessor</a>()</td><td><a class="el" href="a00105.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00105.html#38712b9809d23d2fba5e4780bb3c4f18">empty</a>() const </td><td><a class="el" href="a00105.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00104.html#52334dd5411e7b95635b90527d7d6062">operator *</a>() const </td><td><a class="el" href="a00104.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00104.html#0fae0495144540e2b011a6530f68f1cb">operator-></a>() const </td><td><a class="el" href="a00104.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00105.html#c7f3f43eb5f98d8451b2b1d456a4ccd4">release</a>()</td><td><a class="el" href="a00105.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00104.html#8bc15c9c07f3e21583ab1a4ad0901ce5">value_type</a> typedef</td><td><a class="el" href="a00104.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00105.html#9b3fdcb8850d6f6dc749b72dbf2d593d">~const_accessor</a>()</td><td><a class="el" href="a00105.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td><code> [inline]</code></td></tr>
 </table><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/a00016.html b/doc/html/a00016.html
deleted file mode 100644
index 8708ec4..0000000
--- a/doc/html/a00016.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::blocked_range2d< RowValue, ColValue > Member List</h1>This is the complete list of members for <a class="el" href="a00196.html">tbb::blocked_range2d< RowValue, ColValue ></a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>blocked_range2d</b>(RowValue row_begin, RowValue row_end, typename row_range_type::size_type row_grainsize, ColValue col_begin, ColValue col_end, typename col_range_type::size_type col_grainsize) (defined in <a class="el" href="a00196.html">tbb::blocked_range2d< RowValue, ColValue ></a>)</td><td><a class="el" href="a00196.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>blocked_range2d</b>(RowValue row_begin, RowValue row_end, ColValue col_begin, ColValue col_end) (defined in <a class="el" href="a00196.html">tbb::blocked_range2d< RowValue, ColValue ></a>)</td><td><a class="el" href="a00196.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>blocked_range2d</b>(blocked_range2d &r, split) (defined in <a class="el" href="a00196.html">tbb::blocked_range2d< RowValue, ColValue ></a>)</td><td><a class="el" href="a00196.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>col_range_type</b> typedef (defined in <a class="el" href="a00196.html">tbb::blocked_range2d< RowValue, ColValue ></a>)</td><td><a class="el" href="a00196.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00196.html#a6">cols</a>() const </td><td><a class="el" href="a00196.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00196.html#a2">empty</a>() const </td><td><a class="el" href="a00196.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00196.html#a3">is_divisible</a>() const </td><td><a class="el" href="a00196.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00196.html#w0">row_range_type</a> typedef</td><td><a class="el" href="a00196.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00196.html#a5">rows</a>() const </td><td><a class="el" href="a00196.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00017.html b/doc/html/a00017.html
deleted file mode 100644
index 6c8771a..0000000
--- a/doc/html/a00017.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::blocked_range3d< PageValue, RowValue, ColValue > Member List</h1>This is the complete list of members for <a class="el" href="a00197.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>blocked_range3d</b>(PageValue page_begin, PageValue page_end, RowValue row_begin, RowValue row_end, ColValue col_begin, ColValue col_end) (defined in <a class="el" href="a00197.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>)</td><td><a class="el" href="a00197.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>blocked_range3d</b>(PageValue page_begin, PageValue page_end, typename page_range_type::size_type page_grainsize, RowValue row_begin, RowValue row_end, typename row_range_type::size_type row_grainsize, ColValue col_begin, ColValue col_end, typename col_range_type::size_type col_grainsize) (defined in <a class="el" href="a00197.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>)</td><td><a class="el" href="a00197.html">tbb::blocked_range3d [...]
-  <tr bgcolor="#f0f0f0"><td><b>blocked_range3d</b>(blocked_range3d &r, split) (defined in <a class="el" href="a00197.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>)</td><td><a class="el" href="a00197.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>col_range_type</b> typedef (defined in <a class="el" href="a00197.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>)</td><td><a class="el" href="a00197.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00197.html#a7">cols</a>() const </td><td><a class="el" href="a00197.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00197.html#a2">empty</a>() const </td><td><a class="el" href="a00197.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00197.html#a3">is_divisible</a>() const </td><td><a class="el" href="a00197.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00197.html#w0">page_range_type</a> typedef</td><td><a class="el" href="a00197.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00197.html#a5">pages</a>() const </td><td><a class="el" href="a00197.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>row_range_type</b> typedef (defined in <a class="el" href="a00197.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>)</td><td><a class="el" href="a00197.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00197.html#a6">rows</a>() const </td><td><a class="el" href="a00197.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td><code> [inline]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00018.html b/doc/html/a00018.html
deleted file mode 100644
index 113b490..0000000
--- a/doc/html/a00018.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::cache_aligned_allocator< T > Member List</h1>This is the complete list of members for <a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>address</b>(reference x) const  (defined in <a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a>)</td><td><a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>address</b>(const_reference x) const  (defined in <a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a>)</td><td><a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00198.html#a5">allocate</a>(size_type n, const void *hint=0)</td><td><a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>cache_aligned_allocator</b>() (defined in <a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a>)</td><td><a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>cache_aligned_allocator</b>(const cache_aligned_allocator &) (defined in <a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a>)</td><td><a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>cache_aligned_allocator</b>(const cache_aligned_allocator< U > &) (defined in <a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a>)</td><td><a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>const_pointer</b> typedef (defined in <a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a>)</td><td><a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>const_reference</b> typedef (defined in <a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a>)</td><td><a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00198.html#a8">construct</a>(pointer p, const T &value)</td><td><a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00198.html#a6">deallocate</a>(pointer p, size_type)</td><td><a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00198.html#a9">destroy</a>(pointer p)</td><td><a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>difference_type</b> typedef (defined in <a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a>)</td><td><a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00198.html#a7">max_size</a>() const </td><td><a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>pointer</b> typedef (defined in <a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a>)</td><td><a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>reference</b> typedef (defined in <a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a>)</td><td><a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>size_type</b> typedef (defined in <a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a>)</td><td><a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>value_type</b> typedef (defined in <a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a>)</td><td><a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a></td><td></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00019.html b/doc/html/a00019.html
new file mode 100644
index 0000000..ee7009f
--- /dev/null
+++ b/doc/html/a00019.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::concurrent_queue< T, A > Member List</h1>This is the complete list of members for <a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a>, including all inherited members.<p><table>
+  <tr class="memlist"><td><a class="el" href="a00106.html#94ef8d1e9a05c53e3b637ea5eb553a6d">allocator_type</a> typedef</td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>begin</b>() (defined in <a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a>)</td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>begin</b>() const  (defined in <a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a>)</td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00106.html#95796a6ad29ea6fe102ac1663a776d07">capacity</a>() const </td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00106.html#8a6a8a7a8d977d86ae8bd254b9794af1">clear</a>()</td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00106.html#6a4f9b451ceb08ae82709eef4c8a1a6b">concurrent_queue</a>(const allocator_type &a=allocator_type())</td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline, explicit]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00106.html#a919fd9a3d593dc4c8205a4636a8062e">concurrent_queue</a>(const concurrent_queue &src, const allocator_type &a=allocator_type())</td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00106.html#d3ec1af9c793007ec2ecbdcf637f8ec5">concurrent_queue</a>(InputIterator begin, InputIterator end, const allocator_type &a=allocator_type())</td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>const_iterator</b> typedef (defined in <a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a>)</td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00106.html#981c7c13a4aef3d03f35797ebe214d59">const_reference</a> typedef</td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00106.html#3c0b5f19b820719ab4f69eeb9bf75afc">difference_type</a> typedef</td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00106.html#313c369998b69de6e039b9afb9ca3237">empty</a>() const </td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>end</b>() (defined in <a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a>)</td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>end</b>() const  (defined in <a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a>)</td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00106.html#11a088eee45cc1cb0c0b32adadbff92e">get_allocator</a>() const </td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::concurrent_queue_iterator</b> (defined in <a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a>)</td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>iterator</b> typedef (defined in <a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a>)</td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00106.html#170ab4b57a20f0ff00fb8642d4f55e5c">pop</a>(T &destination)</td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00106.html#7088b06d6c226c44a07a310c12176a0c">pop_if_present</a>(T &destination)</td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00106.html#28259b68d5ba6cc77abf72b8d7d22e69">push</a>(const T &source)</td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00106.html#0a91166177c0ceb5a1ddd22827509345">push_if_not_full</a>(const T &source)</td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00106.html#ea0fab9094080138fef0802125160739">reference</a> typedef</td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00106.html#92977e1eb9af259f3aef69f0181476c1">set_capacity</a>(size_type capacity)</td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00106.html#94499bca8d540a1927f9368b386dabea">size</a>() const </td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00106.html#75868c28b0e431caa3ac36404adff4cf">size_type</a> typedef</td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00106.html#ec587adbe0da968d828c0178b2d863b0">value_type</a> typedef</td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00106.html#43480ba7f4ba2401d1213ee23248e4cd">~concurrent_queue</a>()</td><td><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00020.html b/doc/html/a00020.html
deleted file mode 100644
index b821045..0000000
--- a/doc/html/a00020.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::cache_aligned_allocator< void > Member List</h1>This is the complete list of members for <a class="el" href="a00199.html">tbb::cache_aligned_allocator< void ></a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>const_pointer</b> typedef (defined in <a class="el" href="a00199.html">tbb::cache_aligned_allocator< void ></a>)</td><td><a class="el" href="a00199.html">tbb::cache_aligned_allocator< void ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>pointer</b> typedef (defined in <a class="el" href="a00199.html">tbb::cache_aligned_allocator< void ></a>)</td><td><a class="el" href="a00199.html">tbb::cache_aligned_allocator< void ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>value_type</b> typedef (defined in <a class="el" href="a00199.html">tbb::cache_aligned_allocator< void ></a>)</td><td><a class="el" href="a00199.html">tbb::cache_aligned_allocator< void ></a></td><td></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00021.html b/doc/html/a00021.html
new file mode 100644
index 0000000..2ceec7f
--- /dev/null
+++ b/doc/html/a00021.html
@@ -0,0 +1,92 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::concurrent_vector< T, A > Member List</h1>This is the complete list of members for <a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>allocator_type</b> typedef (defined in <a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#423e5aa15e0e3309ad86d026fd85f6f6">assign</a>(size_type n, const_reference t)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#93a06b3112cb804f42f40efb5e7387b4">assign</a>(I first, I last)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#0c073ca43e787c7cbf7b0e26d2221748">at</a>(size_type index)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#23e14a38af748edff96a7adc3a0f1c58">at</a>(size_type index) const </td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#41ce48d6015a1a2812d41cf620ec3476">back</a>()</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#bd518e204107d07fd08d0ec5bdfd383d">back</a>() const </td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#730b23a251ecb6d37f692fb22f38e029">begin</a>()</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#78a06182276ff758788d4c0623ae0d71">begin</a>() const </td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#3ed6b9ae7217af5103d974045b6f5cd5">capacity</a>() const </td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#26f937a359a66b6aae904c3cd9a3c444">clear</a>()</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#1693d1da41b1a8235871be9c6633be35">compact</a>()</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#2c8ca9cabfcd30ad5943324c853664b5">concurrent_vector</a>(const allocator_type &a=allocator_type())</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline, explicit]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#dd8a200b99a8088435a37934b58fe335">concurrent_vector</a>(const concurrent_vector &vector, const allocator_type &a=allocator_type())</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#64432f13f7b29bfe4acfb5568f34f3a8">concurrent_vector</a>(const concurrent_vector< T, M > &vector, const allocator_type &a=allocator_type())</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#2a2e261dfe1cab3f73f7b1a94137cfca">concurrent_vector</a>(size_type n)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline, explicit]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#3883a8a908b44e249a57f454de3f55d8">concurrent_vector</a>(size_type n, const_reference t, const allocator_type &a=allocator_type())</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#4450de83c5862ea4bcd9443fd7e67419">concurrent_vector</a>(I first, I last, const allocator_type &a=allocator_type())</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>const_iterator</b> typedef (defined in <a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>const_pointer</b> typedef (defined in <a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>const_range_type</b> typedef (defined in <a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>const_reference</b> typedef (defined in <a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>const_reverse_iterator</b> typedef (defined in <a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>const_reverse_iterator</b> typedef (defined in <a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>difference_type</b> typedef (defined in <a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#c6426cb93cf20d3af40f3c90f1f0481a">empty</a>() const </td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#c0b51160e5a764982ec97a455f94f2c6">end</a>()</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#1e6aa764ce5a1cbd24526f68bc0a2f6b">end</a>() const </td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#15181759c0bfa2ddce5d10c7550e0002">front</a>()</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#502615a858eb9fa0390ee59169065e90">front</a>() const </td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#2fdba8e90de6a4d2300222236d46758e">get_allocator</a>() const </td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#30484e3959892fd5392fa93c873c31f0">grow_by</a>(size_type delta)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#38274ab3f772ecba600c7daca7690102">grow_by</a>(size_type delta, const_reference t)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#47fe588214dd5fa06ab6e8ab78d83874">grow_to_at_least</a>(size_type n)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::vector_iterator</b> (defined in <a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal_vector_base</b>() const  (defined in <a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>iterator</b> typedef (defined in <a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#2c248a017f0576df3e7cd99627836fd6">max_size</a>() const </td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#691f0f3cda3e489c37a657016e375eaf">operator=</a>(const concurrent_vector &vector)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#19f4ab88a01b0fd056af3bba463e7bd6">operator=</a>(const concurrent_vector< T, M > &vector)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#4c52f2950bb1832886bd4458eb09d7eb">operator[]</a>(size_type index)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#c6fade5c732cc95274d1d8277ea619d1">operator[]</a>(size_type index) const </td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>pointer</b> typedef (defined in <a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#e0087c0f58b49e43b6322ff1ec0bc98d">push_back</a>(const_reference item)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#a4c6ffff3bf08b92939aa2fc516edfba">range</a>(size_t grainsize=1)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#3d09ccfb581b879ae64203741035e193">range</a>(size_t grainsize=1) const </td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>range_type</b> typedef (defined in <a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#5e220926d09236d98f04fe0721e5f9a1">rbegin</a>()</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#9f9c103e18d5f212703805354074ad44">rbegin</a>() const </td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>reference</b> typedef (defined in <a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#290119a4eb43cd6a9e98fa17016ba3c2">rend</a>()</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#d438b9b32ea3a8ffb703015b6dce055b">rend</a>() const </td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#5a0ce05026994b010018f72cfdeb72c1">reserve</a>(size_type n)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>reverse_iterator</b> typedef (defined in <a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>reverse_iterator</b> typedef (defined in <a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#715fe313c4a9c22731cc404dd80c9ec9">size</a>() const </td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>size_type</b> typedef (defined in <a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#96c9c4bd968ed3edb8dd276854d2dae0">swap</a>(concurrent_vector &vector)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>value_type</b> typedef (defined in <a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00107.html#da2444b28bb840d38f60d0030333a5fc">~concurrent_vector</a>()</td><td><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00022.html b/doc/html/a00022.html
deleted file mode 100644
index 467fb64..0000000
--- a/doc/html/a00022.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::hash_map_base Member List</h1>This is the complete list of members for <a class="el" href="a00222.html">tbb::internal::hash_map_base</a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>chain_mutex_t</b> typedef (defined in <a class="el" href="a00222.html">tbb::internal::hash_map_base</a>)</td><td><a class="el" href="a00222.html">tbb::internal::hash_map_base</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00222.html#w3">hashcode_t</a> typedef</td><td><a class="el" href="a00222.html">tbb::internal::hash_map_base</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00222.html#s2">max_physical_size</a></td><td><a class="el" href="a00222.html">tbb::internal::hash_map_base</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00222.html#s1">n_segment</a></td><td><a class="el" href="a00222.html">tbb::internal::hash_map_base</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00222.html#s0">n_segment_bits</a></td><td><a class="el" href="a00222.html">tbb::internal::hash_map_base</a></td><td><code> [static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>node_mutex_t</b> typedef (defined in <a class="el" href="a00222.html">tbb::internal::hash_map_base</a>)</td><td><a class="el" href="a00222.html">tbb::internal::hash_map_base</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>segment_mutex_t</b> typedef (defined in <a class="el" href="a00222.html">tbb::internal::hash_map_base</a>)</td><td><a class="el" href="a00222.html">tbb::internal::hash_map_base</a></td><td></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00024.html b/doc/html/a00024.html
index 73f5184..58acd1c 100644
--- a/doc/html/a00024.html
+++ b/doc/html/a00024.html
@@ -2,23 +2,31 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Member List</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::hash_map_iterator< Container, Value > Member List</h1>This is the complete list of members for <a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>hash_map_iterator</b>(const Container &table, size_t segment_index, size_t array_index=0, node *b=NULL) (defined in <a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a>)</td><td><a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00223.html#a1">hash_map_iterator</a>()</td><td><a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>hash_map_iterator</b>(const hash_map_iterator< Container, typename Container::value_type > &other) (defined in <a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a>)</td><td><a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::hash_map_iterator</b> (defined in <a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a>)</td><td><a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::hash_map_range</b> (defined in <a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a>)</td><td><a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator *</b>() const  (defined in <a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a>)</td><td><a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator!=</b> (defined in <a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a>)</td><td><a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator++</b>() (defined in <a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a>)</td><td><a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00223.html#a6">operator++</a>(int)</td><td><a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator-</b> (defined in <a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a>)</td><td><a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator-></b>() const  (defined in <a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a>)</td><td><a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator==</b> (defined in <a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a>)</td><td><a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>tbb::concurrent_hash_map</b> (defined in <a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a>)</td><td><a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a></td><td><code> [friend]</code></td></tr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::mutex Member List</h1>This is the complete list of members for <a class="el" href="a00112.html">tbb::mutex</a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>is_fair_mutex</b> (defined in <a class="el" href="a00112.html">tbb::mutex</a>)</td><td><a class="el" href="a00112.html">tbb::mutex</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>is_recursive_mutex</b> (defined in <a class="el" href="a00112.html">tbb::mutex</a>)</td><td><a class="el" href="a00112.html">tbb::mutex</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>is_rw_mutex</b> (defined in <a class="el" href="a00112.html">tbb::mutex</a>)</td><td><a class="el" href="a00112.html">tbb::mutex</a></td><td><code> [static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00112.html#05313cb77d4f85213103d4dab74ed454">mutex</a>()</td><td><a class="el" href="a00112.html">tbb::mutex</a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>scoped_lock</b> (defined in <a class="el" href="a00112.html">tbb::mutex</a>)</td><td><a class="el" href="a00112.html">tbb::mutex</a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>~mutex</b>() (defined in <a class="el" href="a00112.html">tbb::mutex</a>)</td><td><a class="el" href="a00112.html">tbb::mutex</a></td><td><code> [inline]</code></td></tr>
 </table><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/a00025.html b/doc/html/a00025.html
index f00a7d4..ccc9c48 100644
--- a/doc/html/a00025.html
+++ b/doc/html/a00025.html
@@ -2,24 +2,31 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Member List</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::hash_map_range< Iterator > Member List</h1>This is the complete list of members for <a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>begin</b>() const  (defined in <a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a>)</td><td><a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>difference_type</b> typedef (defined in <a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a>)</td><td><a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00224.html#a0">empty</a>() const </td><td><a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>end</b>() const  (defined in <a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a>)</td><td><a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00224.html#a7">grainsize</a>() const </td><td><a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>hash_map_range</b> (defined in <a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a>)</td><td><a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00224.html#a2">hash_map_range</a>(hash_map_range &r, split)</td><td><a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00224.html#a3">hash_map_range</a>(hash_map_range< U > &r)</td><td><a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00224.html#a4">hash_map_range</a>(const Iterator &begin_, const Iterator &end_, size_type grainsize=1)</td><td><a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00224.html#a1">is_divisible</a>() const </td><td><a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>iterator</b> typedef (defined in <a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a>)</td><td><a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>reference</b> typedef (defined in <a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a>)</td><td><a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00224.html#w0">size_type</a> typedef</td><td><a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>value_type</b> typedef (defined in <a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a>)</td><td><a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a></td><td></td></tr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::mutex::scoped_lock Member List</h1>This is the complete list of members for <a class="el" href="a00113.html">tbb::mutex::scoped_lock</a>, including all inherited members.<p><table>
+  <tr class="memlist"><td><a class="el" href="a00113.html#862e022841cdc522e4296a5533b22efd">acquire</a>(mutex &mutex)</td><td><a class="el" href="a00113.html">tbb::mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00113.html#0d51d18cd99df3b2e93bf07378d0992c">release</a>()</td><td><a class="el" href="a00113.html">tbb::mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00113.html#1d403ae51b484df5d86d85ae38f11e6e">scoped_lock</a>()</td><td><a class="el" href="a00113.html">tbb::mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00113.html#605a6b9af0f8cdabdf81825e0de99600">scoped_lock</a>(mutex &mutex)</td><td><a class="el" href="a00113.html">tbb::mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00113.html#591e0c49b82bcedffcbe0923f1b915ec">try_acquire</a>(mutex &mutex)</td><td><a class="el" href="a00113.html">tbb::mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00113.html#0ebbbecaf4311e9df7362cb76ceaa368">~scoped_lock</a>()</td><td><a class="el" href="a00113.html">tbb::mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
 </table><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/a00026.html b/doc/html/a00026.html
deleted file mode 100644
index f27173f..0000000
--- a/doc/html/a00026.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::tbb_hash_compare< T > Member List</h1>This is the complete list of members for <a class="el" href="a00269.html">tbb::tbb_hash_compare< T ></a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>equal</b>(const T &a, const T &b) (defined in <a class="el" href="a00269.html">tbb::tbb_hash_compare< T ></a>)</td><td><a class="el" href="a00269.html">tbb::tbb_hash_compare< T ></a></td><td><code> [inline, static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>hash</b>(const T &t) (defined in <a class="el" href="a00269.html">tbb::tbb_hash_compare< T ></a>)</td><td><a class="el" href="a00269.html">tbb::tbb_hash_compare< T ></a></td><td><code> [inline, static]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00027.html b/doc/html/a00027.html
deleted file mode 100644
index 87b6716..0000000
--- a/doc/html/a00027.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::concurrent_hash_map< Key, T, HashCompare, A > Member List</h1>This is the complete list of members for <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>allocator_type</b> typedef (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>begin</b>() (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>begin</b>() const  (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>chain</b> (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>chain_mutex_t</b> typedef (defined in <a class="el" href="a00222.html">tbb::internal::hash_map_base</a>)</td><td><a class="el" href="a00222.html">tbb::internal::hash_map_base</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00201.html#a4">clear</a>()</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00201.html#a0">concurrent_hash_map</a>(const allocator_type &a=allocator_type())</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00201.html#a1">concurrent_hash_map</a>(const concurrent_hash_map &table, const allocator_type &a=allocator_type())</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00201.html#a2">concurrent_hash_map</a>(I first, I last, const allocator_type &a=allocator_type())</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>const_accessor</b> (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>const_iterator</b> typedef (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>const_pointer</b> typedef (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>const_range_type</b> typedef (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>const_reference</b> typedef (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00201.html#a19">count</a>(const Key &key) const </td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>difference_type</b> typedef (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00201.html#a15">empty</a>() const </td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>end</b>() (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>end</b>() const  (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>equal_range</b>(const Key &key) (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>equal_range</b>(const Key &key) const  (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00201.html#a28">erase</a>(const Key &key)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00201.html#a29">erase</a>(const_accessor &item_accessor)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00201.html#a30">erase</a>(accessor &item_accessor)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00201.html#a20">find</a>(const_accessor &result, const Key &key) const </td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00201.html#a21">find</a>(accessor &result, const Key &key)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00201.html#a17">get_allocator</a>() const </td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00222.html#w3">hashcode_t</a> typedef</td><td><a class="el" href="a00222.html">tbb::internal::hash_map_base</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00201.html#a22">insert</a>(const_accessor &result, const Key &key)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00201.html#a23">insert</a>(accessor &result, const Key &key)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00201.html#a24">insert</a>(const_accessor &result, const value_type &value)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00201.html#a25">insert</a>(accessor &result, const value_type &value)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00201.html#a26">insert</a>(const value_type &value)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00201.html#a27">insert</a>(I first, I last)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::hash_map_iterator</b> (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::hash_map_range</b> (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>iterator</b> typedef (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>key_type</b> typedef (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>mapped_type</b> typedef (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00222.html#s2">max_physical_size</a></td><td><a class="el" href="a00222.html">tbb::internal::hash_map_base</a></td><td><code> [protected, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00201.html#a16">max_size</a>() const </td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00222.html#s1">n_segment</a></td><td><a class="el" href="a00222.html">tbb::internal::hash_map_base</a></td><td><code> [protected, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00222.html#s0">n_segment_bits</a></td><td><a class="el" href="a00222.html">tbb::internal::hash_map_base</a></td><td><code> [protected, static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>node</b> (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>node_mutex_t</b> typedef (defined in <a class="el" href="a00222.html">tbb::internal::hash_map_base</a>)</td><td><a class="el" href="a00222.html">tbb::internal::hash_map_base</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00201.html#a3">operator=</a>(const concurrent_hash_map &table)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>pointer</b> typedef (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>range</b>(size_type grainsize=1) (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>range</b>(size_type grainsize=1) const  (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>range_type</b> typedef (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>reference</b> typedef (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>segment</b> (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>segment_mutex_t</b> typedef (defined in <a class="el" href="a00222.html">tbb::internal::hash_map_base</a>)</td><td><a class="el" href="a00222.html">tbb::internal::hash_map_base</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00201.html#a14">size</a>() const </td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>size_type</b> typedef (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00201.html#a18">swap</a>(concurrent_hash_map &table)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>value_type</b> typedef (defined in <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00201.html#a5">~concurrent_hash_map</a>()</td><td><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00028.html b/doc/html/a00028.html
deleted file mode 100644
index 00a2dc3..0000000
--- a/doc/html/a00028.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor Member List</h1>This is the complete list of members for <a class="el" href="a00203.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>accessor</b> (defined in <a class="el" href="a00203.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>)</td><td><a class="el" href="a00203.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>concurrent_hash_map<Key,T,HashCompare,A></b> (defined in <a class="el" href="a00203.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>)</td><td><a class="el" href="a00203.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00203.html#a4">const_accessor</a>()</td><td><a class="el" href="a00203.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00203.html#a0">empty</a>() const </td><td><a class="el" href="a00203.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00203.html#a2">operator *</a>() const </td><td><a class="el" href="a00203.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00203.html#a3">operator-></a>() const </td><td><a class="el" href="a00203.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00203.html#a1">release</a>()</td><td><a class="el" href="a00203.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00203.html#w0">value_type</a> typedef</td><td><a class="el" href="a00203.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00203.html#a5">~const_accessor</a>()</td><td><a class="el" href="a00203.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td><code> [inline]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00029.html b/doc/html/a00029.html
deleted file mode 100644
index f423ace..0000000
--- a/doc/html/a00029.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor Member List</h1>This is the complete list of members for <a class="el" href="a00202.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00203.html#a4">const_accessor</a>()</td><td><a class="el" href="a00203.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00203.html#a0">empty</a>() const </td><td><a class="el" href="a00203.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00202.html#a0">operator *</a>() const </td><td><a class="el" href="a00202.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00202.html#a1">operator-></a>() const </td><td><a class="el" href="a00202.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00203.html#a1">release</a>()</td><td><a class="el" href="a00203.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00202.html#w0">value_type</a> typedef</td><td><a class="el" href="a00202.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00203.html#a5">~const_accessor</a>()</td><td><a class="el" href="a00203.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td><code> [inline]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00030.html b/doc/html/a00030.html
new file mode 100644
index 0000000..bf754c1
--- /dev/null
+++ b/doc/html/a00030.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::parallel_do_feeder< Item > Member List</h1>This is the complete list of members for <a class="el" href="a00114.html">tbb::parallel_do_feeder< Item ></a>, including all inherited members.<p><table>
+  <tr class="memlist"><td><a class="el" href="a00114.html#40baaf0f6856f4491dd0adf896c93516">add</a>(const Item &item)</td><td><a class="el" href="a00114.html">tbb::parallel_do_feeder< Item ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::parallel_do_feeder_impl</b> (defined in <a class="el" href="a00114.html">tbb::parallel_do_feeder< Item ></a>)</td><td><a class="el" href="a00114.html">tbb::parallel_do_feeder< Item ></a></td><td><code> [friend]</code></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00031.html b/doc/html/a00031.html
new file mode 100644
index 0000000..5e77703
--- /dev/null
+++ b/doc/html/a00031.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::pre_scan_tag Member List</h1>This is the complete list of members for <a class="el" href="a00117.html">tbb::pre_scan_tag</a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>is_final_scan</b>() (defined in <a class="el" href="a00117.html">tbb::pre_scan_tag</a>)</td><td><a class="el" href="a00117.html">tbb::pre_scan_tag</a></td><td><code> [inline, static]</code></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00032.html b/doc/html/a00032.html
new file mode 100644
index 0000000..218cf29
--- /dev/null
+++ b/doc/html/a00032.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::final_scan_tag Member List</h1>This is the complete list of members for <a class="el" href="a00110.html">tbb::final_scan_tag</a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>is_final_scan</b>() (defined in <a class="el" href="a00110.html">tbb::final_scan_tag</a>)</td><td><a class="el" href="a00110.html">tbb::final_scan_tag</a></td><td><code> [inline, static]</code></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00033.html b/doc/html/a00033.html
index 6ee0444..81f0cb7 100644
--- a/doc/html/a00033.html
+++ b/doc/html/a00033.html
@@ -2,32 +2,30 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Member List</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::concurrent_queue_base_v3 Member List</h1>This is the complete list of members for <a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00205.html#b8">allocate_page</a>()=0</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected, pure virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#b12">assign</a>(const concurrent_queue_base_v3 &src)</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>concurrent_queue_base_v3</b>(size_t item_size) (defined in <a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a>)</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>concurrent_queue_iterator_base_v3</b> (defined in <a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a>)</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>concurrent_queue_iterator_rep</b> (defined in <a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a>)</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>concurrent_queue_rep</b> (defined in <a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a>)</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#b9">deallocate_page</a>(page *p)=0</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected, pure virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#b10">internal_finish_clear</a>()</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#b3">internal_pop</a>(void *dst)</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#b5">internal_pop_if_present</a>(void *dst)</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#b2">internal_push</a>(const void *src)</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#b4">internal_push_if_not_full</a>(const void *src)</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#b7">internal_set_capacity</a>(ptrdiff_t capacity, size_t element_size)</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#b6">internal_size</a>() const </td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#b11">internal_throw_exception</a>() const </td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#p2">item_size</a></td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#p1">items_per_page</a></td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>micro_queue</b> (defined in <a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a>)</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>micro_queue_pop_finalizer</b> (defined in <a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a>)</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#p0">my_capacity</a></td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00230.html#a0">no_copy</a>()</td><td><a class="el" href="a00230.html">tbb::internal::no_copy</a></td><td><code> [inline, private]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>~concurrent_queue_base_v3</b>() (defined in <a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a>)</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected, virtual]</code></td></tr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::parallel_while< Body > Member List</h1>This is the complete list of members for <a class="el" href="a00115.html">tbb::parallel_while< Body ></a>, including all inherited members.<p><table>
+  <tr class="memlist"><td><a class="el" href="a00115.html#e131c560057a58229992b61eb8dba4c6">add</a>(const value_type &item)</td><td><a class="el" href="a00115.html">tbb::parallel_while< Body ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00115.html#36e26ba3880c7bcf804a97ba0cbe133f">parallel_while</a>()</td><td><a class="el" href="a00115.html">tbb::parallel_while< Body ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00115.html#b32a0a6e5e09ebb7fad3e6652c19afe5">run</a>(Stream &stream, const Body &body)</td><td><a class="el" href="a00115.html">tbb::parallel_while< Body ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00115.html#fa297e53d3af2a101e712bc200233e9c">value_type</a> typedef</td><td><a class="el" href="a00115.html">tbb::parallel_while< Body ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00115.html#6fcfc973cc56b79c6d0fbb8a31be7e84">~parallel_while</a>()</td><td><a class="el" href="a00115.html">tbb::parallel_while< Body ></a></td><td><code> [inline]</code></td></tr>
 </table><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/a00034.html b/doc/html/a00034.html
index cffa93c..c770bea 100644
--- a/doc/html/a00034.html
+++ b/doc/html/a00034.html
@@ -2,12 +2,29 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Member List</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::concurrent_queue_base_v3::page Member List</h1>This is the complete list of members for <a class="el" href="a00206.html">tbb::internal::concurrent_queue_base_v3::page</a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>mask</b> (defined in <a class="el" href="a00206.html">tbb::internal::concurrent_queue_base_v3::page</a>)</td><td><a class="el" href="a00206.html">tbb::internal::concurrent_queue_base_v3::page</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>next</b> (defined in <a class="el" href="a00206.html">tbb::internal::concurrent_queue_base_v3::page</a>)</td><td><a class="el" href="a00206.html">tbb::internal::concurrent_queue_base_v3::page</a></td><td></td></tr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::simple_partitioner Member List</h1>This is the complete list of members for <a class="el" href="a00126.html">tbb::simple_partitioner</a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>internal::start_for</b> (defined in <a class="el" href="a00126.html">tbb::simple_partitioner</a>)</td><td><a class="el" href="a00126.html">tbb::simple_partitioner</a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::start_reduce</b> (defined in <a class="el" href="a00126.html">tbb::simple_partitioner</a>)</td><td><a class="el" href="a00126.html">tbb::simple_partitioner</a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::start_scan</b> (defined in <a class="el" href="a00126.html">tbb::simple_partitioner</a>)</td><td><a class="el" href="a00126.html">tbb::simple_partitioner</a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>simple_partitioner</b>() (defined in <a class="el" href="a00126.html">tbb::simple_partitioner</a>)</td><td><a class="el" href="a00126.html">tbb::simple_partitioner</a></td><td><code> [inline]</code></td></tr>
 </table><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/a00035.html b/doc/html/a00035.html
deleted file mode 100644
index 2c5c8eb..0000000
--- a/doc/html/a00035.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::concurrent_queue_iterator_base_v3 Member List</h1>This is the complete list of members for <a class="el" href="a00208.html">tbb::internal::concurrent_queue_iterator_base_v3</a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00208.html#b4">advance</a>()</td><td><a class="el" href="a00208.html">tbb::internal::concurrent_queue_iterator_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00208.html#b3">assign</a>(const concurrent_queue_iterator_base_v3 &i)</td><td><a class="el" href="a00208.html">tbb::internal::concurrent_queue_iterator_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00208.html#b0">concurrent_queue_iterator_base_v3</a>()</td><td><a class="el" href="a00208.html">tbb::internal::concurrent_queue_iterator_base_v3</a></td><td><code> [inline, protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00208.html#b1">concurrent_queue_iterator_base_v3</a>(const concurrent_queue_iterator_base_v3 &i)</td><td><a class="el" href="a00208.html">tbb::internal::concurrent_queue_iterator_base_v3</a></td><td><code> [inline, protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00208.html#b2">concurrent_queue_iterator_base_v3</a>(const concurrent_queue_base &queue)</td><td><a class="el" href="a00208.html">tbb::internal::concurrent_queue_iterator_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00208.html#p0">my_item</a></td><td><a class="el" href="a00208.html">tbb::internal::concurrent_queue_iterator_base_v3</a></td><td><code> [mutable, protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator!=</b> (defined in <a class="el" href="a00208.html">tbb::internal::concurrent_queue_iterator_base_v3</a>)</td><td><a class="el" href="a00208.html">tbb::internal::concurrent_queue_iterator_base_v3</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator==</b> (defined in <a class="el" href="a00208.html">tbb::internal::concurrent_queue_iterator_base_v3</a>)</td><td><a class="el" href="a00208.html">tbb::internal::concurrent_queue_iterator_base_v3</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00208.html#b5">~concurrent_queue_iterator_base_v3</a>()</td><td><a class="el" href="a00208.html">tbb::internal::concurrent_queue_iterator_base_v3</a></td><td><code> [protected]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00036.html b/doc/html/a00036.html
index e170da1..d7a5895 100644
--- a/doc/html/a00036.html
+++ b/doc/html/a00036.html
@@ -2,26 +2,29 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Member List</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::concurrent_queue_iterator< Container, Value > Member List</h1>This is the complete list of members for <a class="el" href="a00207.html">tbb::internal::concurrent_queue_iterator< Container, Value ></a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>::tbb::concurrent_queue</b> (defined in <a class="el" href="a00207.html">tbb::internal::concurrent_queue_iterator< Container, Value ></a>)</td><td><a class="el" href="a00207.html">tbb::internal::concurrent_queue_iterator< Container, Value ></a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00208.html#b4">advance</a>()</td><td><a class="el" href="a00208.html">tbb::internal::concurrent_queue_iterator_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00208.html#b3">assign</a>(const concurrent_queue_iterator_base_v3 &i)</td><td><a class="el" href="a00208.html">tbb::internal::concurrent_queue_iterator_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00207.html#a0">concurrent_queue_iterator</a>(const concurrent_queue_base &queue)</td><td><a class="el" href="a00207.html">tbb::internal::concurrent_queue_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>concurrent_queue_iterator</b>() (defined in <a class="el" href="a00207.html">tbb::internal::concurrent_queue_iterator< Container, Value ></a>)</td><td><a class="el" href="a00207.html">tbb::internal::concurrent_queue_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00207.html#a2">concurrent_queue_iterator</a>(const concurrent_queue_iterator< Container, typename Container::value_type > &other)</td><td><a class="el" href="a00207.html">tbb::internal::concurrent_queue_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00208.html#b0">concurrent_queue_iterator_base_v3</a>()</td><td><a class="el" href="a00208.html">tbb::internal::concurrent_queue_iterator_base_v3</a></td><td><code> [inline, protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00208.html#b1">concurrent_queue_iterator_base_v3</a>(const concurrent_queue_iterator_base_v3 &i)</td><td><a class="el" href="a00208.html">tbb::internal::concurrent_queue_iterator_base_v3</a></td><td><code> [inline, protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00208.html#b2">concurrent_queue_iterator_base_v3</a>(const concurrent_queue_base &queue)</td><td><a class="el" href="a00208.html">tbb::internal::concurrent_queue_iterator_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00208.html#p0">my_item</a></td><td><a class="el" href="a00208.html">tbb::internal::concurrent_queue_iterator_base_v3</a></td><td><code> [mutable, protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00207.html#a4">operator *</a>() const </td><td><a class="el" href="a00207.html">tbb::internal::concurrent_queue_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00207.html#a6">operator++</a>()</td><td><a class="el" href="a00207.html">tbb::internal::concurrent_queue_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00207.html#a7">operator++</a>(int)</td><td><a class="el" href="a00207.html">tbb::internal::concurrent_queue_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator-></b>() const  (defined in <a class="el" href="a00207.html">tbb::internal::concurrent_queue_iterator< Container, Value ></a>)</td><td><a class="el" href="a00207.html">tbb::internal::concurrent_queue_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00207.html#a3">operator=</a>(const concurrent_queue_iterator &other)</td><td><a class="el" href="a00207.html">tbb::internal::concurrent_queue_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00208.html#b5">~concurrent_queue_iterator_base_v3</a>()</td><td><a class="el" href="a00208.html">tbb::internal::concurrent_queue_iterator_base_v3</a></td><td><code> [protected]</code></td></tr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::auto_partitioner Member List</h1>This is the complete list of members for <a class="el" href="a00095.html">tbb::auto_partitioner</a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>auto_partitioner</b>() (defined in <a class="el" href="a00095.html">tbb::auto_partitioner</a>)</td><td><a class="el" href="a00095.html">tbb::auto_partitioner</a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::start_for</b> (defined in <a class="el" href="a00095.html">tbb::auto_partitioner</a>)</td><td><a class="el" href="a00095.html">tbb::auto_partitioner</a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::start_reduce</b> (defined in <a class="el" href="a00095.html">tbb::auto_partitioner</a>)</td><td><a class="el" href="a00095.html">tbb::auto_partitioner</a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::start_scan</b> (defined in <a class="el" href="a00095.html">tbb::auto_partitioner</a>)</td><td><a class="el" href="a00095.html">tbb::auto_partitioner</a></td><td><code> [friend]</code></td></tr>
 </table><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/a00037.html b/doc/html/a00037.html
deleted file mode 100644
index 0e1d1c5..0000000
--- a/doc/html/a00037.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::concurrent_queue< T, A > Member List</h1>This is the complete list of members for <a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00204.html#w1">allocator_type</a> typedef</td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#b12">assign</a>(const concurrent_queue_base_v3 &src)</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>begin</b>() (defined in <a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a>)</td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>begin</b>() const  (defined in <a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a>)</td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00204.html#a8">capacity</a>() const </td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00204.html#a11">clear</a>()</td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00204.html#a0">concurrent_queue</a>(const allocator_type &a=allocator_type())</td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline, explicit]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00204.html#a16">concurrent_queue</a>(const concurrent_queue &src, const allocator_type &a=allocator_type())</td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00204.html#a17">concurrent_queue</a>(InputIterator begin, InputIterator end, const allocator_type &a=allocator_type())</td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>concurrent_queue_base_v3</b>(size_t item_size) (defined in <a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a>)</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>const_iterator</b> typedef (defined in <a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a>)</td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00204.html#w3">const_reference</a> typedef</td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00204.html#w5">difference_type</a> typedef</td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00204.html#a7">empty</a>() const </td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>end</b>() (defined in <a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a>)</td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>end</b>() const  (defined in <a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a>)</td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00204.html#a10">get_allocator</a>() const </td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::concurrent_queue_iterator</b> (defined in <a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a>)</td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#b10">internal_finish_clear</a>()</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#b3">internal_pop</a>(void *dst)</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#b5">internal_pop_if_present</a>(void *dst)</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#b2">internal_push</a>(const void *src)</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#b4">internal_push_if_not_full</a>(const void *src)</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#b7">internal_set_capacity</a>(ptrdiff_t capacity, size_t element_size)</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#b6">internal_size</a>() const </td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#b11">internal_throw_exception</a>() const </td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#p2">item_size</a></td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#p1">items_per_page</a></td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>iterator</b> typedef (defined in <a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a>)</td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00205.html#p0">my_capacity</a></td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00204.html#a3">pop</a>(T &destination)</td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00204.html#a5">pop_if_present</a>(T &destination)</td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00204.html#a2">push</a>(const T &source)</td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00204.html#a4">push_if_not_full</a>(const T &source)</td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00204.html#w2">reference</a> typedef</td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00204.html#a9">set_capacity</a>(size_type capacity)</td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00204.html#a6">size</a>() const </td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00204.html#w4">size_type</a> typedef</td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00204.html#w0">value_type</a> typedef</td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00204.html#a1">~concurrent_queue</a>()</td><td><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>~concurrent_queue_base_v3</b>() (defined in <a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a>)</td><td><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td><code> [protected, virtual]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00038.html b/doc/html/a00038.html
new file mode 100644
index 0000000..8c7cb3b
--- /dev/null
+++ b/doc/html/a00038.html
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::affinity_partitioner Member List</h1>This is the complete list of members for <a class="el" href="a00091.html">tbb::affinity_partitioner</a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>affinity_partitioner</b>() (defined in <a class="el" href="a00091.html">tbb::affinity_partitioner</a>)</td><td><a class="el" href="a00091.html">tbb::affinity_partitioner</a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::affinity_partition_type</b> (defined in <a class="el" href="a00091.html">tbb::affinity_partitioner</a>)</td><td><a class="el" href="a00091.html">tbb::affinity_partitioner</a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::start_for</b> (defined in <a class="el" href="a00091.html">tbb::affinity_partitioner</a>)</td><td><a class="el" href="a00091.html">tbb::affinity_partitioner</a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::start_reduce_with_affinity</b> (defined in <a class="el" href="a00091.html">tbb::affinity_partitioner</a>)</td><td><a class="el" href="a00091.html">tbb::affinity_partitioner</a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::start_scan</b> (defined in <a class="el" href="a00091.html">tbb::affinity_partitioner</a>)</td><td><a class="el" href="a00091.html">tbb::affinity_partitioner</a></td><td><code> [friend]</code></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00039.html b/doc/html/a00039.html
index 3765004..28a53ad 100644
--- a/doc/html/a00039.html
+++ b/doc/html/a00039.html
@@ -2,41 +2,39 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Member List</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::concurrent_vector_base_v3 Member List</h1>This is the complete list of members for <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>concurrent_vector_base_v3</b>() (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [inline, protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>default_initial_segments</b> enum value (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>helper</b> (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00210.html#x2">internal_array_op1</a> typedef</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00210.html#x3">internal_array_op2</a> typedef</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_assign</b>(const concurrent_vector_base_v3 &src, size_type element_size, internal_array_op1 destroy, internal_array_op2 assign, internal_array_op2 copy) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_capacity</b>() const  (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_clear</b>(internal_array_op1 destroy) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_compact</b>(size_type element_size, void *table, internal_array_op1 destroy, internal_array_op2 copy) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_copy</b>(const concurrent_vector_base_v3 &src, size_type element_size, internal_array_op2 copy) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_grow</b>(size_type start, size_type finish, size_type element_size, internal_array_op2 init, const void *src) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_grow_by</b>(size_type delta, size_type element_size, internal_array_op2 init, const void *src) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_grow_to_at_least</b>(size_type new_size, size_type element_size, internal_array_op2 init, const void *src) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_push_back</b>(size_type element_size, size_type &index) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_reserve</b>(size_type n, size_type element_size, size_type max_size) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_swap</b>(concurrent_vector_base_v3 &v) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_throw_exception</b>(size_type) const  (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00210.html#p2">my_early_size</a></td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00210.html#p1">my_first_block</a></td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00210.html#p3">my_segment</a></td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00210.html#p4">my_storage</a></td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>pointers_per_long_table</b> enum value (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00210.html#x7x5">pointers_per_short_table</a> enum value</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>segment_base</b>(segment_index_t k) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [inline, protected, static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>segment_base_index_of</b>(segment_index_t &index) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [inline, protected, static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>segment_index_of</b>(size_type index) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [inline, protected, static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>segment_index_t</b> typedef (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>segment_size</b>(segment_index_t k) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [inline, protected, static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>size_type</b> typedef (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00210.html#p0">vector_allocator_ptr</a></td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>~concurrent_vector_base_v3</b>() (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [protected]</code></td></tr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::filter Member List</h1>This is the complete list of members for <a class="el" href="a00109.html">tbb::filter</a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>filter</b>(bool is_serial_) (defined in <a class="el" href="a00109.html">tbb::filter</a>)</td><td><a class="el" href="a00109.html">tbb::filter</a></td><td><code> [inline, protected]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>filter</b>(mode filter_mode) (defined in <a class="el" href="a00109.html">tbb::filter</a>)</td><td><a class="el" href="a00109.html">tbb::filter</a></td><td><code> [inline, protected]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00109.html#56275eb889c77c4807967133e21401bd">finalize</a>(void *)</td><td><a class="el" href="a00109.html">tbb::filter</a></td><td><code> [inline, virtual]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::stage_task</b> (defined in <a class="el" href="a00109.html">tbb::filter</a>)</td><td><a class="el" href="a00109.html">tbb::filter</a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>is_ordered</b>() const  (defined in <a class="el" href="a00109.html">tbb::filter</a>)</td><td><a class="el" href="a00109.html">tbb::filter</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00109.html#fcfec27656a69ff2072802ac001e936f">is_serial</a>() const </td><td><a class="el" href="a00109.html">tbb::filter</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf">mode</a> enum name</td><td><a class="el" href="a00109.html">tbb::filter</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00109.html#fa1b3dc1f4f47563ccab7f4d92f5b543">operator()</a>(void *item)=0</td><td><a class="el" href="a00109.html">tbb::filter</a></td><td><code> [pure virtual]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf75740556347260927e94ce3b23a34abe">parallel</a> enum value</td><td><a class="el" href="a00109.html">tbb::filter</a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>pipeline</b> (defined in <a class="el" href="a00109.html">tbb::filter</a>)</td><td><a class="el" href="a00109.html">tbb::filter</a></td><td><code> [friend]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cff8662693d85bd1cd3df052b761edd237">serial</a> enum value</td><td><a class="el" href="a00109.html">tbb::filter</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf5645f2f2a541e53009d3e719c06c5f93">serial_in_order</a> enum value</td><td><a class="el" href="a00109.html">tbb::filter</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf7fb70bcb663107adfc2938de89bab7d9">serial_out_of_order</a> enum value</td><td><a class="el" href="a00109.html">tbb::filter</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00109.html#66d159f362293e3964ba3da8bc1d2604">~filter</a>()</td><td><a class="el" href="a00109.html">tbb::filter</a></td><td><code> [virtual]</code></td></tr>
 </table><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/a00040.html b/doc/html/a00040.html
new file mode 100644
index 0000000..fa10baa
--- /dev/null
+++ b/doc/html/a00040.html
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::pipeline Member List</h1>This is the complete list of members for <a class="el" href="a00116.html">tbb::pipeline</a>, including all inherited members.<p><table>
+  <tr class="memlist"><td><a class="el" href="a00116.html#38fb5c9c8395dd6f89a4ae2011a83e0d">add_filter</a>(filter &filter_)</td><td><a class="el" href="a00116.html">tbb::pipeline</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00116.html#2c84aef5b834b555ee220b176e25931e">clear</a>()</td><td><a class="el" href="a00116.html">tbb::pipeline</a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>filter</b> (defined in <a class="el" href="a00116.html">tbb::pipeline</a>)</td><td><a class="el" href="a00116.html">tbb::pipeline</a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::stage_task</b> (defined in <a class="el" href="a00116.html">tbb::pipeline</a>)</td><td><a class="el" href="a00116.html">tbb::pipeline</a></td><td><code> [friend]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00116.html#596dc3beba27099c4c8581cb419e1a59">pipeline</a>()</td><td><a class="el" href="a00116.html">tbb::pipeline</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00116.html#f627616049b3fe36801f37ee40403ef8">run</a>(size_t max_number_of_live_tokens)</td><td><a class="el" href="a00116.html">tbb::pipeline</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00116.html#93d7fec8cd607b803dd2d79fb46bd260">run</a>(size_t max_number_of_live_tokens, tbb::task_group_context &context)</td><td><a class="el" href="a00116.html">tbb::pipeline</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00116.html#49513c6c24f9d5bbbb27edca5efe01c9">~pipeline</a>()</td><td><a class="el" href="a00116.html">tbb::pipeline</a></td><td><code> [virtual]</code></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00041.html b/doc/html/a00041.html
index 34eb53f..4834d21 100644
--- a/doc/html/a00041.html
+++ b/doc/html/a00041.html
@@ -2,12 +2,31 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Member List</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::concurrent_vector_base_v3::internal_segments_table Member List</h1>This is the complete list of members for <a class="el" href="a00211.html">tbb::internal::concurrent_vector_base_v3::internal_segments_table</a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>first_block</b> (defined in <a class="el" href="a00211.html">tbb::internal::concurrent_vector_base_v3::internal_segments_table</a>)</td><td><a class="el" href="a00211.html">tbb::internal::concurrent_vector_base_v3::internal_segments_table</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>table</b> (defined in <a class="el" href="a00211.html">tbb::internal::concurrent_vector_base_v3::internal_segments_table</a>)</td><td><a class="el" href="a00211.html">tbb::internal::concurrent_vector_base_v3::internal_segments_table</a></td><td></td></tr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::queuing_mutex Member List</h1>This is the complete list of members for <a class="el" href="a00118.html">tbb::queuing_mutex</a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>internal_construct</b>() (defined in <a class="el" href="a00118.html">tbb::queuing_mutex</a>)</td><td><a class="el" href="a00118.html">tbb::queuing_mutex</a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>is_fair_mutex</b> (defined in <a class="el" href="a00118.html">tbb::queuing_mutex</a>)</td><td><a class="el" href="a00118.html">tbb::queuing_mutex</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>is_recursive_mutex</b> (defined in <a class="el" href="a00118.html">tbb::queuing_mutex</a>)</td><td><a class="el" href="a00118.html">tbb::queuing_mutex</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>is_rw_mutex</b> (defined in <a class="el" href="a00118.html">tbb::queuing_mutex</a>)</td><td><a class="el" href="a00118.html">tbb::queuing_mutex</a></td><td><code> [static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00118.html#b389ad9c4db7293e4bdb5b8cda69ec04">queuing_mutex</a>()</td><td><a class="el" href="a00118.html">tbb::queuing_mutex</a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>scoped_lock</b> (defined in <a class="el" href="a00118.html">tbb::queuing_mutex</a>)</td><td><a class="el" href="a00118.html">tbb::queuing_mutex</a></td><td><code> [friend]</code></td></tr>
 </table><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/a00042.html b/doc/html/a00042.html
index 67a3600..fad989e 100644
--- a/doc/html/a00042.html
+++ b/doc/html/a00042.html
@@ -2,35 +2,31 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Member List</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::vector_iterator< Container, Value > Member List</h1>This is the complete list of members for <a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>difference_type</b> typedef (defined in <a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a>)</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::vector_iterator</b> (defined in <a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a>)</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>iterator_category</b> typedef (defined in <a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a>)</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator *</b>() const  (defined in <a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a>)</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator+</b> (defined in <a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a>)</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator+</b>(ptrdiff_t offset) const  (defined in <a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a>)</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00274.html#a10">operator++</a>()</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00274.html#a12">operator++</a>(int)</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator+=</b>(ptrdiff_t offset) (defined in <a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a>)</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator-</b> (defined in <a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a>)</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator-</b>(ptrdiff_t offset) const  (defined in <a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a>)</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00274.html#a11">operator--</a>()</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00274.html#a13">operator--</a>(int)</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator-=</b>(ptrdiff_t offset) (defined in <a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a>)</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator-></b>() const  (defined in <a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a>)</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator<</b> (defined in <a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a>)</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator==</b> (defined in <a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a>)</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator[]</b>(ptrdiff_t k) const  (defined in <a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a>)</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>pointer</b> typedef (defined in <a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a>)</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>reference</b> typedef (defined in <a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a>)</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>tbb::concurrent_vector</b> (defined in <a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a>)</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>value_type</b> typedef (defined in <a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a>)</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>vector_iterator</b>(const Container &vector, size_t index) (defined in <a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a>)</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00274.html#a1">vector_iterator</a>()</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>vector_iterator</b>(const vector_iterator< Container, typename Container::value_type > &other) (defined in <a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a>)</td><td><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td><code> [inline]</code></td></tr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::queuing_mutex::scoped_lock Member List</h1>This is the complete list of members for <a class="el" href="a00119.html">tbb::queuing_mutex::scoped_lock</a>, including all inherited members.<p><table>
+  <tr class="memlist"><td><a class="el" href="a00119.html#533e4fc8355ee321206a0609c42d909d">acquire</a>(queuing_mutex &m)</td><td><a class="el" href="a00119.html">tbb::queuing_mutex::scoped_lock</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00119.html#3bf2b8c87ff22115be9b2eac179f2d30">release</a>()</td><td><a class="el" href="a00119.html">tbb::queuing_mutex::scoped_lock</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00119.html#db0fa3967491014572e24d6607bdc971">scoped_lock</a>()</td><td><a class="el" href="a00119.html">tbb::queuing_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00119.html#9b51ef972f5618ac17caadb58841ab6d">scoped_lock</a>(queuing_mutex &m)</td><td><a class="el" href="a00119.html">tbb::queuing_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00119.html#e5a014fb817599386a87170cf2cf51a9">try_acquire</a>(queuing_mutex &m)</td><td><a class="el" href="a00119.html">tbb::queuing_mutex::scoped_lock</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00119.html#ac2c576a93570957d694192a5f491443">~scoped_lock</a>()</td><td><a class="el" href="a00119.html">tbb::queuing_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
 </table><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/a00043.html b/doc/html/a00043.html
new file mode 100644
index 0000000..256ef13
--- /dev/null
+++ b/doc/html/a00043.html
@@ -0,0 +1,39 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::queuing_rw_mutex Member List</h1>This is the complete list of members for <a class="el" href="a00120.html">tbb::queuing_rw_mutex</a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>internal_construct</b>() (defined in <a class="el" href="a00120.html">tbb::queuing_rw_mutex</a>)</td><td><a class="el" href="a00120.html">tbb::queuing_rw_mutex</a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>is_fair_mutex</b> (defined in <a class="el" href="a00120.html">tbb::queuing_rw_mutex</a>)</td><td><a class="el" href="a00120.html">tbb::queuing_rw_mutex</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>is_recursive_mutex</b> (defined in <a class="el" href="a00120.html">tbb::queuing_rw_mutex</a>)</td><td><a class="el" href="a00120.html">tbb::queuing_rw_mutex</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>is_rw_mutex</b> (defined in <a class="el" href="a00120.html">tbb::queuing_rw_mutex</a>)</td><td><a class="el" href="a00120.html">tbb::queuing_rw_mutex</a></td><td><code> [static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00120.html#85c90877c3447690ac4e2ac4ff8dea5e">queuing_rw_mutex</a>()</td><td><a class="el" href="a00120.html">tbb::queuing_rw_mutex</a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>scoped_lock</b> (defined in <a class="el" href="a00120.html">tbb::queuing_rw_mutex</a>)</td><td><a class="el" href="a00120.html">tbb::queuing_rw_mutex</a></td><td><code> [friend]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00120.html#1ba73e3d95cfdf8323880bc623af9099">~queuing_rw_mutex</a>()</td><td><a class="el" href="a00120.html">tbb::queuing_rw_mutex</a></td><td><code> [inline]</code></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00044.html b/doc/html/a00044.html
index f4b1287..e8726f0 100644
--- a/doc/html/a00044.html
+++ b/doc/html/a00044.html
@@ -2,99 +2,33 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Member List</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::concurrent_vector< T, A > Member List</h1>This is the complete list of members for <a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>allocator_type</b> typedef (defined in <a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a37">assign</a>(size_type n, const_reference t)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a38">assign</a>(I first, I last)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a14">at</a>(size_type index)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a15">at</a>(size_type index) const </td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a34">back</a>()</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a35">back</a>() const </td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a24">begin</a>()</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a26">begin</a>() const </td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a20">capacity</a>() const </td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a40">clear</a>()</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a22">compact</a>()</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a0">concurrent_vector</a>(const allocator_type &a=allocator_type())</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline, explicit]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a1">concurrent_vector</a>(const concurrent_vector &vector, const allocator_type &a=allocator_type())</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a2">concurrent_vector</a>(const concurrent_vector< T, M > &vector, const allocator_type &a=allocator_type())</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a3">concurrent_vector</a>(size_type n)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline, explicit]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a4">concurrent_vector</a>(size_type n, const_reference t, const allocator_type &a=allocator_type())</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a5">concurrent_vector</a>(I first, I last, const allocator_type &a=allocator_type())</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>concurrent_vector_base_v3</b>() (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [inline, private]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>const_iterator</b> typedef (defined in <a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>const_pointer</b> typedef (defined in <a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>const_range_type</b> typedef (defined in <a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>const_reference</b> typedef (defined in <a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>const_reverse_iterator</b> typedef (defined in <a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>const_reverse_iterator</b> typedef (defined in <a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>default_initial_segments</b> enum value (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [private]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>difference_type</b> typedef (defined in <a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a19">empty</a>() const </td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a25">end</a>()</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a27">end</a>() const </td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a32">front</a>()</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a33">front</a>() const </td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a36">get_allocator</a>() const </td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a8">grow_by</a>(size_type delta)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a9">grow_by</a>(size_type delta, const_reference t)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a10">grow_to_at_least</a>(size_type n)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::vector_iterator</b> (defined in <a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00210.html#x2">internal_array_op1</a> typedef</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [private]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00210.html#x3">internal_array_op2</a> typedef</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [private]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_assign</b>(const concurrent_vector_base_v3 &src, size_type element_size, internal_array_op1 destroy, internal_array_op2 assign, internal_array_op2 copy) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [private]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_capacity</b>() const  (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [private]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_clear</b>(internal_array_op1 destroy) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [private]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_compact</b>(size_type element_size, void *table, internal_array_op1 destroy, internal_array_op2 copy) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [private]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_copy</b>(const concurrent_vector_base_v3 &src, size_type element_size, internal_array_op2 copy) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [private]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_grow</b>(size_type start, size_type finish, size_type element_size, internal_array_op2 init, const void *src) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [private]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_grow_by</b>(size_type delta, size_type element_size, internal_array_op2 init, const void *src) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [private]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_grow_to_at_least</b>(size_type new_size, size_type element_size, internal_array_op2 init, const void *src) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [private]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_push_back</b>(size_type element_size, size_type &index) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [private]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_reserve</b>(size_type n, size_type element_size, size_type max_size) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [private]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_swap</b>(concurrent_vector_base_v3 &v) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [private]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_throw_exception</b>(size_type) const  (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [private]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal_vector_base</b>() const  (defined in <a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>iterator</b> typedef (defined in <a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a23">max_size</a>() const </td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00210.html#p2">my_early_size</a></td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [private]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00210.html#p1">my_first_block</a></td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [private]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00210.html#p3">my_segment</a></td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [private]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00210.html#p4">my_storage</a></td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [private]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a6">operator=</a>(const concurrent_vector &vector)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a7">operator=</a>(const concurrent_vector< T, M > &vector)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a12">operator[]</a>(size_type index)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a13">operator[]</a>(size_type index) const </td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>pointer</b> typedef (defined in <a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>pointers_per_long_table</b> enum value (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [private]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00210.html#x7x5">pointers_per_short_table</a> enum value</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [private]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a11">push_back</a>(const_reference item)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a16">range</a>(size_t grainsize=1)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a17">range</a>(size_t grainsize=1) const </td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>range_type</b> typedef (defined in <a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a28">rbegin</a>()</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a30">rbegin</a>() const </td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>reference</b> typedef (defined in <a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a29">rend</a>()</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a31">rend</a>() const </td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a21">reserve</a>(size_type n)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>reverse_iterator</b> typedef (defined in <a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>reverse_iterator</b> typedef (defined in <a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>segment_base</b>(segment_index_t k) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [inline, private, static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>segment_base_index_of</b>(segment_index_t &index) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [inline, private, static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>segment_index_of</b>(size_type index) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [inline, private, static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>segment_index_t</b> typedef (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [private]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>segment_size</b>(segment_index_t k) (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [inline, private, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a18">size</a>() const </td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>size_type</b> typedef (defined in <a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a39">swap</a>(concurrent_vector &vector)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>value_type</b> typedef (defined in <a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a>)</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00210.html#p0">vector_allocator_ptr</a></td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [private]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00209.html#a41">~concurrent_vector</a>()</td><td><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>~concurrent_vector_base_v3</b>() (defined in <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>)</td><td><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td><code> [private]</code></td></tr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::queuing_rw_mutex::scoped_lock Member List</h1>This is the complete list of members for <a class="el" href="a00121.html">tbb::queuing_rw_mutex::scoped_lock</a>, including all inherited members.<p><table>
+  <tr class="memlist"><td><a class="el" href="a00121.html#a8dd5ab8686e76de21587544dbb681e0">acquire</a>(queuing_rw_mutex &m, bool write=true)</td><td><a class="el" href="a00121.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00121.html#0d2f93edf7b15ec4bcee138823220c52">downgrade_to_reader</a>()</td><td><a class="el" href="a00121.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00121.html#67ae221109ddc69510ab593874e435d4">release</a>()</td><td><a class="el" href="a00121.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00121.html#c62e365be7bcbba091c9ea7454a4d22c">scoped_lock</a>()</td><td><a class="el" href="a00121.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00121.html#fbb8798792d3aebb136c46fc63d2529e">scoped_lock</a>(queuing_rw_mutex &m, bool write=true)</td><td><a class="el" href="a00121.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00121.html#2e4ff6c9ec2fee6682f95290d1f42baa">try_acquire</a>(queuing_rw_mutex &m, bool write=true)</td><td><a class="el" href="a00121.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00121.html#11ba1da4a722c9e6f73339a52c487e82">upgrade_to_writer</a>()</td><td><a class="el" href="a00121.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00121.html#32c7d67a660d23ebbaab1a1d2826d31a">~scoped_lock</a>()</td><td><a class="el" href="a00121.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
 </table><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/a00045.html b/doc/html/a00045.html
new file mode 100644
index 0000000..933c136
--- /dev/null
+++ b/doc/html/a00045.html
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::recursive_mutex Member List</h1>This is the complete list of members for <a class="el" href="a00122.html">tbb::recursive_mutex</a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>is_fair_mutex</b> (defined in <a class="el" href="a00122.html">tbb::recursive_mutex</a>)</td><td><a class="el" href="a00122.html">tbb::recursive_mutex</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>is_recursive_mutex</b> (defined in <a class="el" href="a00122.html">tbb::recursive_mutex</a>)</td><td><a class="el" href="a00122.html">tbb::recursive_mutex</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>is_rw_mutex</b> (defined in <a class="el" href="a00122.html">tbb::recursive_mutex</a>)</td><td><a class="el" href="a00122.html">tbb::recursive_mutex</a></td><td><code> [static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00122.html#d2fceb7f95c24a8cd1457d4527e4b8c6">recursive_mutex</a>()</td><td><a class="el" href="a00122.html">tbb::recursive_mutex</a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>scoped_lock</b> (defined in <a class="el" href="a00122.html">tbb::recursive_mutex</a>)</td><td><a class="el" href="a00122.html">tbb::recursive_mutex</a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>~recursive_mutex</b>() (defined in <a class="el" href="a00122.html">tbb::recursive_mutex</a>)</td><td><a class="el" href="a00122.html">tbb::recursive_mutex</a></td><td><code> [inline]</code></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00046.html b/doc/html/a00046.html
new file mode 100644
index 0000000..3c816d6
--- /dev/null
+++ b/doc/html/a00046.html
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::recursive_mutex::scoped_lock Member List</h1>This is the complete list of members for <a class="el" href="a00123.html">tbb::recursive_mutex::scoped_lock</a>, including all inherited members.<p><table>
+  <tr class="memlist"><td><a class="el" href="a00123.html#7fb04da37cccf8c99b1f9102d9074f9a">acquire</a>(recursive_mutex &mutex)</td><td><a class="el" href="a00123.html">tbb::recursive_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00123.html#ac480ea0e9d5ea0345a67d57008b6263">release</a>()</td><td><a class="el" href="a00123.html">tbb::recursive_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00123.html#d82d4d36fbf9727a493d26ae50855fe7">scoped_lock</a>()</td><td><a class="el" href="a00123.html">tbb::recursive_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00123.html#dec17713c4c1321ac8fec66816d0c602">scoped_lock</a>(recursive_mutex &mutex)</td><td><a class="el" href="a00123.html">tbb::recursive_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00123.html#36bfc3e93e3ef6340abef4901444d340">try_acquire</a>(recursive_mutex &mutex)</td><td><a class="el" href="a00123.html">tbb::recursive_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00123.html#c1197ffb8f3cd9d4fed71d7e06265b7c">~scoped_lock</a>()</td><td><a class="el" href="a00123.html">tbb::recursive_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00047.html b/doc/html/a00047.html
index 901ea40..f0f9078 100644
--- a/doc/html/a00047.html
+++ b/doc/html/a00047.html
@@ -2,16 +2,42 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Member List</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::mutex Member List</h1>This is the complete list of members for <a class="el" href="a00227.html">tbb::mutex</a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>is_fair_mutex</b> (defined in <a class="el" href="a00227.html">tbb::mutex</a>)</td><td><a class="el" href="a00227.html">tbb::mutex</a></td><td><code> [static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>is_recursive_mutex</b> (defined in <a class="el" href="a00227.html">tbb::mutex</a>)</td><td><a class="el" href="a00227.html">tbb::mutex</a></td><td><code> [static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>is_rw_mutex</b> (defined in <a class="el" href="a00227.html">tbb::mutex</a>)</td><td><a class="el" href="a00227.html">tbb::mutex</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00227.html#a0">mutex</a>()</td><td><a class="el" href="a00227.html">tbb::mutex</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>scoped_lock</b> (defined in <a class="el" href="a00227.html">tbb::mutex</a>)</td><td><a class="el" href="a00227.html">tbb::mutex</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>~mutex</b>() (defined in <a class="el" href="a00227.html">tbb::mutex</a>)</td><td><a class="el" href="a00227.html">tbb::mutex</a></td><td><code> [inline]</code></td></tr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::scalable_allocator< T > Member List</h1>This is the complete list of members for <a class="el" href="a00124.html">tbb::scalable_allocator< T ></a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>address</b>(reference x) const  (defined in <a class="el" href="a00124.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00124.html">tbb::scalable_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>address</b>(const_reference x) const  (defined in <a class="el" href="a00124.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00124.html">tbb::scalable_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00124.html#726b1586d05d44665a36e1c7b2699bfd">allocate</a>(size_type n, const void *=0)</td><td><a class="el" href="a00124.html">tbb::scalable_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>const_pointer</b> typedef (defined in <a class="el" href="a00124.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00124.html">tbb::scalable_allocator< T ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>const_reference</b> typedef (defined in <a class="el" href="a00124.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00124.html">tbb::scalable_allocator< T ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>construct</b>(pointer p, const value_type &val) (defined in <a class="el" href="a00124.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00124.html">tbb::scalable_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00124.html#f806a238c18cbcfb531e1e0a0d2ec59d">deallocate</a>(pointer p, size_type)</td><td><a class="el" href="a00124.html">tbb::scalable_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>destroy</b>(pointer p) (defined in <a class="el" href="a00124.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00124.html">tbb::scalable_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>difference_type</b> typedef (defined in <a class="el" href="a00124.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00124.html">tbb::scalable_allocator< T ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00124.html#880e766f1d913988c21973dbdd874fd5">max_size</a>() const </td><td><a class="el" href="a00124.html">tbb::scalable_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>pointer</b> typedef (defined in <a class="el" href="a00124.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00124.html">tbb::scalable_allocator< T ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>reference</b> typedef (defined in <a class="el" href="a00124.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00124.html">tbb::scalable_allocator< T ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>scalable_allocator</b>() (defined in <a class="el" href="a00124.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00124.html">tbb::scalable_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>scalable_allocator</b>(const scalable_allocator &) (defined in <a class="el" href="a00124.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00124.html">tbb::scalable_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>scalable_allocator</b>(const scalable_allocator< U > &) (defined in <a class="el" href="a00124.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00124.html">tbb::scalable_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>size_type</b> typedef (defined in <a class="el" href="a00124.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00124.html">tbb::scalable_allocator< T ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>value_type</b> typedef (defined in <a class="el" href="a00124.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00124.html">tbb::scalable_allocator< T ></a></td><td></td></tr>
 </table><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/a00048.html b/doc/html/a00048.html
deleted file mode 100644
index 169501b..0000000
--- a/doc/html/a00048.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::mutex::scoped_lock Member List</h1>This is the complete list of members for <a class="el" href="a00228.html">tbb::mutex::scoped_lock</a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00228.html#a3">acquire</a>(mutex &mutex)</td><td><a class="el" href="a00228.html">tbb::mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00230.html#a0">no_copy</a>()</td><td><a class="el" href="a00230.html">tbb::internal::no_copy</a></td><td><code> [inline, private]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00228.html#a5">release</a>()</td><td><a class="el" href="a00228.html">tbb::mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00228.html#a0">scoped_lock</a>()</td><td><a class="el" href="a00228.html">tbb::mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00228.html#a1">scoped_lock</a>(mutex &mutex)</td><td><a class="el" href="a00228.html">tbb::mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00228.html#a4">try_acquire</a>(mutex &mutex)</td><td><a class="el" href="a00228.html">tbb::mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00228.html#a2">~scoped_lock</a>()</td><td><a class="el" href="a00228.html">tbb::mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00049.html b/doc/html/a00049.html
new file mode 100644
index 0000000..2c97a9f
--- /dev/null
+++ b/doc/html/a00049.html
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::scalable_allocator< void > Member List</h1>This is the complete list of members for <a class="el" href="a00125.html">tbb::scalable_allocator< void ></a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>const_pointer</b> typedef (defined in <a class="el" href="a00125.html">tbb::scalable_allocator< void ></a>)</td><td><a class="el" href="a00125.html">tbb::scalable_allocator< void ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>pointer</b> typedef (defined in <a class="el" href="a00125.html">tbb::scalable_allocator< void ></a>)</td><td><a class="el" href="a00125.html">tbb::scalable_allocator< void ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>value_type</b> typedef (defined in <a class="el" href="a00125.html">tbb::scalable_allocator< void ></a>)</td><td><a class="el" href="a00125.html">tbb::scalable_allocator< void ></a></td><td></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00051.html b/doc/html/a00051.html
new file mode 100644
index 0000000..9c16915
--- /dev/null
+++ b/doc/html/a00051.html
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::spin_mutex Member List</h1>This is the complete list of members for <a class="el" href="a00127.html">tbb::spin_mutex</a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>internal_construct</b>() (defined in <a class="el" href="a00127.html">tbb::spin_mutex</a>)</td><td><a class="el" href="a00127.html">tbb::spin_mutex</a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>is_fair_mutex</b> (defined in <a class="el" href="a00127.html">tbb::spin_mutex</a>)</td><td><a class="el" href="a00127.html">tbb::spin_mutex</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>is_recursive_mutex</b> (defined in <a class="el" href="a00127.html">tbb::spin_mutex</a>)</td><td><a class="el" href="a00127.html">tbb::spin_mutex</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>is_rw_mutex</b> (defined in <a class="el" href="a00127.html">tbb::spin_mutex</a>)</td><td><a class="el" href="a00127.html">tbb::spin_mutex</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>scoped_lock</b> (defined in <a class="el" href="a00127.html">tbb::spin_mutex</a>)</td><td><a class="el" href="a00127.html">tbb::spin_mutex</a></td><td><code> [friend]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00127.html#3d8fb44644fd8d41ada1fbeba7409be3">spin_mutex</a>()</td><td><a class="el" href="a00127.html">tbb::spin_mutex</a></td><td><code> [inline]</code></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00052.html b/doc/html/a00052.html
new file mode 100644
index 0000000..99785b6
--- /dev/null
+++ b/doc/html/a00052.html
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::spin_mutex::scoped_lock Member List</h1>This is the complete list of members for <a class="el" href="a00128.html">tbb::spin_mutex::scoped_lock</a>, including all inherited members.<p><table>
+  <tr class="memlist"><td><a class="el" href="a00128.html#3ee3c338732b1f64b0b32a757807a30d">acquire</a>(spin_mutex &m)</td><td><a class="el" href="a00128.html">tbb::spin_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00128.html#eeb615e68e963e6bf8d9c11402d0ce8e">release</a>()</td><td><a class="el" href="a00128.html">tbb::spin_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00128.html#29ae680ae7f5e685c2e15535b9c855b3">scoped_lock</a>()</td><td><a class="el" href="a00128.html">tbb::spin_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00128.html#5ce6807050a9e8f87bcb4a65dccb12ef">scoped_lock</a>(spin_mutex &m)</td><td><a class="el" href="a00128.html">tbb::spin_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00128.html#9297ec188534b45dc0ca48f2f39a0501">try_acquire</a>(spin_mutex &m)</td><td><a class="el" href="a00128.html">tbb::spin_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00128.html#ac6fa425d1f06c56d8b70abc51aac844">~scoped_lock</a>()</td><td><a class="el" href="a00128.html">tbb::spin_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00053.html b/doc/html/a00053.html
index 11ade10..6aaf240 100644
--- a/doc/html/a00053.html
+++ b/doc/html/a00053.html
@@ -2,11 +2,30 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Member List</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::strip< T > Member List</h1>This is the complete list of members for <a class="el" href="a00259.html">tbb::internal::strip< T ></a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>type</b> typedef (defined in <a class="el" href="a00259.html">tbb::internal::strip< T ></a>)</td><td><a class="el" href="a00259.html">tbb::internal::strip< T ></a></td><td></td></tr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::spin_rw_mutex_v3 Member List</h1>This is the complete list of members for <a class="el" href="a00129.html">tbb::spin_rw_mutex_v3</a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>is_fair_mutex</b> (defined in <a class="el" href="a00129.html">tbb::spin_rw_mutex_v3</a>)</td><td><a class="el" href="a00129.html">tbb::spin_rw_mutex_v3</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>is_recursive_mutex</b> (defined in <a class="el" href="a00129.html">tbb::spin_rw_mutex_v3</a>)</td><td><a class="el" href="a00129.html">tbb::spin_rw_mutex_v3</a></td><td><code> [static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>is_rw_mutex</b> (defined in <a class="el" href="a00129.html">tbb::spin_rw_mutex_v3</a>)</td><td><a class="el" href="a00129.html">tbb::spin_rw_mutex_v3</a></td><td><code> [static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00129.html#61332b2756de89f3f5f69310cbb6e70c">spin_rw_mutex_v3</a>()</td><td><a class="el" href="a00129.html">tbb::spin_rw_mutex_v3</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00129.html#9a815fb2759e55072ed413f1b6970cf3">~spin_rw_mutex_v3</a>()</td><td><a class="el" href="a00129.html">tbb::spin_rw_mutex_v3</a></td><td><code> [inline]</code></td></tr>
 </table><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/a00054.html b/doc/html/a00054.html
new file mode 100644
index 0000000..784849c
--- /dev/null
+++ b/doc/html/a00054.html
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::spin_rw_mutex_v3::scoped_lock Member List</h1>This is the complete list of members for <a class="el" href="a00130.html">tbb::spin_rw_mutex_v3::scoped_lock</a>, including all inherited members.<p><table>
+  <tr class="memlist"><td><a class="el" href="a00130.html#b0b646ec5be02a127d159bbb7ca65353">acquire</a>(spin_rw_mutex &m, bool write=true)</td><td><a class="el" href="a00130.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00130.html#c2c2c38a08cb9080e87099fac3e5bc94">downgrade_to_reader</a>()</td><td><a class="el" href="a00130.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00130.html#61b14d00a78185c9b2d206ebfc379124">release</a>()</td><td><a class="el" href="a00130.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00130.html#d6ea60dee5563f702379bf5e51aa8806">scoped_lock</a>()</td><td><a class="el" href="a00130.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00130.html#42a92d4f8fdde425b111cfa8a9228071">scoped_lock</a>(spin_rw_mutex &m, bool write=true)</td><td><a class="el" href="a00130.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00130.html#9879626968d9b9a04cd2ec0fb2e84ae1">try_acquire</a>(spin_rw_mutex &m, bool write=true)</td><td><a class="el" href="a00130.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00130.html#3f0b1e3f2efab63336400348bd070226">upgrade_to_writer</a>()</td><td><a class="el" href="a00130.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00130.html#d7eaaa3f2e2c5dc11e7005811b1bdd04">~scoped_lock</a>()</td><td><a class="el" href="a00130.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td><code> [inline]</code></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00055.html b/doc/html/a00055.html
new file mode 100644
index 0000000..f156979
--- /dev/null
+++ b/doc/html/a00055.html
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::task_group_context Member List</h1>This is the complete list of members for <a class="el" href="a00133.html">tbb::task_group_context</a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>bound</b> enum value (defined in <a class="el" href="a00133.html">tbb::task_group_context</a>)</td><td><a class="el" href="a00133.html">tbb::task_group_context</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00133.html#8bcdfdf4e6bfb76125b6de15c00b571d">cancel_group_execution</a>()</td><td><a class="el" href="a00133.html">tbb::task_group_context</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00133.html#49a55352084fd44b8863d182e839e6dc">init</a>()</td><td><a class="el" href="a00133.html">tbb::task_group_context</a></td><td><code> [protected]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_with_context_proxy</b> (defined in <a class="el" href="a00133.html">tbb::task_group_context</a>)</td><td><a class="el" href="a00133.html">tbb::task_group_context</a></td><td><code> [friend]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00133.html#4db72f16210b0a991b2c134d6763a4cc">is_group_execution_cancelled</a>() const </td><td><a class="el" href="a00133.html">tbb::task_group_context</a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>isolated</b> enum value (defined in <a class="el" href="a00133.html">tbb::task_group_context</a>)</td><td><a class="el" href="a00133.html">tbb::task_group_context</a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>kind_type</b> enum name (defined in <a class="el" href="a00133.html">tbb::task_group_context</a>)</td><td><a class="el" href="a00133.html">tbb::task_group_context</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00133.html#6d30d16bf1cd22f86c6afaf29c2b430c">reset</a>()</td><td><a class="el" href="a00133.html">tbb::task_group_context</a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>task</b> (defined in <a class="el" href="a00133.html">tbb::task_group_context</a>)</td><td><a class="el" href="a00133.html">tbb::task_group_context</a></td><td><code> [friend]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00133.html#6fc0ba6f3abcdb4d43277c05bd67bdd4">task_group_context</a>(kind_type relation_with_parent=bound)</td><td><a class="el" href="a00133.html">tbb::task_group_context</a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>~task_group_context</b>() (defined in <a class="el" href="a00133.html">tbb::task_group_context</a>)</td><td><a class="el" href="a00133.html">tbb::task_group_context</a></td><td></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00057.html b/doc/html/a00057.html
new file mode 100644
index 0000000..cc019a3
--- /dev/null
+++ b/doc/html/a00057.html
@@ -0,0 +1,83 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::task Member List</h1>This is the complete list of members for <a class="el" href="a00132.html">tbb::task</a>, including all inherited members.<p><table>
+  <tr class="memlist"><td><a class="el" href="a00132.html#b0f98c633647fc73b978fe4cd2277ac4">add_to_depth</a>(int delta)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#3a920a56b0bcf2801518fb45b2c9d2be">affinity</a>() const </td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#d61bb32389d3857bf7511d69beaafb76">affinity_id</a> typedef</td><td><a class="el" href="a00132.html">tbb::task</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#43bfe64c0e9333c0ca895cc0c375512b">allocate_additional_child_of</a>(task &t)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#1ff794f7053cd9148d5f280fbf07377f">allocate_child</a>()</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#1434c79a5138993269d034008bff7329">allocate_continuation</a>()</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#23acb0da0afd690da797f9f882027d34">allocate_root</a>()</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#8ccc518caf31075a3e073996d2d240a4">allocate_root</a>(task_group_context &ctx)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293ebe94d3348dd038e41107819f00c1884c">allocated</a> enum value</td><td><a class="el" href="a00132.html">tbb::task</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#0f3fb4aac549ab642022450a4bd13326">cancel_group_execution</a>()</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#5be823a972b3c3b9901c5963eeb050fd">depth</a>() const </td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#d8815c39bb61bd7e2d2691c476ed03b9">depth_type</a> typedef</td><td><a class="el" href="a00132.html">tbb::task</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#a57def00c8e9d932dbea0b3ee23991b9">destroy</a>(task &victim)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#22c298cd40937a431a06777423f002f6">execute</a>()=0</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [pure virtual]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293ead0fe2302ccc360923f738c2ed7ec1b9">executing</a> enum value</td><td><a class="el" href="a00132.html">tbb::task</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293ecc67ca92bd6f1ce9738a1e9e7206b735">freed</a> enum value</td><td><a class="el" href="a00132.html">tbb::task</a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_additional_child_of_proxy</b> (defined in <a class="el" href="a00132.html">tbb::task</a>)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_child_proxy</b> (defined in <a class="el" href="a00132.html">tbb::task</a>)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_continuation_proxy</b> (defined in <a class="el" href="a00132.html">tbb::task</a>)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_proxy</b> (defined in <a class="el" href="a00132.html">tbb::task</a>)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_with_context_proxy</b> (defined in <a class="el" href="a00132.html">tbb::task</a>)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::scheduler</b> (defined in <a class="el" href="a00132.html">tbb::task</a>)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#025f18118c057c4c8db87ff2ce8df975">is_cancelled</a>() const </td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#c26718b3b247cd13deb1a741902e7105">is_owned_by_current_thread</a>() const </td><td><a class="el" href="a00132.html">tbb::task</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#f9169402702f56bf519448aaf34450aa">is_stolen_task</a>() const </td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#713c338c8eeaebdc5a6b10a69c039b06">note_affinity</a>(affinity_id id)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [virtual]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#314e98ee4347ccec83efcb9ee22e8596">parent</a>() const </td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e0841dcf1c2a96dee9aa7b69f636cb81a">ready</a> enum value</td><td><a class="el" href="a00132.html">tbb::task</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e58debec6ab130290640d0cc2eedba35d">recycle</a> enum value</td><td><a class="el" href="a00132.html">tbb::task</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#db399855177438bbc9cc61d508dae8d2">recycle_as_child_of</a>(task &new_parent)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#a67a79e18f62b43a623a00cfbd76db4c">recycle_as_continuation</a>()</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#3b290d14109704e2b69dc1ac980a7a76">recycle_as_safe_continuation</a>()</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#4f1be9bbcdb487830dbe298b68d85144">recycle_to_reexecute</a>()</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e3bf499aa6e6487cd1ace883a63100513">reexecute</a> enum value</td><td><a class="el" href="a00132.html">tbb::task</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#ad774f55eaec008ae02b236423209ced">ref_count</a>() const </td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#bd43e8d6249738efafd12d6a4c72c5e3">self</a>()</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#dca19d7a45487a7d67a0db517e2b57c9">set_affinity</a>(affinity_id id)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#fc4d4e61a56823aa1efdbb5d59e42973">set_depth</a>(depth_type new_depth)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#06a4206a57e8e12a439b14d6d41cfd92">set_ref_count</a>(int count)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#f7737143d458f1ed1c0d7da3971d9e6b">spawn</a>(task &child)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#db841c647eb6d754440c2f4e4a73c80b">spawn</a>(task_list &list)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#3ce28ca9baa771cfc37ecd72e69c4f3c">spawn_and_wait_for_all</a>(task &child)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#894ab68378e502776d8220eea7ce9fa1">spawn_and_wait_for_all</a>(task_list &list)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#ce8ce689c26a4ddf343829bc3c73290a">spawn_root_and_wait</a>(task &root)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#c33c7edbaec67aa8a56f48986a9dc69f">spawn_root_and_wait</a>(task_list &root_list)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#0af7b2d7e6e8b4333b2accfce3dfb374">state</a>() const </td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e">state_type</a> enum name</td><td><a class="el" href="a00132.html">tbb::task</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#2bce8ec6e44706e70128f5cf91b76e67">task</a>()</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline, protected]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>task_list</b> (defined in <a class="el" href="a00132.html">tbb::task</a>)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#53d2615ad9c38859b4c8080936600283">wait_for_all</a>()</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#98245ee0473f84cb19dbbf8c81134908">~task</a>()</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00058.html b/doc/html/a00058.html
new file mode 100644
index 0000000..0526353
--- /dev/null
+++ b/doc/html/a00058.html
@@ -0,0 +1,81 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::empty_task Member List</h1>This is the complete list of members for <a class="el" href="a00108.html">tbb::empty_task</a>, including all inherited members.<p><table>
+  <tr class="memlist"><td><a class="el" href="a00132.html#b0f98c633647fc73b978fe4cd2277ac4">add_to_depth</a>(int delta)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#3a920a56b0bcf2801518fb45b2c9d2be">affinity</a>() const </td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#d61bb32389d3857bf7511d69beaafb76">affinity_id</a> typedef</td><td><a class="el" href="a00132.html">tbb::task</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#43bfe64c0e9333c0ca895cc0c375512b">allocate_additional_child_of</a>(task &t)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#1ff794f7053cd9148d5f280fbf07377f">allocate_child</a>()</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#1434c79a5138993269d034008bff7329">allocate_continuation</a>()</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#23acb0da0afd690da797f9f882027d34">allocate_root</a>()</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#8ccc518caf31075a3e073996d2d240a4">allocate_root</a>(task_group_context &ctx)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293ebe94d3348dd038e41107819f00c1884c">allocated</a> enum value</td><td><a class="el" href="a00132.html">tbb::task</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#0f3fb4aac549ab642022450a4bd13326">cancel_group_execution</a>()</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#5be823a972b3c3b9901c5963eeb050fd">depth</a>() const </td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#d8815c39bb61bd7e2d2691c476ed03b9">depth_type</a> typedef</td><td><a class="el" href="a00132.html">tbb::task</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#a57def00c8e9d932dbea0b3ee23991b9">destroy</a>(task &victim)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293ead0fe2302ccc360923f738c2ed7ec1b9">executing</a> enum value</td><td><a class="el" href="a00132.html">tbb::task</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293ecc67ca92bd6f1ce9738a1e9e7206b735">freed</a> enum value</td><td><a class="el" href="a00132.html">tbb::task</a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_additional_child_of_proxy</b> (defined in <a class="el" href="a00132.html">tbb::task</a>)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_child_proxy</b> (defined in <a class="el" href="a00132.html">tbb::task</a>)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_continuation_proxy</b> (defined in <a class="el" href="a00132.html">tbb::task</a>)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_proxy</b> (defined in <a class="el" href="a00132.html">tbb::task</a>)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_with_context_proxy</b> (defined in <a class="el" href="a00132.html">tbb::task</a>)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>internal::scheduler</b> (defined in <a class="el" href="a00132.html">tbb::task</a>)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#025f18118c057c4c8db87ff2ce8df975">is_cancelled</a>() const </td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#c26718b3b247cd13deb1a741902e7105">is_owned_by_current_thread</a>() const </td><td><a class="el" href="a00132.html">tbb::task</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#f9169402702f56bf519448aaf34450aa">is_stolen_task</a>() const </td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#713c338c8eeaebdc5a6b10a69c039b06">note_affinity</a>(affinity_id id)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [virtual]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#314e98ee4347ccec83efcb9ee22e8596">parent</a>() const </td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e0841dcf1c2a96dee9aa7b69f636cb81a">ready</a> enum value</td><td><a class="el" href="a00132.html">tbb::task</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e58debec6ab130290640d0cc2eedba35d">recycle</a> enum value</td><td><a class="el" href="a00132.html">tbb::task</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#db399855177438bbc9cc61d508dae8d2">recycle_as_child_of</a>(task &new_parent)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#a67a79e18f62b43a623a00cfbd76db4c">recycle_as_continuation</a>()</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#3b290d14109704e2b69dc1ac980a7a76">recycle_as_safe_continuation</a>()</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#4f1be9bbcdb487830dbe298b68d85144">recycle_to_reexecute</a>()</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e3bf499aa6e6487cd1ace883a63100513">reexecute</a> enum value</td><td><a class="el" href="a00132.html">tbb::task</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#ad774f55eaec008ae02b236423209ced">ref_count</a>() const </td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#bd43e8d6249738efafd12d6a4c72c5e3">self</a>()</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#dca19d7a45487a7d67a0db517e2b57c9">set_affinity</a>(affinity_id id)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#fc4d4e61a56823aa1efdbb5d59e42973">set_depth</a>(depth_type new_depth)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#06a4206a57e8e12a439b14d6d41cfd92">set_ref_count</a>(int count)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#f7737143d458f1ed1c0d7da3971d9e6b">spawn</a>(task &child)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#db841c647eb6d754440c2f4e4a73c80b">spawn</a>(task_list &list)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#3ce28ca9baa771cfc37ecd72e69c4f3c">spawn_and_wait_for_all</a>(task &child)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#894ab68378e502776d8220eea7ce9fa1">spawn_and_wait_for_all</a>(task_list &list)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#ce8ce689c26a4ddf343829bc3c73290a">spawn_root_and_wait</a>(task &root)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#c33c7edbaec67aa8a56f48986a9dc69f">spawn_root_and_wait</a>(task_list &root_list)</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#0af7b2d7e6e8b4333b2accfce3dfb374">state</a>() const </td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e">state_type</a> enum name</td><td><a class="el" href="a00132.html">tbb::task</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#2bce8ec6e44706e70128f5cf91b76e67">task</a>()</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline, protected]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#53d2615ad9c38859b4c8080936600283">wait_for_all</a>()</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00132.html#98245ee0473f84cb19dbbf8c81134908">~task</a>()</td><td><a class="el" href="a00132.html">tbb::task</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00059.html b/doc/html/a00059.html
new file mode 100644
index 0000000..9c031b0
--- /dev/null
+++ b/doc/html/a00059.html
@@ -0,0 +1,39 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::task_list Member List</h1>This is the complete list of members for <a class="el" href="a00134.html">tbb::task_list</a>, including all inherited members.<p><table>
+  <tr class="memlist"><td><a class="el" href="a00134.html#fce446ee13e025969945328f3ff59b95">clear</a>()</td><td><a class="el" href="a00134.html">tbb::task_list</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00134.html#f3ac31e092814b90929f81bb30441959">empty</a>() const </td><td><a class="el" href="a00134.html">tbb::task_list</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00134.html#5fe85df5ed524418389d34051750347d">pop_front</a>()</td><td><a class="el" href="a00134.html">tbb::task_list</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00134.html#4cd34756bc4763dafb8c84838a0124ff">push_back</a>(task &task)</td><td><a class="el" href="a00134.html">tbb::task_list</a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>task</b> (defined in <a class="el" href="a00134.html">tbb::task_list</a>)</td><td><a class="el" href="a00134.html">tbb::task_list</a></td><td><code> [friend]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00134.html#416341c2047eaef50417b41eaf7e9de6">task_list</a>()</td><td><a class="el" href="a00134.html">tbb::task_list</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00134.html#6d438f1499a02db1e59c24ab6043e5ba">~task_list</a>()</td><td><a class="el" href="a00134.html">tbb::task_list</a></td><td><code> [inline]</code></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00060.html b/doc/html/a00060.html
new file mode 100644
index 0000000..65d1dd9
--- /dev/null
+++ b/doc/html/a00060.html
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::task_scheduler_init Member List</h1>This is the complete list of members for <a class="el" href="a00135.html">tbb::task_scheduler_init</a>, including all inherited members.<p><table>
+  <tr class="memlist"><td><a class="el" href="a00135.html#8f5988e2b0fbb2d533fcbb7f2583743f">automatic</a></td><td><a class="el" href="a00135.html">tbb::task_scheduler_init</a></td><td><code> [static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00135.html#ba00714c33a41a3c2216f48613971cab">default_num_threads</a>()</td><td><a class="el" href="a00135.html">tbb::task_scheduler_init</a></td><td><code> [static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00135.html#e6c860f1e559026ff3ef4599c0d6c514">deferred</a></td><td><a class="el" href="a00135.html">tbb::task_scheduler_init</a></td><td><code> [static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00135.html#d476053cc712e572554823492a5229ce">initialize</a>(int number_of_threads=automatic)</td><td><a class="el" href="a00135.html">tbb::task_scheduler_init</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00135.html#d5ed214a8bb53b0466ed91ff4734b9a3">initialize</a>(int number_of_threads, stack_size_type thread_stack_size)</td><td><a class="el" href="a00135.html">tbb::task_scheduler_init</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00135.html#12752282977029f23416642bc03e8b74">is_active</a>() const </td><td><a class="el" href="a00135.html">tbb::task_scheduler_init</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00135.html#421600bf9bf9338bcf937063f2ff0e90">task_scheduler_init</a>(int number_of_threads=automatic, stack_size_type thread_stack_size=0)</td><td><a class="el" href="a00135.html">tbb::task_scheduler_init</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00135.html#f73257e04cb7fb9bd5be2b635d9016f1">terminate</a>()</td><td><a class="el" href="a00135.html">tbb::task_scheduler_init</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00135.html#4da6c86292d80c703a66c1f6f5299488">~task_scheduler_init</a>()</td><td><a class="el" href="a00135.html">tbb::task_scheduler_init</a></td><td><code> [inline]</code></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00061.html b/doc/html/a00061.html
deleted file mode 100644
index 658e268..0000000
--- a/doc/html/a00061.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::parallel_do_feeder< Item > Member List</h1>This is the complete list of members for <a class="el" href="a00231.html">tbb::parallel_do_feeder< Item ></a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00231.html#a0">add</a>(const Item &item)</td><td><a class="el" href="a00231.html">tbb::parallel_do_feeder< Item ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::parallel_do_feeder_impl</b> (defined in <a class="el" href="a00231.html">tbb::parallel_do_feeder< Item ></a>)</td><td><a class="el" href="a00231.html">tbb::parallel_do_feeder< Item ></a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00230.html#a0">no_copy</a>()</td><td><a class="el" href="a00230.html">tbb::internal::no_copy</a></td><td><code> [inline, private]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00062.html b/doc/html/a00062.html
index f970bb3..b4e15d8 100644
--- a/doc/html/a00062.html
+++ b/doc/html/a00062.html
@@ -2,11 +2,46 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Member List</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::parallel_do_operator_selector< Body, Item > Member List</h1>This is the complete list of members for <a class="el" href="a00233.html">tbb::internal::parallel_do_operator_selector< Body, Item ></a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>call</b>(const Body &obj, A1 &arg1, A2 &arg2) (defined in <a class="el" href="a00233.html">tbb::internal::parallel_do_operator_selector< Body, Item ></a>)</td><td><a class="el" href="a00233.html">tbb::internal::parallel_do_operator_selector< Body, Item ></a></td><td><code> [inline, static]</code></td></tr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::tbb_allocator< T > Member List</h1>This is the complete list of members for <a class="el" href="a00136.html">tbb::tbb_allocator< T ></a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>address</b>(reference x) const  (defined in <a class="el" href="a00136.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00136.html">tbb::tbb_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>address</b>(const_reference x) const  (defined in <a class="el" href="a00136.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00136.html">tbb::tbb_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00136.html#f6cb487b1bdce0b581f265a77dca6d53">allocate</a>(size_type n, const void *=0)</td><td><a class="el" href="a00136.html">tbb::tbb_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00136.html#78701e7454ef8e1a25b5acd364367080">allocator_type</a>()</td><td><a class="el" href="a00136.html">tbb::tbb_allocator< T ></a></td><td><code> [inline, static]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>const_pointer</b> typedef (defined in <a class="el" href="a00136.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00136.html">tbb::tbb_allocator< T ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>const_reference</b> typedef (defined in <a class="el" href="a00136.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00136.html">tbb::tbb_allocator< T ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00136.html#ab228ab9e324ed041c2226e1d717df5f">construct</a>(pointer p, const value_type &value)</td><td><a class="el" href="a00136.html">tbb::tbb_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00136.html#fdd011fdf2f9ad07006dc7c0a7ec1da2">deallocate</a>(pointer p, size_type)</td><td><a class="el" href="a00136.html">tbb::tbb_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00136.html#ef133522bf55f05a605bee0763208281">destroy</a>(pointer p)</td><td><a class="el" href="a00136.html">tbb::tbb_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>difference_type</b> typedef (defined in <a class="el" href="a00136.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00136.html">tbb::tbb_allocator< T ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00136.html#09a7f81fb2c3055aaecf058b11538544">malloc_type</a> enum name</td><td><a class="el" href="a00136.html">tbb::tbb_allocator< T ></a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00136.html#f059ca2c96243024f0d562ee3a87a3a5">max_size</a>() const </td><td><a class="el" href="a00136.html">tbb::tbb_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>pointer</b> typedef (defined in <a class="el" href="a00136.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00136.html">tbb::tbb_allocator< T ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>reference</b> typedef (defined in <a class="el" href="a00136.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00136.html">tbb::tbb_allocator< T ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>scalable</b> enum value (defined in <a class="el" href="a00136.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00136.html">tbb::tbb_allocator< T ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>size_type</b> typedef (defined in <a class="el" href="a00136.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00136.html">tbb::tbb_allocator< T ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>standard</b> enum value (defined in <a class="el" href="a00136.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00136.html">tbb::tbb_allocator< T ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>tbb_allocator</b>() (defined in <a class="el" href="a00136.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00136.html">tbb::tbb_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>tbb_allocator</b>(const tbb_allocator &) (defined in <a class="el" href="a00136.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00136.html">tbb::tbb_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>tbb_allocator</b>(const tbb_allocator< U > &) (defined in <a class="el" href="a00136.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00136.html">tbb::tbb_allocator< T ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>value_type</b> typedef (defined in <a class="el" href="a00136.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00136.html">tbb::tbb_allocator< T ></a></td><td></td></tr>
 </table><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/a00063.html b/doc/html/a00063.html
deleted file mode 100644
index a3d38cc..0000000
--- a/doc/html/a00063.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::do_iteration_task< Body, Item > Member List</h1>This is the complete list of members for <a class="el" href="a00213.html">tbb::internal::do_iteration_task< Body, Item ></a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a12">add_to_depth</a>(int delta)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a25">affinity</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w1">affinity_id</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a4">allocate_additional_child_of</a>(task &t)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a3">allocate_child</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a2">allocate_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e0">allocate_root</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e1">allocate_root</a>(task_group_context &ctx)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w5">allocated</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a27">cancel_group_execution</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a10">depth</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w0">depth_type</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a5">destroy</a>(task &victim)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w2">executing</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w6">freed</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_additional_child_of_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_child_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_continuation_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_with_context_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::scheduler</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a28">is_cancelled</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a23">is_owned_by_current_thread</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a20">is_stolen_task</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a26">note_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [virtual]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>parallel_do_feeder_impl</b> (defined in <a class="el" href="a00213.html">tbb::internal::do_iteration_task< Body, Item ></a>)</td><td><a class="el" href="a00213.html">tbb::internal::do_iteration_task< Body, Item ></a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a19">parent</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w4">ready</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w7">recycle</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a8">recycle_as_child_of</a>(task &new_parent)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a6">recycle_as_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a7">recycle_as_safe_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a9">recycle_to_reexecute</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w3">reexecute</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a22">ref_count</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e4">self</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a24">set_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a11">set_depth</a>(depth_type new_depth)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a13">set_ref_count</a>(int count)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a14">spawn</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a15">spawn</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a16">spawn_and_wait_for_all</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a17">spawn_and_wait_for_all</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e2">spawn_root_and_wait</a>(task &root)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e3">spawn_root_and_wait</a>(task_list &root_list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a21">state</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8">state_type</a> enum name</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#b0">task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a18">wait_for_all</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a0">~task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00064.html b/doc/html/a00064.html
new file mode 100644
index 0000000..7826750
--- /dev/null
+++ b/doc/html/a00064.html
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::tbb_allocator< void > Member List</h1>This is the complete list of members for <a class="el" href="a00137.html">tbb::tbb_allocator< void ></a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>const_pointer</b> typedef (defined in <a class="el" href="a00137.html">tbb::tbb_allocator< void ></a>)</td><td><a class="el" href="a00137.html">tbb::tbb_allocator< void ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>pointer</b> typedef (defined in <a class="el" href="a00137.html">tbb::tbb_allocator< void ></a>)</td><td><a class="el" href="a00137.html">tbb::tbb_allocator< void ></a></td><td></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>value_type</b> typedef (defined in <a class="el" href="a00137.html">tbb::tbb_allocator< void ></a>)</td><td><a class="el" href="a00137.html">tbb::tbb_allocator< void ></a></td><td></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00065.html b/doc/html/a00065.html
deleted file mode 100644
index 4020b5c..0000000
--- a/doc/html/a00065.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::parallel_do_feeder_impl< Body, Item > Member List</h1>This is the complete list of members for <a class="el" href="a00232.html">tbb::internal::parallel_do_feeder_impl< Body, Item ></a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00231.html#a0">add</a>(const Item &item)</td><td><a class="el" href="a00231.html">tbb::parallel_do_feeder< Item ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::parallel_do_feeder_impl</b> (defined in <a class="el" href="a00231.html">tbb::parallel_do_feeder< Item ></a>)</td><td><a class="el" href="a00231.html">tbb::parallel_do_feeder< Item ></a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>my_barrier</b> (defined in <a class="el" href="a00232.html">tbb::internal::parallel_do_feeder_impl< Body, Item ></a>)</td><td><a class="el" href="a00232.html">tbb::internal::parallel_do_feeder_impl< Body, Item ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>my_body</b> (defined in <a class="el" href="a00232.html">tbb::internal::parallel_do_feeder_impl< Body, Item ></a>)</td><td><a class="el" href="a00232.html">tbb::internal::parallel_do_feeder_impl< Body, Item ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>parallel_do_feeder_impl</b>() (defined in <a class="el" href="a00232.html">tbb::internal::parallel_do_feeder_impl< Body, Item ></a>)</td><td><a class="el" href="a00232.html">tbb::internal::parallel_do_feeder_impl< Body, Item ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>parallel_do_feeder_impl</b>(tbb::task_group_context &context) (defined in <a class="el" href="a00232.html">tbb::internal::parallel_do_feeder_impl< Body, Item ></a>)</td><td><a class="el" href="a00232.html">tbb::internal::parallel_do_feeder_impl< Body, Item ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>~parallel_do_feeder_impl</b>() (defined in <a class="el" href="a00232.html">tbb::internal::parallel_do_feeder_impl< Body, Item ></a>)</td><td><a class="el" href="a00232.html">tbb::internal::parallel_do_feeder_impl< Body, Item ></a></td><td><code> [inline]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00066.html b/doc/html/a00066.html
index 2cf1431..ecd347d 100644
--- a/doc/html/a00066.html
+++ b/doc/html/a00066.html
@@ -2,60 +2,27 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Member List</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::do_group_task_forward< Iterator, Body, Item > Member List</h1>This is the complete list of members for <a class="el" href="a00212.html">tbb::internal::do_group_task_forward< Iterator, Body, Item ></a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a12">add_to_depth</a>(int delta)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a25">affinity</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w1">affinity_id</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a4">allocate_additional_child_of</a>(task &t)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a3">allocate_child</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a2">allocate_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e0">allocate_root</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e1">allocate_root</a>(task_group_context &ctx)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w5">allocated</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a27">cancel_group_execution</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a10">depth</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w0">depth_type</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a5">destroy</a>(task &victim)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>do_task_iter</b> (defined in <a class="el" href="a00212.html">tbb::internal::do_group_task_forward< Iterator, Body, Item ></a>)</td><td><a class="el" href="a00212.html">tbb::internal::do_group_task_forward< Iterator, Body, Item ></a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w2">executing</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w6">freed</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_additional_child_of_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_child_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_continuation_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_with_context_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::scheduler</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a28">is_cancelled</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a23">is_owned_by_current_thread</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a20">is_stolen_task</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a26">note_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a19">parent</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w4">ready</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w7">recycle</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a8">recycle_as_child_of</a>(task &new_parent)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a6">recycle_as_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a7">recycle_as_safe_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a9">recycle_to_reexecute</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w3">reexecute</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a22">ref_count</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e4">self</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a24">set_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a11">set_depth</a>(depth_type new_depth)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a13">set_ref_count</a>(int count)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a14">spawn</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a15">spawn</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a16">spawn_and_wait_for_all</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a17">spawn_and_wait_for_all</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e2">spawn_root_and_wait</a>(task &root)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e3">spawn_root_and_wait</a>(task_list &root_list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a21">state</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8">state_type</a> enum name</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#b0">task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a18">wait_for_all</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a0">~task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, virtual]</code></td></tr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::bad_last_alloc Member List</h1>This is the complete list of members for <a class="el" href="a00096.html">tbb::bad_last_alloc</a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>what</b>() const  (defined in <a class="el" href="a00096.html">tbb::bad_last_alloc</a>)</td><td><a class="el" href="a00096.html">tbb::bad_last_alloc</a></td><td><code> [inline, virtual]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>~bad_last_alloc</b>() (defined in <a class="el" href="a00096.html">tbb::bad_last_alloc</a>)</td><td><a class="el" href="a00096.html">tbb::bad_last_alloc</a></td><td><code> [inline, virtual]</code></td></tr>
 </table><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/a00067.html b/doc/html/a00067.html
new file mode 100644
index 0000000..5d664aa
--- /dev/null
+++ b/doc/html/a00067.html
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::tbb_exception Member List</h1>This is the complete list of members for <a class="el" href="a00138.html">tbb::tbb_exception</a>, including all inherited members.<p><table>
+  <tr class="memlist"><td><a class="el" href="a00138.html#66c94938eca8bf88b76f3eccaaf215d8">destroy</a>()=0</td><td><a class="el" href="a00138.html">tbb::tbb_exception</a></td><td><code> [pure virtual]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00138.html#3e3482bf264d4ca4dde046cd9c02c766">move</a>()=0</td><td><a class="el" href="a00138.html">tbb::tbb_exception</a></td><td><code> [pure virtual]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00138.html#d00f6497e552fee978a02bfcbebf46e2">name</a>() const =0</td><td><a class="el" href="a00138.html">tbb::tbb_exception</a></td><td><code> [pure virtual]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00138.html#8588e07fa49692f4d734e4f2e4f048f4">throw_self</a>()=0</td><td><a class="el" href="a00138.html">tbb::tbb_exception</a></td><td><code> [pure virtual]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00138.html#e8157689ecb66bc6c72d3618bf3cc371">what</a>() const =0</td><td><a class="el" href="a00138.html">tbb::tbb_exception</a></td><td><code> [pure virtual]</code></td></tr>
+</table><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00068.html b/doc/html/a00068.html
index 6decb2c..44d8031 100644
--- a/doc/html/a00068.html
+++ b/doc/html/a00068.html
@@ -2,60 +2,34 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Member List</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::do_task_iter< Iterator, Body, Item > Member List</h1>This is the complete list of members for <a class="el" href="a00214.html">tbb::internal::do_task_iter< Iterator, Body, Item ></a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a12">add_to_depth</a>(int delta)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a25">affinity</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w1">affinity_id</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a4">allocate_additional_child_of</a>(task &t)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a3">allocate_child</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a2">allocate_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e0">allocate_root</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e1">allocate_root</a>(task_group_context &ctx)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w5">allocated</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a27">cancel_group_execution</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a10">depth</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w0">depth_type</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a5">destroy</a>(task &victim)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>do_task_iter</b>(Iterator first, Iterator last, feeder_type &feeder) (defined in <a class="el" href="a00214.html">tbb::internal::do_task_iter< Iterator, Body, Item ></a>)</td><td><a class="el" href="a00214.html">tbb::internal::do_task_iter< Iterator, Body, Item ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w2">executing</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w6">freed</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_additional_child_of_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_child_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_continuation_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_with_context_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::scheduler</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a28">is_cancelled</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a23">is_owned_by_current_thread</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a20">is_stolen_task</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a26">note_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a19">parent</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w4">ready</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w7">recycle</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a8">recycle_as_child_of</a>(task &new_parent)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a6">recycle_as_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a7">recycle_as_safe_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a9">recycle_to_reexecute</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w3">reexecute</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a22">ref_count</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e4">self</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a24">set_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a11">set_depth</a>(depth_type new_depth)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a13">set_ref_count</a>(int count)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a14">spawn</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a15">spawn</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a16">spawn_and_wait_for_all</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a17">spawn_and_wait_for_all</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e2">spawn_root_and_wait</a>(task &root)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e3">spawn_root_and_wait</a>(task_list &root_list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a21">state</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8">state_type</a> enum name</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#b0">task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a18">wait_for_all</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a0">~task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, virtual]</code></td></tr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::captured_exception Member List</h1>This is the complete list of members for <a class="el" href="a00102.html">tbb::captured_exception</a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>captured_exception</b>(const captured_exception &src) (defined in <a class="el" href="a00102.html">tbb::captured_exception</a>)</td><td><a class="el" href="a00102.html">tbb::captured_exception</a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>captured_exception</b>(const char *name, const char *info) (defined in <a class="el" href="a00102.html">tbb::captured_exception</a>)</td><td><a class="el" href="a00102.html">tbb::captured_exception</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00102.html#667812a82f1525e968c52593dea0ef4c">destroy</a>()</td><td><a class="el" href="a00102.html">tbb::captured_exception</a></td><td><code> [virtual]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00102.html#df6bbb78a362fe862a341e81e2999810">move</a>()</td><td><a class="el" href="a00102.html">tbb::captured_exception</a></td><td><code> [virtual]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00102.html#5af82fd677449c5ca727fa1d7e16f9f5">name</a>() const </td><td><a class="el" href="a00102.html">tbb::captured_exception</a></td><td><code> [virtual]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>operator=</b>(const captured_exception &src) (defined in <a class="el" href="a00102.html">tbb::captured_exception</a>)</td><td><a class="el" href="a00102.html">tbb::captured_exception</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00102.html#2dd1be66ab32fa27e0ddef5707fa67ef">throw_self</a>()</td><td><a class="el" href="a00102.html">tbb::captured_exception</a></td><td><code> [inline, virtual]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00102.html#6b5988ef74a1fe2a58998d110b3633e0">what</a>() const </td><td><a class="el" href="a00102.html">tbb::captured_exception</a></td><td><code> [virtual]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>~captured_exception</b>() (defined in <a class="el" href="a00102.html">tbb::captured_exception</a>)</td><td><a class="el" href="a00102.html">tbb::captured_exception</a></td><td><code> [inline]</code></td></tr>
 </table><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/a00069.html b/doc/html/a00069.html
index 0325627..90bd466 100644
--- a/doc/html/a00069.html
+++ b/doc/html/a00069.html
@@ -2,60 +2,37 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Member List</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::start_for< Range, Body, Partitioner > Member List</h1>This is the complete list of members for <a class="el" href="a00255.html">tbb::internal::start_for< Range, Body, Partitioner ></a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a12">add_to_depth</a>(int delta)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a25">affinity</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w1">affinity_id</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a4">allocate_additional_child_of</a>(task &t)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a3">allocate_child</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a2">allocate_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e0">allocate_root</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e1">allocate_root</a>(task_group_context &ctx)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w5">allocated</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a27">cancel_group_execution</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a10">depth</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w0">depth_type</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a5">destroy</a>(task &victim)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w2">executing</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w6">freed</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_additional_child_of_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_child_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_continuation_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_with_context_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::scheduler</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a28">is_cancelled</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a23">is_owned_by_current_thread</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a20">is_stolen_task</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a19">parent</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w4">ready</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w7">recycle</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a8">recycle_as_child_of</a>(task &new_parent)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a6">recycle_as_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a7">recycle_as_safe_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a9">recycle_to_reexecute</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w3">reexecute</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a22">ref_count</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>run</b>(const Range &range, const Body &body, const Partitioner &partitioner) (defined in <a class="el" href="a00255.html">tbb::internal::start_for< Range, Body, Partitioner ></a>)</td><td><a class="el" href="a00255.html">tbb::internal::start_for< Range, Body, Partitioner ></a></td><td><code> [inline, static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>run</b>(const Range &range, const Body &body, const Partitioner &partitioner, task_group_context &context) (defined in <a class="el" href="a00255.html">tbb::internal::start_for< Range, Body, Partitioner ></a>)</td><td><a class="el" href="a00255.html">tbb::internal::start_for< Range, Body, Partitioner ></a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e4">self</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a24">set_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a11">set_depth</a>(depth_type new_depth)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a13">set_ref_count</a>(int count)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a14">spawn</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a15">spawn</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a16">spawn_and_wait_for_all</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a17">spawn_and_wait_for_all</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e2">spawn_root_and_wait</a>(task &root)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e3">spawn_root_and_wait</a>(task_list &root_list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a21">state</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8">state_type</a> enum name</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#b0">task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a18">wait_for_all</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a0">~task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, virtual]</code></td></tr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::movable_exception< ExceptionData > Member List</h1>This is the complete list of members for <a class="el" href="a00111.html">tbb::movable_exception< ExceptionData ></a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>data</b>() (defined in <a class="el" href="a00111.html">tbb::movable_exception< ExceptionData ></a>)</td><td><a class="el" href="a00111.html">tbb::movable_exception< ExceptionData ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>data</b>() const  (defined in <a class="el" href="a00111.html">tbb::movable_exception< ExceptionData ></a>)</td><td><a class="el" href="a00111.html">tbb::movable_exception< ExceptionData ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00111.html#7a46873119d9f85a7b0009c13e41a258">destroy</a>()</td><td><a class="el" href="a00111.html">tbb::movable_exception< ExceptionData ></a></td><td><code> [inline, virtual]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>movable_exception</b>(const ExceptionData &data) (defined in <a class="el" href="a00111.html">tbb::movable_exception< ExceptionData ></a>)</td><td><a class="el" href="a00111.html">tbb::movable_exception< ExceptionData ></a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>movable_exception</b>(const movable_exception &src) (defined in <a class="el" href="a00111.html">tbb::movable_exception< ExceptionData ></a>)</td><td><a class="el" href="a00111.html">tbb::movable_exception< ExceptionData ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00111.html#1aea0ad179d6f0481fe7f3495f66adf9">move</a>()</td><td><a class="el" href="a00111.html">tbb::movable_exception< ExceptionData ></a></td><td><code> [inline, virtual]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00111.html#a8c0ae2089ae784b28907cf748b89416">my_exception_data</a></td><td><a class="el" href="a00111.html">tbb::movable_exception< ExceptionData ></a></td><td><code> [protected]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00111.html#bc5f5c4739b17ac5211ac58226c2f5a5">name</a>() const </td><td><a class="el" href="a00111.html">tbb::movable_exception< ExceptionData ></a></td><td><code> [inline, virtual]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>operator=</b>(const movable_exception &src) (defined in <a class="el" href="a00111.html">tbb::movable_exception< ExceptionData ></a>)</td><td><a class="el" href="a00111.html">tbb::movable_exception< ExceptionData ></a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00111.html#17cffba35811c92b7e65d63506b69602">throw_self</a>()</td><td><a class="el" href="a00111.html">tbb::movable_exception< ExceptionData ></a></td><td><code> [inline, virtual]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00111.html#b33a89bccf0c63106f1270c7bfaaf54f">what</a>() const </td><td><a class="el" href="a00111.html">tbb::movable_exception< ExceptionData ></a></td><td><code> [inline, virtual]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>~movable_exception</b>() (defined in <a class="el" href="a00111.html">tbb::movable_exception< ExceptionData ></a>)</td><td><a class="el" href="a00111.html">tbb::movable_exception< ExceptionData ></a></td><td><code> [inline]</code></td></tr>
 </table><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/a00070.html b/doc/html/a00070.html
index c28311f..23f77f6 100644
--- a/doc/html/a00070.html
+++ b/doc/html/a00070.html
@@ -2,60 +2,29 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Member List</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::finish_reduce< Body > Member List</h1>This is the complete list of members for <a class="el" href="a00219.html">tbb::internal::finish_reduce< Body ></a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a12">add_to_depth</a>(int delta)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a25">affinity</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w1">affinity_id</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a4">allocate_additional_child_of</a>(task &t)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a3">allocate_child</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a2">allocate_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e0">allocate_root</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e1">allocate_root</a>(task_group_context &ctx)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w5">allocated</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a27">cancel_group_execution</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a10">depth</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w0">depth_type</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a5">destroy</a>(task &victim)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w2">executing</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w6">freed</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_additional_child_of_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_child_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_continuation_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_with_context_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::scheduler</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a28">is_cancelled</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a23">is_owned_by_current_thread</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a20">is_stolen_task</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a26">note_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a19">parent</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w4">ready</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w7">recycle</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a8">recycle_as_child_of</a>(task &new_parent)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a6">recycle_as_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a7">recycle_as_safe_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a9">recycle_to_reexecute</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w3">reexecute</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a22">ref_count</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e4">self</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a24">set_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a11">set_depth</a>(depth_type new_depth)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a13">set_ref_count</a>(int count)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a14">spawn</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a15">spawn</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a16">spawn_and_wait_for_all</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a17">spawn_and_wait_for_all</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e2">spawn_root_and_wait</a>(task &root)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e3">spawn_root_and_wait</a>(task_list &root_list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>start_reduce</b> (defined in <a class="el" href="a00219.html">tbb::internal::finish_reduce< Body ></a>)</td><td><a class="el" href="a00219.html">tbb::internal::finish_reduce< Body ></a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a21">state</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8">state_type</a> enum name</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#b0">task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a18">wait_for_all</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a0">~task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, virtual]</code></td></tr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::internal::AtomicBackoff Member List</h1>This is the complete list of members for <a class="el" href="a00094.html">tbb::internal::AtomicBackoff</a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>AtomicBackoff</b>() (defined in <a class="el" href="a00094.html">tbb::internal::AtomicBackoff</a>)</td><td><a class="el" href="a00094.html">tbb::internal::AtomicBackoff</a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>bounded_pause</b>() (defined in <a class="el" href="a00094.html">tbb::internal::AtomicBackoff</a>)</td><td><a class="el" href="a00094.html">tbb::internal::AtomicBackoff</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00094.html#cb1ca420dfc4aa21eca699d3fa4711c7">pause</a>()</td><td><a class="el" href="a00094.html">tbb::internal::AtomicBackoff</a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>reset</b>() (defined in <a class="el" href="a00094.html">tbb::internal::AtomicBackoff</a>)</td><td><a class="el" href="a00094.html">tbb::internal::AtomicBackoff</a></td><td><code> [inline]</code></td></tr>
 </table><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/a00071.html b/doc/html/a00071.html
deleted file mode 100644
index 99c4d23..0000000
--- a/doc/html/a00071.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::start_reduce< Range, Body, Partitioner > Member List</h1>This is the complete list of members for <a class="el" href="a00256.html">tbb::internal::start_reduce< Range, Body, Partitioner ></a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a12">add_to_depth</a>(int delta)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a25">affinity</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w1">affinity_id</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a4">allocate_additional_child_of</a>(task &t)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a3">allocate_child</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a2">allocate_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e0">allocate_root</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e1">allocate_root</a>(task_group_context &ctx)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w5">allocated</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a27">cancel_group_execution</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a10">depth</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w0">depth_type</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a5">destroy</a>(task &victim)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w2">executing</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>finish_reduce</b> (defined in <a class="el" href="a00256.html">tbb::internal::start_reduce< Range, Body, Partitioner ></a>)</td><td><a class="el" href="a00256.html">tbb::internal::start_reduce< Range, Body, Partitioner ></a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w6">freed</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_additional_child_of_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_child_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_continuation_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_with_context_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::scheduler</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a28">is_cancelled</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a23">is_owned_by_current_thread</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a20">is_stolen_task</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a19">parent</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w4">ready</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w7">recycle</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a8">recycle_as_child_of</a>(task &new_parent)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a6">recycle_as_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a7">recycle_as_safe_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a9">recycle_to_reexecute</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w3">reexecute</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a22">ref_count</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>run</b>(const Range &range, Body &body, const Partitioner &partitioner) (defined in <a class="el" href="a00256.html">tbb::internal::start_reduce< Range, Body, Partitioner ></a>)</td><td><a class="el" href="a00256.html">tbb::internal::start_reduce< Range, Body, Partitioner ></a></td><td><code> [inline, static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>run</b>(const Range &range, Body &body, const Partitioner &partitioner) (defined in <a class="el" href="a00256.html">tbb::internal::start_reduce< Range, Body, Partitioner ></a>)</td><td><a class="el" href="a00256.html">tbb::internal::start_reduce< Range, Body, Partitioner ></a></td><td><code> [inline, static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>run</b>(const Range &range, Body &body, const Partitioner &partitioner, task_group_context &context) (defined in <a class="el" href="a00256.html">tbb::internal::start_reduce< Range, Body, Partitioner ></a>)</td><td><a class="el" href="a00256.html">tbb::internal::start_reduce< Range, Body, Partitioner ></a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e4">self</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a24">set_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a11">set_depth</a>(depth_type new_depth)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a13">set_ref_count</a>(int count)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a14">spawn</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a15">spawn</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a16">spawn_and_wait_for_all</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a17">spawn_and_wait_for_all</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e2">spawn_root_and_wait</a>(task &root)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e3">spawn_root_and_wait</a>(task_list &root_list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a21">state</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8">state_type</a> enum name</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#b0">task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a18">wait_for_all</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a0">~task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00072.html b/doc/html/a00072.html
deleted file mode 100644
index 92792e0..0000000
--- a/doc/html/a00072.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::finish_reduce_with_affinity< Body > Member List</h1>This is the complete list of members for <a class="el" href="a00220.html">tbb::internal::finish_reduce_with_affinity< Body ></a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a12">add_to_depth</a>(int delta)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a25">affinity</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w1">affinity_id</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a4">allocate_additional_child_of</a>(task &t)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a3">allocate_child</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a2">allocate_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e0">allocate_root</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e1">allocate_root</a>(task_group_context &ctx)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w5">allocated</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a27">cancel_group_execution</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a10">depth</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w0">depth_type</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a5">destroy</a>(task &victim)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w2">executing</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w6">freed</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_additional_child_of_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_child_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_continuation_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_with_context_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::scheduler</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a28">is_cancelled</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a23">is_owned_by_current_thread</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a20">is_stolen_task</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a26">note_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a19">parent</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w4">ready</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w7">recycle</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a8">recycle_as_child_of</a>(task &new_parent)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a6">recycle_as_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a7">recycle_as_safe_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a9">recycle_to_reexecute</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w3">reexecute</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a22">ref_count</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e4">self</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a24">set_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a11">set_depth</a>(depth_type new_depth)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a13">set_ref_count</a>(int count)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a14">spawn</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a15">spawn</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a16">spawn_and_wait_for_all</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a17">spawn_and_wait_for_all</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e2">spawn_root_and_wait</a>(task &root)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e3">spawn_root_and_wait</a>(task_list &root_list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>start_reduce_with_affinity</b> (defined in <a class="el" href="a00220.html">tbb::internal::finish_reduce_with_affinity< Body ></a>)</td><td><a class="el" href="a00220.html">tbb::internal::finish_reduce_with_affinity< Body ></a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a21">state</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8">state_type</a> enum name</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#b0">task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a18">wait_for_all</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a0">~task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00073.html b/doc/html/a00073.html
deleted file mode 100644
index 8499e9e..0000000
--- a/doc/html/a00073.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::start_reduce_with_affinity< Range, Body > Member List</h1>This is the complete list of members for <a class="el" href="a00257.html">tbb::internal::start_reduce_with_affinity< Range, Body ></a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a12">add_to_depth</a>(int delta)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a25">affinity</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w1">affinity_id</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a4">allocate_additional_child_of</a>(task &t)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a3">allocate_child</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a2">allocate_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e0">allocate_root</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e1">allocate_root</a>(task_group_context &ctx)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w5">allocated</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a27">cancel_group_execution</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a10">depth</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w0">depth_type</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a5">destroy</a>(task &victim)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w2">executing</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>finish_reduce_with_affinity</b> (defined in <a class="el" href="a00257.html">tbb::internal::start_reduce_with_affinity< Range, Body ></a>)</td><td><a class="el" href="a00257.html">tbb::internal::start_reduce_with_affinity< Range, Body ></a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w6">freed</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_additional_child_of_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_child_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_continuation_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_with_context_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::scheduler</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a28">is_cancelled</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a23">is_owned_by_current_thread</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a20">is_stolen_task</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a19">parent</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w4">ready</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w7">recycle</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a8">recycle_as_child_of</a>(task &new_parent)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a6">recycle_as_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a7">recycle_as_safe_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a9">recycle_to_reexecute</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w3">reexecute</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a22">ref_count</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>run</b>(const Range &range, Body &body, affinity_partitioner &partitioner) (defined in <a class="el" href="a00257.html">tbb::internal::start_reduce_with_affinity< Range, Body ></a>)</td><td><a class="el" href="a00257.html">tbb::internal::start_reduce_with_affinity< Range, Body ></a></td><td><code> [inline, static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>run</b>(const Range &range, Body &body, affinity_partitioner &partitioner, task_group_context &context) (defined in <a class="el" href="a00257.html">tbb::internal::start_reduce_with_affinity< Range, Body ></a>)</td><td><a class="el" href="a00257.html">tbb::internal::start_reduce_with_affinity< Range, Body ></a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e4">self</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a24">set_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a11">set_depth</a>(depth_type new_depth)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a13">set_ref_count</a>(int count)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a14">spawn</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a15">spawn</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a16">spawn_and_wait_for_all</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a17">spawn_and_wait_for_all</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e2">spawn_root_and_wait</a>(task &root)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e3">spawn_root_and_wait</a>(task_list &root_list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a21">state</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8">state_type</a> enum name</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#b0">task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a18">wait_for_all</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a0">~task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00074.html b/doc/html/a00074.html
deleted file mode 100644
index 06e9d59..0000000
--- a/doc/html/a00074.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction > Member List</h1>This is the complete list of members for <a class="el" href="a00225.html">tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction ></a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>join</b>(lambda_reduce_body &rhs) (defined in <a class="el" href="a00225.html">tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction ></a>)</td><td><a class="el" href="a00225.html">tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>lambda_reduce_body</b>(const Value &identity, const RealBody &body, const Reduction &reduction) (defined in <a class="el" href="a00225.html">tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction ></a>)</td><td><a class="el" href="a00225.html">tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>lambda_reduce_body</b>(const lambda_reduce_body &other) (defined in <a class="el" href="a00225.html">tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction ></a>)</td><td><a class="el" href="a00225.html">tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>lambda_reduce_body</b>(lambda_reduce_body &other, tbb::split) (defined in <a class="el" href="a00225.html">tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction ></a>)</td><td><a class="el" href="a00225.html">tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator()</b>(Range &range) (defined in <a class="el" href="a00225.html">tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction ></a>)</td><td><a class="el" href="a00225.html">tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>result</b>() const  (defined in <a class="el" href="a00225.html">tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction ></a>)</td><td><a class="el" href="a00225.html">tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction ></a></td><td><code> [inline]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00075.html b/doc/html/a00075.html
deleted file mode 100644
index 226bb27..0000000
--- a/doc/html/a00075.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::pre_scan_tag Member List</h1>This is the complete list of members for <a class="el" href="a00237.html">tbb::pre_scan_tag</a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>is_final_scan</b>() (defined in <a class="el" href="a00237.html">tbb::pre_scan_tag</a>)</td><td><a class="el" href="a00237.html">tbb::pre_scan_tag</a></td><td><code> [inline, static]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00076.html b/doc/html/a00076.html
deleted file mode 100644
index 37c6bab..0000000
--- a/doc/html/a00076.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::final_scan_tag Member List</h1>This is the complete list of members for <a class="el" href="a00217.html">tbb::final_scan_tag</a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>is_final_scan</b>() (defined in <a class="el" href="a00217.html">tbb::final_scan_tag</a>)</td><td><a class="el" href="a00217.html">tbb::final_scan_tag</a></td><td><code> [inline, static]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00077.html b/doc/html/a00077.html
index a6b40a8..58b4d28 100644
--- a/doc/html/a00077.html
+++ b/doc/html/a00077.html
@@ -2,63 +2,26 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Member List</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::final_sum< Range, Body > Member List</h1>This is the complete list of members for <a class="el" href="a00218.html">tbb::internal::final_sum< Range, Body ></a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a12">add_to_depth</a>(int delta)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a25">affinity</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w1">affinity_id</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a4">allocate_additional_child_of</a>(task &t)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a3">allocate_child</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a2">allocate_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e0">allocate_root</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e1">allocate_root</a>(task_group_context &ctx)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w5">allocated</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>body</b> (defined in <a class="el" href="a00218.html">tbb::internal::final_sum< Range, Body ></a>)</td><td><a class="el" href="a00218.html">tbb::internal::final_sum< Range, Body ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a27">cancel_group_execution</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a10">depth</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w0">depth_type</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a5">destroy</a>(task &victim)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w2">executing</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>final_sum</b>(Body &body_) (defined in <a class="el" href="a00218.html">tbb::internal::final_sum< Range, Body ></a>)</td><td><a class="el" href="a00218.html">tbb::internal::final_sum< Range, Body ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>finish_construction</b>(const Range &range_, Body *stuff_last_) (defined in <a class="el" href="a00218.html">tbb::internal::final_sum< Range, Body ></a>)</td><td><a class="el" href="a00218.html">tbb::internal::final_sum< Range, Body ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w6">freed</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_additional_child_of_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_child_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_continuation_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_with_context_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::scheduler</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a28">is_cancelled</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a23">is_owned_by_current_thread</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a20">is_stolen_task</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a26">note_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a19">parent</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w4">ready</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w7">recycle</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a8">recycle_as_child_of</a>(task &new_parent)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a6">recycle_as_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a7">recycle_as_safe_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a9">recycle_to_reexecute</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w3">reexecute</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a22">ref_count</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e4">self</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a24">set_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a11">set_depth</a>(depth_type new_depth)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a13">set_ref_count</a>(int count)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a14">spawn</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a15">spawn</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a16">spawn_and_wait_for_all</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a17">spawn_and_wait_for_all</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e2">spawn_root_and_wait</a>(task &root)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e3">spawn_root_and_wait</a>(task_list &root_list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a21">state</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8">state_type</a> enum name</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#b0">task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a18">wait_for_all</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>~final_sum</b>() (defined in <a class="el" href="a00218.html">tbb::internal::final_sum< Range, Body ></a>)</td><td><a class="el" href="a00218.html">tbb::internal::final_sum< Range, Body ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a0">~task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, virtual]</code></td></tr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::internal::work_around_alignment_bug< Size, T > Member List</h1>This is the complete list of members for <a class="el" href="a00142.html">tbb::internal::work_around_alignment_bug< Size, T ></a>, including all inherited members.<p><table>
+  <tr bgcolor="#f0f0f0"><td><b>alignment</b> (defined in <a class="el" href="a00142.html">tbb::internal::work_around_alignment_bug< Size, T ></a>)</td><td><a class="el" href="a00142.html">tbb::internal::work_around_alignment_bug< Size, T ></a></td><td><code> [static]</code></td></tr>
 </table><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/a00078.html b/doc/html/a00078.html
deleted file mode 100644
index 9cafb05..0000000
--- a/doc/html/a00078.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::sum_node< Range, Body > Member List</h1>This is the complete list of members for <a class="el" href="a00260.html">tbb::internal::sum_node< Range, Body ></a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a12">add_to_depth</a>(int delta)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a25">affinity</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w1">affinity_id</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a4">allocate_additional_child_of</a>(task &t)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a3">allocate_child</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a2">allocate_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e0">allocate_root</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e1">allocate_root</a>(task_group_context &ctx)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w5">allocated</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>body</b> (defined in <a class="el" href="a00260.html">tbb::internal::sum_node< Range, Body ></a>)</td><td><a class="el" href="a00260.html">tbb::internal::sum_node< Range, Body ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a27">cancel_group_execution</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a10">depth</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w0">depth_type</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a5">destroy</a>(task &victim)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w2">executing</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>finish_scan</b> (defined in <a class="el" href="a00260.html">tbb::internal::sum_node< Range, Body ></a>)</td><td><a class="el" href="a00260.html">tbb::internal::sum_node< Range, Body ></a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w6">freed</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>incoming</b> (defined in <a class="el" href="a00260.html">tbb::internal::sum_node< Range, Body ></a>)</td><td><a class="el" href="a00260.html">tbb::internal::sum_node< Range, Body ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_additional_child_of_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_child_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_continuation_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_with_context_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::scheduler</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a28">is_cancelled</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a23">is_owned_by_current_thread</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a20">is_stolen_task</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a26">note_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a19">parent</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w4">ready</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w7">recycle</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a8">recycle_as_child_of</a>(task &new_parent)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a6">recycle_as_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a7">recycle_as_safe_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a9">recycle_to_reexecute</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w3">reexecute</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a22">ref_count</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e4">self</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a24">set_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a11">set_depth</a>(depth_type new_depth)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a13">set_ref_count</a>(int count)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a14">spawn</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a15">spawn</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a16">spawn_and_wait_for_all</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a17">spawn_and_wait_for_all</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e2">spawn_root_and_wait</a>(task &root)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e3">spawn_root_and_wait</a>(task_list &root_list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>start_scan</b> (defined in <a class="el" href="a00260.html">tbb::internal::sum_node< Range, Body ></a>)</td><td><a class="el" href="a00260.html">tbb::internal::sum_node< Range, Body ></a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a21">state</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8">state_type</a> enum name</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>stuff_last</b> (defined in <a class="el" href="a00260.html">tbb::internal::sum_node< Range, Body ></a>)</td><td><a class="el" href="a00260.html">tbb::internal::sum_node< Range, Body ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#b0">task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a18">wait_for_all</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a0">~task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00079.html b/doc/html/a00079.html
index a0b8c0e..5ca0994 100644
--- a/doc/html/a00079.html
+++ b/doc/html/a00079.html
@@ -2,63 +2,28 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Member List</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::finish_scan< Range, Body > Member List</h1>This is the complete list of members for <a class="el" href="a00221.html">tbb::internal::finish_scan< Range, Body ></a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a12">add_to_depth</a>(int delta)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a25">affinity</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w1">affinity_id</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a4">allocate_additional_child_of</a>(task &t)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a3">allocate_child</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a2">allocate_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e0">allocate_root</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e1">allocate_root</a>(task_group_context &ctx)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w5">allocated</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a27">cancel_group_execution</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a10">depth</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w0">depth_type</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a5">destroy</a>(task &victim)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00221.html#a0">execute</a>()</td><td><a class="el" href="a00221.html">tbb::internal::finish_scan< Range, Body ></a></td><td><code> [inline, virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w2">executing</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>finish_scan</b>(sum_node_type *&return_slot_, final_sum_type **sum_, sum_node_type &result_) (defined in <a class="el" href="a00221.html">tbb::internal::finish_scan< Range, Body ></a>)</td><td><a class="el" href="a00221.html">tbb::internal::finish_scan< Range, Body ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w6">freed</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_additional_child_of_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_child_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_continuation_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_with_context_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::scheduler</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a28">is_cancelled</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a23">is_owned_by_current_thread</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a20">is_stolen_task</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a26">note_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a19">parent</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w4">ready</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w7">recycle</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a8">recycle_as_child_of</a>(task &new_parent)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a6">recycle_as_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a7">recycle_as_safe_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a9">recycle_to_reexecute</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w3">reexecute</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a22">ref_count</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>result</b> (defined in <a class="el" href="a00221.html">tbb::internal::finish_scan< Range, Body ></a>)</td><td><a class="el" href="a00221.html">tbb::internal::finish_scan< Range, Body ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>right_zombie</b> (defined in <a class="el" href="a00221.html">tbb::internal::finish_scan< Range, Body ></a>)</td><td><a class="el" href="a00221.html">tbb::internal::finish_scan< Range, Body ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e4">self</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a24">set_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a11">set_depth</a>(depth_type new_depth)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a13">set_ref_count</a>(int count)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a14">spawn</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a15">spawn</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a16">spawn_and_wait_for_all</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a17">spawn_and_wait_for_all</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e2">spawn_root_and_wait</a>(task &root)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e3">spawn_root_and_wait</a>(task_list &root_list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a21">state</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8">state_type</a> enum name</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#b0">task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a18">wait_for_all</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a0">~task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, virtual]</code></td></tr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::tick_count Member List</h1>This is the complete list of members for <a class="el" href="a00140.html">tbb::tick_count</a>, including all inherited members.<p><table>
+  <tr class="memlist"><td><a class="el" href="a00140.html#fb7f78ca61cf28398645ace66e284473">now</a>()</td><td><a class="el" href="a00140.html">tbb::tick_count</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00140.html#09dde78a4100800c11bb883d6204b586">operator-</a>(const tick_count &t1, const tick_count &t0)</td><td><a class="el" href="a00140.html">tbb::tick_count</a></td><td><code> [friend]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00140.html#34593326ae4191e02a13c7cbdab9de4c">tick_count</a>()</td><td><a class="el" href="a00140.html">tbb::tick_count</a></td><td><code> [inline]</code></td></tr>
 </table><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/a00080.html b/doc/html/a00080.html
index 7ea816b..e67e5fe 100644
--- a/doc/html/a00080.html
+++ b/doc/html/a00080.html
@@ -2,62 +2,34 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Member List</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::start_scan< Range, Body, Partitioner > Member List</h1>This is the complete list of members for <a class="el" href="a00258.html">tbb::internal::start_scan< Range, Body, Partitioner ></a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a12">add_to_depth</a>(int delta)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a25">affinity</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w1">affinity_id</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a4">allocate_additional_child_of</a>(task &t)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a3">allocate_child</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a2">allocate_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e0">allocate_root</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e1">allocate_root</a>(task_group_context &ctx)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w5">allocated</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a27">cancel_group_execution</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a10">depth</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w0">depth_type</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a5">destroy</a>(task &victim)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w2">executing</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w6">freed</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_additional_child_of_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_child_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_continuation_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_with_context_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::scheduler</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a28">is_cancelled</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a23">is_owned_by_current_thread</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a20">is_stolen_task</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a26">note_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a19">parent</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w4">ready</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w7">recycle</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a8">recycle_as_child_of</a>(task &new_parent)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a6">recycle_as_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a7">recycle_as_safe_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a9">recycle_to_reexecute</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w3">reexecute</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a22">ref_count</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>run</b>(const Range &range, Body &body, const Partitioner &partitioner) (defined in <a class="el" href="a00258.html">tbb::internal::start_scan< Range, Body, Partitioner ></a>)</td><td><a class="el" href="a00258.html">tbb::internal::start_scan< Range, Body, Partitioner ></a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e4">self</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a24">set_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a11">set_depth</a>(depth_type new_depth)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a13">set_ref_count</a>(int count)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a14">spawn</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a15">spawn</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a16">spawn_and_wait_for_all</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a17">spawn_and_wait_for_all</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e2">spawn_root_and_wait</a>(task &root)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e3">spawn_root_and_wait</a>(task_list &root_list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>start_scan</b>(sum_node_type *&return_slot_, start_scan &parent, sum_node_type *parent_sum_) (defined in <a class="el" href="a00258.html">tbb::internal::start_scan< Range, Body, Partitioner ></a>)</td><td><a class="el" href="a00258.html">tbb::internal::start_scan< Range, Body, Partitioner ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>start_scan</b>(sum_node_type *&return_slot_, const Range &range_, final_sum_type &body_, const Partitioner &partitioner_) (defined in <a class="el" href="a00258.html">tbb::internal::start_scan< Range, Body, Partitioner ></a>)</td><td><a class="el" href="a00258.html">tbb::internal::start_scan< Range, Body, Partitioner ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a21">state</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8">state_type</a> enum name</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#b0">task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a18">wait_for_all</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a0">~task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, virtual]</code></td></tr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<h1>tbb::tick_count::interval_t Member List</h1>This is the complete list of members for <a class="el" href="a00141.html">tbb::tick_count::interval_t</a>, including all inherited members.<p><table>
+  <tr class="memlist"><td><a class="el" href="a00141.html#75a9a0949f8a8a84d6758835f1b48dad">interval_t</a>()</td><td><a class="el" href="a00141.html">tbb::tick_count::interval_t</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00141.html#1a21a428e00cced2e6a49e0f5f2258bf">interval_t</a>(double sec)</td><td><a class="el" href="a00141.html">tbb::tick_count::interval_t</a></td><td><code> [inline, explicit]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00141.html#5871ead1ca230efbe52a5008470e6428">operator+</a>(const interval_t &i, const interval_t &j)</td><td><a class="el" href="a00141.html">tbb::tick_count::interval_t</a></td><td><code> [friend]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00141.html#cd9814947902e26463a69a111530f81b">operator+=</a>(const interval_t &i)</td><td><a class="el" href="a00141.html">tbb::tick_count::interval_t</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00141.html#09dde78a4100800c11bb883d6204b586">operator-</a>(const tick_count &t1, const tick_count &t0)</td><td><a class="el" href="a00141.html">tbb::tick_count::interval_t</a></td><td><code> [friend]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00141.html#fa509691e1d689830931e36edd274f76">operator-</a>(const interval_t &i, const interval_t &j)</td><td><a class="el" href="a00141.html">tbb::tick_count::interval_t</a></td><td><code> [friend]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00141.html#35ff7eaf7c2031b4a991402ac9ecb940">operator-=</a>(const interval_t &i)</td><td><a class="el" href="a00141.html">tbb::tick_count::interval_t</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="a00141.html#d5d8429c0bc59cf6131b2abc7929fa59">seconds</a>() const </td><td><a class="el" href="a00141.html">tbb::tick_count::interval_t</a></td><td><code> [inline]</code></td></tr>
+  <tr bgcolor="#f0f0f0"><td><b>tbb::tick_count</b> (defined in <a class="el" href="a00141.html">tbb::tick_count::interval_t</a>)</td><td><a class="el" href="a00141.html">tbb::tick_count::interval_t</a></td><td><code> [friend]</code></td></tr>
 </table><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/a00081.html b/doc/html/a00081.html
deleted file mode 100644
index 4721365..0000000
--- a/doc/html/a00081.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::quick_sort_range< RandomAccessIterator, Compare > Member List</h1>This is the complete list of members for <a class="el" href="a00244.html">tbb::internal::quick_sort_range< RandomAccessIterator, Compare ></a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>begin</b> (defined in <a class="el" href="a00244.html">tbb::internal::quick_sort_range< RandomAccessIterator, Compare ></a>)</td><td><a class="el" href="a00244.html">tbb::internal::quick_sort_range< RandomAccessIterator, Compare ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>comp</b> (defined in <a class="el" href="a00244.html">tbb::internal::quick_sort_range< RandomAccessIterator, Compare ></a>)</td><td><a class="el" href="a00244.html">tbb::internal::quick_sort_range< RandomAccessIterator, Compare ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>empty</b>() const  (defined in <a class="el" href="a00244.html">tbb::internal::quick_sort_range< RandomAccessIterator, Compare ></a>)</td><td><a class="el" href="a00244.html">tbb::internal::quick_sort_range< RandomAccessIterator, Compare ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>grainsize</b> (defined in <a class="el" href="a00244.html">tbb::internal::quick_sort_range< RandomAccessIterator, Compare ></a>)</td><td><a class="el" href="a00244.html">tbb::internal::quick_sort_range< RandomAccessIterator, Compare ></a></td><td><code> [static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>is_divisible</b>() const  (defined in <a class="el" href="a00244.html">tbb::internal::quick_sort_range< RandomAccessIterator, Compare ></a>)</td><td><a class="el" href="a00244.html">tbb::internal::quick_sort_range< RandomAccessIterator, Compare ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00229.html#a0">no_assign</a>()</td><td><a class="el" href="a00229.html">tbb::internal::no_assign</a></td><td><code> [inline, private]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>quick_sort_range</b>(RandomAccessIterator begin_, size_t size_, const Compare &comp_) (defined in <a class="el" href="a00244.html">tbb::internal::quick_sort_range< RandomAccessIterator, Compare ></a>)</td><td><a class="el" href="a00244.html">tbb::internal::quick_sort_range< RandomAccessIterator, Compare ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>quick_sort_range</b>(quick_sort_range &range, split) (defined in <a class="el" href="a00244.html">tbb::internal::quick_sort_range< RandomAccessIterator, Compare ></a>)</td><td><a class="el" href="a00244.html">tbb::internal::quick_sort_range< RandomAccessIterator, Compare ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>size</b> (defined in <a class="el" href="a00244.html">tbb::internal::quick_sort_range< RandomAccessIterator, Compare ></a>)</td><td><a class="el" href="a00244.html">tbb::internal::quick_sort_range< RandomAccessIterator, Compare ></a></td><td></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00082.html b/doc/html/a00082.html
deleted file mode 100644
index df2d298..0000000
--- a/doc/html/a00082.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::quick_sort_pretest_body< RandomAccessIterator, Compare > Member List</h1>This is the complete list of members for <a class="el" href="a00243.html">tbb::internal::quick_sort_pretest_body< RandomAccessIterator, Compare ></a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00229.html#a0">no_assign</a>()</td><td><a class="el" href="a00229.html">tbb::internal::no_assign</a></td><td><code> [inline, private]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator()</b>(const blocked_range< RandomAccessIterator > &range) const  (defined in <a class="el" href="a00243.html">tbb::internal::quick_sort_pretest_body< RandomAccessIterator, Compare ></a>)</td><td><a class="el" href="a00243.html">tbb::internal::quick_sort_pretest_body< RandomAccessIterator, Compare ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>quick_sort_pretest_body</b>(const Compare &_comp) (defined in <a class="el" href="a00243.html">tbb::internal::quick_sort_pretest_body< RandomAccessIterator, Compare ></a>)</td><td><a class="el" href="a00243.html">tbb::internal::quick_sort_pretest_body< RandomAccessIterator, Compare ></a></td><td><code> [inline]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00083.html b/doc/html/a00083.html
deleted file mode 100644
index 6034022..0000000
--- a/doc/html/a00083.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::quick_sort_body< RandomAccessIterator, Compare > Member List</h1>This is the complete list of members for <a class="el" href="a00242.html">tbb::internal::quick_sort_body< RandomAccessIterator, Compare ></a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>operator()</b>(const quick_sort_range< RandomAccessIterator, Compare > &range) const  (defined in <a class="el" href="a00242.html">tbb::internal::quick_sort_body< RandomAccessIterator, Compare ></a>)</td><td><a class="el" href="a00242.html">tbb::internal::quick_sort_body< RandomAccessIterator, Compare ></a></td><td><code> [inline]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00084.html b/doc/html/a00084.html
deleted file mode 100644
index b7aab8c..0000000
--- a/doc/html/a00084.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::while_iteration_task< Body > Member List</h1>This is the complete list of members for <a class="el" href="a00277.html">tbb::internal::while_iteration_task< Body ></a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a12">add_to_depth</a>(int delta)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a25">affinity</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w1">affinity_id</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a4">allocate_additional_child_of</a>(task &t)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a3">allocate_child</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a2">allocate_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e0">allocate_root</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e1">allocate_root</a>(task_group_context &ctx)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w5">allocated</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a27">cancel_group_execution</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a10">depth</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w0">depth_type</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a5">destroy</a>(task &victim)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w2">executing</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w6">freed</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_additional_child_of_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_child_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_continuation_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_with_context_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::scheduler</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a28">is_cancelled</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a23">is_owned_by_current_thread</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a20">is_stolen_task</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a26">note_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a19">parent</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w4">ready</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w7">recycle</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a8">recycle_as_child_of</a>(task &new_parent)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a6">recycle_as_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a7">recycle_as_safe_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a9">recycle_to_reexecute</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w3">reexecute</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a22">ref_count</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e4">self</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a24">set_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a11">set_depth</a>(depth_type new_depth)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a13">set_ref_count</a>(int count)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a14">spawn</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a15">spawn</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a16">spawn_and_wait_for_all</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a17">spawn_and_wait_for_all</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e2">spawn_root_and_wait</a>(task &root)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e3">spawn_root_and_wait</a>(task_list &root_list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a21">state</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8">state_type</a> enum name</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#b0">task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>tbb::parallel_while<Body></b> (defined in <a class="el" href="a00277.html">tbb::internal::while_iteration_task< Body ></a>)</td><td><a class="el" href="a00277.html">tbb::internal::while_iteration_task< Body ></a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a18">wait_for_all</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>while_group_task</b> (defined in <a class="el" href="a00277.html">tbb::internal::while_iteration_task< Body ></a>)</td><td><a class="el" href="a00277.html">tbb::internal::while_iteration_task< Body ></a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a0">~task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00085.html b/doc/html/a00085.html
deleted file mode 100644
index d64b060..0000000
--- a/doc/html/a00085.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::while_group_task< Body > Member List</h1>This is the complete list of members for <a class="el" href="a00276.html">tbb::internal::while_group_task< Body ></a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a12">add_to_depth</a>(int delta)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a25">affinity</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w1">affinity_id</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a4">allocate_additional_child_of</a>(task &t)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a3">allocate_child</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a2">allocate_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e0">allocate_root</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e1">allocate_root</a>(task_group_context &ctx)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w5">allocated</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a27">cancel_group_execution</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a10">depth</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w0">depth_type</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a5">destroy</a>(task &victim)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w2">executing</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w6">freed</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_additional_child_of_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_child_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_continuation_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_with_context_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::scheduler</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a28">is_cancelled</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a23">is_owned_by_current_thread</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a20">is_stolen_task</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a26">note_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a19">parent</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w4">ready</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w7">recycle</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a8">recycle_as_child_of</a>(task &new_parent)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a6">recycle_as_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a7">recycle_as_safe_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a9">recycle_to_reexecute</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w3">reexecute</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a22">ref_count</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e4">self</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a24">set_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a11">set_depth</a>(depth_type new_depth)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a13">set_ref_count</a>(int count)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a14">spawn</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a15">spawn</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a16">spawn_and_wait_for_all</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a17">spawn_and_wait_for_all</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e2">spawn_root_and_wait</a>(task &root)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e3">spawn_root_and_wait</a>(task_list &root_list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a21">state</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8">state_type</a> enum name</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#b0">task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a18">wait_for_all</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>while_task</b> (defined in <a class="el" href="a00276.html">tbb::internal::while_group_task< Body ></a>)</td><td><a class="el" href="a00276.html">tbb::internal::while_group_task< Body ></a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a0">~task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00086.html b/doc/html/a00086.html
deleted file mode 100644
index 8dfa013..0000000
--- a/doc/html/a00086.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::while_task< Stream, Body > Member List</h1>This is the complete list of members for <a class="el" href="a00278.html">tbb::internal::while_task< Stream, Body ></a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a12">add_to_depth</a>(int delta)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a25">affinity</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w1">affinity_id</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a4">allocate_additional_child_of</a>(task &t)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a3">allocate_child</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a2">allocate_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e0">allocate_root</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e1">allocate_root</a>(task_group_context &ctx)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w5">allocated</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a27">cancel_group_execution</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a10">depth</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w0">depth_type</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a5">destroy</a>(task &victim)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w2">executing</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w6">freed</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_additional_child_of_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_child_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_continuation_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_with_context_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::scheduler</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a28">is_cancelled</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a23">is_owned_by_current_thread</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a20">is_stolen_task</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a26">note_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a19">parent</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w4">ready</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w7">recycle</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a8">recycle_as_child_of</a>(task &new_parent)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a6">recycle_as_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a7">recycle_as_safe_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a9">recycle_to_reexecute</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w3">reexecute</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a22">ref_count</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e4">self</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a24">set_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a11">set_depth</a>(depth_type new_depth)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a13">set_ref_count</a>(int count)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a14">spawn</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a15">spawn</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a16">spawn_and_wait_for_all</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a17">spawn_and_wait_for_all</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e2">spawn_root_and_wait</a>(task &root)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e3">spawn_root_and_wait</a>(task_list &root_list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a21">state</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8">state_type</a> enum name</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#b0">task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>tbb::parallel_while<Body></b> (defined in <a class="el" href="a00278.html">tbb::internal::while_task< Stream, Body ></a>)</td><td><a class="el" href="a00278.html">tbb::internal::while_task< Stream, Body ></a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a18">wait_for_all</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a0">~task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00087.html b/doc/html/a00087.html
deleted file mode 100644
index 83d1a7e..0000000
--- a/doc/html/a00087.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::parallel_while< Body > Member List</h1>This is the complete list of members for <a class="el" href="a00234.html">tbb::parallel_while< Body ></a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00234.html#a3">add</a>(const value_type &item)</td><td><a class="el" href="a00234.html">tbb::parallel_while< Body ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00230.html#a0">no_copy</a>()</td><td><a class="el" href="a00230.html">tbb::internal::no_copy</a></td><td><code> [inline, private]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00234.html#a0">parallel_while</a>()</td><td><a class="el" href="a00234.html">tbb::parallel_while< Body ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00234.html#a2">run</a>(Stream &stream, const Body &body)</td><td><a class="el" href="a00234.html">tbb::parallel_while< Body ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00234.html#w0">value_type</a> typedef</td><td><a class="el" href="a00234.html">tbb::parallel_while< Body ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00234.html#a1">~parallel_while</a>()</td><td><a class="el" href="a00234.html">tbb::parallel_while< Body ></a></td><td><code> [inline]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00088.html b/doc/html/a00088.html
deleted file mode 100644
index a7fb178..0000000
--- a/doc/html/a00088.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::affinity_partitioner_base_v3 Member List</h1>This is the complete list of members for <a class="el" href="a00189.html">tbb::internal::affinity_partitioner_base_v3</a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>affinity_partition_type</b> (defined in <a class="el" href="a00189.html">tbb::internal::affinity_partitioner_base_v3</a>)</td><td><a class="el" href="a00189.html">tbb::internal::affinity_partitioner_base_v3</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00230.html#a0">no_copy</a>()</td><td><a class="el" href="a00230.html">tbb::internal::no_copy</a></td><td><code> [inline, private]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>tbb::affinity_partitioner</b> (defined in <a class="el" href="a00189.html">tbb::internal::affinity_partitioner_base_v3</a>)</td><td><a class="el" href="a00189.html">tbb::internal::affinity_partitioner_base_v3</a></td><td><code> [friend]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00089.html b/doc/html/a00089.html
deleted file mode 100644
index 095c17f..0000000
--- a/doc/html/a00089.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::partition_type_base Member List</h1>This is the complete list of members for <a class="el" href="a00235.html">tbb::internal::partition_type_base</a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>continue_after_execute_range</b>(task &) (defined in <a class="el" href="a00235.html">tbb::internal::partition_type_base</a>)</td><td><a class="el" href="a00235.html">tbb::internal::partition_type_base</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>decide_whether_to_delay</b>() (defined in <a class="el" href="a00235.html">tbb::internal::partition_type_base</a>)</td><td><a class="el" href="a00235.html">tbb::internal::partition_type_base</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>note_affinity</b>(task::affinity_id) (defined in <a class="el" href="a00235.html">tbb::internal::partition_type_base</a>)</td><td><a class="el" href="a00235.html">tbb::internal::partition_type_base</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>set_affinity</b>(task &) (defined in <a class="el" href="a00235.html">tbb::internal::partition_type_base</a>)</td><td><a class="el" href="a00235.html">tbb::internal::partition_type_base</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>spawn_or_delay</b>(bool, task &a, task &b) (defined in <a class="el" href="a00235.html">tbb::internal::partition_type_base</a>)</td><td><a class="el" href="a00235.html">tbb::internal::partition_type_base</a></td><td><code> [inline]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00090.html b/doc/html/a00090.html
deleted file mode 100644
index 6cafe89..0000000
--- a/doc/html/a00090.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::simple_partitioner Member List</h1>This is the complete list of members for <a class="el" href="a00249.html">tbb::simple_partitioner</a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>internal::start_for</b> (defined in <a class="el" href="a00249.html">tbb::simple_partitioner</a>)</td><td><a class="el" href="a00249.html">tbb::simple_partitioner</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::start_reduce</b> (defined in <a class="el" href="a00249.html">tbb::simple_partitioner</a>)</td><td><a class="el" href="a00249.html">tbb::simple_partitioner</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::start_scan</b> (defined in <a class="el" href="a00249.html">tbb::simple_partitioner</a>)</td><td><a class="el" href="a00249.html">tbb::simple_partitioner</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>simple_partitioner</b>() (defined in <a class="el" href="a00249.html">tbb::simple_partitioner</a>)</td><td><a class="el" href="a00249.html">tbb::simple_partitioner</a></td><td><code> [inline]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00091.html b/doc/html/a00091.html
new file mode 100644
index 0000000..f902cc4
--- /dev/null
+++ b/doc/html/a00091.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb::affinity_partitioner Class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00091.html">affinity_partitioner</a></div>
+<h1>tbb::affinity_partitioner Class Reference</h1><!-- doxytag: class="tbb::affinity_partitioner" -->An affinity partitioner.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00264.html">partitioner.h</a>></code>
+<p>
+<a href="a00038.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a47f7e0208a2bf68f35b51b27d2ddf2a"></a><!-- doxytag: member="tbb::affinity_partitioner::internal::start_for" ref="a47f7e0208a2bf68f35b51b27d2ddf2a" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>internal::start_for</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="181db51277e9b15dd0ec4a0617ab1f92"></a><!-- doxytag: member="tbb::affinity_partitioner::internal::start_reduce_with_affinity" ref="181db51277e9b15dd0ec4a0617ab1f92" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>internal::start_reduce_with_affinity</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="76d97ae6ad98db0acfc8ed8cb7c76705"></a><!-- doxytag: member="tbb::affinity_partitioner::internal::start_scan" ref="76d97ae6ad98db0acfc8ed8cb7c76705" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>internal::start_scan</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e9575467e391b90e0703fadf573dbad7"></a><!-- doxytag: member="tbb::affinity_partitioner::internal::affinity_partition_type" ref="e9575467e391b90e0703fadf573dbad7" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>internal::affinity_partition_type</b></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+An affinity partitioner. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00264.html">partitioner.h</a></ul>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00092.html b/doc/html/a00092.html
index 296b381..9406e3f 100644
--- a/doc/html/a00092.html
+++ b/doc/html/a00092.html
@@ -1,16 +1,58 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::aligned_space< T, N > Class Template Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::auto_partitioner Member List</h1>This is the complete list of members for <a class="el" href="a00193.html">tbb::auto_partitioner</a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>auto_partitioner</b>() (defined in <a class="el" href="a00193.html">tbb::auto_partitioner</a>)</td><td><a class="el" href="a00193.html">tbb::auto_partitioner</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::start_for</b> (defined in <a class="el" href="a00193.html">tbb::auto_partitioner</a>)</td><td><a class="el" href="a00193.html">tbb::auto_partitioner</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::start_reduce</b> (defined in <a class="el" href="a00193.html">tbb::auto_partitioner</a>)</td><td><a class="el" href="a00193.html">tbb::auto_partitioner</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::start_scan</b> (defined in <a class="el" href="a00193.html">tbb::auto_partitioner</a>)</td><td><a class="el" href="a00193.html">tbb::auto_partitioner</a></td><td><code> [friend]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00092.html">aligned_space</a></div>
+<h1>tbb::aligned_space< T, N > Class Template Reference<br>
+<small>
+[<a class="el" href="a00185.html">Memory Allocation</a>]</small>
+</h1><!-- doxytag: class="tbb::aligned_space" -->Block of space aligned sufficiently to construct an array T with N elements.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00191.html">aligned_space.h</a>></code>
+<p>
+<a href="a00001.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0d702fc6b9e9d061ace3501b3c861cdf"></a><!-- doxytag: member="tbb::aligned_space::begin" ref="0d702fc6b9e9d061ace3501b3c861cdf" args="()" -->
+T * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00092.html#0d702fc6b9e9d061ace3501b3c861cdf">begin</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Pointer to beginning of array. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="024be075c23c0394c9a2518d993bcd9e"></a><!-- doxytag: member="tbb::aligned_space::end" ref="024be075c23c0394c9a2518d993bcd9e" args="()" -->
+T * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00092.html#024be075c23c0394c9a2518d993bcd9e">end</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Pointer to one past last element in array. <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template<typename T, size_t N><br>
+ class tbb::aligned_space< T, N ></h3>
+
+Block of space aligned sufficiently to construct an array T with N elements. 
+<p>
+The elements are not constructed or destroyed by this class. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00191.html">aligned_space.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00093.html b/doc/html/a00093.html
new file mode 100644
index 0000000..98dc3c9
--- /dev/null
+++ b/doc/html/a00093.html
@@ -0,0 +1,54 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb::atomic< T > Struct Template Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00093.html">atomic</a></div>
+<h1>tbb::atomic< T > Struct Template Reference<br>
+<small>
+[<a class="el" href="a00186.html">Synchronization</a>]</small>
+</h1><!-- doxytag: class="tbb::atomic" -->Primary template for atomic.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00193.html">atomic.h</a>></code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template<typename T><br>
+ struct tbb::atomic< T ></h3>
+
+Primary template for atomic. 
+<p>
+See the Reference for details. 
+<p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="a00193.html">atomic.h</a></ul>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00094.html b/doc/html/a00094.html
index 15dcb5d..f03135d 100644
--- a/doc/html/a00094.html
+++ b/doc/html/a00094.html
@@ -1,18 +1,54 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::internal::AtomicBackoff Class Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::affinity_partitioner Member List</h1>This is the complete list of members for <a class="el" href="a00188.html">tbb::affinity_partitioner</a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>affinity_partitioner</b>() (defined in <a class="el" href="a00188.html">tbb::affinity_partitioner</a>)</td><td><a class="el" href="a00188.html">tbb::affinity_partitioner</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::affinity_partition_type</b> (defined in <a class="el" href="a00188.html">tbb::affinity_partitioner</a>)</td><td><a class="el" href="a00188.html">tbb::affinity_partitioner</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::start_for</b> (defined in <a class="el" href="a00188.html">tbb::affinity_partitioner</a>)</td><td><a class="el" href="a00188.html">tbb::affinity_partitioner</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::start_reduce_with_affinity</b> (defined in <a class="el" href="a00188.html">tbb::affinity_partitioner</a>)</td><td><a class="el" href="a00188.html">tbb::affinity_partitioner</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::start_scan</b> (defined in <a class="el" href="a00188.html">tbb::affinity_partitioner</a>)</td><td><a class="el" href="a00188.html">tbb::affinity_partitioner</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>tbb::affinity_partitioner</b> (defined in <a class="el" href="a00189.html">tbb::internal::affinity_partitioner_base_v3</a>)</td><td><a class="el" href="a00189.html">tbb::internal::affinity_partitioner_base_v3</a></td><td><code> [friend]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<b>internal</b>::<a class="el" href="a00094.html">AtomicBackoff</a></div>
+<h1>tbb::internal::AtomicBackoff Class Reference</h1><!-- doxytag: class="tbb::internal::AtomicBackoff" -->Class that implements exponential backoff.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00290.html">tbb_machine.h</a>></code>
+<p>
+<a href="a00070.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cb1ca420dfc4aa21eca699d3fa4711c7"></a><!-- doxytag: member="tbb::internal::AtomicBackoff::pause" ref="cb1ca420dfc4aa21eca699d3fa4711c7" args="()" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00094.html#cb1ca420dfc4aa21eca699d3fa4711c7">pause</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Pause for a while. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="452a6367368fd34a0f991383f67fb304"></a><!-- doxytag: member="tbb::internal::AtomicBackoff::bounded_pause" ref="452a6367368fd34a0f991383f67fb304" args="()" -->
+bool </td><td class="memItemRight" valign="bottom"><b>bounded_pause</b> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c705d76ff0cce70a5e00313f4d94c396"></a><!-- doxytag: member="tbb::internal::AtomicBackoff::reset" ref="c705d76ff0cce70a5e00313f4d94c396" args="()" -->
+void </td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Class that implements exponential backoff. 
+<p>
+See implementation of SpinwaitWhileEq for an example. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00290.html">tbb_machine.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00095.html b/doc/html/a00095.html
new file mode 100644
index 0000000..8860cfe
--- /dev/null
+++ b/doc/html/a00095.html
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb::auto_partitioner Class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00095.html">auto_partitioner</a></div>
+<h1>tbb::auto_partitioner Class Reference<br>
+<small>
+[<a class="el" href="a00183.html">Algorithms</a>]</small>
+</h1><!-- doxytag: class="tbb::auto_partitioner" -->An auto partitioner.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00264.html">partitioner.h</a>></code>
+<p>
+<a href="a00036.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a47f7e0208a2bf68f35b51b27d2ddf2a"></a><!-- doxytag: member="tbb::auto_partitioner::internal::start_for" ref="a47f7e0208a2bf68f35b51b27d2ddf2a" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>internal::start_for</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e8f710e431b62c2a48914bd99d0fe034"></a><!-- doxytag: member="tbb::auto_partitioner::internal::start_reduce" ref="e8f710e431b62c2a48914bd99d0fe034" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>internal::start_reduce</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="76d97ae6ad98db0acfc8ed8cb7c76705"></a><!-- doxytag: member="tbb::auto_partitioner::internal::start_scan" ref="76d97ae6ad98db0acfc8ed8cb7c76705" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>internal::start_scan</b></td></tr>
+
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>partition_type</b></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+An auto partitioner. 
+<p>
+The range is initial divided into several large chunks. Chunks are further subdivided into VICTIM_CHUNKS pieces if they are stolen and divisible. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00264.html">partitioner.h</a></ul>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00096.html b/doc/html/a00096.html
index f30503e..b0bb2cd 100644
--- a/doc/html/a00096.html
+++ b/doc/html/a00096.html
@@ -1,27 +1,45 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::bad_last_alloc Class Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::filter Member List</h1>This is the complete list of members for <a class="el" href="a00216.html">tbb::filter</a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>filter</b>(bool is_serial_) (defined in <a class="el" href="a00216.html">tbb::filter</a>)</td><td><a class="el" href="a00216.html">tbb::filter</a></td><td><code> [inline, protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>filter</b>(mode filter_mode) (defined in <a class="el" href="a00216.html">tbb::filter</a>)</td><td><a class="el" href="a00216.html">tbb::filter</a></td><td><code> [inline, protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00216.html#a4">finalize</a>(void *)</td><td><a class="el" href="a00216.html">tbb::filter</a></td><td><code> [inline, virtual]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::stage_task</b> (defined in <a class="el" href="a00216.html">tbb::filter</a>)</td><td><a class="el" href="a00216.html">tbb::filter</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>is_ordered</b>() const  (defined in <a class="el" href="a00216.html">tbb::filter</a>)</td><td><a class="el" href="a00216.html">tbb::filter</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00216.html#a0">is_serial</a>() const </td><td><a class="el" href="a00216.html">tbb::filter</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00216.html#w4">mode</a> enum name</td><td><a class="el" href="a00216.html">tbb::filter</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00230.html#a0">no_copy</a>()</td><td><a class="el" href="a00230.html">tbb::internal::no_copy</a></td><td><code> [inline, private]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00216.html#a2">operator()</a>(void *item)=0</td><td><a class="el" href="a00216.html">tbb::filter</a></td><td><code> [pure virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00216.html#w4w0">parallel</a> enum value</td><td><a class="el" href="a00216.html">tbb::filter</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>pipeline</b> (defined in <a class="el" href="a00216.html">tbb::filter</a>)</td><td><a class="el" href="a00216.html">tbb::filter</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00216.html#w4w3">serial</a> enum value</td><td><a class="el" href="a00216.html">tbb::filter</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00216.html#w4w1">serial_in_order</a> enum value</td><td><a class="el" href="a00216.html">tbb::filter</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00216.html#w4w2">serial_out_of_order</a> enum value</td><td><a class="el" href="a00216.html">tbb::filter</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00216.html#a3">~filter</a>()</td><td><a class="el" href="a00216.html">tbb::filter</a></td><td><code> [virtual]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00096.html">bad_last_alloc</a></div>
+<h1>tbb::bad_last_alloc Class Reference</h1><!-- doxytag: class="tbb::bad_last_alloc" -->Exception for concurrent containers.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00289.html">tbb_exception.h</a>></code>
+<p>
+<a href="a00066.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6f7d876e9190498a13795a5b0ca3e313"></a><!-- doxytag: member="tbb::bad_last_alloc::what" ref="6f7d876e9190498a13795a5b0ca3e313" args="() const " -->
+virtual const char * </td><td class="memItemRight" valign="bottom"><b>what</b> () const   throw ()</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Exception for concurrent containers. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00289.html">tbb_exception.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00097.html b/doc/html/a00097.html
index ae9d319..1b95ee0 100644
--- a/doc/html/a00097.html
+++ b/doc/html/a00097.html
@@ -1,20 +1,219 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::blocked_range< Value > Class Template Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::pipeline Member List</h1>This is the complete list of members for <a class="el" href="a00236.html">tbb::pipeline</a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00236.html#a2">add_filter</a>(filter &filter_)</td><td><a class="el" href="a00236.html">tbb::pipeline</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00236.html#a5">clear</a>()</td><td><a class="el" href="a00236.html">tbb::pipeline</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>filter</b> (defined in <a class="el" href="a00236.html">tbb::pipeline</a>)</td><td><a class="el" href="a00236.html">tbb::pipeline</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::stage_task</b> (defined in <a class="el" href="a00236.html">tbb::pipeline</a>)</td><td><a class="el" href="a00236.html">tbb::pipeline</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00236.html#a0">pipeline</a>()</td><td><a class="el" href="a00236.html">tbb::pipeline</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00236.html#a3">run</a>(size_t max_number_of_live_tokens)</td><td><a class="el" href="a00236.html">tbb::pipeline</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00236.html#a4">run</a>(size_t max_number_of_live_tokens, tbb::task_group_context &context)</td><td><a class="el" href="a00236.html">tbb::pipeline</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00236.html#a1">~pipeline</a>()</td><td><a class="el" href="a00236.html">tbb::pipeline</a></td><td><code> [virtual]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00097.html">blocked_range</a></div>
+<h1>tbb::blocked_range< Value > Class Template Reference<br>
+<small>
+[<a class="el" href="a00183.html">Algorithms</a>]</small>
+</h1><!-- doxytag: class="tbb::blocked_range" -->A range over which to iterate.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00200.html">blocked_range.h</a>></code>
+<p>
+<a href="a00005.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef Value </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#1a8d05842c2b3dfc177bc4d347e4cef7">const_iterator</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Type of a value.  <a href="#1a8d05842c2b3dfc177bc4d347e4cef7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f5707bffea38eee5c9680f37358afb8e"></a><!-- doxytag: member="tbb::blocked_range::size_type" ref="f5707bffea38eee5c9680f37358afb8e" args="" -->
+typedef std::size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#f5707bffea38eee5c9680f37358afb8e">size_type</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Type for size of a range. <br></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#94607755c5110d199202234d58d022ac">blocked_range</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct range with default-constructed values for begin and end.  <a href="#94607755c5110d199202234d58d022ac"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="14795a36ead1414b4371dbe1a4656359"></a><!-- doxytag: member="tbb::blocked_range::blocked_range" ref="14795a36ead1414b4371dbe1a4656359" args="(Value begin_, Value end_, size_type grainsize_=1)" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#14795a36ead1414b4371dbe1a4656359">blocked_range</a> (Value begin_, Value end_, <a class="el" href="a00097.html#f5707bffea38eee5c9680f37358afb8e">size_type</a> grainsize_=1)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct range over half-open interval [begin,end), with the given grainsize. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="18d2258400756ac1446dac7676b18df3"></a><!-- doxytag: member="tbb::blocked_range::begin" ref="18d2258400756ac1446dac7676b18df3" args="() const " -->
+<a class="el" href="a00097.html#1a8d05842c2b3dfc177bc4d347e4cef7">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#18d2258400756ac1446dac7676b18df3">begin</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Beginning of range. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8b929d93ddc13f148b11bceef3a3bdf8"></a><!-- doxytag: member="tbb::blocked_range::end" ref="8b929d93ddc13f148b11bceef3a3bdf8" args="() const " -->
+<a class="el" href="a00097.html#1a8d05842c2b3dfc177bc4d347e4cef7">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#8b929d93ddc13f148b11bceef3a3bdf8">end</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">One past last value in range. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00097.html#f5707bffea38eee5c9680f37358afb8e">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#9eaa0b6beff1420f688570bbf6b8c462">size</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Size of the range.  <a href="#9eaa0b6beff1420f688570bbf6b8c462"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fcd2e5b8b6c11fd3f20fc0aa9f11bbc2"></a><!-- doxytag: member="tbb::blocked_range::grainsize" ref="fcd2e5b8b6c11fd3f20fc0aa9f11bbc2" args="() const " -->
+<a class="el" href="a00097.html#f5707bffea38eee5c9680f37358afb8e">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#fcd2e5b8b6c11fd3f20fc0aa9f11bbc2">grainsize</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The grain size for this range. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8f4f02f530eb3f2e7ea26e06f76aef9d"></a><!-- doxytag: member="tbb::blocked_range::empty" ref="8f4f02f530eb3f2e7ea26e06f76aef9d" args="() const " -->
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#8f4f02f530eb3f2e7ea26e06f76aef9d">empty</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">True if range is empty. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#41a58b703d574b6e1ca155df3576f578">is_divisible</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">True if range is divisible.  <a href="#41a58b703d574b6e1ca155df3576f578"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#4c0efd2be3f96a0ab3ba5085e8b3fcc7">blocked_range</a> (<a class="el" href="a00097.html">blocked_range</a> &r, <a class="el" href="a00131.html">split</a>)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Split range.  <a href="#4c0efd2be3f96a0ab3ba5085e8b3fcc7"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="395a514a55017e36d571809f1223389b"></a><!-- doxytag: member="tbb::blocked_range::blocked_range2d" ref="395a514a55017e36d571809f1223389b" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>blocked_range2d</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="13d172a4da9be197033e64516fff1f4b"></a><!-- doxytag: member="tbb::blocked_range::blocked_range3d" ref="13d172a4da9be197033e64516fff1f4b" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>blocked_range3d</b></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template<typename Value><br>
+ class tbb::blocked_range< Value ></h3>
+
+A range over which to iterate. 
+<p>
+<hr><h2>Member Typedef Documentation</h2>
+<a class="anchor" name="1a8d05842c2b3dfc177bc4d347e4cef7"></a><!-- doxytag: member="tbb::blocked_range::const_iterator" ref="1a8d05842c2b3dfc177bc4d347e4cef7" args="" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Value> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef Value <a class="el" href="a00097.html">tbb::blocked_range</a>< Value >::<a class="el" href="a00097.html#1a8d05842c2b3dfc177bc4d347e4cef7">const_iterator</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Type of a value. 
+<p>
+Called a const_iterator for sake of algorithms that need to treat a <a class="el" href="a00097.html">blocked_range</a> as an STL container. 
+</div>
+</div><p>
+<hr><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" name="94607755c5110d199202234d58d022ac"></a><!-- doxytag: member="tbb::blocked_range::blocked_range" ref="94607755c5110d199202234d58d022ac" args="()" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Value> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="a00097.html">tbb::blocked_range</a>< Value >::<a class="el" href="a00097.html">blocked_range</a>           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Construct range with default-constructed values for begin and end. 
+<p>
+Requires that Value have a default constructor. 
+</div>
+</div><p>
+<a class="anchor" name="4c0efd2be3f96a0ab3ba5085e8b3fcc7"></a><!-- doxytag: member="tbb::blocked_range::blocked_range" ref="4c0efd2be3f96a0ab3ba5085e8b3fcc7" args="(blocked_range &r, split)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Value> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="a00097.html">tbb::blocked_range</a>< Value >::<a class="el" href="a00097.html">blocked_range</a>           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00097.html">blocked_range</a>< Value > & </td>
+          <td class="paramname"> <em>r</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="a00131.html">split</a> </td>
+          <td class="paramname"></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Split range. 
+<p>
+The new Range *this has the second half, the old range r has the first half. Unspecified if <a class="el" href="a00097.html#8b929d93ddc13f148b11bceef3a3bdf8">end()</a><<a class="el" href="a00097.html#18d2258400756ac1446dac7676b18df3">begin()</a> or !is_divisible(). 
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="41a58b703d574b6e1ca155df3576f578"></a><!-- doxytag: member="tbb::blocked_range::is_divisible" ref="41a58b703d574b6e1ca155df3576f578" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Value> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00097.html">tbb::blocked_range</a>< Value >::is_divisible           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"> const<code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+True if range is divisible. 
+<p>
+Unspecified if <a class="el" href="a00097.html#8b929d93ddc13f148b11bceef3a3bdf8">end()</a><<a class="el" href="a00097.html#18d2258400756ac1446dac7676b18df3">begin()</a>. 
+</div>
+</div><p>
+<a class="anchor" name="9eaa0b6beff1420f688570bbf6b8c462"></a><!-- doxytag: member="tbb::blocked_range::size" ref="9eaa0b6beff1420f688570bbf6b8c462" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Value> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="a00097.html#f5707bffea38eee5c9680f37358afb8e">size_type</a> <a class="el" href="a00097.html">tbb::blocked_range</a>< Value >::size           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"> const<code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Size of the range. 
+<p>
+Unspecified if <a class="el" href="a00097.html#8b929d93ddc13f148b11bceef3a3bdf8">end()</a><<a class="el" href="a00097.html#18d2258400756ac1446dac7676b18df3">begin()</a>. 
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00200.html">blocked_range.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00098.html b/doc/html/a00098.html
index e438840..94758dc 100644
--- a/doc/html/a00098.html
+++ b/doc/html/a00098.html
@@ -1,18 +1,81 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::blocked_range2d< RowValue, ColValue > Class Template Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::queuing_mutex Member List</h1>This is the complete list of members for <a class="el" href="a00238.html">tbb::queuing_mutex</a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>internal_construct</b>() (defined in <a class="el" href="a00238.html">tbb::queuing_mutex</a>)</td><td><a class="el" href="a00238.html">tbb::queuing_mutex</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>is_fair_mutex</b> (defined in <a class="el" href="a00238.html">tbb::queuing_mutex</a>)</td><td><a class="el" href="a00238.html">tbb::queuing_mutex</a></td><td><code> [static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>is_recursive_mutex</b> (defined in <a class="el" href="a00238.html">tbb::queuing_mutex</a>)</td><td><a class="el" href="a00238.html">tbb::queuing_mutex</a></td><td><code> [static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>is_rw_mutex</b> (defined in <a class="el" href="a00238.html">tbb::queuing_mutex</a>)</td><td><a class="el" href="a00238.html">tbb::queuing_mutex</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00238.html#a0">queuing_mutex</a>()</td><td><a class="el" href="a00238.html">tbb::queuing_mutex</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>scoped_lock</b> (defined in <a class="el" href="a00238.html">tbb::queuing_mutex</a>)</td><td><a class="el" href="a00238.html">tbb::queuing_mutex</a></td><td><code> [friend]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00098.html">blocked_range2d</a></div>
+<h1>tbb::blocked_range2d< RowValue, ColValue > Class Template Reference<br>
+<small>
+[<a class="el" href="a00183.html">Algorithms</a>]</small>
+</h1><!-- doxytag: class="tbb::blocked_range2d" -->A 2-dimensional range that models the Range concept.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00201.html">blocked_range2d.h</a>></code>
+<p>
+<a href="a00006.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a807a22fe658ec38b8edfd69521d0383"></a><!-- doxytag: member="tbb::blocked_range2d::row_range_type" ref="a807a22fe658ec38b8edfd69521d0383" args="" -->
+typedef <a class="el" href="a00097.html">blocked_range</a>< RowValue > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00098.html#a807a22fe658ec38b8edfd69521d0383">row_range_type</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Type for size of an iteation range. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="750d5c6ac9915443df477a30031c07fd"></a><!-- doxytag: member="tbb::blocked_range2d::col_range_type" ref="750d5c6ac9915443df477a30031c07fd" args="" -->
+typedef <a class="el" href="a00097.html">blocked_range</a>< ColValue > </td><td class="memItemRight" valign="bottom"><b>col_range_type</b></td></tr>
+
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4180bc35d4f8ed9f20045dba4f2a1bdc"></a><!-- doxytag: member="tbb::blocked_range2d::blocked_range2d" ref="4180bc35d4f8ed9f20045dba4f2a1bdc" args="(RowValue row_begin, RowValue row_end, typename row_range_type::size_type row_grainsize, ColValue col_begin, ColValue col_end, typename col_range_type::size_type col_grainsize)" -->
+ </td><td class="memItemRight" valign="bottom"><b>blocked_range2d</b> (RowValue row_begin, RowValue row_end, typename <a class="el" href="a00097.html#f5707bffea38eee5c9680f37358afb8e">row_range_type::size_type</a> row_grainsize, ColValue col_begin, ColValue col_end, typename <a class="el" href="a00097.html#f5707bffea38eee5c9680f37358afb8e">col_range_type::size_type</a> col_grainsize)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="485434db1609b2074d86cb604f3c674e"></a><!-- doxytag: member="tbb::blocked_range2d::blocked_range2d" ref="485434db1609b2074d86cb604f3c674e" args="(RowValue row_begin, RowValue row_end, ColValue col_begin, ColValue col_end)" -->
+ </td><td class="memItemRight" valign="bottom"><b>blocked_range2d</b> (RowValue row_begin, RowValue row_end, ColValue col_begin, ColValue col_end)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d144cb2d88cef553420311aca8667a44"></a><!-- doxytag: member="tbb::blocked_range2d::empty" ref="d144cb2d88cef553420311aca8667a44" args="() const " -->
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00098.html#d144cb2d88cef553420311aca8667a44">empty</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">True if range is empty. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ad36a9b38e4fef26d376f99552ce2d92"></a><!-- doxytag: member="tbb::blocked_range2d::is_divisible" ref="ad36a9b38e4fef26d376f99552ce2d92" args="() const " -->
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00098.html#ad36a9b38e4fef26d376f99552ce2d92">is_divisible</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">True if range is divisible into two pieces. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4f80e6db02bfa4e90e2a219de9f17461"></a><!-- doxytag: member="tbb::blocked_range2d::blocked_range2d" ref="4f80e6db02bfa4e90e2a219de9f17461" args="(blocked_range2d &r, split)" -->
+ </td><td class="memItemRight" valign="bottom"><b>blocked_range2d</b> (<a class="el" href="a00098.html">blocked_range2d</a> &r, <a class="el" href="a00131.html">split</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f496e7348a82652fba581203477cc07c"></a><!-- doxytag: member="tbb::blocked_range2d::rows" ref="f496e7348a82652fba581203477cc07c" args="() const " -->
+const <a class="el" href="a00097.html">row_range_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00098.html#f496e7348a82652fba581203477cc07c">rows</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The rows of the iteration space. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="392a46759af2c884957115771affa7f4"></a><!-- doxytag: member="tbb::blocked_range2d::cols" ref="392a46759af2c884957115771affa7f4" args="() const " -->
+const <a class="el" href="a00097.html">col_range_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00098.html#392a46759af2c884957115771affa7f4">cols</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The columns of the iteration space. <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template<typename RowValue, typename ColValue = RowValue><br>
+ class tbb::blocked_range2d< RowValue, ColValue ></h3>
+
+A 2-dimensional range that models the Range concept. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00201.html">blocked_range2d.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00099.html b/doc/html/a00099.html
index 377f475..b22737b 100644
--- a/doc/html/a00099.html
+++ b/doc/html/a00099.html
@@ -1,19 +1,88 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::blocked_range3d< PageValue, RowValue, ColValue > Class Template Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::queuing_mutex::scoped_lock Member List</h1>This is the complete list of members for <a class="el" href="a00239.html">tbb::queuing_mutex::scoped_lock</a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00239.html#a3">acquire</a>(queuing_mutex &m)</td><td><a class="el" href="a00239.html">tbb::queuing_mutex::scoped_lock</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00230.html#a0">no_copy</a>()</td><td><a class="el" href="a00230.html">tbb::internal::no_copy</a></td><td><code> [inline, private]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00239.html#a5">release</a>()</td><td><a class="el" href="a00239.html">tbb::queuing_mutex::scoped_lock</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00239.html#a0">scoped_lock</a>()</td><td><a class="el" href="a00239.html">tbb::queuing_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00239.html#a1">scoped_lock</a>(queuing_mutex &m)</td><td><a class="el" href="a00239.html">tbb::queuing_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00239.html#a4">try_acquire</a>(queuing_mutex &m)</td><td><a class="el" href="a00239.html">tbb::queuing_mutex::scoped_lock</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00239.html#a2">~scoped_lock</a>()</td><td><a class="el" href="a00239.html">tbb::queuing_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00099.html">blocked_range3d</a></div>
+<h1>tbb::blocked_range3d< PageValue, RowValue, ColValue > Class Template Reference<br>
+<small>
+[<a class="el" href="a00183.html">Algorithms</a>]</small>
+</h1><!-- doxytag: class="tbb::blocked_range3d" -->A 3-dimensional range that models the Range concept.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00202.html">blocked_range3d.h</a>></code>
+<p>
+<a href="a00007.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b8ebf17a552ba47825e9b3887855b719"></a><!-- doxytag: member="tbb::blocked_range3d::page_range_type" ref="b8ebf17a552ba47825e9b3887855b719" args="" -->
+typedef <a class="el" href="a00097.html">blocked_range</a>< PageValue > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00099.html#b8ebf17a552ba47825e9b3887855b719">page_range_type</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Type for size of an iteation range. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4edc39b1a76c84c8f43ea8bff3e88007"></a><!-- doxytag: member="tbb::blocked_range3d::row_range_type" ref="4edc39b1a76c84c8f43ea8bff3e88007" args="" -->
+typedef <a class="el" href="a00097.html">blocked_range</a>< RowValue > </td><td class="memItemRight" valign="bottom"><b>row_range_type</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="02229b59d4dc5437bf5fbe72acca7f66"></a><!-- doxytag: member="tbb::blocked_range3d::col_range_type" ref="02229b59d4dc5437bf5fbe72acca7f66" args="" -->
+typedef <a class="el" href="a00097.html">blocked_range</a>< ColValue > </td><td class="memItemRight" valign="bottom"><b>col_range_type</b></td></tr>
+
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a762f420ed83a887967cb7dfe337582c"></a><!-- doxytag: member="tbb::blocked_range3d::blocked_range3d" ref="a762f420ed83a887967cb7dfe337582c" args="(PageValue page_begin, PageValue page_end, RowValue row_begin, RowValue row_end, ColValue col_begin, ColValue col_end)" -->
+ </td><td class="memItemRight" valign="bottom"><b>blocked_range3d</b> (PageValue page_begin, PageValue page_end, RowValue row_begin, RowValue row_end, ColValue col_begin, ColValue col_end)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0b4dcf5b059634b95c1671086bf6d4ff"></a><!-- doxytag: member="tbb::blocked_range3d::blocked_range3d" ref="0b4dcf5b059634b95c1671086bf6d4ff" args="(PageValue page_begin, PageValue page_end, typename page_range_type::size_type page_grainsize, RowValue row_begin, RowValue row_end, typename row_range_type::size_type row_grainsize, ColValue col_begin, ColValue col_end, typename col_range_type::size_type col_gr [...]
+ </td><td class="memItemRight" valign="bottom"><b>blocked_range3d</b> (PageValue page_begin, PageValue page_end, typename <a class="el" href="a00097.html#f5707bffea38eee5c9680f37358afb8e">page_range_type::size_type</a> page_grainsize, RowValue row_begin, RowValue row_end, typename <a class="el" href="a00097.html#f5707bffea38eee5c9680f37358afb8e">row_range_type::size_type</a> row_grainsize, ColValue col_begin, ColValue col_end, typename <a class="el" href="a00097.html#f5707bffea38eee [...]
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="356860e1c977d91711e8216bd55c0b25"></a><!-- doxytag: member="tbb::blocked_range3d::empty" ref="356860e1c977d91711e8216bd55c0b25" args="() const " -->
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00099.html#356860e1c977d91711e8216bd55c0b25">empty</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">True if range is empty. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="39d69191721c488e737ae5d9c5336b9c"></a><!-- doxytag: member="tbb::blocked_range3d::is_divisible" ref="39d69191721c488e737ae5d9c5336b9c" args="() const " -->
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00099.html#39d69191721c488e737ae5d9c5336b9c">is_divisible</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">True if range is divisible into two pieces. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0d6f0085c9fb364ddcbc2197da6c251"></a><!-- doxytag: member="tbb::blocked_range3d::blocked_range3d" ref="a0d6f0085c9fb364ddcbc2197da6c251" args="(blocked_range3d &r, split)" -->
+ </td><td class="memItemRight" valign="bottom"><b>blocked_range3d</b> (<a class="el" href="a00099.html">blocked_range3d</a> &r, <a class="el" href="a00131.html">split</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cf971430aa12361d3ed245344b7c6764"></a><!-- doxytag: member="tbb::blocked_range3d::pages" ref="cf971430aa12361d3ed245344b7c6764" args="() const " -->
+const <a class="el" href="a00097.html">page_range_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00099.html#cf971430aa12361d3ed245344b7c6764">pages</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The pages of the iteration space. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1584623e59ff32a8aa82006827508be4"></a><!-- doxytag: member="tbb::blocked_range3d::rows" ref="1584623e59ff32a8aa82006827508be4" args="() const " -->
+const <a class="el" href="a00097.html">row_range_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00099.html#1584623e59ff32a8aa82006827508be4">rows</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The rows of the iteration space. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3336ba9480fd6c43e158f9beb024c050"></a><!-- doxytag: member="tbb::blocked_range3d::cols" ref="3336ba9480fd6c43e158f9beb024c050" args="() const " -->
+const <a class="el" href="a00097.html">col_range_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00099.html#3336ba9480fd6c43e158f9beb024c050">cols</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The columns of the iteration space. <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template<typename PageValue, typename RowValue = PageValue, typename ColValue = RowValue><br>
+ class tbb::blocked_range3d< PageValue, RowValue, ColValue ></h3>
+
+A 3-dimensional range that models the Range concept. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00202.html">blocked_range3d.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00100.html b/doc/html/a00100.html
index bd43d90..d43e21e 100644
--- a/doc/html/a00100.html
+++ b/doc/html/a00100.html
@@ -1,19 +1,109 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::cache_aligned_allocator< T > Class Template Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::queuing_rw_mutex Member List</h1>This is the complete list of members for <a class="el" href="a00240.html">tbb::queuing_rw_mutex</a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>internal_construct</b>() (defined in <a class="el" href="a00240.html">tbb::queuing_rw_mutex</a>)</td><td><a class="el" href="a00240.html">tbb::queuing_rw_mutex</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>is_fair_mutex</b> (defined in <a class="el" href="a00240.html">tbb::queuing_rw_mutex</a>)</td><td><a class="el" href="a00240.html">tbb::queuing_rw_mutex</a></td><td><code> [static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>is_recursive_mutex</b> (defined in <a class="el" href="a00240.html">tbb::queuing_rw_mutex</a>)</td><td><a class="el" href="a00240.html">tbb::queuing_rw_mutex</a></td><td><code> [static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>is_rw_mutex</b> (defined in <a class="el" href="a00240.html">tbb::queuing_rw_mutex</a>)</td><td><a class="el" href="a00240.html">tbb::queuing_rw_mutex</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00240.html#a0">queuing_rw_mutex</a>()</td><td><a class="el" href="a00240.html">tbb::queuing_rw_mutex</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>scoped_lock</b> (defined in <a class="el" href="a00240.html">tbb::queuing_rw_mutex</a>)</td><td><a class="el" href="a00240.html">tbb::queuing_rw_mutex</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00240.html#a1">~queuing_rw_mutex</a>()</td><td><a class="el" href="a00240.html">tbb::queuing_rw_mutex</a></td><td><code> [inline]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00100.html">cache_aligned_allocator</a></div>
+<h1>tbb::cache_aligned_allocator< T > Class Template Reference<br>
+<small>
+[<a class="el" href="a00185.html">Memory Allocation</a>]</small>
+</h1><!-- doxytag: class="tbb::cache_aligned_allocator" -->Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00203.html">cache_aligned_allocator.h</a>></code>
+<p>
+<a href="a00008.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8f7128452e3c43b5bf1801b61d971d17"></a><!-- doxytag: member="tbb::cache_aligned_allocator::value_type" ref="8f7128452e3c43b5bf1801b61d971d17" args="" -->
+typedef internal::allocator_type<<br>
+ T >::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b23ef1d76c34fe1c2ebbb2f3df5b5676"></a><!-- doxytag: member="tbb::cache_aligned_allocator::pointer" ref="b23ef1d76c34fe1c2ebbb2f3df5b5676" args="" -->
+typedef value_type * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d15affd67eafcabbd12bd1cd07372994"></a><!-- doxytag: member="tbb::cache_aligned_allocator::const_pointer" ref="d15affd67eafcabbd12bd1cd07372994" args="" -->
+typedef const value_type * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e8c4e0d5867a07b1cea21d4fca2998c8"></a><!-- doxytag: member="tbb::cache_aligned_allocator::reference" ref="e8c4e0d5867a07b1cea21d4fca2998c8" args="" -->
+typedef value_type & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d3d77a39f0852c42f80c6505843f450c"></a><!-- doxytag: member="tbb::cache_aligned_allocator::const_reference" ref="d3d77a39f0852c42f80c6505843f450c" args="" -->
+typedef const value_type & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="90ca6a2979ebee466be771f4c2f9337e"></a><!-- doxytag: member="tbb::cache_aligned_allocator::size_type" ref="90ca6a2979ebee466be771f4c2f9337e" args="" -->
+typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b73eba293d042333f343d025c26751a4"></a><!-- doxytag: member="tbb::cache_aligned_allocator::difference_type" ref="b73eba293d042333f343d025c26751a4" args="" -->
+typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
+
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="74ccd00a29171ddd61a4ea88cfa49c32"></a><!-- doxytag: member="tbb::cache_aligned_allocator::cache_aligned_allocator" ref="74ccd00a29171ddd61a4ea88cfa49c32" args="(const cache_aligned_allocator &)" -->
+ </td><td class="memItemRight" valign="bottom"><b>cache_aligned_allocator</b> (const <a class="el" href="a00100.html">cache_aligned_allocator</a> &)  throw ()</td></tr>
+
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="de57e731c36a51bf39b458c9b8adee58"></a><!-- doxytag: member="tbb::cache_aligned_allocator::cache_aligned_allocator" ref="de57e731c36a51bf39b458c9b8adee58" args="(const cache_aligned_allocator< U > &)" -->
+template<typename U> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>cache_aligned_allocator</b> (const <a class="el" href="a00100.html">cache_aligned_allocator</a>< U > &)  throw ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="023e0cc7cf6ebde69e1f2c12182eb12b"></a><!-- doxytag: member="tbb::cache_aligned_allocator::address" ref="023e0cc7cf6ebde69e1f2c12182eb12b" args="(reference x) const " -->
+pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (reference x) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="db4f7613b1de12d1e79285c15636cf3b"></a><!-- doxytag: member="tbb::cache_aligned_allocator::address" ref="db4f7613b1de12d1e79285c15636cf3b" args="(const_reference x) const " -->
+const_pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (const_reference x) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4cdeea67af6c1fcd8f1d5e9c4cab61e8"></a><!-- doxytag: member="tbb::cache_aligned_allocator::allocate" ref="4cdeea67af6c1fcd8f1d5e9c4cab61e8" args="(size_type n, const void *hint=0)" -->
+pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00100.html#4cdeea67af6c1fcd8f1d5e9c4cab61e8">allocate</a> (size_type n, const void *hint=0)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Allocate space for n objects, starting on a cache/sector line. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3d4eadf188f7d85d3805ae534e0b8e1c"></a><!-- doxytag: member="tbb::cache_aligned_allocator::deallocate" ref="3d4eadf188f7d85d3805ae534e0b8e1c" args="(pointer p, size_type)" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00100.html#3d4eadf188f7d85d3805ae534e0b8e1c">deallocate</a> (pointer p, size_type)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Free block of memory that starts on a cache line. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fb23b687b4c0429dab4c7f8017266cf0"></a><!-- doxytag: member="tbb::cache_aligned_allocator::max_size" ref="fb23b687b4c0429dab4c7f8017266cf0" args="() const " -->
+size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00100.html#fb23b687b4c0429dab4c7f8017266cf0">max_size</a> () const   throw ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Largest value for which method allocate might succeed. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="958ee8745c86c275bfc9533af565e017"></a><!-- doxytag: member="tbb::cache_aligned_allocator::construct" ref="958ee8745c86c275bfc9533af565e017" args="(pointer p, const value_type &value)" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00100.html#958ee8745c86c275bfc9533af565e017">construct</a> (pointer p, const value_type &value)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy-construct value at location pointed to by p. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cd298895a4f1654b5149ec84b591ecb5"></a><!-- doxytag: member="tbb::cache_aligned_allocator::destroy" ref="cd298895a4f1654b5149ec84b591ecb5" args="(pointer p)" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00100.html#cd298895a4f1654b5149ec84b591ecb5">destroy</a> (pointer p)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroy value at location pointed to by p. <br></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>rebind</b></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template<typename T><br>
+ class tbb::cache_aligned_allocator< T ></h3>
+
+Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. 
+<p>
+The members are ordered the same way they are in section 20.4.1 of the ISO C++ standard. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00203.html">cache_aligned_allocator.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00101.html b/doc/html/a00101.html
index baa3d16..d3c1281 100644
--- a/doc/html/a00101.html
+++ b/doc/html/a00101.html
@@ -1,21 +1,60 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::cache_aligned_allocator< void > Class Template Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::queuing_rw_mutex::scoped_lock Member List</h1>This is the complete list of members for <a class="el" href="a00241.html">tbb::queuing_rw_mutex::scoped_lock</a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00241.html#a3">acquire</a>(queuing_rw_mutex &m, bool write=true)</td><td><a class="el" href="a00241.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00241.html#a7">downgrade_to_reader</a>()</td><td><a class="el" href="a00241.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00230.html#a0">no_copy</a>()</td><td><a class="el" href="a00230.html">tbb::internal::no_copy</a></td><td><code> [inline, private]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00241.html#a5">release</a>()</td><td><a class="el" href="a00241.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00241.html#a0">scoped_lock</a>()</td><td><a class="el" href="a00241.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00241.html#a1">scoped_lock</a>(queuing_rw_mutex &m, bool write=true)</td><td><a class="el" href="a00241.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00241.html#a4">try_acquire</a>(queuing_rw_mutex &m, bool write=true)</td><td><a class="el" href="a00241.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00241.html#a6">upgrade_to_writer</a>()</td><td><a class="el" href="a00241.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00241.html#a2">~scoped_lock</a>()</td><td><a class="el" href="a00241.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00101.html">cache_aligned_allocator< void ></a></div>
+<h1>tbb::cache_aligned_allocator< void > Class Template Reference<br>
+<small>
+[<a class="el" href="a00185.html">Memory Allocation</a>]</small>
+</h1><!-- doxytag: class="tbb::cache_aligned_allocator< void >" -->Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00203.html">cache_aligned_allocator.h</a>></code>
+<p>
+<a href="a00010.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ce89776145998f0685a767b4f195272d"></a><!-- doxytag: member="tbb::cache_aligned_allocator< void >::pointer" ref="ce89776145998f0685a767b4f195272d" args="" -->
+typedef void * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4431fbbe1a8cfeb19c48ad0072078f45"></a><!-- doxytag: member="tbb::cache_aligned_allocator< void >::const_pointer" ref="4431fbbe1a8cfeb19c48ad0072078f45" args="" -->
+typedef const void * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2ab296f4ecdd75f8e193ff92004a697d"></a><!-- doxytag: member="tbb::cache_aligned_allocator< void >::value_type" ref="2ab296f4ecdd75f8e193ff92004a697d" args="" -->
+typedef void </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>rebind</b></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template<><br>
+ class tbb::cache_aligned_allocator< void ></h3>
+
+Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00203.html">cache_aligned_allocator.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00102.html b/doc/html/a00102.html
index df0d9c7..7ff3e8f 100644
--- a/doc/html/a00102.html
+++ b/doc/html/a00102.html
@@ -1,18 +1,143 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::captured_exception Class Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::recursive_mutex Member List</h1>This is the complete list of members for <a class="el" href="a00245.html">tbb::recursive_mutex</a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>is_fair_mutex</b> (defined in <a class="el" href="a00245.html">tbb::recursive_mutex</a>)</td><td><a class="el" href="a00245.html">tbb::recursive_mutex</a></td><td><code> [static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>is_recursive_mutex</b> (defined in <a class="el" href="a00245.html">tbb::recursive_mutex</a>)</td><td><a class="el" href="a00245.html">tbb::recursive_mutex</a></td><td><code> [static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>is_rw_mutex</b> (defined in <a class="el" href="a00245.html">tbb::recursive_mutex</a>)</td><td><a class="el" href="a00245.html">tbb::recursive_mutex</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00245.html#a0">recursive_mutex</a>()</td><td><a class="el" href="a00245.html">tbb::recursive_mutex</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>scoped_lock</b> (defined in <a class="el" href="a00245.html">tbb::recursive_mutex</a>)</td><td><a class="el" href="a00245.html">tbb::recursive_mutex</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>~recursive_mutex</b>() (defined in <a class="el" href="a00245.html">tbb::recursive_mutex</a>)</td><td><a class="el" href="a00245.html">tbb::recursive_mutex</a></td><td><code> [inline]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00102.html">captured_exception</a></div>
+<h1>tbb::captured_exception Class Reference</h1><!-- doxytag: class="tbb::captured_exception" --><!-- doxytag: inherits="tbb::tbb_exception" -->This class is used by TBB to propagate information about unhandled exceptions into the root thread.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00289.html">tbb_exception.h</a>></code>
+<p>
+Inherits <a class="el" href="a00138.html">tbb::tbb_exception</a>.
+<p>
+Inheritance diagram for tbb::captured_exception:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00068.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b50d9716bcdd281df574ec758a3952f9"></a><!-- doxytag: member="tbb::captured_exception::captured_exception" ref="b50d9716bcdd281df574ec758a3952f9" args="(const captured_exception &src)" -->
+ </td><td class="memItemRight" valign="bottom"><b>captured_exception</b> (const <a class="el" href="a00102.html">captured_exception</a> &src)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2ac89d457be837a19a3d505050f3a4e8"></a><!-- doxytag: member="tbb::captured_exception::captured_exception" ref="2ac89d457be837a19a3d505050f3a4e8" args="(const char *name, const char *info)" -->
+ </td><td class="memItemRight" valign="bottom"><b>captured_exception</b> (const char *name, const char *info)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e95b8eb99ec9dea22934ac528a08654c"></a><!-- doxytag: member="tbb::captured_exception::operator=" ref="e95b8eb99ec9dea22934ac528a08654c" args="(const captured_exception &src)" -->
+<a class="el" href="a00102.html">captured_exception</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00102.html">captured_exception</a> &src)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00102.html">captured_exception</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00102.html#df6bbb78a362fe862a341e81e2999810">move</a> ()  throw ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates and returns pointer to the deep copy of this exception object.  <a href="#df6bbb78a362fe862a341e81e2999810"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00102.html#667812a82f1525e968c52593dea0ef4c">destroy</a> ()  throw ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroys objects created by the <a class="el" href="a00102.html#df6bbb78a362fe862a341e81e2999810">move()</a> method.  <a href="#667812a82f1525e968c52593dea0ef4c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00102.html#2dd1be66ab32fa27e0ddef5707fa67ef">throw_self</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Throws this exception object.  <a href="#2dd1be66ab32fa27e0ddef5707fa67ef"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5af82fd677449c5ca727fa1d7e16f9f5"></a><!-- doxytag: member="tbb::captured_exception::name" ref="5af82fd677449c5ca727fa1d7e16f9f5" args="() const " -->
+const char *__TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00102.html#5af82fd677449c5ca727fa1d7e16f9f5">name</a> () const   throw ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns RTTI name of the originally intercepted exception. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6b5988ef74a1fe2a58998d110b3633e0"></a><!-- doxytag: member="tbb::captured_exception::what" ref="6b5988ef74a1fe2a58998d110b3633e0" args="() const " -->
+const char *__TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00102.html#6b5988ef74a1fe2a58998d110b3633e0">what</a> () const   throw ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the result of originally intercepted exception's <a class="el" href="a00102.html#6b5988ef74a1fe2a58998d110b3633e0">what()</a> method. <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This class is used by TBB to propagate information about unhandled exceptions into the root thread. 
+<p>
+Exception of this type is thrown by TBB in the root thread (thread that started a parallel algorithm ) if an unhandled exception was intercepted during the algorithm execution in one of the workers. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00138.html">tbb::tbb_exception</a> </dd></dl>
+
+<p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="667812a82f1525e968c52593dea0ef4c"></a><!-- doxytag: member="tbb::captured_exception::destroy" ref="667812a82f1525e968c52593dea0ef4c" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::captured_exception::destroy           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%">  throw ()<code> [virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Destroys objects created by the <a class="el" href="a00102.html#df6bbb78a362fe862a341e81e2999810">move()</a> method. 
+<p>
+Frees memory and calls destructor for this exception object. Can and must be used only on objects created by the move method. 
+<p>
+Implements <a class="el" href="a00138.html#66c94938eca8bf88b76f3eccaaf215d8">tbb::tbb_exception</a>.
+</div>
+</div><p>
+<a class="anchor" name="df6bbb78a362fe862a341e81e2999810"></a><!-- doxytag: member="tbb::captured_exception::move" ref="df6bbb78a362fe862a341e81e2999810" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="a00102.html">captured_exception</a>* tbb::captured_exception::move           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%">  throw ()<code> [virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Creates and returns pointer to the deep copy of this exception object. 
+<p>
+Move semantics is allowed. 
+<p>
+Implements <a class="el" href="a00138.html#3e3482bf264d4ca4dde046cd9c02c766">tbb::tbb_exception</a>.
+</div>
+</div><p>
+<a class="anchor" name="2dd1be66ab32fa27e0ddef5707fa67ef"></a><!-- doxytag: member="tbb::captured_exception::throw_self" ref="2dd1be66ab32fa27e0ddef5707fa67ef" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::captured_exception::throw_self           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline, virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Throws this exception object. 
+<p>
+Make sure that if you have several levels of derivation from this interface you implement or override this method on the most derived level. The implementation is as simple as "throw *this;". Failure to do this will result in exception of a base class type being thrown. 
+<p>
+Implements <a class="el" href="a00138.html#8588e07fa49692f4d734e4f2e4f048f4">tbb::tbb_exception</a>.
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00289.html">tbb_exception.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00103.html b/doc/html/a00103.html
index e687d54..8036515 100644
--- a/doc/html/a00103.html
+++ b/doc/html/a00103.html
@@ -1,19 +1,568 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::concurrent_hash_map< Key, T, HashCompare, A > Class Template Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::recursive_mutex::scoped_lock Member List</h1>This is the complete list of members for <a class="el" href="a00246.html">tbb::recursive_mutex::scoped_lock</a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00246.html#a3">acquire</a>(recursive_mutex &mutex)</td><td><a class="el" href="a00246.html">tbb::recursive_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00230.html#a0">no_copy</a>()</td><td><a class="el" href="a00230.html">tbb::internal::no_copy</a></td><td><code> [inline, private]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00246.html#a5">release</a>()</td><td><a class="el" href="a00246.html">tbb::recursive_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00246.html#a0">scoped_lock</a>()</td><td><a class="el" href="a00246.html">tbb::recursive_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00246.html#a1">scoped_lock</a>(recursive_mutex &mutex)</td><td><a class="el" href="a00246.html">tbb::recursive_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00246.html#a4">try_acquire</a>(recursive_mutex &mutex)</td><td><a class="el" href="a00246.html">tbb::recursive_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00246.html#a2">~scoped_lock</a>()</td><td><a class="el" href="a00246.html">tbb::recursive_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00103.html">concurrent_hash_map</a></div>
+<h1>tbb::concurrent_hash_map< Key, T, HashCompare, A > Class Template Reference<br>
+<small>
+[<a class="el" href="a00184.html">Containers</a>]</small>
+</h1><!-- doxytag: class="tbb::concurrent_hash_map" -->Unordered map from Key to T.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00205.html">concurrent_hash_map.h</a>></code>
+<p>
+<a href="a00013.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1d038ec60c1c2ceed0c72b17cbe0bea9"></a><!-- doxytag: member="tbb::concurrent_hash_map::key_type" ref="1d038ec60c1c2ceed0c72b17cbe0bea9" args="" -->
+typedef Key </td><td class="memItemRight" valign="bottom"><b>key_type</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a6fbae1d8b51f862e56dc56091256eed"></a><!-- doxytag: member="tbb::concurrent_hash_map::mapped_type" ref="a6fbae1d8b51f862e56dc56091256eed" args="" -->
+typedef T </td><td class="memItemRight" valign="bottom"><b>mapped_type</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b252d006d9ece4104b3c95b633471881"></a><!-- doxytag: member="tbb::concurrent_hash_map::value_type" ref="b252d006d9ece4104b3c95b633471881" args="" -->
+typedef std::pair< const Key,<br>
+ T > </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f598b6335e5bab3e48a30216476f62d0"></a><!-- doxytag: member="tbb::concurrent_hash_map::size_type" ref="f598b6335e5bab3e48a30216476f62d0" args="" -->
+typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="df1e3c8848b8d59152f083bc5b00e567"></a><!-- doxytag: member="tbb::concurrent_hash_map::difference_type" ref="df1e3c8848b8d59152f083bc5b00e567" args="" -->
+typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9c05a3e247f0cee405d4b805a1e6a882"></a><!-- doxytag: member="tbb::concurrent_hash_map::pointer" ref="9c05a3e247f0cee405d4b805a1e6a882" args="" -->
+typedef value_type * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4c9f52df29f1d27ade53567eb77b1677"></a><!-- doxytag: member="tbb::concurrent_hash_map::const_pointer" ref="4c9f52df29f1d27ade53567eb77b1677" args="" -->
+typedef const value_type * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ab5233c4b1dc7b7002f1316002a85c7c"></a><!-- doxytag: member="tbb::concurrent_hash_map::reference" ref="ab5233c4b1dc7b7002f1316002a85c7c" args="" -->
+typedef value_type & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8bfa9d924148cba008d6a18cebee391e"></a><!-- doxytag: member="tbb::concurrent_hash_map::const_reference" ref="8bfa9d924148cba008d6a18cebee391e" args="" -->
+typedef const value_type & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3dcd58d51c60c9c63a652aa0ce6230bb"></a><!-- doxytag: member="tbb::concurrent_hash_map::iterator" ref="3dcd58d51c60c9c63a652aa0ce6230bb" args="" -->
+typedef internal::hash_map_iterator<<br>
+ <a class="el" href="a00103.html">concurrent_hash_map</a>, value_type > </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="48abcd52da831debc5ece5c4cbd48acd"></a><!-- doxytag: member="tbb::concurrent_hash_map::const_iterator" ref="48abcd52da831debc5ece5c4cbd48acd" args="" -->
+typedef internal::hash_map_iterator<<br>
+ <a class="el" href="a00103.html">concurrent_hash_map</a>, const <br>
+value_type > </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="31e78c64b24e4d917f4ac7097a2f6f15"></a><!-- doxytag: member="tbb::concurrent_hash_map::range_type" ref="31e78c64b24e4d917f4ac7097a2f6f15" args="" -->
+typedef internal::hash_map_range<<br>
+ iterator > </td><td class="memItemRight" valign="bottom"><b>range_type</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d16b749ebee9da332aa40122de0378ba"></a><!-- doxytag: member="tbb::concurrent_hash_map::const_range_type" ref="d16b749ebee9da332aa40122de0378ba" args="" -->
+typedef internal::hash_map_range<<br>
+ const_iterator > </td><td class="memItemRight" valign="bottom"><b>const_range_type</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="110fe1ce2586d68bf7366ee525f9306b"></a><!-- doxytag: member="tbb::concurrent_hash_map::allocator_type" ref="110fe1ce2586d68bf7366ee525f9306b" args="" -->
+typedef A </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
+
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6a65733441a84e3581491eb49e305cf8"></a><!-- doxytag: member="tbb::concurrent_hash_map::concurrent_hash_map" ref="6a65733441a84e3581491eb49e305cf8" args="(const allocator_type &a=allocator_type())" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html#6a65733441a84e3581491eb49e305cf8">concurrent_hash_map</a> (const allocator_type &a=allocator_type())</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct empty table. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6af4e2b7d2434bc72a645b7e5eb3959f"></a><!-- doxytag: member="tbb::concurrent_hash_map::concurrent_hash_map" ref="6af4e2b7d2434bc72a645b7e5eb3959f" args="(const concurrent_hash_map &table, const allocator_type &a=allocator_type())" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html#6af4e2b7d2434bc72a645b7e5eb3959f">concurrent_hash_map</a> (const <a class="el" href="a00103.html">concurrent_hash_map</a> &table, const allocator_type &a=allocator_type())</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="51cccc7b42e83884462dcadede034822"></a><!-- doxytag: member="tbb::concurrent_hash_map::concurrent_hash_map" ref="51cccc7b42e83884462dcadede034822" args="(I first, I last, const allocator_type &a=allocator_type())" -->
+template<typename I> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00103.html#51cccc7b42e83884462dcadede034822">concurrent_hash_map</a> (I first, I last, const allocator_type &a=allocator_type())</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construction with copying iteration range and given allocator instance. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d70ad33f97ce38d004620580bb1b09ba"></a><!-- doxytag: member="tbb::concurrent_hash_map::operator=" ref="d70ad33f97ce38d004620580bb1b09ba" args="(const concurrent_hash_map &table)" -->
+<a class="el" href="a00103.html">concurrent_hash_map</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html#d70ad33f97ce38d004620580bb1b09ba">operator=</a> (const <a class="el" href="a00103.html">concurrent_hash_map</a> &table)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Assignment. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="36bcd50fd5383f3682032323b2d74333"></a><!-- doxytag: member="tbb::concurrent_hash_map::clear" ref="36bcd50fd5383f3682032323b2d74333" args="()" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html#36bcd50fd5383f3682032323b2d74333">clear</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Clear table. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5a683e8db50438b9976e46e7d4f60e65"></a><!-- doxytag: member="tbb::concurrent_hash_map::~concurrent_hash_map" ref="5a683e8db50438b9976e46e7d4f60e65" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html#5a683e8db50438b9976e46e7d4f60e65">~concurrent_hash_map</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Clear table and destroy it. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b1fe150921b1fca793626f9d3c1e7ae6"></a><!-- doxytag: member="tbb::concurrent_hash_map::range" ref="b1fe150921b1fca793626f9d3c1e7ae6" args="(size_type grainsize=1)" -->
+range_type </td><td class="memItemRight" valign="bottom"><b>range</b> (size_type grainsize=1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4020e7960c644259dd48d0348b83333f"></a><!-- doxytag: member="tbb::concurrent_hash_map::range" ref="4020e7960c644259dd48d0348b83333f" args="(size_type grainsize=1) const " -->
+const_range_type </td><td class="memItemRight" valign="bottom"><b>range</b> (size_type grainsize=1) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fb5754d1e138dfe66c6aaf9bce744c9d"></a><!-- doxytag: member="tbb::concurrent_hash_map::begin" ref="fb5754d1e138dfe66c6aaf9bce744c9d" args="()" -->
+iterator </td><td class="memItemRight" valign="bottom"><b>begin</b> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cf655ff36a5aab4c4d2f26f89394ef0d"></a><!-- doxytag: member="tbb::concurrent_hash_map::end" ref="cf655ff36a5aab4c4d2f26f89394ef0d" args="()" -->
+iterator </td><td class="memItemRight" valign="bottom"><b>end</b> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a8e1ea009f96b7034598caca4fe09103"></a><!-- doxytag: member="tbb::concurrent_hash_map::begin" ref="a8e1ea009f96b7034598caca4fe09103" args="() const " -->
+const_iterator </td><td class="memItemRight" valign="bottom"><b>begin</b> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1128d0cc01e85ea56ca7ef99ef4a28db"></a><!-- doxytag: member="tbb::concurrent_hash_map::end" ref="1128d0cc01e85ea56ca7ef99ef4a28db" args="() const " -->
+const_iterator </td><td class="memItemRight" valign="bottom"><b>end</b> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0ee2e81844e9afc18f91f11609fe9a2b"></a><!-- doxytag: member="tbb::concurrent_hash_map::equal_range" ref="0ee2e81844e9afc18f91f11609fe9a2b" args="(const Key &key)" -->
+std::pair< iterator, iterator > </td><td class="memItemRight" valign="bottom"><b>equal_range</b> (const Key &key)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2a017126fdc03ad42e37f80f1c68c5a7"></a><!-- doxytag: member="tbb::concurrent_hash_map::equal_range" ref="2a017126fdc03ad42e37f80f1c68c5a7" args="(const Key &key) const " -->
+std::pair< const_iterator,<br>
+ const_iterator > </td><td class="memItemRight" valign="bottom"><b>equal_range</b> (const Key &key) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html#75bb57a153952ffadfcf2e4c73deabb1">size</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Number of items in table.  <a href="#75bb57a153952ffadfcf2e4c73deabb1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b9599dd587892366ed31dea23e5c5837"></a><!-- doxytag: member="tbb::concurrent_hash_map::empty" ref="b9599dd587892366ed31dea23e5c5837" args="() const " -->
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html#b9599dd587892366ed31dea23e5c5837">empty</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">True if <a class="el" href="a00103.html#75bb57a153952ffadfcf2e4c73deabb1">size()</a>==0. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="62d1fdc2c4d37d84b0dca1cd45f1cf1f"></a><!-- doxytag: member="tbb::concurrent_hash_map::max_size" ref="62d1fdc2c4d37d84b0dca1cd45f1cf1f" args="() const " -->
+size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html#62d1fdc2c4d37d84b0dca1cd45f1cf1f">max_size</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Upper bound on size. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="14255f38f7b10bb892b233fce283fbce"></a><!-- doxytag: member="tbb::concurrent_hash_map::get_allocator" ref="14255f38f7b10bb892b233fce283fbce" args="() const " -->
+allocator_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html#14255f38f7b10bb892b233fce283fbce">get_allocator</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">return allocator object <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="74990f452286f35ad6aa08cab6c5a8cd"></a><!-- doxytag: member="tbb::concurrent_hash_map::swap" ref="74990f452286f35ad6aa08cab6c5a8cd" args="(concurrent_hash_map &table)" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html#74990f452286f35ad6aa08cab6c5a8cd">swap</a> (<a class="el" href="a00103.html">concurrent_hash_map</a> &table)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">swap two instances <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="345daf26f2f7e2b4d93382fea80b3a7f"></a><!-- doxytag: member="tbb::concurrent_hash_map::count" ref="345daf26f2f7e2b4d93382fea80b3a7f" args="(const Key &key) const " -->
+size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html#345daf26f2f7e2b4d93382fea80b3a7f">count</a> (const Key &key) const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return count of items (0 or 1). <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html#ae4b9cb9aa025de8251f90f5f21e9e95">find</a> (<a class="el" href="a00105.html">const_accessor</a> &result, const Key &key) const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find item and acquire a read lock on the item.  <a href="#ae4b9cb9aa025de8251f90f5f21e9e95"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html#68a6bd5b8a0bc2d5066e5eb175fd5ba9">find</a> (<a class="el" href="a00104.html">accessor</a> &result, const Key &key)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find item and acquire a write lock on the item.  <a href="#68a6bd5b8a0bc2d5066e5eb175fd5ba9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html#2c10a645a8b40c6438c2bb119a61e93b">insert</a> (<a class="el" href="a00105.html">const_accessor</a> &result, const Key &key)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Insert item (if not already present) and acquire a read lock on the item.  <a href="#2c10a645a8b40c6438c2bb119a61e93b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html#da381dd244a7dbad494e1e60743b5afa">insert</a> (<a class="el" href="a00104.html">accessor</a> &result, const Key &key)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Insert item (if not already present) and acquire a write lock on the item.  <a href="#da381dd244a7dbad494e1e60743b5afa"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html#7fa987ae247a894ce9f1ca097a919fd4">insert</a> (<a class="el" href="a00105.html">const_accessor</a> &result, const value_type &value)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Insert item by copying if there is no such key present already and acquire a read lock on the item.  <a href="#7fa987ae247a894ce9f1ca097a919fd4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html#2182c693d5898106675b76b443812b47">insert</a> (<a class="el" href="a00104.html">accessor</a> &result, const value_type &value)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Insert item by copying if there is no such key present already and acquire a write lock on the item.  <a href="#2182c693d5898106675b76b443812b47"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html#70017dbe0ebbe8c83b9740cd54a6b7e0">insert</a> (const value_type &value)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Insert item by copying if there is no such key present already.  <a href="#70017dbe0ebbe8c83b9740cd54a6b7e0"></a><br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="06a95a56a40fcbdf3897051d22aaab19"></a><!-- doxytag: member="tbb::concurrent_hash_map::insert" ref="06a95a56a40fcbdf3897051d22aaab19" args="(I first, I last)" -->
+template<typename I> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00103.html#06a95a56a40fcbdf3897051d22aaab19">insert</a> (I first, I last)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Insert range [first, last). <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html#58df7a1e4373c55eb4c2fa9dc69516b1">erase</a> (const Key &key)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Erase item.  <a href="#58df7a1e4373c55eb4c2fa9dc69516b1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html#cc090be8a6c0a3765360ec363cf2474e">erase</a> (<a class="el" href="a00105.html">const_accessor</a> &item_accessor)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Erase item by <a class="el" href="a00105.html">const_accessor</a>.  <a href="#cc090be8a6c0a3765360ec363cf2474e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html#b5bd8c8f49f8d0e72afedca53caa6b15">erase</a> (<a class="el" href="a00104.html">accessor</a> &item_accessor)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Erase item by accessor.  <a href="#b5bd8c8f49f8d0e72afedca53caa6b15"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e24acd2f6849db3377a3942807639758"></a><!-- doxytag: member="tbb::concurrent_hash_map::internal::hash_map_iterator" ref="e24acd2f6849db3377a3942807639758" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>internal::hash_map_iterator</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c94f21746c8902f7e0b5115a8d4da1d2"></a><!-- doxytag: member="tbb::concurrent_hash_map::internal::hash_map_range" ref="c94f21746c8902f7e0b5115a8d4da1d2" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>internal::hash_map_range</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9dc77e04783fa7a1f011a855aaef4b4d"></a><!-- doxytag: member="tbb::concurrent_hash_map::node" ref="9dc77e04783fa7a1f011a855aaef4b4d" args="" -->
+struct </td><td class="memItemRight" valign="bottom"><b>node</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2c0028dfa75a6baa14007355ab1ef7fc"></a><!-- doxytag: member="tbb::concurrent_hash_map::const_accessor" ref="2c0028dfa75a6baa14007355ab1ef7fc" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>const_accessor</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b5c8768cb80985347e4880fd00e50995"></a><!-- doxytag: member="tbb::concurrent_hash_map::chain" ref="b5c8768cb80985347e4880fd00e50995" args="" -->
+struct </td><td class="memItemRight" valign="bottom"><b>chain</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cf6a83ad8a91ce6aafcdf46300746c09"></a><!-- doxytag: member="tbb::concurrent_hash_map::segment" ref="cf6a83ad8a91ce6aafcdf46300746c09" args="" -->
+struct </td><td class="memItemRight" valign="bottom"><b>segment</b></td></tr>
+
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00104.html">accessor</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Allows write access to elements and combines data access, locking, and garbage collection.  <a href="a00104.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>chain</b></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">A linked-list of nodes. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00105.html">const_accessor</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Combines data access, locking, and garbage collection.  <a href="a00105.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>node</b></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Basic unit of storage used in chain. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>segment</b></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Segment of the table. <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template<typename Key, typename T, typename HashCompare, typename A><br>
+ class tbb::concurrent_hash_map< Key, T, HashCompare, A ></h3>
+
+Unordered map from Key to T. 
+<p>
+<a class="el" href="a00103.html">concurrent_hash_map</a> is associative container with concurrent access.<p>
+<dl compact><dt><b>Compatibility</b></dt><dd>The class meets all Container Requirements from C++ Standard (See ISO/IEC 14882:2003(E), clause 23.1).</dd></dl>
+<dl compact><dt><b>Exception Safety</b></dt><dd><ul>
+<li>Hash function is not permitted to throw an exception. User-defined types Key and T are forbidden from throwing an exception in destructors.</li><li>If exception happens during <a class="el" href="a00103.html#2c10a645a8b40c6438c2bb119a61e93b">insert()</a> operations, it has no effect (unless exception raised by HashCompare::hash() function during grow_segment).</li><li>If exception happens during <a class="el" href="a00103.html#d70ad33f97ce38d004620580bb1b09ba">operator=()</a> operati [...]
+</dd></dl>
+<dl compact><dt><b>Changes since TBB 2.0</b></dt><dd><ul>
+<li>Fixed exception-safety</li><li>Added template argument for allocator</li><li>Added allocator argument in constructors</li><li>Added constructor from a range of iterators</li><li>Added several new overloaded <a class="el" href="a00103.html#2c10a645a8b40c6438c2bb119a61e93b">insert()</a> methods</li><li>Added <a class="el" href="a00103.html#14255f38f7b10bb892b233fce283fbce">get_allocator()</a></li><li>Added <a class="el" href="a00103.html#74990f452286f35ad6aa08cab6c5a8cd">swap()</a></li [...]
+</dd></dl>
+
+<p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="b5bd8c8f49f8d0e72afedca53caa6b15"></a><!-- doxytag: member="tbb::concurrent_hash_map::erase" ref="b5bd8c8f49f8d0e72afedca53caa6b15" args="(accessor &item_accessor)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key, typename T, typename HashCompare, typename A> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00103.html">tbb::concurrent_hash_map</a>< Key, T, HashCompare, A >::erase           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00104.html">accessor</a> & </td>
+          <td class="paramname"> <em>item_accessor</em>          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Erase item by accessor. 
+<p>
+Return true if item was erased by particularly this call. 
+</div>
+</div><p>
+<a class="anchor" name="cc090be8a6c0a3765360ec363cf2474e"></a><!-- doxytag: member="tbb::concurrent_hash_map::erase" ref="cc090be8a6c0a3765360ec363cf2474e" args="(const_accessor &item_accessor)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key, typename T, typename HashCompare, typename A> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00103.html">tbb::concurrent_hash_map</a>< Key, T, HashCompare, A >::erase           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00105.html">const_accessor</a> & </td>
+          <td class="paramname"> <em>item_accessor</em>          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Erase item by <a class="el" href="a00105.html">const_accessor</a>. 
+<p>
+Return true if item was erased by particularly this call. 
+</div>
+</div><p>
+<a class="anchor" name="58df7a1e4373c55eb4c2fa9dc69516b1"></a><!-- doxytag: member="tbb::concurrent_hash_map::erase" ref="58df7a1e4373c55eb4c2fa9dc69516b1" args="(const Key &key)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key, typename T, typename HashCompare, typename A> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00103.html">tbb::concurrent_hash_map</a>< Key, T, HashCompare, A >::erase           </td>
+          <td>(</td>
+          <td class="paramtype">const Key & </td>
+          <td class="paramname"> <em>key</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Erase item. 
+<p>
+Return true if item was erased by particularly this call. 
+</div>
+</div><p>
+<a class="anchor" name="68a6bd5b8a0bc2d5066e5eb175fd5ba9"></a><!-- doxytag: member="tbb::concurrent_hash_map::find" ref="68a6bd5b8a0bc2d5066e5eb175fd5ba9" args="(accessor &result, const Key &key)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key, typename T, typename HashCompare, typename A> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00103.html">tbb::concurrent_hash_map</a>< Key, T, HashCompare, A >::find           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00104.html">accessor</a> & </td>
+          <td class="paramname"> <em>result</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Key & </td>
+          <td class="paramname"> <em>key</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Find item and acquire a write lock on the item. 
+<p>
+Return true if item is found, false otherwise. 
+</div>
+</div><p>
+<a class="anchor" name="ae4b9cb9aa025de8251f90f5f21e9e95"></a><!-- doxytag: member="tbb::concurrent_hash_map::find" ref="ae4b9cb9aa025de8251f90f5f21e9e95" args="(const_accessor &result, const Key &key) const " -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key, typename T, typename HashCompare, typename A> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00103.html">tbb::concurrent_hash_map</a>< Key, T, HashCompare, A >::find           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00105.html">const_accessor</a> & </td>
+          <td class="paramname"> <em>result</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Key & </td>
+          <td class="paramname"> <em>key</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"> const<code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Find item and acquire a read lock on the item. 
+<p>
+Return true if item is found, false otherwise. 
+</div>
+</div><p>
+<a class="anchor" name="70017dbe0ebbe8c83b9740cd54a6b7e0"></a><!-- doxytag: member="tbb::concurrent_hash_map::insert" ref="70017dbe0ebbe8c83b9740cd54a6b7e0" args="(const value_type &value)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key, typename T, typename HashCompare, typename A> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00103.html">tbb::concurrent_hash_map</a>< Key, T, HashCompare, A >::insert           </td>
+          <td>(</td>
+          <td class="paramtype">const value_type & </td>
+          <td class="paramname"> <em>value</em>          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Insert item by copying if there is no such key present already. 
+<p>
+Returns true if item is inserted. 
+</div>
+</div><p>
+<a class="anchor" name="2182c693d5898106675b76b443812b47"></a><!-- doxytag: member="tbb::concurrent_hash_map::insert" ref="2182c693d5898106675b76b443812b47" args="(accessor &result, const value_type &value)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key, typename T, typename HashCompare, typename A> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00103.html">tbb::concurrent_hash_map</a>< Key, T, HashCompare, A >::insert           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00104.html">accessor</a> & </td>
+          <td class="paramname"> <em>result</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const value_type & </td>
+          <td class="paramname"> <em>value</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Insert item by copying if there is no such key present already and acquire a write lock on the item. 
+<p>
+Returns true if item is new. 
+</div>
+</div><p>
+<a class="anchor" name="7fa987ae247a894ce9f1ca097a919fd4"></a><!-- doxytag: member="tbb::concurrent_hash_map::insert" ref="7fa987ae247a894ce9f1ca097a919fd4" args="(const_accessor &result, const value_type &value)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key, typename T, typename HashCompare, typename A> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00103.html">tbb::concurrent_hash_map</a>< Key, T, HashCompare, A >::insert           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00105.html">const_accessor</a> & </td>
+          <td class="paramname"> <em>result</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const value_type & </td>
+          <td class="paramname"> <em>value</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Insert item by copying if there is no such key present already and acquire a read lock on the item. 
+<p>
+Returns true if item is new. 
+</div>
+</div><p>
+<a class="anchor" name="da381dd244a7dbad494e1e60743b5afa"></a><!-- doxytag: member="tbb::concurrent_hash_map::insert" ref="da381dd244a7dbad494e1e60743b5afa" args="(accessor &result, const Key &key)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key, typename T, typename HashCompare, typename A> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00103.html">tbb::concurrent_hash_map</a>< Key, T, HashCompare, A >::insert           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00104.html">accessor</a> & </td>
+          <td class="paramname"> <em>result</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Key & </td>
+          <td class="paramname"> <em>key</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Insert item (if not already present) and acquire a write lock on the item. 
+<p>
+Returns true if item is new. 
+</div>
+</div><p>
+<a class="anchor" name="2c10a645a8b40c6438c2bb119a61e93b"></a><!-- doxytag: member="tbb::concurrent_hash_map::insert" ref="2c10a645a8b40c6438c2bb119a61e93b" args="(const_accessor &result, const Key &key)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key, typename T, typename HashCompare, typename A> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00103.html">tbb::concurrent_hash_map</a>< Key, T, HashCompare, A >::insert           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00105.html">const_accessor</a> & </td>
+          <td class="paramname"> <em>result</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Key & </td>
+          <td class="paramname"> <em>key</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Insert item (if not already present) and acquire a read lock on the item. 
+<p>
+Returns true if item is new. 
+</div>
+</div><p>
+<a class="anchor" name="75bb57a153952ffadfcf2e4c73deabb1"></a><!-- doxytag: member="tbb::concurrent_hash_map::size" ref="75bb57a153952ffadfcf2e4c73deabb1" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key, typename T, typename HashCompare, typename A> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="a00103.html">concurrent_hash_map</a>< Key, T, HashCompare, A >::size_type <a class="el" href="a00103.html">tbb::concurrent_hash_map</a>< Key, T, HashCompare, A >::size           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Number of items in table. 
+<p>
+Be aware that this method is relatively slow compared to the typical <a class="el" href="a00103.html#75bb57a153952ffadfcf2e4c73deabb1">size()</a> method for an STL container. 
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00205.html">concurrent_hash_map.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00104.html b/doc/html/a00104.html
index 47cd644..b094f61 100644
--- a/doc/html/a00104.html
+++ b/doc/html/a00104.html
@@ -1,29 +1,61 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor Class Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::scalable_allocator< T > Member List</h1>This is the complete list of members for <a class="el" href="a00247.html">tbb::scalable_allocator< T ></a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>address</b>(reference x) const  (defined in <a class="el" href="a00247.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00247.html">tbb::scalable_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>address</b>(const_reference x) const  (defined in <a class="el" href="a00247.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00247.html">tbb::scalable_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00247.html#a5">allocate</a>(size_type n, const void *=0)</td><td><a class="el" href="a00247.html">tbb::scalable_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>const_pointer</b> typedef (defined in <a class="el" href="a00247.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00247.html">tbb::scalable_allocator< T ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>const_reference</b> typedef (defined in <a class="el" href="a00247.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00247.html">tbb::scalable_allocator< T ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>construct</b>(pointer p, const T &val) (defined in <a class="el" href="a00247.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00247.html">tbb::scalable_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00247.html#a6">deallocate</a>(pointer p, size_type)</td><td><a class="el" href="a00247.html">tbb::scalable_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>destroy</b>(pointer p) (defined in <a class="el" href="a00247.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00247.html">tbb::scalable_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>difference_type</b> typedef (defined in <a class="el" href="a00247.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00247.html">tbb::scalable_allocator< T ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00247.html#a7">max_size</a>() const </td><td><a class="el" href="a00247.html">tbb::scalable_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>pointer</b> typedef (defined in <a class="el" href="a00247.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00247.html">tbb::scalable_allocator< T ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>reference</b> typedef (defined in <a class="el" href="a00247.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00247.html">tbb::scalable_allocator< T ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>scalable_allocator</b>() (defined in <a class="el" href="a00247.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00247.html">tbb::scalable_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>scalable_allocator</b>(const scalable_allocator &) (defined in <a class="el" href="a00247.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00247.html">tbb::scalable_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>scalable_allocator</b>(const scalable_allocator< U > &) (defined in <a class="el" href="a00247.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00247.html">tbb::scalable_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>size_type</b> typedef (defined in <a class="el" href="a00247.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00247.html">tbb::scalable_allocator< T ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>value_type</b> typedef (defined in <a class="el" href="a00247.html">tbb::scalable_allocator< T ></a>)</td><td><a class="el" href="a00247.html">tbb::scalable_allocator< T ></a></td><td></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00103.html">concurrent_hash_map</a>::<a class="el" href="a00104.html">accessor</a></div>
+<h1>tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor Class Reference</h1><!-- doxytag: class="tbb::concurrent_hash_map::accessor" --><!-- doxytag: inherits="tbb::concurrent_hash_map::const_accessor" -->Allows write access to elements and combines data access, locking, and garbage collection.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00205.html">concurrent_hash_map.h</a>></code>
+<p>
+Inherits <a class="el" href="a00105.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>.
+<p>
+Inheritance diagram for tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00015.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8bc15c9c07f3e21583ab1a4ad0901ce5"></a><!-- doxytag: member="tbb::concurrent_hash_map::accessor::value_type" ref="8bc15c9c07f3e21583ab1a4ad0901ce5" args="" -->
+typedef std::pair< const Key,<br>
+ T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00104.html#8bc15c9c07f3e21583ab1a4ad0901ce5">value_type</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Type of value. <br></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="52334dd5411e7b95635b90527d7d6062"></a><!-- doxytag: member="tbb::concurrent_hash_map::accessor::operator *" ref="52334dd5411e7b95635b90527d7d6062" args="() const " -->
+reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00104.html#52334dd5411e7b95635b90527d7d6062">operator *</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return reference to associated value in hash table. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0fae0495144540e2b011a6530f68f1cb"></a><!-- doxytag: member="tbb::concurrent_hash_map::accessor::operator->" ref="0fae0495144540e2b011a6530f68f1cb" args="() const " -->
+pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00104.html#0fae0495144540e2b011a6530f68f1cb">operator-></a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return pointer to associated value in hash table. <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template<typename Key, typename T, typename HashCompare, typename A><br>
+ class tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</h3>
+
+Allows write access to elements and combines data access, locking, and garbage collection. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00205.html">concurrent_hash_map.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00105.html b/doc/html/a00105.html
new file mode 100644
index 0000000..f4b9498
--- /dev/null
+++ b/doc/html/a00105.html
@@ -0,0 +1,89 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor Class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00103.html">concurrent_hash_map</a>::<a class="el" href="a00105.html">const_accessor</a></div>
+<h1>tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor Class Reference</h1><!-- doxytag: class="tbb::concurrent_hash_map::const_accessor" -->Combines data access, locking, and garbage collection.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00205.html">concurrent_hash_map.h</a>></code>
+<p>
+Inherited by <a class="el" href="a00104.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>.
+<p>
+Inheritance diagram for tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00014.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b5fe45b58ccc252b8ce70ac6c896c648"></a><!-- doxytag: member="tbb::concurrent_hash_map::const_accessor::value_type" ref="b5fe45b58ccc252b8ce70ac6c896c648" args="" -->
+typedef const std::pair< const <br>
+Key, T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00105.html#b5fe45b58ccc252b8ce70ac6c896c648">value_type</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Type of value. <br></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="38712b9809d23d2fba5e4780bb3c4f18"></a><!-- doxytag: member="tbb::concurrent_hash_map::const_accessor::empty" ref="38712b9809d23d2fba5e4780bb3c4f18" args="() const " -->
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00105.html#38712b9809d23d2fba5e4780bb3c4f18">empty</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">True if result is empty. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c7f3f43eb5f98d8451b2b1d456a4ccd4"></a><!-- doxytag: member="tbb::concurrent_hash_map::const_accessor::release" ref="c7f3f43eb5f98d8451b2b1d456a4ccd4" args="()" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00105.html#c7f3f43eb5f98d8451b2b1d456a4ccd4">release</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set to null. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ea4d48e45dd039a2be10178df9336001"></a><!-- doxytag: member="tbb::concurrent_hash_map::const_accessor::operator *" ref="ea4d48e45dd039a2be10178df9336001" args="() const " -->
+const_reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00105.html#ea4d48e45dd039a2be10178df9336001">operator *</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return reference to associated value in hash table. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="def170ba3b18905cd4e9d90f8a9a9cd9"></a><!-- doxytag: member="tbb::concurrent_hash_map::const_accessor::operator->" ref="def170ba3b18905cd4e9d90f8a9a9cd9" args="() const " -->
+const_pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00105.html#def170ba3b18905cd4e9d90f8a9a9cd9">operator-></a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return pointer to associated value in hash table. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2a73cc49914e218e579eb77d3d9d6551"></a><!-- doxytag: member="tbb::concurrent_hash_map::const_accessor::const_accessor" ref="2a73cc49914e218e579eb77d3d9d6551" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00105.html#2a73cc49914e218e579eb77d3d9d6551">const_accessor</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create empty result. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9b3fdcb8850d6f6dc749b72dbf2d593d"></a><!-- doxytag: member="tbb::concurrent_hash_map::const_accessor::~const_accessor" ref="9b3fdcb8850d6f6dc749b72dbf2d593d" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00105.html#9b3fdcb8850d6f6dc749b72dbf2d593d">~const_accessor</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroy result after releasing the underlying reference. <br></td></tr>
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0a63847bec72abbfedfb62f306e97eb0"></a><!-- doxytag: member="tbb::concurrent_hash_map::const_accessor::concurrent_hash_map< Key, T, HashCompare, A >" ref="0a63847bec72abbfedfb62f306e97eb0" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>concurrent_hash_map< Key, T, HashCompare, A ></b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ddd77aff56c12366acc02d0f1588a706"></a><!-- doxytag: member="tbb::concurrent_hash_map::const_accessor::accessor" ref="ddd77aff56c12366acc02d0f1588a706" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>accessor</b></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template<typename Key, typename T, typename HashCompare, typename A><br>
+ class tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</h3>
+
+Combines data access, locking, and garbage collection. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00205.html">concurrent_hash_map.h</a></ul>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00106.html b/doc/html/a00106.html
index 0ba88a5..dcda501 100644
--- a/doc/html/a00106.html
+++ b/doc/html/a00106.html
@@ -1,15 +1,294 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::concurrent_queue< T, A > Class Template Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::scalable_allocator< void > Member List</h1>This is the complete list of members for <a class="el" href="a00248.html">tbb::scalable_allocator< void ></a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>const_pointer</b> typedef (defined in <a class="el" href="a00248.html">tbb::scalable_allocator< void ></a>)</td><td><a class="el" href="a00248.html">tbb::scalable_allocator< void ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>pointer</b> typedef (defined in <a class="el" href="a00248.html">tbb::scalable_allocator< void ></a>)</td><td><a class="el" href="a00248.html">tbb::scalable_allocator< void ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>value_type</b> typedef (defined in <a class="el" href="a00248.html">tbb::scalable_allocator< void ></a>)</td><td><a class="el" href="a00248.html">tbb::scalable_allocator< void ></a></td><td></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00106.html">concurrent_queue</a></div>
+<h1>tbb::concurrent_queue< T, A > Class Template Reference<br>
+<small>
+[<a class="el" href="a00184.html">Containers</a>]</small>
+</h1><!-- doxytag: class="tbb::concurrent_queue" -->A high-performance thread-safe queue.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00213.html">concurrent_queue.h</a>></code>
+<p>
+<a href="a00019.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ec587adbe0da968d828c0178b2d863b0"></a><!-- doxytag: member="tbb::concurrent_queue::value_type" ref="ec587adbe0da968d828c0178b2d863b0" args="" -->
+typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#ec587adbe0da968d828c0178b2d863b0">value_type</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Element type in the queue. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="94ef8d1e9a05c53e3b637ea5eb553a6d"></a><!-- doxytag: member="tbb::concurrent_queue::allocator_type" ref="94ef8d1e9a05c53e3b637ea5eb553a6d" args="" -->
+typedef A </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#94ef8d1e9a05c53e3b637ea5eb553a6d">allocator_type</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Allocator type. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ea0fab9094080138fef0802125160739"></a><!-- doxytag: member="tbb::concurrent_queue::reference" ref="ea0fab9094080138fef0802125160739" args="" -->
+typedef T & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#ea0fab9094080138fef0802125160739">reference</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Reference type. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="981c7c13a4aef3d03f35797ebe214d59"></a><!-- doxytag: member="tbb::concurrent_queue::const_reference" ref="981c7c13a4aef3d03f35797ebe214d59" args="" -->
+typedef const T & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#981c7c13a4aef3d03f35797ebe214d59">const_reference</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Const reference type. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::ptrdiff_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#75868c28b0e431caa3ac36404adff4cf">size_type</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Integral type for representing size of the queue.  <a href="#75868c28b0e431caa3ac36404adff4cf"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3c0b5f19b820719ab4f69eeb9bf75afc"></a><!-- doxytag: member="tbb::concurrent_queue::difference_type" ref="3c0b5f19b820719ab4f69eeb9bf75afc" args="" -->
+typedef std::ptrdiff_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#3c0b5f19b820719ab4f69eeb9bf75afc">difference_type</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Difference type for iterator. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bd8de6209faed1f85ccddaeb0967c969"></a><!-- doxytag: member="tbb::concurrent_queue::iterator" ref="bd8de6209faed1f85ccddaeb0967c969" args="" -->
+typedef internal::concurrent_queue_iterator<<br>
+ <a class="el" href="a00106.html">concurrent_queue</a>, T > </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f9be6cf8c0aea7e7330a6d7c89dec52e"></a><!-- doxytag: member="tbb::concurrent_queue::const_iterator" ref="f9be6cf8c0aea7e7330a6d7c89dec52e" args="" -->
+typedef internal::concurrent_queue_iterator<<br>
+ <a class="el" href="a00106.html">concurrent_queue</a>, const T > </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
+
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6a4f9b451ceb08ae82709eef4c8a1a6b"></a><!-- doxytag: member="tbb::concurrent_queue::concurrent_queue" ref="6a4f9b451ceb08ae82709eef4c8a1a6b" args="(const allocator_type &a=allocator_type())" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#6a4f9b451ceb08ae82709eef4c8a1a6b">concurrent_queue</a> (const <a class="el" href="a00106.html#94ef8d1e9a05c53e3b637ea5eb553a6d">allocator_type</a> &a=<a class="el" href="a00106.html#94ef8d1e9a05c53e3b637ea5eb553a6d">allocator_type</a>())</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct empty queue. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="43480ba7f4ba2401d1213ee23248e4cd"></a><!-- doxytag: member="tbb::concurrent_queue::~concurrent_queue" ref="43480ba7f4ba2401d1213ee23248e4cd" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#43480ba7f4ba2401d1213ee23248e4cd">~concurrent_queue</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroy queue. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="28259b68d5ba6cc77abf72b8d7d22e69"></a><!-- doxytag: member="tbb::concurrent_queue::push" ref="28259b68d5ba6cc77abf72b8d7d22e69" args="(const T &source)" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#28259b68d5ba6cc77abf72b8d7d22e69">push</a> (const T &source)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Enqueue an item at tail of queue. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#170ab4b57a20f0ff00fb8642d4f55e5c">pop</a> (T &destination)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Dequeue item from head of queue.  <a href="#170ab4b57a20f0ff00fb8642d4f55e5c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#0a91166177c0ceb5a1ddd22827509345">push_if_not_full</a> (const T &source)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Enqueue an item at tail of queue if queue is not already full.  <a href="#0a91166177c0ceb5a1ddd22827509345"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#7088b06d6c226c44a07a310c12176a0c">pop_if_present</a> (T &destination)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Attempt to dequeue an item from head of queue.  <a href="#7088b06d6c226c44a07a310c12176a0c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00106.html#75868c28b0e431caa3ac36404adff4cf">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#94499bca8d540a1927f9368b386dabea">size</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return number of pushes minus number of pops.  <a href="#94499bca8d540a1927f9368b386dabea"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="313c369998b69de6e039b9afb9ca3237"></a><!-- doxytag: member="tbb::concurrent_queue::empty" ref="313c369998b69de6e039b9afb9ca3237" args="() const " -->
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#313c369998b69de6e039b9afb9ca3237">empty</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Equivalent to <a class="el" href="a00106.html#94499bca8d540a1927f9368b386dabea">size()</a><=0. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="95796a6ad29ea6fe102ac1663a776d07"></a><!-- doxytag: member="tbb::concurrent_queue::capacity" ref="95796a6ad29ea6fe102ac1663a776d07" args="() const " -->
+<a class="el" href="a00106.html#75868c28b0e431caa3ac36404adff4cf">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#95796a6ad29ea6fe102ac1663a776d07">capacity</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Maximum number of allowed elements. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#92977e1eb9af259f3aef69f0181476c1">set_capacity</a> (<a class="el" href="a00106.html#75868c28b0e431caa3ac36404adff4cf">size_type</a> capacity)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the capacity.  <a href="#92977e1eb9af259f3aef69f0181476c1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="11a088eee45cc1cb0c0b32adadbff92e"></a><!-- doxytag: member="tbb::concurrent_queue::get_allocator" ref="11a088eee45cc1cb0c0b32adadbff92e" args="() const " -->
+<a class="el" href="a00106.html#94ef8d1e9a05c53e3b637ea5eb553a6d">allocator_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#11a088eee45cc1cb0c0b32adadbff92e">get_allocator</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">return allocator object <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8a6a8a7a8d977d86ae8bd254b9794af1"></a><!-- doxytag: member="tbb::concurrent_queue::clear" ref="8a6a8a7a8d977d86ae8bd254b9794af1" args="()" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#8a6a8a7a8d977d86ae8bd254b9794af1">clear</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">clear the queue. not thread-safe. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="56807256d19ad4648e6bdc0d824fd7f5"></a><!-- doxytag: member="tbb::concurrent_queue::begin" ref="56807256d19ad4648e6bdc0d824fd7f5" args="()" -->
+iterator </td><td class="memItemRight" valign="bottom"><b>begin</b> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d2a380d0b79ad5c3d4e5926d20a91b07"></a><!-- doxytag: member="tbb::concurrent_queue::end" ref="d2a380d0b79ad5c3d4e5926d20a91b07" args="()" -->
+iterator </td><td class="memItemRight" valign="bottom"><b>end</b> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f9a10ea93abfae33fc027b6687af05ee"></a><!-- doxytag: member="tbb::concurrent_queue::begin" ref="f9a10ea93abfae33fc027b6687af05ee" args="() const " -->
+const_iterator </td><td class="memItemRight" valign="bottom"><b>begin</b> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ea317915c17cdb3ff708321364f0ad1f"></a><!-- doxytag: member="tbb::concurrent_queue::end" ref="ea317915c17cdb3ff708321364f0ad1f" args="() const " -->
+const_iterator </td><td class="memItemRight" valign="bottom"><b>end</b> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a919fd9a3d593dc4c8205a4636a8062e"></a><!-- doxytag: member="tbb::concurrent_queue::concurrent_queue" ref="a919fd9a3d593dc4c8205a4636a8062e" args="(const concurrent_queue &src, const allocator_type &a=allocator_type())" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a919fd9a3d593dc4c8205a4636a8062e">concurrent_queue</a> (const <a class="el" href="a00106.html">concurrent_queue</a> &src, const <a class="el" href="a00106.html#94ef8d1e9a05c53e3b637ea5eb553a6d">allocator_type</a> &a=<a class="el" href="a00106.html#94ef8d1e9a05c53e3b637ea5eb553a6d">allocator_type</a>())</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="d3ec1af9c793007ec2ecbdcf637f8ec5"></a><!-- doxytag: member="tbb::concurrent_queue::concurrent_queue" ref="d3ec1af9c793007ec2ecbdcf637f8ec5" args="(InputIterator begin, InputIterator end, const allocator_type &a=allocator_type())" -->
+template<typename InputIterator> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00106.html#d3ec1af9c793007ec2ecbdcf637f8ec5">concurrent_queue</a> (InputIterator begin, InputIterator end, const <a class="el" href="a00106.html#94ef8d1e9a05c53e3b637ea5eb553a6d">allocator_type</a> &a=<a class="el" href="a00106.html#94ef8d1e9a05c53e3b637ea5eb553a6d">allocator_type</a>())</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">[begin,end) constructor <br></td></tr>
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="05bffad9626d51abbd4bb82ae2a1cceb"></a><!-- doxytag: member="tbb::concurrent_queue::internal::concurrent_queue_iterator" ref="05bffad9626d51abbd4bb82ae2a1cceb" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>internal::concurrent_queue_iterator</b></td></tr>
+
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>destroyer</b></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Class used to ensure exception-safety of method "pop". <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template<typename T, class A><br>
+ class tbb::concurrent_queue< T, A ></h3>
+
+A high-performance thread-safe queue. 
+<p>
+Multiple threads may each push and pop concurrently. Assignment construction is not allowed. 
+<p>
+<hr><h2>Member Typedef Documentation</h2>
+<a class="anchor" name="75868c28b0e431caa3ac36404adff4cf"></a><!-- doxytag: member="tbb::concurrent_queue::size_type" ref="75868c28b0e431caa3ac36404adff4cf" args="" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, class A> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef std::ptrdiff_t <a class="el" href="a00106.html">tbb::concurrent_queue</a>< T, A >::<a class="el" href="a00106.html#75868c28b0e431caa3ac36404adff4cf">size_type</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Integral type for representing size of the queue. 
+<p>
+Notice that the size_type is a signed integral type. This is because the size can be negative if there are pending pops without corresponding pushes. 
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="170ab4b57a20f0ff00fb8642d4f55e5c"></a><!-- doxytag: member="tbb::concurrent_queue::pop" ref="170ab4b57a20f0ff00fb8642d4f55e5c" args="(T &destination)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, class A> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="a00106.html">tbb::concurrent_queue</a>< T, A >::pop           </td>
+          <td>(</td>
+          <td class="paramtype">T & </td>
+          <td class="paramname"> <em>destination</em>          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Dequeue item from head of queue. 
+<p>
+Block until an item becomes available, and then dequeue it. 
+</div>
+</div><p>
+<a class="anchor" name="7088b06d6c226c44a07a310c12176a0c"></a><!-- doxytag: member="tbb::concurrent_queue::pop_if_present" ref="7088b06d6c226c44a07a310c12176a0c" args="(T &destination)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, class A> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00106.html">tbb::concurrent_queue</a>< T, A >::pop_if_present           </td>
+          <td>(</td>
+          <td class="paramtype">T & </td>
+          <td class="paramname"> <em>destination</em>          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Attempt to dequeue an item from head of queue. 
+<p>
+Does not wait for item to become available. Returns true if successful; false otherwise. 
+</div>
+</div><p>
+<a class="anchor" name="0a91166177c0ceb5a1ddd22827509345"></a><!-- doxytag: member="tbb::concurrent_queue::push_if_not_full" ref="0a91166177c0ceb5a1ddd22827509345" args="(const T &source)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, class A> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00106.html">tbb::concurrent_queue</a>< T, A >::push_if_not_full           </td>
+          <td>(</td>
+          <td class="paramtype">const T & </td>
+          <td class="paramname"> <em>source</em>          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Enqueue an item at tail of queue if queue is not already full. 
+<p>
+Does not wait for queue to become not full. Returns true if item is pushed; false if queue was already full. 
+</div>
+</div><p>
+<a class="anchor" name="92977e1eb9af259f3aef69f0181476c1"></a><!-- doxytag: member="tbb::concurrent_queue::set_capacity" ref="92977e1eb9af259f3aef69f0181476c1" args="(size_type capacity)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, class A> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="a00106.html">tbb::concurrent_queue</a>< T, A >::set_capacity           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00106.html#75868c28b0e431caa3ac36404adff4cf">size_type</a> </td>
+          <td class="paramname"> <em>capacity</em>          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the capacity. 
+<p>
+Setting the capacity to 0 causes subsequent push_if_not_full operations to always fail, and subsequent push operations to block forever. 
+</div>
+</div><p>
+<a class="anchor" name="94499bca8d540a1927f9368b386dabea"></a><!-- doxytag: member="tbb::concurrent_queue::size" ref="94499bca8d540a1927f9368b386dabea" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, class A> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="a00106.html#75868c28b0e431caa3ac36404adff4cf">size_type</a> <a class="el" href="a00106.html">tbb::concurrent_queue</a>< T, A >::size           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"> const<code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return number of pushes minus number of pops. 
+<p>
+Note that the result can be negative if there are pops waiting for the corresponding pushes. The result can also exceed <a class="el" href="a00106.html#95796a6ad29ea6fe102ac1663a776d07">capacity()</a> if there are push operations in flight. 
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00213.html">concurrent_queue.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00107.html b/doc/html/a00107.html
new file mode 100644
index 0000000..d114890
--- /dev/null
+++ b/doc/html/a00107.html
@@ -0,0 +1,438 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb::concurrent_vector< T, A > Class Template Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00107.html">concurrent_vector</a></div>
+<h1>tbb::concurrent_vector< T, A > Class Template Reference<br>
+<small>
+[<a class="el" href="a00184.html">Containers</a>]</small>
+</h1><!-- doxytag: class="tbb::concurrent_vector" -->Concurrent vector container.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00219.html">concurrent_vector.h</a>></code>
+<p>
+<a href="a00021.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bc85684238d4bb5e422cb8ea0bdc438f"></a><!-- doxytag: member="tbb::concurrent_vector::size_type" ref="bc85684238d4bb5e422cb8ea0bdc438f" args="" -->
+typedef internal::concurrent_vector_base_v3::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ac7083635ab59834e9afc15e6c168df5"></a><!-- doxytag: member="tbb::concurrent_vector::allocator_type" ref="ac7083635ab59834e9afc15e6c168df5" args="" -->
+typedef internal::allocator_base<<br>
+ T, A >::allocator_type </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4543d7d45b2e461d3f8ef416974ec1f1"></a><!-- doxytag: member="tbb::concurrent_vector::value_type" ref="4543d7d45b2e461d3f8ef416974ec1f1" args="" -->
+typedef T </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e655e67dd14ed6d0cbfe7981d5fa350e"></a><!-- doxytag: member="tbb::concurrent_vector::difference_type" ref="e655e67dd14ed6d0cbfe7981d5fa350e" args="" -->
+typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8c29033785d76e240ea96ae40610275d"></a><!-- doxytag: member="tbb::concurrent_vector::reference" ref="8c29033785d76e240ea96ae40610275d" args="" -->
+typedef T & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b0b2a6241ab3fa9ab4f4074893fecd47"></a><!-- doxytag: member="tbb::concurrent_vector::const_reference" ref="b0b2a6241ab3fa9ab4f4074893fecd47" args="" -->
+typedef const T & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="74319c908a32d5dcdc6a080f9c2b8803"></a><!-- doxytag: member="tbb::concurrent_vector::pointer" ref="74319c908a32d5dcdc6a080f9c2b8803" args="" -->
+typedef T * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="dd80729019220cdb80872ea6b905ffb1"></a><!-- doxytag: member="tbb::concurrent_vector::const_pointer" ref="dd80729019220cdb80872ea6b905ffb1" args="" -->
+typedef const T * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a049674e7f386de3ea09ff2ed6d6bbbe"></a><!-- doxytag: member="tbb::concurrent_vector::iterator" ref="a049674e7f386de3ea09ff2ed6d6bbbe" args="" -->
+typedef internal::vector_iterator<<br>
+ <a class="el" href="a00107.html">concurrent_vector</a>, T > </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b51a1baa7da67e283806c0d4f2fe9c69"></a><!-- doxytag: member="tbb::concurrent_vector::const_iterator" ref="b51a1baa7da67e283806c0d4f2fe9c69" args="" -->
+typedef internal::vector_iterator<<br>
+ <a class="el" href="a00107.html">concurrent_vector</a>, const <br>
+T > </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2c7e4d252bef7af22286041c39c62abe"></a><!-- doxytag: member="tbb::concurrent_vector::reverse_iterator" ref="2c7e4d252bef7af22286041c39c62abe" args="" -->
+typedef std::reverse_iterator<<br>
+ iterator > </td><td class="memItemRight" valign="bottom"><b>reverse_iterator</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c59c3f9412b666a31a9052b789fb58bc"></a><!-- doxytag: member="tbb::concurrent_vector::const_reverse_iterator" ref="c59c3f9412b666a31a9052b789fb58bc" args="" -->
+typedef std::reverse_iterator<<br>
+ const_iterator > </td><td class="memItemRight" valign="bottom"><b>const_reverse_iterator</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0c3901b092e9e8185bdc3cae5913e625"></a><!-- doxytag: member="tbb::concurrent_vector::reverse_iterator" ref="0c3901b092e9e8185bdc3cae5913e625" args="" -->
+typedef std::reverse_iterator<<br>
+ iterator, T, T &, T * > </td><td class="memItemRight" valign="bottom"><b>reverse_iterator</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="426145d7bd5913bc08e701c14b221046"></a><!-- doxytag: member="tbb::concurrent_vector::const_reverse_iterator" ref="426145d7bd5913bc08e701c14b221046" args="" -->
+typedef std::reverse_iterator<<br>
+ const_iterator, T, const <br>
+T &, const T * > </td><td class="memItemRight" valign="bottom"><b>const_reverse_iterator</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="61fd90288dba6f8808d6dafe9a249ec5"></a><!-- doxytag: member="tbb::concurrent_vector::range_type" ref="61fd90288dba6f8808d6dafe9a249ec5" args="" -->
+typedef generic_range_type<<br>
+ iterator > </td><td class="memItemRight" valign="bottom"><b>range_type</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d6ddf0312a820a98efd9a5f394cb9dbd"></a><!-- doxytag: member="tbb::concurrent_vector::const_range_type" ref="d6ddf0312a820a98efd9a5f394cb9dbd" args="" -->
+typedef generic_range_type<<br>
+ const_iterator > </td><td class="memItemRight" valign="bottom"><b>const_range_type</b></td></tr>
+
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2c8ca9cabfcd30ad5943324c853664b5"></a><!-- doxytag: member="tbb::concurrent_vector::concurrent_vector" ref="2c8ca9cabfcd30ad5943324c853664b5" args="(const allocator_type &a=allocator_type())" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#2c8ca9cabfcd30ad5943324c853664b5">concurrent_vector</a> (const allocator_type &a=allocator_type())</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct empty vector. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="dd8a200b99a8088435a37934b58fe335"></a><!-- doxytag: member="tbb::concurrent_vector::concurrent_vector" ref="dd8a200b99a8088435a37934b58fe335" args="(const concurrent_vector &vector, const allocator_type &a=allocator_type())" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#dd8a200b99a8088435a37934b58fe335">concurrent_vector</a> (const <a class="el" href="a00107.html">concurrent_vector</a> &vector, const allocator_type &a=allocator_type())</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Copying constructor. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="64432f13f7b29bfe4acfb5568f34f3a8"></a><!-- doxytag: member="tbb::concurrent_vector::concurrent_vector" ref="64432f13f7b29bfe4acfb5568f34f3a8" args="(const concurrent_vector< T, M > &vector, const allocator_type &a=allocator_type())" -->
+template<class M> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00107.html#64432f13f7b29bfe4acfb5568f34f3a8">concurrent_vector</a> (const <a class="el" href="a00107.html">concurrent_vector</a>< T, M > &vector, const allocator_type &a=allocator_type())</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Copying constructor for vector with different allocator type. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2a2e261dfe1cab3f73f7b1a94137cfca"></a><!-- doxytag: member="tbb::concurrent_vector::concurrent_vector" ref="2a2e261dfe1cab3f73f7b1a94137cfca" args="(size_type n)" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#2a2e261dfe1cab3f73f7b1a94137cfca">concurrent_vector</a> (size_type n)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construction with initial size specified by argument n. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3883a8a908b44e249a57f454de3f55d8"></a><!-- doxytag: member="tbb::concurrent_vector::concurrent_vector" ref="3883a8a908b44e249a57f454de3f55d8" args="(size_type n, const_reference t, const allocator_type &a=allocator_type())" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#3883a8a908b44e249a57f454de3f55d8">concurrent_vector</a> (size_type n, const_reference t, const allocator_type &a=allocator_type())</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construction with initial size specified by argument n, initialization by copying of t, and given allocator instance. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="4450de83c5862ea4bcd9443fd7e67419"></a><!-- doxytag: member="tbb::concurrent_vector::concurrent_vector" ref="4450de83c5862ea4bcd9443fd7e67419" args="(I first, I last, const allocator_type &a=allocator_type())" -->
+template<class I> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00107.html#4450de83c5862ea4bcd9443fd7e67419">concurrent_vector</a> (I first, I last, const allocator_type &a=allocator_type())</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construction with copying iteration range and given allocator instance. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="691f0f3cda3e489c37a657016e375eaf"></a><!-- doxytag: member="tbb::concurrent_vector::operator=" ref="691f0f3cda3e489c37a657016e375eaf" args="(const concurrent_vector &vector)" -->
+<a class="el" href="a00107.html">concurrent_vector</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#691f0f3cda3e489c37a657016e375eaf">operator=</a> (const <a class="el" href="a00107.html">concurrent_vector</a> &vector)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Assignment. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="19f4ab88a01b0fd056af3bba463e7bd6"></a><!-- doxytag: member="tbb::concurrent_vector::operator=" ref="19f4ab88a01b0fd056af3bba463e7bd6" args="(const concurrent_vector< T, M > &vector)" -->
+template<class M> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"><a class="el" href="a00107.html">concurrent_vector</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00107.html#19f4ab88a01b0fd056af3bba463e7bd6">operator=</a> (const <a class="el" href="a00107.html">concurrent_vector</a>< T, M > &vector)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Assignment for vector with different allocator type. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#30484e3959892fd5392fa93c873c31f0">grow_by</a> (size_type delta)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Grow by "delta" elements.  <a href="#30484e3959892fd5392fa93c873c31f0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#38274ab3f772ecba600c7daca7690102">grow_by</a> (size_type delta, const_reference t)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Grow by "delta" elements using copying constuctor.  <a href="#38274ab3f772ecba600c7daca7690102"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="47fe588214dd5fa06ab6e8ab78d83874"></a><!-- doxytag: member="tbb::concurrent_vector::grow_to_at_least" ref="47fe588214dd5fa06ab6e8ab78d83874" args="(size_type n)" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#47fe588214dd5fa06ab6e8ab78d83874">grow_to_at_least</a> (size_type n)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Grow array until it has at least n elements. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e0087c0f58b49e43b6322ff1ec0bc98d"></a><!-- doxytag: member="tbb::concurrent_vector::push_back" ref="e0087c0f58b49e43b6322ff1ec0bc98d" args="(const_reference item)" -->
+size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#e0087c0f58b49e43b6322ff1ec0bc98d">push_back</a> (const_reference item)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Push item. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#4c52f2950bb1832886bd4458eb09d7eb">operator[]</a> (size_type index)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get reference to element at given index.  <a href="#4c52f2950bb1832886bd4458eb09d7eb"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c6fade5c732cc95274d1d8277ea619d1"></a><!-- doxytag: member="tbb::concurrent_vector::operator[]" ref="c6fade5c732cc95274d1d8277ea619d1" args="(size_type index) const " -->
+const_reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#c6fade5c732cc95274d1d8277ea619d1">operator[]</a> (size_type index) const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get const reference to element at given index. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0c073ca43e787c7cbf7b0e26d2221748"></a><!-- doxytag: member="tbb::concurrent_vector::at" ref="0c073ca43e787c7cbf7b0e26d2221748" args="(size_type index)" -->
+reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#0c073ca43e787c7cbf7b0e26d2221748">at</a> (size_type index)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get reference to element at given index. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="23e14a38af748edff96a7adc3a0f1c58"></a><!-- doxytag: member="tbb::concurrent_vector::at" ref="23e14a38af748edff96a7adc3a0f1c58" args="(size_type index) const " -->
+const_reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#23e14a38af748edff96a7adc3a0f1c58">at</a> (size_type index) const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get const reference to element at given index. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4c6ffff3bf08b92939aa2fc516edfba"></a><!-- doxytag: member="tbb::concurrent_vector::range" ref="a4c6ffff3bf08b92939aa2fc516edfba" args="(size_t grainsize=1)" -->
+range_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#a4c6ffff3bf08b92939aa2fc516edfba">range</a> (size_t grainsize=1)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get range for iterating with parallel algorithms. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3d09ccfb581b879ae64203741035e193"></a><!-- doxytag: member="tbb::concurrent_vector::range" ref="3d09ccfb581b879ae64203741035e193" args="(size_t grainsize=1) const " -->
+const_range_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#3d09ccfb581b879ae64203741035e193">range</a> (size_t grainsize=1) const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get const range for iterating with parallel algorithms. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="715fe313c4a9c22731cc404dd80c9ec9"></a><!-- doxytag: member="tbb::concurrent_vector::size" ref="715fe313c4a9c22731cc404dd80c9ec9" args="() const " -->
+size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#715fe313c4a9c22731cc404dd80c9ec9">size</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return size of vector. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c6426cb93cf20d3af40f3c90f1f0481a"></a><!-- doxytag: member="tbb::concurrent_vector::empty" ref="c6426cb93cf20d3af40f3c90f1f0481a" args="() const " -->
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#c6426cb93cf20d3af40f3c90f1f0481a">empty</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return size of vector. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3ed6b9ae7217af5103d974045b6f5cd5"></a><!-- doxytag: member="tbb::concurrent_vector::capacity" ref="3ed6b9ae7217af5103d974045b6f5cd5" args="() const " -->
+size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#3ed6b9ae7217af5103d974045b6f5cd5">capacity</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Maximum size to which array can grow without allocating more memory. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#5a0ce05026994b010018f72cfdeb72c1">reserve</a> (size_type n)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Allocate enough space to grow to size n without having to allocate more memory later.  <a href="#5a0ce05026994b010018f72cfdeb72c1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1693d1da41b1a8235871be9c6633be35"></a><!-- doxytag: member="tbb::concurrent_vector::compact" ref="1693d1da41b1a8235871be9c6633be35" args="()" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#1693d1da41b1a8235871be9c6633be35">compact</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Optimize memory usage and fragmentation. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2c248a017f0576df3e7cd99627836fd6"></a><!-- doxytag: member="tbb::concurrent_vector::max_size" ref="2c248a017f0576df3e7cd99627836fd6" args="() const " -->
+size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#2c248a017f0576df3e7cd99627836fd6">max_size</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Upper bound on argument to reserve. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="730b23a251ecb6d37f692fb22f38e029"></a><!-- doxytag: member="tbb::concurrent_vector::begin" ref="730b23a251ecb6d37f692fb22f38e029" args="()" -->
+iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#730b23a251ecb6d37f692fb22f38e029">begin</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">start iterator <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c0b51160e5a764982ec97a455f94f2c6"></a><!-- doxytag: member="tbb::concurrent_vector::end" ref="c0b51160e5a764982ec97a455f94f2c6" args="()" -->
+iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#c0b51160e5a764982ec97a455f94f2c6">end</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">end iterator <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="78a06182276ff758788d4c0623ae0d71"></a><!-- doxytag: member="tbb::concurrent_vector::begin" ref="78a06182276ff758788d4c0623ae0d71" args="() const " -->
+const_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#78a06182276ff758788d4c0623ae0d71">begin</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">start const iterator <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1e6aa764ce5a1cbd24526f68bc0a2f6b"></a><!-- doxytag: member="tbb::concurrent_vector::end" ref="1e6aa764ce5a1cbd24526f68bc0a2f6b" args="() const " -->
+const_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#1e6aa764ce5a1cbd24526f68bc0a2f6b">end</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">end const iterator <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5e220926d09236d98f04fe0721e5f9a1"></a><!-- doxytag: member="tbb::concurrent_vector::rbegin" ref="5e220926d09236d98f04fe0721e5f9a1" args="()" -->
+reverse_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#5e220926d09236d98f04fe0721e5f9a1">rbegin</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">reverse start iterator <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="290119a4eb43cd6a9e98fa17016ba3c2"></a><!-- doxytag: member="tbb::concurrent_vector::rend" ref="290119a4eb43cd6a9e98fa17016ba3c2" args="()" -->
+reverse_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#290119a4eb43cd6a9e98fa17016ba3c2">rend</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">reverse end iterator <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9f9c103e18d5f212703805354074ad44"></a><!-- doxytag: member="tbb::concurrent_vector::rbegin" ref="9f9c103e18d5f212703805354074ad44" args="() const " -->
+const_reverse_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#9f9c103e18d5f212703805354074ad44">rbegin</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">reverse start const iterator <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d438b9b32ea3a8ffb703015b6dce055b"></a><!-- doxytag: member="tbb::concurrent_vector::rend" ref="d438b9b32ea3a8ffb703015b6dce055b" args="() const " -->
+const_reverse_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#d438b9b32ea3a8ffb703015b6dce055b">rend</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">reverse end const iterator <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="15181759c0bfa2ddce5d10c7550e0002"></a><!-- doxytag: member="tbb::concurrent_vector::front" ref="15181759c0bfa2ddce5d10c7550e0002" args="()" -->
+reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#15181759c0bfa2ddce5d10c7550e0002">front</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">the first item <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="502615a858eb9fa0390ee59169065e90"></a><!-- doxytag: member="tbb::concurrent_vector::front" ref="502615a858eb9fa0390ee59169065e90" args="() const " -->
+const_reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#502615a858eb9fa0390ee59169065e90">front</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">the first item const <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="41ce48d6015a1a2812d41cf620ec3476"></a><!-- doxytag: member="tbb::concurrent_vector::back" ref="41ce48d6015a1a2812d41cf620ec3476" args="()" -->
+reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#41ce48d6015a1a2812d41cf620ec3476">back</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">the last item <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bd518e204107d07fd08d0ec5bdfd383d"></a><!-- doxytag: member="tbb::concurrent_vector::back" ref="bd518e204107d07fd08d0ec5bdfd383d" args="() const " -->
+const_reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#bd518e204107d07fd08d0ec5bdfd383d">back</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">the last item const <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2fdba8e90de6a4d2300222236d46758e"></a><!-- doxytag: member="tbb::concurrent_vector::get_allocator" ref="2fdba8e90de6a4d2300222236d46758e" args="() const " -->
+allocator_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#2fdba8e90de6a4d2300222236d46758e">get_allocator</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">return allocator object <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="423e5aa15e0e3309ad86d026fd85f6f6"></a><!-- doxytag: member="tbb::concurrent_vector::assign" ref="423e5aa15e0e3309ad86d026fd85f6f6" args="(size_type n, const_reference t)" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#423e5aa15e0e3309ad86d026fd85f6f6">assign</a> (size_type n, const_reference t)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">assign n items by copying t item <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="93a06b3112cb804f42f40efb5e7387b4"></a><!-- doxytag: member="tbb::concurrent_vector::assign" ref="93a06b3112cb804f42f40efb5e7387b4" args="(I first, I last)" -->
+template<class I> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00107.html#93a06b3112cb804f42f40efb5e7387b4">assign</a> (I first, I last)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">assign range [first, last) <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="96c9c4bd968ed3edb8dd276854d2dae0"></a><!-- doxytag: member="tbb::concurrent_vector::swap" ref="96c9c4bd968ed3edb8dd276854d2dae0" args="(concurrent_vector &vector)" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#96c9c4bd968ed3edb8dd276854d2dae0">swap</a> (<a class="el" href="a00107.html">concurrent_vector</a> &vector)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">swap two instances <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#26f937a359a66b6aae904c3cd9a3c444">clear</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Clear container while keeping memory allocated.  <a href="#26f937a359a66b6aae904c3cd9a3c444"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="da2444b28bb840d38f60d0030333a5fc"></a><!-- doxytag: member="tbb::concurrent_vector::~concurrent_vector" ref="da2444b28bb840d38f60d0030333a5fc" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#da2444b28bb840d38f60d0030333a5fc">~concurrent_vector</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Clear and destroy vector. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bb5ae659871478f1f5c68039e1273e12"></a><!-- doxytag: member="tbb::concurrent_vector::internal_vector_base" ref="bb5ae659871478f1f5c68039e1273e12" args="() const " -->
+const internal::concurrent_vector_base_v3 & </td><td class="memItemRight" valign="bottom"><b>internal_vector_base</b> () const </td></tr>
+
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="30086a58bff79a91103723be20916b96"></a><!-- doxytag: member="tbb::concurrent_vector::internal::vector_iterator" ref="30086a58bff79a91103723be20916b96" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>internal::vector_iterator</b></td></tr>
+
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>generic_range_type</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>internal_loop_guide</b></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception-aware helper class for filling a segment by exception-danger operators of user class. <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template<typename T, class A><br>
+ class tbb::concurrent_vector< T, A ></h3>
+
+Concurrent vector container. 
+<p>
+<a class="el" href="a00107.html">concurrent_vector</a> is a container having the following main properties:<ul>
+<li>It provides random indexed access to its elements. The index of the first element is 0.</li><li>It ensures safe concurrent growing its size (different threads can safely append new elements).</li><li>Adding new elements does not invalidate existing iterators and does not change indices of existing items.</li></ul>
+<p>
+<dl compact><dt><b>Compatibility</b></dt><dd>The class meets all Container Requirements and Reversible Container Requirements from C++ Standard (See ISO/IEC 14882:2003(E), clause 23.1). But it doesn't meet Sequence Requirements due to absence of insert() and erase() methods.</dd></dl>
+<dl compact><dt><b>Exception Safety</b></dt><dd>Methods working with memory allocation and/or new elements construction can throw an exception if allocator fails to allocate memory or element's default constructor throws one. Concurrent vector's element of type T must conform to the following requirements:<ul>
+<li>Throwing an exception is forbidden for destructor of T.</li><li>Default constructor of T must not throw an exception OR its non-virtual destructor must safely work when its object memory is zero-initialized.</li></ul>
+Otherwise, the program's behavior is undefined. </dd></dl>
+<dl compact><dt><b></b></dt><dd>If an exception happens inside growth or assignment operation, an instance of the vector becomes invalid unless it is stated otherwise in the method documentation. Invalid state means:<ul>
+<li>There are no guaranties that all items were initialized by a constructor. The rest of items is zero-filled, including item where exception happens.</li><li>An invalid vector instance cannot be repaired; it is unable to grow anymore.</li><li>Size and capacity reported by the vector are incorrect, and calculated as if the failed operation were successful.</li><li>Attempt to access not allocated elements using operator[] or iterators results in access violation or segmentation fault exc [...]
+If a concurrent grow operation successfully completes, all the elements it has added to the vector will remain valid and accessible even if one of subsequent grow operations fails.</dd></dl>
+<dl compact><dt><b>Fragmentation</b></dt><dd>Unlike an STL vector, a <a class="el" href="a00107.html">concurrent_vector</a> does not move existing elements if it needs to allocate more memory. The container is divided into a series of contiguous arrays of elements. The first reservation, growth, or assignment operation determines the size of the first array. Using small number of elements as initial size incurs fragmentation that may increase element access time. Internal layout can be o [...]
+<dl compact><dt><b>Changes since TBB 2.0</b></dt><dd><ul>
+<li>Implemented exception-safety guaranties</li><li>Added template argument for allocator</li><li>Added allocator argument in constructors</li><li>Faster index calculation</li><li>First growth call specifies a number of segments to be merged in the first allocation.</li><li>Fixed memory blow up for swarm of vector's instances of small size</li><li>Added <a class="el" href="a00107.html#38274ab3f772ecba600c7daca7690102">grow_by(size_type n, const_reference t)</a> growth using copying const [...]
+</dd></dl>
+
+<p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="26f937a359a66b6aae904c3cd9a3c444"></a><!-- doxytag: member="tbb::concurrent_vector::clear" ref="26f937a359a66b6aae904c3cd9a3c444" args="()" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, class A> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="a00107.html">tbb::concurrent_vector</a>< T, A >::clear           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Clear container while keeping memory allocated. 
+<p>
+To free up the memory, use in conjunction with method <a class="el" href="a00107.html#1693d1da41b1a8235871be9c6633be35">compact()</a>. Not thread safe 
+</div>
+</div><p>
+<a class="anchor" name="38274ab3f772ecba600c7daca7690102"></a><!-- doxytag: member="tbb::concurrent_vector::grow_by" ref="38274ab3f772ecba600c7daca7690102" args="(size_type delta, const_reference t)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, class A> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">size_type <a class="el" href="a00107.html">tbb::concurrent_vector</a>< T, A >::grow_by           </td>
+          <td>(</td>
+          <td class="paramtype">size_type </td>
+          <td class="paramname"> <em>delta</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const_reference </td>
+          <td class="paramname"> <em>t</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Grow by "delta" elements using copying constuctor. 
+<p>
+Returns old size. 
+</div>
+</div><p>
+<a class="anchor" name="30484e3959892fd5392fa93c873c31f0"></a><!-- doxytag: member="tbb::concurrent_vector::grow_by" ref="30484e3959892fd5392fa93c873c31f0" args="(size_type delta)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, class A> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">size_type <a class="el" href="a00107.html">tbb::concurrent_vector</a>< T, A >::grow_by           </td>
+          <td>(</td>
+          <td class="paramtype">size_type </td>
+          <td class="paramname"> <em>delta</em>          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Grow by "delta" elements. 
+<p>
+Returns old size. 
+</div>
+</div><p>
+<a class="anchor" name="4c52f2950bb1832886bd4458eb09d7eb"></a><!-- doxytag: member="tbb::concurrent_vector::operator[]" ref="4c52f2950bb1832886bd4458eb09d7eb" args="(size_type index)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, class A> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">reference <a class="el" href="a00107.html">tbb::concurrent_vector</a>< T, A >::operator[]           </td>
+          <td>(</td>
+          <td class="paramtype">size_type </td>
+          <td class="paramname"> <em>index</em>          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get reference to element at given index. 
+<p>
+This method is thread-safe for concurrent reads, and also while growing the vector, as long as the calling thread has checked that index<<a class="el" href="a00107.html#715fe313c4a9c22731cc404dd80c9ec9">size()</a>. 
+</div>
+</div><p>
+<a class="anchor" name="5a0ce05026994b010018f72cfdeb72c1"></a><!-- doxytag: member="tbb::concurrent_vector::reserve" ref="5a0ce05026994b010018f72cfdeb72c1" args="(size_type n)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, class A> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="a00107.html">tbb::concurrent_vector</a>< T, A >::reserve           </td>
+          <td>(</td>
+          <td class="paramtype">size_type </td>
+          <td class="paramname"> <em>n</em>          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Allocate enough space to grow to size n without having to allocate more memory later. 
+<p>
+Like most of the methods provided for STL compatibility, this method is *not* thread safe. The capacity afterwards may be bigger than the requested reservation. 
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00219.html">concurrent_vector.h</a></ul>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00108.html b/doc/html/a00108.html
index f896cc1..1779085 100644
--- a/doc/html/a00108.html
+++ b/doc/html/a00108.html
@@ -1,18 +1,46 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::empty_task Class Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::spin_mutex Member List</h1>This is the complete list of members for <a class="el" href="a00250.html">tbb::spin_mutex</a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>internal_construct</b>() (defined in <a class="el" href="a00250.html">tbb::spin_mutex</a>)</td><td><a class="el" href="a00250.html">tbb::spin_mutex</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>is_fair_mutex</b> (defined in <a class="el" href="a00250.html">tbb::spin_mutex</a>)</td><td><a class="el" href="a00250.html">tbb::spin_mutex</a></td><td><code> [static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>is_recursive_mutex</b> (defined in <a class="el" href="a00250.html">tbb::spin_mutex</a>)</td><td><a class="el" href="a00250.html">tbb::spin_mutex</a></td><td><code> [static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>is_rw_mutex</b> (defined in <a class="el" href="a00250.html">tbb::spin_mutex</a>)</td><td><a class="el" href="a00250.html">tbb::spin_mutex</a></td><td><code> [static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>scoped_lock</b> (defined in <a class="el" href="a00250.html">tbb::spin_mutex</a>)</td><td><a class="el" href="a00250.html">tbb::spin_mutex</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00250.html#a0">spin_mutex</a>()</td><td><a class="el" href="a00250.html">tbb::spin_mutex</a></td><td><code> [inline]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00108.html">empty_task</a></div>
+<h1>tbb::empty_task Class Reference<br>
+<small>
+[<a class="el" href="a00188.html">Task Scheduling</a>]</small>
+</h1><!-- doxytag: class="tbb::empty_task" --><!-- doxytag: inherits="tbb::task" -->task that does nothing. Useful for synchronization.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00276.html">task.h</a>></code>
+<p>
+Inherits <a class="el" href="a00132.html">tbb::task</a>.
+<p>
+Inheritance diagram for tbb::empty_task:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00058.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+task that does nothing. Useful for synchronization. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00276.html">task.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00109.html b/doc/html/a00109.html
index d9c6ee4..3ff60af 100644
--- a/doc/html/a00109.html
+++ b/doc/html/a00109.html
@@ -1,19 +1,189 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::filter Class Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::spin_mutex::scoped_lock Member List</h1>This is the complete list of members for <a class="el" href="a00251.html">tbb::spin_mutex::scoped_lock</a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00251.html#a2">acquire</a>(spin_mutex &m)</td><td><a class="el" href="a00251.html">tbb::spin_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00230.html#a0">no_copy</a>()</td><td><a class="el" href="a00230.html">tbb::internal::no_copy</a></td><td><code> [inline, private]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00251.html#a4">release</a>()</td><td><a class="el" href="a00251.html">tbb::spin_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00251.html#a0">scoped_lock</a>()</td><td><a class="el" href="a00251.html">tbb::spin_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00251.html#a1">scoped_lock</a>(spin_mutex &m)</td><td><a class="el" href="a00251.html">tbb::spin_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00251.html#a3">try_acquire</a>(spin_mutex &m)</td><td><a class="el" href="a00251.html">tbb::spin_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00251.html#a5">~scoped_lock</a>()</td><td><a class="el" href="a00251.html">tbb::spin_mutex::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00109.html">filter</a></div>
+<h1>tbb::filter Class Reference<br>
+<small>
+[<a class="el" href="a00183.html">Algorithms</a>]</small>
+</h1><!-- doxytag: class="tbb::filter" -->A stage in a pipeline.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00269.html">pipeline.h</a>></code>
+<p>
+<a href="a00039.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf75740556347260927e94ce3b23a34abe">parallel</a> = current_version | filter_is_out_of_order</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">processes multiple items in parallel and in no particular order  <a href="#d3b6ed2c517144199d0c39c62ddfd8cf75740556347260927e94ce3b23a34abe"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf5645f2f2a541e53009d3e719c06c5f93">serial_in_order</a> = current_version | filter_is_serial</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">processes items one at a time; all such filters process items in the same order  <a href="#d3b6ed2c517144199d0c39c62ddfd8cf5645f2f2a541e53009d3e719c06c5f93"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf7fb70bcb663107adfc2938de89bab7d9">serial_out_of_order</a> = current_version | filter_is_serial | filter_is_out_of_order</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">processes items one at a time and in no particular order  <a href="#d3b6ed2c517144199d0c39c62ddfd8cf7fb70bcb663107adfc2938de89bab7d9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cff8662693d85bd1cd3df052b761edd237">serial</a> = serial_in_order</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf">mode</a> { <a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf75740556347260927e94ce3b23a34abe">parallel</a> =  current_version | filter_is_out_of_order, 
+<a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf5645f2f2a541e53009d3e719c06c5f93">serial_in_order</a> =  current_version | filter_is_serial, 
+<a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf7fb70bcb663107adfc2938de89bab7d9">serial_out_of_order</a> =  current_version | filter_is_serial | filter_is_out_of_order, 
+<a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cff8662693d85bd1cd3df052b761edd237">serial</a> =  serial_in_order
+ }</td></tr>
+
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<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 " -->
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00109.html#fcfec27656a69ff2072802ac001e936f">is_serial</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">True if filter is serial. <br></td></tr>
+<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 " -->
+bool </td><td class="memItemRight" valign="bottom"><b>is_ordered</b> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00109.html#fa1b3dc1f4f47563ccab7f4d92f5b543">operator()</a> (void *item)=0</td></tr>
+
+<tr><td class="mdescLeft"> </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>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00109.html#66d159f362293e3964ba3da8bc1d2604">~filter</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroy filter.  <a href="#66d159f362293e3964ba3da8bc1d2604"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00109.html#56275eb889c77c4807967133e21401bd">finalize</a> (void *)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroys item if pipeline is cancelled.  <a href="#56275eb889c77c4807967133e21401bd"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f1111979b4afbde1a6c1873577a005ae"></a><!-- doxytag: member="tbb::filter::filter" ref="f1111979b4afbde1a6c1873577a005ae" args="(bool is_serial_)" -->
+ </td><td class="memItemRight" valign="bottom"><b>filter</b> (bool is_serial_)</td></tr>
+
+<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)" -->
+ </td><td class="memItemRight" valign="bottom"><b>filter</b> (<a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf">mode</a> filter_mode)</td></tr>
+
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<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="" -->
+class </td><td class="memItemRight" valign="bottom"><b>internal::stage_task</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b211ee58bada099e24280d478017cbff"></a><!-- doxytag: member="tbb::filter::pipeline" ref="b211ee58bada099e24280d478017cbff" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>pipeline</b></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+A stage in a pipeline. 
+<p>
+<hr><h2>Member Enumeration Documentation</h2>
+<a class="anchor" name="d3b6ed2c517144199d0c39c62ddfd8cf"></a><!-- doxytag: member="tbb::filter::mode" ref="d3b6ed2c517144199d0c39c62ddfd8cf" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf">tbb::filter::mode</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="d3b6ed2c517144199d0c39c62ddfd8cf75740556347260927e94ce3b23a34abe"></a><!-- doxytag: member="parallel" ref="d3b6ed2c517144199d0c39c62ddfd8cf75740556347260927e94ce3b23a34abe" args="" -->parallel</em> </td><td>
+processes multiple items in parallel and in no particular order </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="d3b6ed2c517144199d0c39c62ddfd8cf5645f2f2a541e53009d3e719c06c5f93"></a><!-- doxytag: member="serial_in_order" ref="d3b6ed2c517144199d0c39c62ddfd8cf5645f2f2a541e53009d3e719c06c5f93" args="" -->serial_in_order</em> </td><td>
+processes items one at a time; all such filters process items in the same order </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="d3b6ed2c517144199d0c39c62ddfd8cf7fb70bcb663107adfc2938de89bab7d9"></a><!-- doxytag: member="serial_out_of_order" ref="d3b6ed2c517144199d0c39c62ddfd8cf7fb70bcb663107adfc2938de89bab7d9" args="" -->serial_out_of_order</em> </td><td>
+processes items one at a time and in no particular order </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="d3b6ed2c517144199d0c39c62ddfd8cff8662693d85bd1cd3df052b761edd237"></a><!-- doxytag: member="serial" ref="d3b6ed2c517144199d0c39c62ddfd8cff8662693d85bd1cd3df052b761edd237" args="" -->serial</em> </td><td>
+<dl compact><dt><b><a class="el" href="deprecated.html#_deprecated000001">Deprecated:</a></b></dt><dd>use serial_in_order instead </dd></dl>
+</td></tr>
+</table>
+</dl>
+
+</div>
+</div><p>
+<hr><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" name="66d159f362293e3964ba3da8bc1d2604"></a><!-- doxytag: member="tbb::filter::~filter" ref="66d159f362293e3964ba3da8bc1d2604" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual __TBB_EXPORTED_METHOD tbb::filter::~filter           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"><code> [virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Destroy filter. 
+<p>
+If the filter was added to a pipeline, the pipeline must be destroyed first. 
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="56275eb889c77c4807967133e21401bd"></a><!-- doxytag: member="tbb::filter::finalize" ref="56275eb889c77c4807967133e21401bd" args="(void *)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual void tbb::filter::finalize           </td>
+          <td>(</td>
+          <td class="paramtype">void * </td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline, virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Destroys item if pipeline is cancelled. 
+<p>
+Required to prevent memory leaks Note it can be called concurrently even for serial filters. 
+</div>
+</div><p>
+<a class="anchor" name="fa1b3dc1f4f47563ccab7f4d92f5b543"></a><!-- doxytag: member="tbb::filter::operator()" ref="fa1b3dc1f4f47563ccab7f4d92f5b543" args="(void *item)=0" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual void* tbb::filter::operator()           </td>
+          <td>(</td>
+          <td class="paramtype">void * </td>
+          <td class="paramname"> <em>item</em>          </td>
+          <td> ) </td>
+          <td width="100%"><code> [pure virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Operate on an item from the input stream, and return item for output stream. 
+<p>
+Returns NULL if filter is a sink. 
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00269.html">pipeline.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00110.html b/doc/html/a00110.html
index e7eb5dc..380999d 100644
--- a/doc/html/a00110.html
+++ b/doc/html/a00110.html
@@ -1,17 +1,48 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::final_scan_tag Struct Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::spin_rw_mutex_v3 Member List</h1>This is the complete list of members for <a class="el" href="a00252.html">tbb::spin_rw_mutex_v3</a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>is_fair_mutex</b> (defined in <a class="el" href="a00252.html">tbb::spin_rw_mutex_v3</a>)</td><td><a class="el" href="a00252.html">tbb::spin_rw_mutex_v3</a></td><td><code> [static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>is_recursive_mutex</b> (defined in <a class="el" href="a00252.html">tbb::spin_rw_mutex_v3</a>)</td><td><a class="el" href="a00252.html">tbb::spin_rw_mutex_v3</a></td><td><code> [static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>is_rw_mutex</b> (defined in <a class="el" href="a00252.html">tbb::spin_rw_mutex_v3</a>)</td><td><a class="el" href="a00252.html">tbb::spin_rw_mutex_v3</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00252.html#a0">spin_rw_mutex_v3</a>()</td><td><a class="el" href="a00252.html">tbb::spin_rw_mutex_v3</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00252.html#a1">~spin_rw_mutex_v3</a>()</td><td><a class="el" href="a00252.html">tbb::spin_rw_mutex_v3</a></td><td><code> [inline]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00110.html">final_scan_tag</a></div>
+<h1>tbb::final_scan_tag Struct Reference<br>
+<small>
+[<a class="el" href="a00183.html">Algorithms</a>]</small>
+</h1><!-- doxytag: class="tbb::final_scan_tag" -->Used to indicate that the final scan is being performed.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00251.html">parallel_scan.h</a>></code>
+<p>
+<a href="a00032.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="06888e4a548788fcb2c15542d428d8c9"></a><!-- doxytag: member="tbb::final_scan_tag::is_final_scan" ref="06888e4a548788fcb2c15542d428d8c9" args="()" -->
+static bool </td><td class="memItemRight" valign="bottom"><b>is_final_scan</b> ()</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Used to indicate that the final scan is being performed. 
+<p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="a00251.html">parallel_scan.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00111.html b/doc/html/a00111.html
index d18359d..df61658 100644
--- a/doc/html/a00111.html
+++ b/doc/html/a00111.html
@@ -1,21 +1,163 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::movable_exception< ExceptionData > Class Template Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::spin_rw_mutex_v3::scoped_lock Member List</h1>This is the complete list of members for <a class="el" href="a00253.html">tbb::spin_rw_mutex_v3::scoped_lock</a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00253.html#a3">acquire</a>(spin_rw_mutex &m, bool write=true)</td><td><a class="el" href="a00253.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00253.html#a6">downgrade_to_reader</a>()</td><td><a class="el" href="a00253.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00230.html#a0">no_copy</a>()</td><td><a class="el" href="a00230.html">tbb::internal::no_copy</a></td><td><code> [inline, private]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00253.html#a5">release</a>()</td><td><a class="el" href="a00253.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00253.html#a0">scoped_lock</a>()</td><td><a class="el" href="a00253.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00253.html#a1">scoped_lock</a>(spin_rw_mutex &m, bool write=true)</td><td><a class="el" href="a00253.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00253.html#a7">try_acquire</a>(spin_rw_mutex &m, bool write=true)</td><td><a class="el" href="a00253.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00253.html#a4">upgrade_to_writer</a>()</td><td><a class="el" href="a00253.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00253.html#a2">~scoped_lock</a>()</td><td><a class="el" href="a00253.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td><code> [inline]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00111.html">movable_exception</a></div>
+<h1>tbb::movable_exception< ExceptionData > Class Template Reference</h1><!-- doxytag: class="tbb::movable_exception" --><!-- doxytag: inherits="tbb::tbb_exception" -->Template that can be used to implement exception that transfers arbitrary ExceptionData to the root thread.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00289.html">tbb_exception.h</a>></code>
+<p>
+Inherits <a class="el" href="a00138.html">tbb::tbb_exception</a>.
+<p>
+Inheritance diagram for tbb::movable_exception< ExceptionData >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00069.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bd3a1f2580e18cad8453a429a52d04b2"></a><!-- doxytag: member="tbb::movable_exception::movable_exception" ref="bd3a1f2580e18cad8453a429a52d04b2" args="(const ExceptionData &data)" -->
+ </td><td class="memItemRight" valign="bottom"><b>movable_exception</b> (const ExceptionData &data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="48f97fbf1e5d66c5977891f4375ee4d9"></a><!-- doxytag: member="tbb::movable_exception::movable_exception" ref="48f97fbf1e5d66c5977891f4375ee4d9" args="(const movable_exception &src)" -->
+ </td><td class="memItemRight" valign="bottom"><b>movable_exception</b> (const <a class="el" href="a00111.html">movable_exception</a> &src)  throw ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="dfafefe27f2afaa7c7894ca9c71cc568"></a><!-- doxytag: member="tbb::movable_exception::operator=" ref="dfafefe27f2afaa7c7894ca9c71cc568" args="(const movable_exception &src)" -->
+const <a class="el" href="a00111.html">movable_exception</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00111.html">movable_exception</a> &src)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="47114cbc20c8e13cac3108749a3e085d"></a><!-- doxytag: member="tbb::movable_exception::data" ref="47114cbc20c8e13cac3108749a3e085d" args="()" -->
+ExceptionData & </td><td class="memItemRight" valign="bottom"><b>data</b> ()  throw ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7d93c000d862d2558efd9a34817adbce"></a><!-- doxytag: member="tbb::movable_exception::data" ref="7d93c000d862d2558efd9a34817adbce" args="() const " -->
+const ExceptionData & </td><td class="memItemRight" valign="bottom"><b>data</b> () const   throw ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bc5f5c4739b17ac5211ac58226c2f5a5"></a><!-- doxytag: member="tbb::movable_exception::name" ref="bc5f5c4739b17ac5211ac58226c2f5a5" args="() const " -->
+const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00111.html#bc5f5c4739b17ac5211ac58226c2f5a5">name</a> () const   throw ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns RTTI name of the originally intercepted exception. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b33a89bccf0c63106f1270c7bfaaf54f"></a><!-- doxytag: member="tbb::movable_exception::what" ref="b33a89bccf0c63106f1270c7bfaaf54f" args="() const " -->
+const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00111.html#b33a89bccf0c63106f1270c7bfaaf54f">what</a> () const   throw ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the result of originally intercepted exception's <a class="el" href="a00111.html#b33a89bccf0c63106f1270c7bfaaf54f">what()</a> method. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00111.html">movable_exception</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00111.html#1aea0ad179d6f0481fe7f3495f66adf9">move</a> ()  throw ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates and returns pointer to the deep copy of this exception object.  <a href="#1aea0ad179d6f0481fe7f3495f66adf9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00111.html#7a46873119d9f85a7b0009c13e41a258">destroy</a> ()  throw ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroys objects created by the <a class="el" href="a00111.html#1aea0ad179d6f0481fe7f3495f66adf9">move()</a> method.  <a href="#7a46873119d9f85a7b0009c13e41a258"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00111.html#17cffba35811c92b7e65d63506b69602">throw_self</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Throws this exception object.  <a href="#17cffba35811c92b7e65d63506b69602"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a8c0ae2089ae784b28907cf748b89416"></a><!-- doxytag: member="tbb::movable_exception::my_exception_data" ref="a8c0ae2089ae784b28907cf748b89416" args="" -->
+ExceptionData </td><td class="memItemRight" valign="bottom"><a class="el" href="a00111.html#a8c0ae2089ae784b28907cf748b89416">my_exception_data</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">User data. <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template<typename ExceptionData><br>
+ class tbb::movable_exception< ExceptionData ></h3>
+
+Template that can be used to implement exception that transfers arbitrary ExceptionData to the root thread. 
+<p>
+Code using TBB can instantiate this template with an arbitrary ExceptionData type and throw this exception object. Such exceptions are intercepted by the TBB scheduler and delivered to the root thread (). <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00138.html">tbb::tbb_exception</a> </dd></dl>
+
+<p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="7a46873119d9f85a7b0009c13e41a258"></a><!-- doxytag: member="tbb::movable_exception::destroy" ref="7a46873119d9f85a7b0009c13e41a258" args="()" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename ExceptionData> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="a00111.html">tbb::movable_exception</a>< ExceptionData >::destroy           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%">  throw ()<code> [inline, virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Destroys objects created by the <a class="el" href="a00111.html#1aea0ad179d6f0481fe7f3495f66adf9">move()</a> method. 
+<p>
+Frees memory and calls destructor for this exception object. Can and must be used only on objects created by the move method. 
+<p>
+Implements <a class="el" href="a00138.html#66c94938eca8bf88b76f3eccaaf215d8">tbb::tbb_exception</a>.
+</div>
+</div><p>
+<a class="anchor" name="1aea0ad179d6f0481fe7f3495f66adf9"></a><!-- doxytag: member="tbb::movable_exception::move" ref="1aea0ad179d6f0481fe7f3495f66adf9" args="()" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename ExceptionData> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="a00111.html">movable_exception</a>* <a class="el" href="a00111.html">tbb::movable_exception</a>< ExceptionData >::move           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%">  throw ()<code> [inline, virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Creates and returns pointer to the deep copy of this exception object. 
+<p>
+Move semantics is allowed. 
+<p>
+Implements <a class="el" href="a00138.html#3e3482bf264d4ca4dde046cd9c02c766">tbb::tbb_exception</a>.
+</div>
+</div><p>
+<a class="anchor" name="17cffba35811c92b7e65d63506b69602"></a><!-- doxytag: member="tbb::movable_exception::throw_self" ref="17cffba35811c92b7e65d63506b69602" args="()" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename ExceptionData> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="a00111.html">tbb::movable_exception</a>< ExceptionData >::throw_self           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline, virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Throws this exception object. 
+<p>
+Make sure that if you have several levels of derivation from this interface you implement or override this method on the most derived level. The implementation is as simple as "throw *this;". Failure to do this will result in exception of a base class type being thrown. 
+<p>
+Implements <a class="el" href="a00138.html#8588e07fa49692f4d734e4f2e4f048f4">tbb::tbb_exception</a>.
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00289.html">tbb_exception.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00112.html b/doc/html/a00112.html
new file mode 100644
index 0000000..9f85537
--- /dev/null
+++ b/doc/html/a00112.html
@@ -0,0 +1,74 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb::mutex Class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00112.html">mutex</a></div>
+<h1>tbb::mutex Class Reference<br>
+<small>
+[<a class="el" href="a00186.html">Synchronization</a>]</small>
+</h1><!-- doxytag: class="tbb::mutex" -->Wrapper around the platform's native reader-writer lock.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00228.html">mutex.h</a>></code>
+<p>
+<a href="a00024.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="05313cb77d4f85213103d4dab74ed454"></a><!-- doxytag: member="tbb::mutex::mutex" ref="05313cb77d4f85213103d4dab74ed454" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00112.html#05313cb77d4f85213103d4dab74ed454">mutex</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct unacquired mutex. <br></td></tr>
+<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="17b78176054e2bac1ff35b9535d1ea0c"></a><!-- doxytag: member="tbb::mutex::is_rw_mutex" ref="17b78176054e2bac1ff35b9535d1ea0c" args="" -->
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = false</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d4558e5a7c5b8d8e158ec7a1079669bd"></a><!-- doxytag: member="tbb::mutex::is_recursive_mutex" ref="d4558e5a7c5b8d8e158ec7a1079669bd" args="" -->
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = false</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f023a29c61451d02359095cbff0f3d45"></a><!-- doxytag: member="tbb::mutex::is_fair_mutex" ref="f023a29c61451d02359095cbff0f3d45" args="" -->
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = false</td></tr>
+
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a36f15b770a1bb0b56e33d7fa75ebd1a"></a><!-- doxytag: member="tbb::mutex::scoped_lock" ref="a36f15b770a1bb0b56e33d7fa75ebd1a" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b></td></tr>
+
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html">scoped_lock</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The scoped locking pattern.  <a href="a00113.html#_details">More...</a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Wrapper around the platform's native reader-writer lock. 
+<p>
+For testing purposes only. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00228.html">mutex.h</a></ul>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00113.html b/doc/html/a00113.html
new file mode 100644
index 0000000..27c8535
--- /dev/null
+++ b/doc/html/a00113.html
@@ -0,0 +1,95 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb::mutex::scoped_lock Class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00112.html">mutex</a>::<a class="el" href="a00113.html">scoped_lock</a></div>
+<h1>tbb::mutex::scoped_lock Class Reference</h1><!-- doxytag: class="tbb::mutex::scoped_lock" -->The scoped locking pattern.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00228.html">mutex.h</a>></code>
+<p>
+<a href="a00025.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1d403ae51b484df5d86d85ae38f11e6e"></a><!-- doxytag: member="tbb::mutex::scoped_lock::scoped_lock" ref="1d403ae51b484df5d86d85ae38f11e6e" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#1d403ae51b484df5d86d85ae38f11e6e">scoped_lock</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct lock that has not acquired a mutex. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#605a6b9af0f8cdabdf81825e0de99600">scoped_lock</a> (<a class="el" href="a00112.html">mutex</a> &<a class="el" href="a00112.html">mutex</a>)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex.  <a href="#605a6b9af0f8cdabdf81825e0de99600"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0ebbbecaf4311e9df7362cb76ceaa368"></a><!-- doxytag: member="tbb::mutex::scoped_lock::~scoped_lock" ref="0ebbbecaf4311e9df7362cb76ceaa368" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#0ebbbecaf4311e9df7362cb76ceaa368">~scoped_lock</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Release lock (if lock is held). <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="862e022841cdc522e4296a5533b22efd"></a><!-- doxytag: member="tbb::mutex::scoped_lock::acquire" ref="862e022841cdc522e4296a5533b22efd" args="(mutex &mutex)" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#862e022841cdc522e4296a5533b22efd">acquire</a> (<a class="el" href="a00112.html">mutex</a> &<a class="el" href="a00112.html">mutex</a>)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="591e0c49b82bcedffcbe0923f1b915ec"></a><!-- doxytag: member="tbb::mutex::scoped_lock::try_acquire" ref="591e0c49b82bcedffcbe0923f1b915ec" args="(mutex &mutex)" -->
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#591e0c49b82bcedffcbe0923f1b915ec">try_acquire</a> (<a class="el" href="a00112.html">mutex</a> &<a class="el" href="a00112.html">mutex</a>)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Try acquire lock on given mutex. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0d51d18cd99df3b2e93bf07378d0992c"></a><!-- doxytag: member="tbb::mutex::scoped_lock::release" ref="0d51d18cd99df3b2e93bf07378d0992c" args="()" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#0d51d18cd99df3b2e93bf07378d0992c">release</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The scoped locking pattern. 
+<p>
+It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks. 
+<p>
+<hr><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" name="605a6b9af0f8cdabdf81825e0de99600"></a><!-- doxytag: member="tbb::mutex::scoped_lock::scoped_lock" ref="605a6b9af0f8cdabdf81825e0de99600" args="(mutex &mutex)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">tbb::mutex::scoped_lock::scoped_lock           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00112.html">mutex</a> & </td>
+          <td class="paramname"> <em>mutex</em>          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Acquire lock on given mutex. 
+<p>
+Upon entry, *this should not be in the "have acquired a mutex" state. 
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00228.html">mutex.h</a></ul>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00114.html b/doc/html/a00114.html
new file mode 100644
index 0000000..aa444fb
--- /dev/null
+++ b/doc/html/a00114.html
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb::parallel_do_feeder< Item > Class Template Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00114.html">parallel_do_feeder</a></div>
+<h1>tbb::parallel_do_feeder< Item > Class Template Reference</h1><!-- doxytag: class="tbb::parallel_do_feeder" -->Class the user supplied algorithm body uses to add new tasks.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00234.html">parallel_do.h</a>></code>
+<p>
+<a href="a00030.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="40baaf0f6856f4491dd0adf896c93516"></a><!-- doxytag: member="tbb::parallel_do_feeder::add" ref="40baaf0f6856f4491dd0adf896c93516" args="(const Item &item)" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00114.html#40baaf0f6856f4491dd0adf896c93516">add</a> (const Item &item)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Add a work item to a running parallel_do. <br></td></tr>
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b381179b22f5f5e8511470c73d64b37f"></a><!-- doxytag: member="tbb::parallel_do_feeder::internal::parallel_do_feeder_impl" ref="b381179b22f5f5e8511470c73d64b37f" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>internal::parallel_do_feeder_impl</b></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template<typename Item><br>
+ class tbb::parallel_do_feeder< Item ></h3>
+
+Class the user supplied algorithm body uses to add new tasks. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>Item</em> </td><td>Work item type </td></tr>
+  </table>
+</dl>
+
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00234.html">parallel_do.h</a></ul>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00115.html b/doc/html/a00115.html
new file mode 100644
index 0000000..de1351e
--- /dev/null
+++ b/doc/html/a00115.html
@@ -0,0 +1,140 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb::parallel_while< Body > Class Template Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00115.html">parallel_while</a></div>
+<h1>tbb::parallel_while< Body > Class Template Reference<br>
+<small>
+[<a class="el" href="a00183.html">Algorithms</a>]</small>
+</h1><!-- doxytag: class="tbb::parallel_while" -->Parallel iteration over a stream, with optional addition of more work.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00260.html">parallel_while.h</a>></code>
+<p>
+<a href="a00033.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fa297e53d3af2a101e712bc200233e9c"></a><!-- doxytag: member="tbb::parallel_while::value_type" ref="fa297e53d3af2a101e712bc200233e9c" args="" -->
+typedef Body::argument_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00115.html#fa297e53d3af2a101e712bc200233e9c">value_type</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Type of items. <br></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="36e26ba3880c7bcf804a97ba0cbe133f"></a><!-- doxytag: member="tbb::parallel_while::parallel_while" ref="36e26ba3880c7bcf804a97ba0cbe133f" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00115.html#36e26ba3880c7bcf804a97ba0cbe133f">parallel_while</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct empty non-running parallel while. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6fcfc973cc56b79c6d0fbb8a31be7e84"></a><!-- doxytag: member="tbb::parallel_while::~parallel_while" ref="6fcfc973cc56b79c6d0fbb8a31be7e84" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00115.html#6fcfc973cc56b79c6d0fbb8a31be7e84">~parallel_while</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Destructor cleans up data members before returning. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename Stream> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00115.html#b32a0a6e5e09ebb7fad3e6652c19afe5">run</a> (Stream &stream, const Body &body)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Apply body.apply to each item in the stream.  <a href="#b32a0a6e5e09ebb7fad3e6652c19afe5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00115.html#e131c560057a58229992b61eb8dba4c6">add</a> (const <a class="el" href="a00115.html#fa297e53d3af2a101e712bc200233e9c">value_type</a> &item)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Add a work item while running.  <a href="#e131c560057a58229992b61eb8dba4c6"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template<typename Body><br>
+ class tbb::parallel_while< Body ></h3>
+
+Parallel iteration over a stream, with optional addition of more work. 
+<p>
+The Body b has the requirement: <br>
+ "b(v)" <br>
+ "b.argument_type" <br>
+ where v is an argument_type 
+<p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="e131c560057a58229992b61eb8dba4c6"></a><!-- doxytag: member="tbb::parallel_while::add" ref="e131c560057a58229992b61eb8dba4c6" args="(const value_type &item)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Body> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="a00115.html">tbb::parallel_while</a>< Body >::add           </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="a00115.html#fa297e53d3af2a101e712bc200233e9c">value_type</a> & </td>
+          <td class="paramname"> <em>item</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add a work item while running. 
+<p>
+Should be executed only by body.apply or a thread spawned therefrom. 
+</div>
+</div><p>
+<a class="anchor" name="b32a0a6e5e09ebb7fad3e6652c19afe5"></a><!-- doxytag: member="tbb::parallel_while::run" ref="b32a0a6e5e09ebb7fad3e6652c19afe5" args="(Stream &stream, const Body &body)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Body> </div>
+<div class="memtemplate">
+template<typename Stream> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="a00115.html">tbb::parallel_while</a>< Body >::run           </td>
+          <td>(</td>
+          <td class="paramtype">Stream & </td>
+          <td class="paramname"> <em>stream</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Body & </td>
+          <td class="paramname"> <em>body</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Apply body.apply to each item in the stream. 
+<p>
+A Stream s has the requirements <br>
+ "S::value_type" <br>
+ "s.pop_if_present(value) is convertible to bool 
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00260.html">parallel_while.h</a></ul>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00116.html b/doc/html/a00116.html
new file mode 100644
index 0000000..83c43c2
--- /dev/null
+++ b/doc/html/a00116.html
@@ -0,0 +1,99 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb::pipeline Class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00116.html">pipeline</a></div>
+<h1>tbb::pipeline Class Reference<br>
+<small>
+[<a class="el" href="a00183.html">Algorithms</a>]</small>
+</h1><!-- doxytag: class="tbb::pipeline" -->A processing pipeling that applies filters to items.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00269.html">pipeline.h</a>></code>
+<p>
+<a href="a00040.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="596dc3beba27099c4c8581cb419e1a59"></a><!-- doxytag: member="tbb::pipeline::pipeline" ref="596dc3beba27099c4c8581cb419e1a59" args="()" -->
+__TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00116.html#596dc3beba27099c4c8581cb419e1a59">pipeline</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct empty pipeline. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00116.html#49513c6c24f9d5bbbb27edca5efe01c9">~pipeline</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="38fb5c9c8395dd6f89a4ae2011a83e0d"></a><!-- doxytag: member="tbb::pipeline::add_filter" ref="38fb5c9c8395dd6f89a4ae2011a83e0d" args="(filter &filter_)" -->
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00116.html#38fb5c9c8395dd6f89a4ae2011a83e0d">add_filter</a> (<a class="el" href="a00109.html">filter</a> &filter_)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Add filter to end of pipeline. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f627616049b3fe36801f37ee40403ef8"></a><!-- doxytag: member="tbb::pipeline::run" ref="f627616049b3fe36801f37ee40403ef8" args="(size_t max_number_of_live_tokens)" -->
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00116.html#f627616049b3fe36801f37ee40403ef8">run</a> (size_t max_number_of_live_tokens)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Run the pipeline to completion. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="93d7fec8cd607b803dd2d79fb46bd260"></a><!-- doxytag: member="tbb::pipeline::run" ref="93d7fec8cd607b803dd2d79fb46bd260" args="(size_t max_number_of_live_tokens, tbb::task_group_context &context)" -->
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00116.html#93d7fec8cd607b803dd2d79fb46bd260">run</a> (size_t max_number_of_live_tokens, <a class="el" href="a00133.html">tbb::task_group_context</a> &context)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Run the pipeline to completion with user-supplied context. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2c84aef5b834b555ee220b176e25931e"></a><!-- doxytag: member="tbb::pipeline::clear" ref="2c84aef5b834b555ee220b176e25931e" args="()" -->
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00116.html#2c84aef5b834b555ee220b176e25931e">clear</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Remove all filters from the pipeline. <br></td></tr>
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8228ce0751009045e8158d2e642715a6"></a><!-- doxytag: member="tbb::pipeline::internal::stage_task" ref="8228ce0751009045e8158d2e642715a6" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>internal::stage_task</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4c991e50853b0cac7da039550344d3ef"></a><!-- doxytag: member="tbb::pipeline::filter" ref="4c991e50853b0cac7da039550344d3ef" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>filter</b></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+A processing pipeling that applies filters to items. 
+<p>
+<hr><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" name="49513c6c24f9d5bbbb27edca5efe01c9"></a><!-- doxytag: member="tbb::pipeline::~pipeline" ref="49513c6c24f9d5bbbb27edca5efe01c9" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual __TBB_EXPORTED_METHOD tbb::pipeline::~pipeline           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"><code> [virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Though the current implementation declares the destructor virtual, do not rely on this detail. The virtualness is deprecated and may disappear in future versions of TBB. 
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00269.html">pipeline.h</a></ul>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00117.html b/doc/html/a00117.html
new file mode 100644
index 0000000..5cc630d
--- /dev/null
+++ b/doc/html/a00117.html
@@ -0,0 +1,53 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb::pre_scan_tag Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00117.html">pre_scan_tag</a></div>
+<h1>tbb::pre_scan_tag Struct Reference<br>
+<small>
+[<a class="el" href="a00183.html">Algorithms</a>]</small>
+</h1><!-- doxytag: class="tbb::pre_scan_tag" -->Used to indicate that the initial scan is being performed.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00251.html">parallel_scan.h</a>></code>
+<p>
+<a href="a00031.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d45d2cf548e51140ad6faafbea8ca6b5"></a><!-- doxytag: member="tbb::pre_scan_tag::is_final_scan" ref="d45d2cf548e51140ad6faafbea8ca6b5" args="()" -->
+static bool </td><td class="memItemRight" valign="bottom"><b>is_final_scan</b> ()</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Used to indicate that the initial scan is being performed. 
+<p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="a00251.html">parallel_scan.h</a></ul>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00118.html b/doc/html/a00118.html
new file mode 100644
index 0000000..331f25a
--- /dev/null
+++ b/doc/html/a00118.html
@@ -0,0 +1,75 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb::queuing_mutex Class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00118.html">queuing_mutex</a></div>
+<h1>tbb::queuing_mutex Class Reference<br>
+<small>
+[<a class="el" href="a00186.html">Synchronization</a>]</small>
+</h1><!-- doxytag: class="tbb::queuing_mutex" -->Queuing lock with local-only spinning.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00270.html">queuing_mutex.h</a>></code>
+<p>
+<a href="a00041.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b389ad9c4db7293e4bdb5b8cda69ec04"></a><!-- doxytag: member="tbb::queuing_mutex::queuing_mutex" ref="b389ad9c4db7293e4bdb5b8cda69ec04" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00118.html#b389ad9c4db7293e4bdb5b8cda69ec04">queuing_mutex</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct unacquired mutex. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="96c1fe92760dcd1c5a7ed52c6599a72f"></a><!-- doxytag: member="tbb::queuing_mutex::internal_construct" ref="96c1fe92760dcd1c5a7ed52c6599a72f" args="()" -->
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>internal_construct</b> ()</td></tr>
+
+<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="420932f70ff3b85f7280ff11a133938d"></a><!-- doxytag: member="tbb::queuing_mutex::is_rw_mutex" ref="420932f70ff3b85f7280ff11a133938d" args="" -->
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = false</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="dc0c749f3a4e6ea75418677cb8f9205f"></a><!-- doxytag: member="tbb::queuing_mutex::is_recursive_mutex" ref="dc0c749f3a4e6ea75418677cb8f9205f" args="" -->
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = false</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="55d5339e4ca04b759f90c0c1ef966539"></a><!-- doxytag: member="tbb::queuing_mutex::is_fair_mutex" ref="55d5339e4ca04b759f90c0c1ef966539" args="" -->
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = true</td></tr>
+
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a36f15b770a1bb0b56e33d7fa75ebd1a"></a><!-- doxytag: member="tbb::queuing_mutex::scoped_lock" ref="a36f15b770a1bb0b56e33d7fa75ebd1a" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b></td></tr>
+
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html">scoped_lock</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The scoped locking pattern.  <a href="a00119.html#_details">More...</a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Queuing lock with local-only spinning. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00270.html">queuing_mutex.h</a></ul>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00119.html b/doc/html/a00119.html
index a9076a1..d448c98 100644
--- a/doc/html/a00119.html
+++ b/doc/html/a00119.html
@@ -1,19 +1,110 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::queuing_mutex::scoped_lock Class Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::task_prefix Member List</h1>This is the complete list of members for <a class="el" href="a00264.html">tbb::internal::task_prefix</a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_additional_child_of_proxy</b> (defined in <a class="el" href="a00264.html">tbb::internal::task_prefix</a>)</td><td><a class="el" href="a00264.html">tbb::internal::task_prefix</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_child_proxy</b> (defined in <a class="el" href="a00264.html">tbb::internal::task_prefix</a>)</td><td><a class="el" href="a00264.html">tbb::internal::task_prefix</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_continuation_proxy</b> (defined in <a class="el" href="a00264.html">tbb::internal::task_prefix</a>)</td><td><a class="el" href="a00264.html">tbb::internal::task_prefix</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_proxy</b> (defined in <a class="el" href="a00264.html">tbb::internal::task_prefix</a>)</td><td><a class="el" href="a00264.html">tbb::internal::task_prefix</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::scheduler</b> (defined in <a class="el" href="a00264.html">tbb::internal::task_prefix</a>)</td><td><a class="el" href="a00264.html">tbb::internal::task_prefix</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>tbb::task</b> (defined in <a class="el" href="a00264.html">tbb::internal::task_prefix</a>)</td><td><a class="el" href="a00264.html">tbb::internal::task_prefix</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>tbb::task_list</b> (defined in <a class="el" href="a00264.html">tbb::internal::task_prefix</a>)</td><td><a class="el" href="a00264.html">tbb::internal::task_prefix</a></td><td><code> [friend]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00118.html">queuing_mutex</a>::<a class="el" href="a00119.html">scoped_lock</a></div>
+<h1>tbb::queuing_mutex::scoped_lock Class Reference</h1><!-- doxytag: class="tbb::queuing_mutex::scoped_lock" -->The scoped locking pattern.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00270.html">queuing_mutex.h</a>></code>
+<p>
+<a href="a00042.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#db0fa3967491014572e24d6607bdc971">scoped_lock</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct lock that has not acquired a mutex.  <a href="#db0fa3967491014572e24d6607bdc971"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#9b51ef972f5618ac17caadb58841ab6d">scoped_lock</a> (<a class="el" href="a00118.html">queuing_mutex</a> &m)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex.  <a href="#9b51ef972f5618ac17caadb58841ab6d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ac2c576a93570957d694192a5f491443"></a><!-- doxytag: member="tbb::queuing_mutex::scoped_lock::~scoped_lock" ref="ac2c576a93570957d694192a5f491443" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#ac2c576a93570957d694192a5f491443">~scoped_lock</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Release lock (if lock is held). <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="533e4fc8355ee321206a0609c42d909d"></a><!-- doxytag: member="tbb::queuing_mutex::scoped_lock::acquire" ref="533e4fc8355ee321206a0609c42d909d" args="(queuing_mutex &m)" -->
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#533e4fc8355ee321206a0609c42d909d">acquire</a> (<a class="el" href="a00118.html">queuing_mutex</a> &m)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e5a014fb817599386a87170cf2cf51a9"></a><!-- doxytag: member="tbb::queuing_mutex::scoped_lock::try_acquire" ref="e5a014fb817599386a87170cf2cf51a9" args="(queuing_mutex &m)" -->
+bool __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#e5a014fb817599386a87170cf2cf51a9">try_acquire</a> (<a class="el" href="a00118.html">queuing_mutex</a> &m)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex if free (i.e. non-blocking). <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3bf2b8c87ff22115be9b2eac179f2d30"></a><!-- doxytag: member="tbb::queuing_mutex::scoped_lock::release" ref="3bf2b8c87ff22115be9b2eac179f2d30" args="()" -->
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#3bf2b8c87ff22115be9b2eac179f2d30">release</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The scoped locking pattern. 
+<p>
+It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks. 
+<p>
+<hr><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" name="db0fa3967491014572e24d6607bdc971"></a><!-- doxytag: member="tbb::queuing_mutex::scoped_lock::scoped_lock" ref="db0fa3967491014572e24d6607bdc971" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">tbb::queuing_mutex::scoped_lock::scoped_lock           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Construct lock that has not acquired a mutex. 
+<p>
+Equivalent to zero-initialization of *this. 
+</div>
+</div><p>
+<a class="anchor" name="9b51ef972f5618ac17caadb58841ab6d"></a><!-- doxytag: member="tbb::queuing_mutex::scoped_lock::scoped_lock" ref="9b51ef972f5618ac17caadb58841ab6d" args="(queuing_mutex &m)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">tbb::queuing_mutex::scoped_lock::scoped_lock           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00118.html">queuing_mutex</a> & </td>
+          <td class="paramname"> <em>m</em>          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Acquire lock on given mutex. 
+<p>
+Upon entry, *this should not be in the "have acquired a mutex" state. 
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00270.html">queuing_mutex.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00120.html b/doc/html/a00120.html
index c85abd5..3a4dd7b 100644
--- a/doc/html/a00120.html
+++ b/doc/html/a00120.html
@@ -1,24 +1,76 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::queuing_rw_mutex Class Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::task_group_context Member List</h1>This is the complete list of members for <a class="el" href="a00262.html">tbb::task_group_context</a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>bound</b> enum value (defined in <a class="el" href="a00262.html">tbb::task_group_context</a>)</td><td><a class="el" href="a00262.html">tbb::task_group_context</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00262.html#a3">cancel_group_execution</a>()</td><td><a class="el" href="a00262.html">tbb::task_group_context</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00262.html#b0">init</a>()</td><td><a class="el" href="a00262.html">tbb::task_group_context</a></td><td><code> [protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_with_context_proxy</b> (defined in <a class="el" href="a00262.html">tbb::task_group_context</a>)</td><td><a class="el" href="a00262.html">tbb::task_group_context</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00262.html#a4">is_group_execution_cancelled</a>() const </td><td><a class="el" href="a00262.html">tbb::task_group_context</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>isolated</b> enum value (defined in <a class="el" href="a00262.html">tbb::task_group_context</a>)</td><td><a class="el" href="a00262.html">tbb::task_group_context</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>kind_type</b> enum name (defined in <a class="el" href="a00262.html">tbb::task_group_context</a>)</td><td><a class="el" href="a00262.html">tbb::task_group_context</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00230.html#a0">no_copy</a>()</td><td><a class="el" href="a00230.html">tbb::internal::no_copy</a></td><td><code> [inline, private]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00262.html#a2">reset</a>()</td><td><a class="el" href="a00262.html">tbb::task_group_context</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>task</b> (defined in <a class="el" href="a00262.html">tbb::task_group_context</a>)</td><td><a class="el" href="a00262.html">tbb::task_group_context</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00262.html#a0">task_group_context</a>(kind_type relation_with_parent=bound)</td><td><a class="el" href="a00262.html">tbb::task_group_context</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>~task_group_context</b>() (defined in <a class="el" href="a00262.html">tbb::task_group_context</a>)</td><td><a class="el" href="a00262.html">tbb::task_group_context</a></td><td></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00120.html">queuing_rw_mutex</a></div>
+<h1>tbb::queuing_rw_mutex Class Reference<br>
+<small>
+[<a class="el" href="a00186.html">Synchronization</a>]</small>
+</h1><!-- doxytag: class="tbb::queuing_rw_mutex" -->Reader-writer lock with local-only spinning.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00271.html">queuing_rw_mutex.h</a>></code>
+<p>
+<a href="a00043.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="85c90877c3447690ac4e2ac4ff8dea5e"></a><!-- doxytag: member="tbb::queuing_rw_mutex::queuing_rw_mutex" ref="85c90877c3447690ac4e2ac4ff8dea5e" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#85c90877c3447690ac4e2ac4ff8dea5e">queuing_rw_mutex</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct unacquired mutex. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1ba73e3d95cfdf8323880bc623af9099"></a><!-- doxytag: member="tbb::queuing_rw_mutex::~queuing_rw_mutex" ref="1ba73e3d95cfdf8323880bc623af9099" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#1ba73e3d95cfdf8323880bc623af9099">~queuing_rw_mutex</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Destructor asserts if the mutex is acquired, i.e. q_tail is non-NULL. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="eb88522d145ad7bcf5bebfa7d2a6122b"></a><!-- doxytag: member="tbb::queuing_rw_mutex::internal_construct" ref="eb88522d145ad7bcf5bebfa7d2a6122b" args="()" -->
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>internal_construct</b> ()</td></tr>
+
+<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0dc1e28d3033e8f9556f5b13b7b57d0f"></a><!-- doxytag: member="tbb::queuing_rw_mutex::is_rw_mutex" ref="0dc1e28d3033e8f9556f5b13b7b57d0f" args="" -->
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = true</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e6ad08ef251f9ea898bd5f67963869c5"></a><!-- doxytag: member="tbb::queuing_rw_mutex::is_recursive_mutex" ref="e6ad08ef251f9ea898bd5f67963869c5" args="" -->
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = false</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="147b34120505e419f6ea8d631ec4375d"></a><!-- doxytag: member="tbb::queuing_rw_mutex::is_fair_mutex" ref="147b34120505e419f6ea8d631ec4375d" args="" -->
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = true</td></tr>
+
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a36f15b770a1bb0b56e33d7fa75ebd1a"></a><!-- doxytag: member="tbb::queuing_rw_mutex::scoped_lock" ref="a36f15b770a1bb0b56e33d7fa75ebd1a" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b></td></tr>
+
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00121.html">scoped_lock</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The scoped locking pattern.  <a href="a00121.html#_details">More...</a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Reader-writer lock with local-only spinning. 
+<p>
+Adapted from Krieger, Stumm, et al. pseudocode at <a href="http://www.eecg.toronto.edu/parallel/pubs_abs.html#Krieger_etal_ICPP93">http://www.eecg.toronto.edu/parallel/pubs_abs.html#Krieger_etal_ICPP93</a> 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00271.html">queuing_rw_mutex.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00121.html b/doc/html/a00121.html
new file mode 100644
index 0000000..c4a3d89
--- /dev/null
+++ b/doc/html/a00121.html
@@ -0,0 +1,153 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb::queuing_rw_mutex::scoped_lock Class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00120.html">queuing_rw_mutex</a>::<a class="el" href="a00121.html">scoped_lock</a></div>
+<h1>tbb::queuing_rw_mutex::scoped_lock Class Reference</h1><!-- doxytag: class="tbb::queuing_rw_mutex::scoped_lock" -->The scoped locking pattern.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00271.html">queuing_rw_mutex.h</a>></code>
+<p>
+<a href="a00044.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00121.html#c62e365be7bcbba091c9ea7454a4d22c">scoped_lock</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct lock that has not acquired a mutex.  <a href="#c62e365be7bcbba091c9ea7454a4d22c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00121.html#fbb8798792d3aebb136c46fc63d2529e">scoped_lock</a> (<a class="el" href="a00120.html">queuing_rw_mutex</a> &m, bool write=true)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex.  <a href="#fbb8798792d3aebb136c46fc63d2529e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="32c7d67a660d23ebbaab1a1d2826d31a"></a><!-- doxytag: member="tbb::queuing_rw_mutex::scoped_lock::~scoped_lock" ref="32c7d67a660d23ebbaab1a1d2826d31a" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00121.html#32c7d67a660d23ebbaab1a1d2826d31a">~scoped_lock</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Release lock (if lock is held). <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a8dd5ab8686e76de21587544dbb681e0"></a><!-- doxytag: member="tbb::queuing_rw_mutex::scoped_lock::acquire" ref="a8dd5ab8686e76de21587544dbb681e0" args="(queuing_rw_mutex &m, bool write=true)" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00121.html#a8dd5ab8686e76de21587544dbb681e0">acquire</a> (<a class="el" href="a00120.html">queuing_rw_mutex</a> &m, bool write=true)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2e4ff6c9ec2fee6682f95290d1f42baa"></a><!-- doxytag: member="tbb::queuing_rw_mutex::scoped_lock::try_acquire" ref="2e4ff6c9ec2fee6682f95290d1f42baa" args="(queuing_rw_mutex &m, bool write=true)" -->
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00121.html#2e4ff6c9ec2fee6682f95290d1f42baa">try_acquire</a> (<a class="el" href="a00120.html">queuing_rw_mutex</a> &m, bool write=true)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Try acquire lock on given mutex. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="67ae221109ddc69510ab593874e435d4"></a><!-- doxytag: member="tbb::queuing_rw_mutex::scoped_lock::release" ref="67ae221109ddc69510ab593874e435d4" args="()" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00121.html#67ae221109ddc69510ab593874e435d4">release</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00121.html#11ba1da4a722c9e6f73339a52c487e82">upgrade_to_writer</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Upgrade reader to become a writer.  <a href="#11ba1da4a722c9e6f73339a52c487e82"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0d2f93edf7b15ec4bcee138823220c52"></a><!-- doxytag: member="tbb::queuing_rw_mutex::scoped_lock::downgrade_to_reader" ref="0d2f93edf7b15ec4bcee138823220c52" args="()" -->
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00121.html#0d2f93edf7b15ec4bcee138823220c52">downgrade_to_reader</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Downgrade writer to become a reader. <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The scoped locking pattern. 
+<p>
+It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks. 
+<p>
+<hr><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" name="c62e365be7bcbba091c9ea7454a4d22c"></a><!-- doxytag: member="tbb::queuing_rw_mutex::scoped_lock::scoped_lock" ref="c62e365be7bcbba091c9ea7454a4d22c" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">tbb::queuing_rw_mutex::scoped_lock::scoped_lock           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Construct lock that has not acquired a mutex. 
+<p>
+Equivalent to zero-initialization of *this. 
+</div>
+</div><p>
+<a class="anchor" name="fbb8798792d3aebb136c46fc63d2529e"></a><!-- doxytag: member="tbb::queuing_rw_mutex::scoped_lock::scoped_lock" ref="fbb8798792d3aebb136c46fc63d2529e" args="(queuing_rw_mutex &m, bool write=true)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">tbb::queuing_rw_mutex::scoped_lock::scoped_lock           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00120.html">queuing_rw_mutex</a> & </td>
+          <td class="paramname"> <em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool </td>
+          <td class="paramname"> <em>write</em> = <code>true</code></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Acquire lock on given mutex. 
+<p>
+Upon entry, *this should not be in the "have acquired a mutex" state. 
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="11ba1da4a722c9e6f73339a52c487e82"></a><!-- doxytag: member="tbb::queuing_rw_mutex::scoped_lock::upgrade_to_writer" ref="11ba1da4a722c9e6f73339a52c487e82" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool tbb::queuing_rw_mutex::scoped_lock::upgrade_to_writer           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Upgrade reader to become a writer. 
+<p>
+Returns true if the upgrade happened without re-acquiring the lock and false if opposite 
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00271.html">queuing_rw_mutex.h</a></ul>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00122.html b/doc/html/a00122.html
index b3ff509..f9c5cd0 100644
--- a/doc/html/a00122.html
+++ b/doc/html/a00122.html
@@ -1,64 +1,69 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::recursive_mutex Class Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::task Member List</h1>This is the complete list of members for <a class="el" href="a00261.html">tbb::task</a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a12">add_to_depth</a>(int delta)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a25">affinity</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w1">affinity_id</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a4">allocate_additional_child_of</a>(task &t)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a3">allocate_child</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a2">allocate_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e0">allocate_root</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e1">allocate_root</a>(task_group_context &ctx)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w5">allocated</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a27">cancel_group_execution</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a10">depth</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w0">depth_type</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a5">destroy</a>(task &victim)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a1">execute</a>()=0</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [pure virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w2">executing</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w6">freed</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_additional_child_of_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_child_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_continuation_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_with_context_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::scheduler</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a28">is_cancelled</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a23">is_owned_by_current_thread</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a20">is_stolen_task</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00230.html#a0">no_copy</a>()</td><td><a class="el" href="a00230.html">tbb::internal::no_copy</a></td><td><code> [inline, private]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a26">note_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a19">parent</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w4">ready</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w7">recycle</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a8">recycle_as_child_of</a>(task &new_parent)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a6">recycle_as_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a7">recycle_as_safe_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a9">recycle_to_reexecute</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w3">reexecute</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a22">ref_count</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e4">self</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a24">set_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a11">set_depth</a>(depth_type new_depth)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a13">set_ref_count</a>(int count)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a14">spawn</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a15">spawn</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a16">spawn_and_wait_for_all</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a17">spawn_and_wait_for_all</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e2">spawn_root_and_wait</a>(task &root)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e3">spawn_root_and_wait</a>(task_list &root_list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a21">state</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8">state_type</a> enum name</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#b0">task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, protected]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>task_list</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a18">wait_for_all</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a0">~task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00122.html">recursive_mutex</a></div>
+<h1>tbb::recursive_mutex Class Reference<br>
+<small>
+[<a class="el" href="a00186.html">Synchronization</a>]</small>
+</h1><!-- doxytag: class="tbb::recursive_mutex" -->Mutex that allows recursive mutex acquisition.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00272.html">recursive_mutex.h</a>></code>
+<p>
+<a href="a00045.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d2fceb7f95c24a8cd1457d4527e4b8c6"></a><!-- doxytag: member="tbb::recursive_mutex::recursive_mutex" ref="d2fceb7f95c24a8cd1457d4527e4b8c6" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00122.html#d2fceb7f95c24a8cd1457d4527e4b8c6">recursive_mutex</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct unacquired <a class="el" href="a00122.html">recursive_mutex</a>. <br></td></tr>
+<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="718cc53f6b33d8c396ccca0e4ebc5606"></a><!-- doxytag: member="tbb::recursive_mutex::is_rw_mutex" ref="718cc53f6b33d8c396ccca0e4ebc5606" args="" -->
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = false</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f6149d7541063d8b35afd98df6f0f89d"></a><!-- doxytag: member="tbb::recursive_mutex::is_recursive_mutex" ref="f6149d7541063d8b35afd98df6f0f89d" args="" -->
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = true</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f01aacad6b9b9d51573c0803323182fe"></a><!-- doxytag: member="tbb::recursive_mutex::is_fair_mutex" ref="f01aacad6b9b9d51573c0803323182fe" args="" -->
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = false</td></tr>
+
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a36f15b770a1bb0b56e33d7fa75ebd1a"></a><!-- doxytag: member="tbb::recursive_mutex::scoped_lock" ref="a36f15b770a1bb0b56e33d7fa75ebd1a" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b></td></tr>
+
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html">scoped_lock</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The scoped locking pattern.  <a href="a00123.html#_details">More...</a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Mutex that allows recursive mutex acquisition. 
+<p>
+Mutex that allows recursive mutex acquisition. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00272.html">recursive_mutex.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00123.html b/doc/html/a00123.html
index 48a53eb..ef65507 100644
--- a/doc/html/a00123.html
+++ b/doc/html/a00123.html
@@ -1,61 +1,90 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::recursive_mutex::scoped_lock Class Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::empty_task Member List</h1>This is the complete list of members for <a class="el" href="a00215.html">tbb::empty_task</a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a12">add_to_depth</a>(int delta)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a25">affinity</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w1">affinity_id</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a4">allocate_additional_child_of</a>(task &t)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a3">allocate_child</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a2">allocate_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e0">allocate_root</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e1">allocate_root</a>(task_group_context &ctx)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w5">allocated</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a27">cancel_group_execution</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a10">depth</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w0">depth_type</a> typedef</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a5">destroy</a>(task &victim)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w2">executing</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w6">freed</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_additional_child_of_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_child_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_continuation_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::allocate_root_with_context_proxy</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>internal::scheduler</b> (defined in <a class="el" href="a00261.html">tbb::task</a>)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a28">is_cancelled</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a23">is_owned_by_current_thread</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a20">is_stolen_task</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a26">note_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a19">parent</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w4">ready</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w7">recycle</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a8">recycle_as_child_of</a>(task &new_parent)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a6">recycle_as_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a7">recycle_as_safe_continuation</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a9">recycle_to_reexecute</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8w3">reexecute</a> enum value</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a22">ref_count</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e4">self</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a24">set_affinity</a>(affinity_id id)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a11">set_depth</a>(depth_type new_depth)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a13">set_ref_count</a>(int count)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a14">spawn</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a15">spawn</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a16">spawn_and_wait_for_all</a>(task &child)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a17">spawn_and_wait_for_all</a>(task_list &list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e2">spawn_root_and_wait</a>(task &root)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#e3">spawn_root_and_wait</a>(task_list &root_list)</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a21">state</a>() const </td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#w8">state_type</a> enum name</td><td><a class="el" href="a00261.html">tbb::task</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#b0">task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a18">wait_for_all</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00261.html#a0">~task</a>()</td><td><a class="el" href="a00261.html">tbb::task</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00122.html">recursive_mutex</a>::<a class="el" href="a00123.html">scoped_lock</a></div>
+<h1>tbb::recursive_mutex::scoped_lock Class Reference</h1><!-- doxytag: class="tbb::recursive_mutex::scoped_lock" -->The scoped locking pattern.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00272.html">recursive_mutex.h</a>></code>
+<p>
+<a href="a00046.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d82d4d36fbf9727a493d26ae50855fe7"></a><!-- doxytag: member="tbb::recursive_mutex::scoped_lock::scoped_lock" ref="d82d4d36fbf9727a493d26ae50855fe7" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html#d82d4d36fbf9727a493d26ae50855fe7">scoped_lock</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct lock that has not acquired a <a class="el" href="a00122.html">recursive_mutex</a>. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html#dec17713c4c1321ac8fec66816d0c602">scoped_lock</a> (<a class="el" href="a00122.html">recursive_mutex</a> &<a class="el" href="a00112.html">mutex</a>)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex.  <a href="#dec17713c4c1321ac8fec66816d0c602"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c1197ffb8f3cd9d4fed71d7e06265b7c"></a><!-- doxytag: member="tbb::recursive_mutex::scoped_lock::~scoped_lock" ref="c1197ffb8f3cd9d4fed71d7e06265b7c" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html#c1197ffb8f3cd9d4fed71d7e06265b7c">~scoped_lock</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Release lock (if lock is held). <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7fb04da37cccf8c99b1f9102d9074f9a"></a><!-- doxytag: member="tbb::recursive_mutex::scoped_lock::acquire" ref="7fb04da37cccf8c99b1f9102d9074f9a" args="(recursive_mutex &mutex)" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html#7fb04da37cccf8c99b1f9102d9074f9a">acquire</a> (<a class="el" href="a00122.html">recursive_mutex</a> &<a class="el" href="a00112.html">mutex</a>)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="36bfc3e93e3ef6340abef4901444d340"></a><!-- doxytag: member="tbb::recursive_mutex::scoped_lock::try_acquire" ref="36bfc3e93e3ef6340abef4901444d340" args="(recursive_mutex &mutex)" -->
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html#36bfc3e93e3ef6340abef4901444d340">try_acquire</a> (<a class="el" href="a00122.html">recursive_mutex</a> &<a class="el" href="a00112.html">mutex</a>)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Try acquire lock on given <a class="el" href="a00122.html">recursive_mutex</a>. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ac480ea0e9d5ea0345a67d57008b6263"></a><!-- doxytag: member="tbb::recursive_mutex::scoped_lock::release" ref="ac480ea0e9d5ea0345a67d57008b6263" args="()" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html#ac480ea0e9d5ea0345a67d57008b6263">release</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The scoped locking pattern. 
+<p>
+It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks. 
+<p>
+<hr><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" name="dec17713c4c1321ac8fec66816d0c602"></a><!-- doxytag: member="tbb::recursive_mutex::scoped_lock::scoped_lock" ref="dec17713c4c1321ac8fec66816d0c602" args="(recursive_mutex &mutex)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">tbb::recursive_mutex::scoped_lock::scoped_lock           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00122.html">recursive_mutex</a> & </td>
+          <td class="paramname"> <em>mutex</em>          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Acquire lock on given mutex. 
+<p>
+Upon entry, *this should not be in the "have acquired a mutex" state. 
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00272.html">recursive_mutex.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00124.html b/doc/html/a00124.html
index dddf1a9..10d43da 100644
--- a/doc/html/a00124.html
+++ b/doc/html/a00124.html
@@ -1,20 +1,107 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::scalable_allocator< T > Class Template Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::task_list Member List</h1>This is the complete list of members for <a class="el" href="a00263.html">tbb::task_list</a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00263.html#a5">clear</a>()</td><td><a class="el" href="a00263.html">tbb::task_list</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00263.html#a2">empty</a>() const </td><td><a class="el" href="a00263.html">tbb::task_list</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00230.html#a0">no_copy</a>()</td><td><a class="el" href="a00230.html">tbb::internal::no_copy</a></td><td><code> [inline, private]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00263.html#a4">pop_front</a>()</td><td><a class="el" href="a00263.html">tbb::task_list</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00263.html#a3">push_back</a>(task &task)</td><td><a class="el" href="a00263.html">tbb::task_list</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>task</b> (defined in <a class="el" href="a00263.html">tbb::task_list</a>)</td><td><a class="el" href="a00263.html">tbb::task_list</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00263.html#a0">task_list</a>()</td><td><a class="el" href="a00263.html">tbb::task_list</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00263.html#a1">~task_list</a>()</td><td><a class="el" href="a00263.html">tbb::task_list</a></td><td><code> [inline]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00124.html">scalable_allocator</a></div>
+<h1>tbb::scalable_allocator< T > Class Template Reference<br>
+<small>
+[<a class="el" href="a00185.html">Memory Allocation</a>]</small>
+</h1><!-- doxytag: class="tbb::scalable_allocator" -->Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00273.html">scalable_allocator.h</a>></code>
+<p>
+<a href="a00047.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5a1cf13c339ee177a103a7e19bf2710a"></a><!-- doxytag: member="tbb::scalable_allocator::value_type" ref="5a1cf13c339ee177a103a7e19bf2710a" args="" -->
+typedef internal::allocator_type<<br>
+ T >::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5121ec62bc79faba6a4b674d59e7260"></a><!-- doxytag: member="tbb::scalable_allocator::pointer" ref="a5121ec62bc79faba6a4b674d59e7260" args="" -->
+typedef value_type * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="846a6fcec3bc7fa3839a12266a729a02"></a><!-- doxytag: member="tbb::scalable_allocator::const_pointer" ref="846a6fcec3bc7fa3839a12266a729a02" args="" -->
+typedef const value_type * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="254d7749de9277bb7711470c04d963ea"></a><!-- doxytag: member="tbb::scalable_allocator::reference" ref="254d7749de9277bb7711470c04d963ea" args="" -->
+typedef value_type & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="acad193a7f6e16253f772ba3e9b2c98f"></a><!-- doxytag: member="tbb::scalable_allocator::const_reference" ref="acad193a7f6e16253f772ba3e9b2c98f" args="" -->
+typedef const value_type & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4a5cb7482f222a14b513bbdd4ad8507d"></a><!-- doxytag: member="tbb::scalable_allocator::size_type" ref="4a5cb7482f222a14b513bbdd4ad8507d" args="" -->
+typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cb96c23f650cf91a73e2810b54c481bb"></a><!-- doxytag: member="tbb::scalable_allocator::difference_type" ref="cb96c23f650cf91a73e2810b54c481bb" args="" -->
+typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
+
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="eee1873729ed05c7f92544c3ff0c08bc"></a><!-- doxytag: member="tbb::scalable_allocator::scalable_allocator" ref="eee1873729ed05c7f92544c3ff0c08bc" args="(const scalable_allocator &)" -->
+ </td><td class="memItemRight" valign="bottom"><b>scalable_allocator</b> (const <a class="el" href="a00124.html">scalable_allocator</a> &)  throw ()</td></tr>
+
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="d56dc9f231c59f912297ac3c3b3b93b6"></a><!-- doxytag: member="tbb::scalable_allocator::scalable_allocator" ref="d56dc9f231c59f912297ac3c3b3b93b6" args="(const scalable_allocator< U > &)" -->
+template<typename U> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>scalable_allocator</b> (const <a class="el" href="a00124.html">scalable_allocator</a>< U > &)  throw ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="78fa13a188b542ea724d45a9dbf5a071"></a><!-- doxytag: member="tbb::scalable_allocator::address" ref="78fa13a188b542ea724d45a9dbf5a071" args="(reference x) const " -->
+pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (reference x) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="14be4ad8eb478c87e240e605221ab455"></a><!-- doxytag: member="tbb::scalable_allocator::address" ref="14be4ad8eb478c87e240e605221ab455" args="(const_reference x) const " -->
+const_pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (const_reference x) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="726b1586d05d44665a36e1c7b2699bfd"></a><!-- doxytag: member="tbb::scalable_allocator::allocate" ref="726b1586d05d44665a36e1c7b2699bfd" args="(size_type n, const void *=0)" -->
+pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#726b1586d05d44665a36e1c7b2699bfd">allocate</a> (size_type n, const void *=0)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Allocate space for n objects. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f806a238c18cbcfb531e1e0a0d2ec59d"></a><!-- doxytag: member="tbb::scalable_allocator::deallocate" ref="f806a238c18cbcfb531e1e0a0d2ec59d" args="(pointer p, size_type)" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#f806a238c18cbcfb531e1e0a0d2ec59d">deallocate</a> (pointer p, size_type)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Free previously allocated block of memory. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="880e766f1d913988c21973dbdd874fd5"></a><!-- doxytag: member="tbb::scalable_allocator::max_size" ref="880e766f1d913988c21973dbdd874fd5" args="() const " -->
+size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#880e766f1d913988c21973dbdd874fd5">max_size</a> () const   throw ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Largest value for which method allocate might succeed. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5a9891a26790b98e9b9a68dad875faa8"></a><!-- doxytag: member="tbb::scalable_allocator::construct" ref="5a9891a26790b98e9b9a68dad875faa8" args="(pointer p, const value_type &val)" -->
+void </td><td class="memItemRight" valign="bottom"><b>construct</b> (pointer p, const value_type &val)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="743f878b04a492bf7ae0e82a64dc20c8"></a><!-- doxytag: member="tbb::scalable_allocator::destroy" ref="743f878b04a492bf7ae0e82a64dc20c8" args="(pointer p)" -->
+void </td><td class="memItemRight" valign="bottom"><b>destroy</b> (pointer p)</td></tr>
+
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>rebind</b></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template<typename T><br>
+ class tbb::scalable_allocator< T ></h3>
+
+Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. 
+<p>
+The members are ordered the same way they are in section 20.4.1 of the ISO C++ standard. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00273.html">scalable_allocator.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00125.html b/doc/html/a00125.html
index 7e3cf30..ba1b4c6 100644
--- a/doc/html/a00125.html
+++ b/doc/html/a00125.html
@@ -1,22 +1,60 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::scalable_allocator< void > Class Template Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::task_scheduler_init Member List</h1>This is the complete list of members for <a class="el" href="a00265.html">tbb::task_scheduler_init</a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00265.html#s0">automatic</a></td><td><a class="el" href="a00265.html">tbb::task_scheduler_init</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00265.html#e0">default_num_threads</a>()</td><td><a class="el" href="a00265.html">tbb::task_scheduler_init</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00265.html#s1">deferred</a></td><td><a class="el" href="a00265.html">tbb::task_scheduler_init</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00265.html#a0">initialize</a>(int number_of_threads=automatic)</td><td><a class="el" href="a00265.html">tbb::task_scheduler_init</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00265.html#a1">initialize</a>(int number_of_threads, stack_size_type thread_stack_size)</td><td><a class="el" href="a00265.html">tbb::task_scheduler_init</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00265.html#a5">is_active</a>() const </td><td><a class="el" href="a00265.html">tbb::task_scheduler_init</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00230.html#a0">no_copy</a>()</td><td><a class="el" href="a00230.html">tbb::internal::no_copy</a></td><td><code> [inline, private]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00265.html#a3">task_scheduler_init</a>(int number_of_threads=automatic, stack_size_type thread_stack_size=0)</td><td><a class="el" href="a00265.html">tbb::task_scheduler_init</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00265.html#a2">terminate</a>()</td><td><a class="el" href="a00265.html">tbb::task_scheduler_init</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00265.html#a4">~task_scheduler_init</a>()</td><td><a class="el" href="a00265.html">tbb::task_scheduler_init</a></td><td><code> [inline]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00125.html">scalable_allocator< void ></a></div>
+<h1>tbb::scalable_allocator< void > Class Template Reference<br>
+<small>
+[<a class="el" href="a00185.html">Memory Allocation</a>]</small>
+</h1><!-- doxytag: class="tbb::scalable_allocator< void >" -->Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00273.html">scalable_allocator.h</a>></code>
+<p>
+<a href="a00049.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2046816029c2c7856f7684aed2af9cff"></a><!-- doxytag: member="tbb::scalable_allocator< void >::pointer" ref="2046816029c2c7856f7684aed2af9cff" args="" -->
+typedef void * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="591c568d23f8aadf6ea8d1dc939c4e75"></a><!-- doxytag: member="tbb::scalable_allocator< void >::const_pointer" ref="591c568d23f8aadf6ea8d1dc939c4e75" args="" -->
+typedef const void * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="64dbab666af0740c30b77edac9f157ce"></a><!-- doxytag: member="tbb::scalable_allocator< void >::value_type" ref="64dbab666af0740c30b77edac9f157ce" args="" -->
+typedef void </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>rebind</b></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template<><br>
+ class tbb::scalable_allocator< void ></h3>
+
+Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00273.html">scalable_allocator.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00126.html b/doc/html/a00126.html
new file mode 100644
index 0000000..03bab04
--- /dev/null
+++ b/doc/html/a00126.html
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb::simple_partitioner Class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00126.html">simple_partitioner</a></div>
+<h1>tbb::simple_partitioner Class Reference<br>
+<small>
+[<a class="el" href="a00183.html">Algorithms</a>]</small>
+</h1><!-- doxytag: class="tbb::simple_partitioner" -->A simple partitioner.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00264.html">partitioner.h</a>></code>
+<p>
+<a href="a00034.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a47f7e0208a2bf68f35b51b27d2ddf2a"></a><!-- doxytag: member="tbb::simple_partitioner::internal::start_for" ref="a47f7e0208a2bf68f35b51b27d2ddf2a" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>internal::start_for</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e8f710e431b62c2a48914bd99d0fe034"></a><!-- doxytag: member="tbb::simple_partitioner::internal::start_reduce" ref="e8f710e431b62c2a48914bd99d0fe034" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>internal::start_reduce</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="76d97ae6ad98db0acfc8ed8cb7c76705"></a><!-- doxytag: member="tbb::simple_partitioner::internal::start_scan" ref="76d97ae6ad98db0acfc8ed8cb7c76705" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>internal::start_scan</b></td></tr>
+
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>partition_type</b></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+A simple partitioner. 
+<p>
+Divides the range until the range is not divisible. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00264.html">partitioner.h</a></ul>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00127.html b/doc/html/a00127.html
index d379a13..4b05c55 100644
--- a/doc/html/a00127.html
+++ b/doc/html/a00127.html
@@ -1,33 +1,93 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::spin_mutex Class Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::tbb_allocator< T > Member List</h1>This is the complete list of members for <a class="el" href="a00266.html">tbb::tbb_allocator< T ></a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>address</b>(reference x) const  (defined in <a class="el" href="a00266.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00266.html">tbb::tbb_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>address</b>(const_reference x) const  (defined in <a class="el" href="a00266.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00266.html">tbb::tbb_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00266.html#a5">allocate</a>(size_type n, const void *=0)</td><td><a class="el" href="a00266.html">tbb::tbb_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00266.html#e0">allocator_type</a>()</td><td><a class="el" href="a00266.html">tbb::tbb_allocator< T ></a></td><td><code> [inline, static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>const_pointer</b> typedef (defined in <a class="el" href="a00266.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00266.html">tbb::tbb_allocator< T ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>const_reference</b> typedef (defined in <a class="el" href="a00266.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00266.html">tbb::tbb_allocator< T ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00266.html#a8">construct</a>(pointer p, const T &value)</td><td><a class="el" href="a00266.html">tbb::tbb_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00266.html#a6">deallocate</a>(pointer p, size_type)</td><td><a class="el" href="a00266.html">tbb::tbb_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00266.html#a9">destroy</a>(pointer p)</td><td><a class="el" href="a00266.html">tbb::tbb_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>difference_type</b> typedef (defined in <a class="el" href="a00266.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00266.html">tbb::tbb_allocator< T ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00266.html#w9">malloc_type</a> enum name</td><td><a class="el" href="a00266.html">tbb::tbb_allocator< T ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00266.html#a7">max_size</a>() const </td><td><a class="el" href="a00266.html">tbb::tbb_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>pointer</b> typedef (defined in <a class="el" href="a00266.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00266.html">tbb::tbb_allocator< T ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>reference</b> typedef (defined in <a class="el" href="a00266.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00266.html">tbb::tbb_allocator< T ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>scalable</b> enum value (defined in <a class="el" href="a00266.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00266.html">tbb::tbb_allocator< T ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>size_type</b> typedef (defined in <a class="el" href="a00266.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00266.html">tbb::tbb_allocator< T ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>standard</b> enum value (defined in <a class="el" href="a00266.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00266.html">tbb::tbb_allocator< T ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>tbb_allocator</b>() (defined in <a class="el" href="a00266.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00266.html">tbb::tbb_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>tbb_allocator</b>(const tbb_allocator &) (defined in <a class="el" href="a00266.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00266.html">tbb::tbb_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>tbb_allocator</b>(const tbb_allocator< U > &) (defined in <a class="el" href="a00266.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00266.html">tbb::tbb_allocator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>value_type</b> typedef (defined in <a class="el" href="a00266.html">tbb::tbb_allocator< T ></a>)</td><td><a class="el" href="a00266.html">tbb::tbb_allocator< T ></a></td><td></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00127.html">spin_mutex</a></div>
+<h1>tbb::spin_mutex Class Reference<br>
+<small>
+[<a class="el" href="a00186.html">Synchronization</a>]</small>
+</h1><!-- doxytag: class="tbb::spin_mutex" -->A lock that occupies a single byte.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00274.html">spin_mutex.h</a>></code>
+<p>
+<a href="a00051.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00127.html#3d8fb44644fd8d41ada1fbeba7409be3">spin_mutex</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct unacquired lock.  <a href="#3d8fb44644fd8d41ada1fbeba7409be3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4b3fa21632815f8fab2fd6c67ec0d48c"></a><!-- doxytag: member="tbb::spin_mutex::internal_construct" ref="4b3fa21632815f8fab2fd6c67ec0d48c" args="()" -->
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>internal_construct</b> ()</td></tr>
+
+<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5a7c93ca9e7ab656037a43984f24c051"></a><!-- doxytag: member="tbb::spin_mutex::is_rw_mutex" ref="5a7c93ca9e7ab656037a43984f24c051" args="" -->
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = false</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a967c455d0d80c9bbe030905201391b6"></a><!-- doxytag: member="tbb::spin_mutex::is_recursive_mutex" ref="a967c455d0d80c9bbe030905201391b6" args="" -->
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = false</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ec12e4036073fb684b6d2d33493ed0aa"></a><!-- doxytag: member="tbb::spin_mutex::is_fair_mutex" ref="ec12e4036073fb684b6d2d33493ed0aa" args="" -->
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = false</td></tr>
+
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a36f15b770a1bb0b56e33d7fa75ebd1a"></a><!-- doxytag: member="tbb::spin_mutex::scoped_lock" ref="a36f15b770a1bb0b56e33d7fa75ebd1a" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b></td></tr>
+
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00128.html">scoped_lock</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Represents acquisition of a mutex.  <a href="a00128.html#_details">More...</a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+A lock that occupies a single byte. 
+<p>
+A <a class="el" href="a00127.html">spin_mutex</a> is a spin mutex that fits in a single byte. It should be used only for locking short critical sections (typically <20 instructions) when fairness is not an issue. If zero-initialized, the mutex is considered unheld. 
+<p>
+<hr><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" name="3d8fb44644fd8d41ada1fbeba7409be3"></a><!-- doxytag: member="tbb::spin_mutex::spin_mutex" ref="3d8fb44644fd8d41ada1fbeba7409be3" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">tbb::spin_mutex::spin_mutex           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Construct unacquired lock. 
+<p>
+Equivalent to zero-initialization of *this. 
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00274.html">spin_mutex.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00128.html b/doc/html/a00128.html
new file mode 100644
index 0000000..1f7dbc3
--- /dev/null
+++ b/doc/html/a00128.html
@@ -0,0 +1,71 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb::spin_mutex::scoped_lock Class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00127.html">spin_mutex</a>::<a class="el" href="a00128.html">scoped_lock</a></div>
+<h1>tbb::spin_mutex::scoped_lock Class Reference</h1><!-- doxytag: class="tbb::spin_mutex::scoped_lock" -->Represents acquisition of a mutex.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00274.html">spin_mutex.h</a>></code>
+<p>
+<a href="a00052.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="29ae680ae7f5e685c2e15535b9c855b3"></a><!-- doxytag: member="tbb::spin_mutex::scoped_lock::scoped_lock" ref="29ae680ae7f5e685c2e15535b9c855b3" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00128.html#29ae680ae7f5e685c2e15535b9c855b3">scoped_lock</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct without acquiring a mutex. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5ce6807050a9e8f87bcb4a65dccb12ef"></a><!-- doxytag: member="tbb::spin_mutex::scoped_lock::scoped_lock" ref="5ce6807050a9e8f87bcb4a65dccb12ef" args="(spin_mutex &m)" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00128.html#5ce6807050a9e8f87bcb4a65dccb12ef">scoped_lock</a> (<a class="el" href="a00127.html">spin_mutex</a> &m)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct and acquire lock on a mutex. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3ee3c338732b1f64b0b32a757807a30d"></a><!-- doxytag: member="tbb::spin_mutex::scoped_lock::acquire" ref="3ee3c338732b1f64b0b32a757807a30d" args="(spin_mutex &m)" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00128.html#3ee3c338732b1f64b0b32a757807a30d">acquire</a> (<a class="el" href="a00127.html">spin_mutex</a> &m)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9297ec188534b45dc0ca48f2f39a0501"></a><!-- doxytag: member="tbb::spin_mutex::scoped_lock::try_acquire" ref="9297ec188534b45dc0ca48f2f39a0501" args="(spin_mutex &m)" -->
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00128.html#9297ec188534b45dc0ca48f2f39a0501">try_acquire</a> (<a class="el" href="a00127.html">spin_mutex</a> &m)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Try acquiring lock (non-blocking). <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="eeb615e68e963e6bf8d9c11402d0ce8e"></a><!-- doxytag: member="tbb::spin_mutex::scoped_lock::release" ref="eeb615e68e963e6bf8d9c11402d0ce8e" args="()" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00128.html#eeb615e68e963e6bf8d9c11402d0ce8e">release</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ac6fa425d1f06c56d8b70abc51aac844"></a><!-- doxytag: member="tbb::spin_mutex::scoped_lock::~scoped_lock" ref="ac6fa425d1f06c56d8b70abc51aac844" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00128.html#ac6fa425d1f06c56d8b70abc51aac844">~scoped_lock</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroy lock. If holding a lock, releases the lock first. <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Represents acquisition of a mutex. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00274.html">spin_mutex.h</a></ul>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00129.html b/doc/html/a00129.html
index 871ca47..160177f 100644
--- a/doc/html/a00129.html
+++ b/doc/html/a00129.html
@@ -1,15 +1,67 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::spin_rw_mutex_v3 Class Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::tbb_allocator< void > Member List</h1>This is the complete list of members for <a class="el" href="a00267.html">tbb::tbb_allocator< void ></a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>const_pointer</b> typedef (defined in <a class="el" href="a00267.html">tbb::tbb_allocator< void ></a>)</td><td><a class="el" href="a00267.html">tbb::tbb_allocator< void ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>pointer</b> typedef (defined in <a class="el" href="a00267.html">tbb::tbb_allocator< void ></a>)</td><td><a class="el" href="a00267.html">tbb::tbb_allocator< void ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>value_type</b> typedef (defined in <a class="el" href="a00267.html">tbb::tbb_allocator< void ></a>)</td><td><a class="el" href="a00267.html">tbb::tbb_allocator< void ></a></td><td></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00129.html">spin_rw_mutex_v3</a></div>
+<h1>tbb::spin_rw_mutex_v3 Class Reference<br>
+<small>
+[<a class="el" href="a00186.html">Synchronization</a>]</small>
+</h1><!-- doxytag: class="tbb::spin_rw_mutex_v3" -->Fast, unfair, spinning reader-writer lock with backoff and writer-preference.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00275.html">spin_rw_mutex.h</a>></code>
+<p>
+<a href="a00053.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="61332b2756de89f3f5f69310cbb6e70c"></a><!-- doxytag: member="tbb::spin_rw_mutex_v3::spin_rw_mutex_v3" ref="61332b2756de89f3f5f69310cbb6e70c" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00129.html#61332b2756de89f3f5f69310cbb6e70c">spin_rw_mutex_v3</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct unacquired mutex. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9a815fb2759e55072ed413f1b6970cf3"></a><!-- doxytag: member="tbb::spin_rw_mutex_v3::~spin_rw_mutex_v3" ref="9a815fb2759e55072ed413f1b6970cf3" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00129.html#9a815fb2759e55072ed413f1b6970cf3">~spin_rw_mutex_v3</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Destructor asserts if the mutex is acquired, i.e. state is zero. <br></td></tr>
+<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4c1e60f22c01604ca93c41b8334cc15e"></a><!-- doxytag: member="tbb::spin_rw_mutex_v3::is_rw_mutex" ref="4c1e60f22c01604ca93c41b8334cc15e" args="" -->
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = true</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="681a816fe76d6ca7752303f9dcc3c4b2"></a><!-- doxytag: member="tbb::spin_rw_mutex_v3::is_recursive_mutex" ref="681a816fe76d6ca7752303f9dcc3c4b2" args="" -->
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = false</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4dd66d90df6247da6050e88b2aa3b820"></a><!-- doxytag: member="tbb::spin_rw_mutex_v3::is_fair_mutex" ref="4dd66d90df6247da6050e88b2aa3b820" args="" -->
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = false</td></tr>
+
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00130.html">scoped_lock</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The scoped locking pattern.  <a href="a00130.html#_details">More...</a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Fast, unfair, spinning reader-writer lock with backoff and writer-preference. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00275.html">spin_rw_mutex.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00130.html b/doc/html/a00130.html
new file mode 100644
index 0000000..132cf3a
--- /dev/null
+++ b/doc/html/a00130.html
@@ -0,0 +1,153 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb::spin_rw_mutex_v3::scoped_lock Class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00129.html">spin_rw_mutex_v3</a>::<a class="el" href="a00130.html">scoped_lock</a></div>
+<h1>tbb::spin_rw_mutex_v3::scoped_lock Class Reference</h1><!-- doxytag: class="tbb::spin_rw_mutex_v3::scoped_lock" -->The scoped locking pattern.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00275.html">spin_rw_mutex.h</a>></code>
+<p>
+<a href="a00054.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00130.html#d6ea60dee5563f702379bf5e51aa8806">scoped_lock</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct lock that has not acquired a mutex.  <a href="#d6ea60dee5563f702379bf5e51aa8806"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00130.html#42a92d4f8fdde425b111cfa8a9228071">scoped_lock</a> (<a class="el" href="a00129.html">spin_rw_mutex</a> &m, bool write=true)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex.  <a href="#42a92d4f8fdde425b111cfa8a9228071"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d7eaaa3f2e2c5dc11e7005811b1bdd04"></a><!-- doxytag: member="tbb::spin_rw_mutex_v3::scoped_lock::~scoped_lock" ref="d7eaaa3f2e2c5dc11e7005811b1bdd04" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00130.html#d7eaaa3f2e2c5dc11e7005811b1bdd04">~scoped_lock</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Release lock (if lock is held). <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b0b646ec5be02a127d159bbb7ca65353"></a><!-- doxytag: member="tbb::spin_rw_mutex_v3::scoped_lock::acquire" ref="b0b646ec5be02a127d159bbb7ca65353" args="(spin_rw_mutex &m, bool write=true)" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00130.html#b0b646ec5be02a127d159bbb7ca65353">acquire</a> (<a class="el" href="a00129.html">spin_rw_mutex</a> &m, bool write=true)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00130.html#3f0b1e3f2efab63336400348bd070226">upgrade_to_writer</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Upgrade reader to become a writer.  <a href="#3f0b1e3f2efab63336400348bd070226"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="61b14d00a78185c9b2d206ebfc379124"></a><!-- doxytag: member="tbb::spin_rw_mutex_v3::scoped_lock::release" ref="61b14d00a78185c9b2d206ebfc379124" args="()" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00130.html#61b14d00a78185c9b2d206ebfc379124">release</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c2c2c38a08cb9080e87099fac3e5bc94"></a><!-- doxytag: member="tbb::spin_rw_mutex_v3::scoped_lock::downgrade_to_reader" ref="c2c2c38a08cb9080e87099fac3e5bc94" args="()" -->
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00130.html#c2c2c38a08cb9080e87099fac3e5bc94">downgrade_to_reader</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Downgrade writer to become a reader. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9879626968d9b9a04cd2ec0fb2e84ae1"></a><!-- doxytag: member="tbb::spin_rw_mutex_v3::scoped_lock::try_acquire" ref="9879626968d9b9a04cd2ec0fb2e84ae1" args="(spin_rw_mutex &m, bool write=true)" -->
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00130.html#9879626968d9b9a04cd2ec0fb2e84ae1">try_acquire</a> (<a class="el" href="a00129.html">spin_rw_mutex</a> &m, bool write=true)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Try acquire lock on given mutex. <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The scoped locking pattern. 
+<p>
+It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks. 
+<p>
+<hr><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" name="d6ea60dee5563f702379bf5e51aa8806"></a><!-- doxytag: member="tbb::spin_rw_mutex_v3::scoped_lock::scoped_lock" ref="d6ea60dee5563f702379bf5e51aa8806" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">tbb::spin_rw_mutex_v3::scoped_lock::scoped_lock           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Construct lock that has not acquired a mutex. 
+<p>
+Equivalent to zero-initialization of *this. 
+</div>
+</div><p>
+<a class="anchor" name="42a92d4f8fdde425b111cfa8a9228071"></a><!-- doxytag: member="tbb::spin_rw_mutex_v3::scoped_lock::scoped_lock" ref="42a92d4f8fdde425b111cfa8a9228071" args="(spin_rw_mutex &m, bool write=true)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">tbb::spin_rw_mutex_v3::scoped_lock::scoped_lock           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00129.html">spin_rw_mutex</a> & </td>
+          <td class="paramname"> <em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool </td>
+          <td class="paramname"> <em>write</em> = <code>true</code></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Acquire lock on given mutex. 
+<p>
+Upon entry, *this should not be in the "have acquired a mutex" state. 
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="3f0b1e3f2efab63336400348bd070226"></a><!-- doxytag: member="tbb::spin_rw_mutex_v3::scoped_lock::upgrade_to_writer" ref="3f0b1e3f2efab63336400348bd070226" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool tbb::spin_rw_mutex_v3::scoped_lock::upgrade_to_writer           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Upgrade reader to become a writer. 
+<p>
+Returns true if the upgrade happened without re-acquiring the lock and false if opposite 
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00275.html">spin_rw_mutex.h</a></ul>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00131.html b/doc/html/a00131.html
index 3ee1e17..8123bcd 100644
--- a/doc/html/a00131.html
+++ b/doc/html/a00131.html
@@ -1,14 +1,46 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::split Class Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::bad_last_alloc Member List</h1>This is the complete list of members for <a class="el" href="a00194.html">tbb::bad_last_alloc</a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>what</b>() const  (defined in <a class="el" href="a00194.html">tbb::bad_last_alloc</a>)</td><td><a class="el" href="a00194.html">tbb::bad_last_alloc</a></td><td><code> [inline, virtual]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>~bad_last_alloc</b>() (defined in <a class="el" href="a00194.html">tbb::bad_last_alloc</a>)</td><td><a class="el" href="a00194.html">tbb::bad_last_alloc</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00131.html">split</a></div>
+<h1>tbb::split Class Reference<br>
+<small>
+[<a class="el" href="a00183.html">Algorithms</a>]</small>
+</h1><!-- doxytag: class="tbb::split" -->Dummy type that distinguishes splitting constructor from copy constructor.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00294.html">tbb_stddef.h</a>></code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Dummy type that distinguishes splitting constructor from copy constructor. 
+<p>
+See description of parallel_for and parallel_reduce for example usages. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00294.html">tbb_stddef.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00132.html b/doc/html/a00132.html
index 22b55c0..23c5744 100644
--- a/doc/html/a00132.html
+++ b/doc/html/a00132.html
@@ -1,17 +1,630 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::task Class Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::tbb_exception Member List</h1>This is the complete list of members for <a class="el" href="a00268.html">tbb::tbb_exception</a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00268.html#a1">destroy</a>()=0</td><td><a class="el" href="a00268.html">tbb::tbb_exception</a></td><td><code> [pure virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00268.html#a0">move</a>()=0</td><td><a class="el" href="a00268.html">tbb::tbb_exception</a></td><td><code> [pure virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00268.html#a3">name</a>() const =0</td><td><a class="el" href="a00268.html">tbb::tbb_exception</a></td><td><code> [pure virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00268.html#a2">throw_self</a>()=0</td><td><a class="el" href="a00268.html">tbb::tbb_exception</a></td><td><code> [pure virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00268.html#a4">what</a>() const =0</td><td><a class="el" href="a00268.html">tbb::tbb_exception</a></td><td><code> [pure virtual]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00132.html">task</a></div>
+<h1>tbb::task Class Reference<br>
+<small>
+[<a class="el" href="a00188.html">Task Scheduling</a>]</small>
+</h1><!-- doxytag: class="tbb::task" -->Base class for user-defined tasks.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00276.html">task.h</a>></code>
+<p>
+Inherited by <a class="el" href="a00108.html">tbb::empty_task</a>.
+<p>
+Inheritance diagram for tbb::task:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00057.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef internal::intptr </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#d8815c39bb61bd7e2d2691c476ed03b9">depth_type</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">A scheduling depth.  <a href="#d8815c39bb61bd7e2d2691c476ed03b9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef internal::affinity_id </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#d61bb32389d3857bf7511d69beaafb76">affinity_id</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">An id as used for specifying affinity.  <a href="#d61bb32389d3857bf7511d69beaafb76"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293ead0fe2302ccc360923f738c2ed7ec1b9">executing</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">task is running, and will be destroyed after method <a class="el" href="a00132.html#22c298cd40937a431a06777423f002f6">execute()</a> completes.  <a href="#4a3c415562d17905390ea5b49d12293ead0fe2302ccc360923f738c2ed7ec1b9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e3bf499aa6e6487cd1ace883a63100513">reexecute</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">task to be rescheduled.  <a href="#4a3c415562d17905390ea5b49d12293e3bf499aa6e6487cd1ace883a63100513"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e0841dcf1c2a96dee9aa7b69f636cb81a">ready</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">task is in ready pool, or is going to be put there, or was just taken off.  <a href="#4a3c415562d17905390ea5b49d12293e0841dcf1c2a96dee9aa7b69f636cb81a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293ebe94d3348dd038e41107819f00c1884c">allocated</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">task object is freshly allocated or recycled.  <a href="#4a3c415562d17905390ea5b49d12293ebe94d3348dd038e41107819f00c1884c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293ecc67ca92bd6f1ce9738a1e9e7206b735">freed</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">task object is on free list, or is going to be put there, or was just taken off.  <a href="#4a3c415562d17905390ea5b49d12293ecc67ca92bd6f1ce9738a1e9e7206b735"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e58debec6ab130290640d0cc2eedba35d">recycle</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">task to be recycled as continuation  <a href="#4a3c415562d17905390ea5b49d12293e58debec6ab130290640d0cc2eedba35d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e">state_type</a> { <br>
+  <a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293ead0fe2302ccc360923f738c2ed7ec1b9">executing</a>, 
+<a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e3bf499aa6e6487cd1ace883a63100513">reexecute</a>, 
+<a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e0841dcf1c2a96dee9aa7b69f636cb81a">ready</a>, 
+<a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293ebe94d3348dd038e41107819f00c1884c">allocated</a>, 
+<br>
+  <a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293ecc67ca92bd6f1ce9738a1e9e7206b735">freed</a>, 
+<a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e58debec6ab130290640d0cc2eedba35d">recycle</a>
+<br>
+ }</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Enumeration of task states that the scheduler considers.  <a href="a00132.html#4a3c415562d17905390ea5b49d12293e">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="98245ee0473f84cb19dbbf8c81134908"></a><!-- doxytag: member="tbb::task::~task" ref="98245ee0473f84cb19dbbf8c81134908" args="()" -->
+virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#98245ee0473f84cb19dbbf8c81134908">~task</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="22c298cd40937a431a06777423f002f6"></a><!-- doxytag: member="tbb::task::execute" ref="22c298cd40937a431a06777423f002f6" args="()=0" -->
+virtual <a class="el" href="a00132.html">task</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#22c298cd40937a431a06777423f002f6">execute</a> ()=0</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Should be overridden by derived classes. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">internal::allocate_continuation_proxy & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#1434c79a5138993269d034008bff7329">allocate_continuation</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns proxy for overloaded new that allocates a continuation task of *this.  <a href="#1434c79a5138993269d034008bff7329"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1ff794f7053cd9148d5f280fbf07377f"></a><!-- doxytag: member="tbb::task::allocate_child" ref="1ff794f7053cd9148d5f280fbf07377f" args="()" -->
+internal::allocate_child_proxy & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#1ff794f7053cd9148d5f280fbf07377f">allocate_child</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns proxy for overloaded new that allocates a child task of *this. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">internal::allocate_additional_child_of_proxy </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#43bfe64c0e9333c0ca895cc0c375512b">allocate_additional_child_of</a> (<a class="el" href="a00132.html">task</a> &t)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Like allocate_child, except that task's parent becomes "t", not this.  <a href="#43bfe64c0e9333c0ca895cc0c375512b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#a57def00c8e9d932dbea0b3ee23991b9">destroy</a> (<a class="el" href="a00132.html">task</a> &victim)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroy a task.  <a href="#a57def00c8e9d932dbea0b3ee23991b9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#a67a79e18f62b43a623a00cfbd76db4c">recycle_as_continuation</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Change this to be a continuation of its former self.  <a href="#a67a79e18f62b43a623a00cfbd76db4c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#3b290d14109704e2b69dc1ac980a7a76">recycle_as_safe_continuation</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Recommended to use, safe variant of recycle_as_continuation.  <a href="#3b290d14109704e2b69dc1ac980a7a76"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="db399855177438bbc9cc61d508dae8d2"></a><!-- doxytag: member="tbb::task::recycle_as_child_of" ref="db399855177438bbc9cc61d508dae8d2" args="(task &new_parent)" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#db399855177438bbc9cc61d508dae8d2">recycle_as_child_of</a> (<a class="el" href="a00132.html">task</a> &new_parent)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Change this to be a child of new_parent. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#4f1be9bbcdb487830dbe298b68d85144">recycle_to_reexecute</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Schedule this for reexecution after current <a class="el" href="a00132.html#22c298cd40937a431a06777423f002f6">execute()</a> returns.  <a href="#4f1be9bbcdb487830dbe298b68d85144"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5be823a972b3c3b9901c5963eeb050fd"></a><!-- doxytag: member="tbb::task::depth" ref="5be823a972b3c3b9901c5963eeb050fd" args="() const " -->
+<a class="el" href="a00132.html#d8815c39bb61bd7e2d2691c476ed03b9">depth_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#5be823a972b3c3b9901c5963eeb050fd">depth</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Scheduling depth. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#fc4d4e61a56823aa1efdbb5d59e42973">set_depth</a> (<a class="el" href="a00132.html#d8815c39bb61bd7e2d2691c476ed03b9">depth_type</a> new_depth)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set scheduling depth to given value.  <a href="#fc4d4e61a56823aa1efdbb5d59e42973"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#b0f98c633647fc73b978fe4cd2277ac4">add_to_depth</a> (int delta)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Change scheduling depth by given amount.  <a href="#b0f98c633647fc73b978fe4cd2277ac4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="06a4206a57e8e12a439b14d6d41cfd92"></a><!-- doxytag: member="tbb::task::set_ref_count" ref="06a4206a57e8e12a439b14d6d41cfd92" args="(int count)" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#06a4206a57e8e12a439b14d6d41cfd92">set_ref_count</a> (int count)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set reference count. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#f7737143d458f1ed1c0d7da3971d9e6b">spawn</a> (<a class="el" href="a00132.html">task</a> &child)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Schedule task for execution when a worker becomes available.  <a href="#f7737143d458f1ed1c0d7da3971d9e6b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#db841c647eb6d754440c2f4e4a73c80b">spawn</a> (<a class="el" href="a00134.html">task_list</a> &list)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Spawn multiple tasks and clear list.  <a href="#db841c647eb6d754440c2f4e4a73c80b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3ce28ca9baa771cfc37ecd72e69c4f3c"></a><!-- doxytag: member="tbb::task::spawn_and_wait_for_all" ref="3ce28ca9baa771cfc37ecd72e69c4f3c" args="(task &child)" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#3ce28ca9baa771cfc37ecd72e69c4f3c">spawn_and_wait_for_all</a> (<a class="el" href="a00132.html">task</a> &child)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Similar to spawn followed by wait_for_all, but more efficient. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="894ab68378e502776d8220eea7ce9fa1"></a><!-- doxytag: member="tbb::task::spawn_and_wait_for_all" ref="894ab68378e502776d8220eea7ce9fa1" args="(task_list &list)" -->
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#894ab68378e502776d8220eea7ce9fa1">spawn_and_wait_for_all</a> (<a class="el" href="a00134.html">task_list</a> &list)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Similar to spawn followed by wait_for_all, but more efficient. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#53d2615ad9c38859b4c8080936600283">wait_for_all</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Wait for reference count to become one, and set reference count to zero.  <a href="#53d2615ad9c38859b4c8080936600283"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="314e98ee4347ccec83efcb9ee22e8596"></a><!-- doxytag: member="tbb::task::parent" ref="314e98ee4347ccec83efcb9ee22e8596" args="() const " -->
+<a class="el" href="a00132.html">task</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#314e98ee4347ccec83efcb9ee22e8596">parent</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">task on whose behalf this task is working, or NULL if this is a root. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f9169402702f56bf519448aaf34450aa"></a><!-- doxytag: member="tbb::task::is_stolen_task" ref="f9169402702f56bf519448aaf34450aa" args="() const " -->
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#f9169402702f56bf519448aaf34450aa">is_stolen_task</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">True if task is owned by different thread than thread that owns its parent. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0af7b2d7e6e8b4333b2accfce3dfb374"></a><!-- doxytag: member="tbb::task::state" ref="0af7b2d7e6e8b4333b2accfce3dfb374" args="() const " -->
+<a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e">state_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#0af7b2d7e6e8b4333b2accfce3dfb374">state</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Current execution state. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ad774f55eaec008ae02b236423209ced"></a><!-- doxytag: member="tbb::task::ref_count" ref="ad774f55eaec008ae02b236423209ced" args="() const " -->
+int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#ad774f55eaec008ae02b236423209ced">ref_count</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The internal reference count. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c26718b3b247cd13deb1a741902e7105"></a><!-- doxytag: member="tbb::task::is_owned_by_current_thread" ref="c26718b3b247cd13deb1a741902e7105" args="() const " -->
+bool __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#c26718b3b247cd13deb1a741902e7105">is_owned_by_current_thread</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">True if this task is owned by the calling thread; false otherwise. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="dca19d7a45487a7d67a0db517e2b57c9"></a><!-- doxytag: member="tbb::task::set_affinity" ref="dca19d7a45487a7d67a0db517e2b57c9" args="(affinity_id id)" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#dca19d7a45487a7d67a0db517e2b57c9">set_affinity</a> (<a class="el" href="a00132.html#d61bb32389d3857bf7511d69beaafb76">affinity_id</a> id)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set affinity for this task. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3a920a56b0bcf2801518fb45b2c9d2be"></a><!-- doxytag: member="tbb::task::affinity" ref="3a920a56b0bcf2801518fb45b2c9d2be" args="() const " -->
+<a class="el" href="a00132.html#d61bb32389d3857bf7511d69beaafb76">affinity_id</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#3a920a56b0bcf2801518fb45b2c9d2be">affinity</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Current affinity of this task. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#713c338c8eeaebdc5a6b10a69c039b06">note_affinity</a> (<a class="el" href="a00132.html#d61bb32389d3857bf7511d69beaafb76">affinity_id</a> id)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Invoked by scheduler to notify task that it ran on unexpected thread.  <a href="#713c338c8eeaebdc5a6b10a69c039b06"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#0f3fb4aac549ab642022450a4bd13326">cancel_group_execution</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Initiates cancellation of all tasks in this cancellation group and its subordinate groups.  <a href="#0f3fb4aac549ab642022450a4bd13326"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="025f18118c057c4c8db87ff2ce8df975"></a><!-- doxytag: member="tbb::task::is_cancelled" ref="025f18118c057c4c8db87ff2ce8df975" args="() const " -->
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#025f18118c057c4c8db87ff2ce8df975">is_cancelled</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if the context received cancellation request. <br></td></tr>
+<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="23acb0da0afd690da797f9f882027d34"></a><!-- doxytag: member="tbb::task::allocate_root" ref="23acb0da0afd690da797f9f882027d34" args="()" -->
+static internal::allocate_root_proxy </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#23acb0da0afd690da797f9f882027d34">allocate_root</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns proxy for overloaded new that allocates a root task. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8ccc518caf31075a3e073996d2d240a4"></a><!-- doxytag: member="tbb::task::allocate_root" ref="8ccc518caf31075a3e073996d2d240a4" args="(task_group_context &ctx)" -->
+static internal::allocate_root_with_context_proxy </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#8ccc518caf31075a3e073996d2d240a4">allocate_root</a> (<a class="el" href="a00133.html">task_group_context</a> &ctx)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns proxy for overloaded new that allocates a root task associated with user supplied context. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#ce8ce689c26a4ddf343829bc3c73290a">spawn_root_and_wait</a> (<a class="el" href="a00132.html">task</a> &root)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Spawn task allocated by allocate_root, wait for it to complete, and deallocate it.  <a href="#ce8ce689c26a4ddf343829bc3c73290a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#c33c7edbaec67aa8a56f48986a9dc69f">spawn_root_and_wait</a> (<a class="el" href="a00134.html">task_list</a> &root_list)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Spawn root tasks on list and wait for all of them to finish.  <a href="#c33c7edbaec67aa8a56f48986a9dc69f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bd43e8d6249738efafd12d6a4c72c5e3"></a><!-- doxytag: member="tbb::task::self" ref="bd43e8d6249738efafd12d6a4c72c5e3" args="()" -->
+static <a class="el" href="a00132.html">task</a> &__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#bd43e8d6249738efafd12d6a4c72c5e3">self</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The innermost task being executed or destroyed by the current thread at the moment. <br></td></tr>
+<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2bce8ec6e44706e70128f5cf91b76e67"></a><!-- doxytag: member="tbb::task::task" ref="2bce8ec6e44706e70128f5cf91b76e67" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#2bce8ec6e44706e70128f5cf91b76e67">task</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Default constructor. <br></td></tr>
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5eabadbca46f93ce6fb08290e85a0a65"></a><!-- doxytag: member="tbb::task::task_list" ref="5eabadbca46f93ce6fb08290e85a0a65" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>task_list</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e296810002652d771f692e20ca87e898"></a><!-- doxytag: member="tbb::task::internal::scheduler" ref="e296810002652d771f692e20ca87e898" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>internal::scheduler</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="387b945c106854e1ed525f0668092930"></a><!-- doxytag: member="tbb::task::internal::allocate_root_proxy" ref="387b945c106854e1ed525f0668092930" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>internal::allocate_root_proxy</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ecedb9436fb30df30cb3a52c64bb97e5"></a><!-- doxytag: member="tbb::task::internal::allocate_root_with_context_proxy" ref="ecedb9436fb30df30cb3a52c64bb97e5" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>internal::allocate_root_with_context_proxy</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9987b3b1174772e5e853bd94b9f15350"></a><!-- doxytag: member="tbb::task::internal::allocate_continuation_proxy" ref="9987b3b1174772e5e853bd94b9f15350" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>internal::allocate_continuation_proxy</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1f9e255654086b52fe107e4d8bbc8b7d"></a><!-- doxytag: member="tbb::task::internal::allocate_child_proxy" ref="1f9e255654086b52fe107e4d8bbc8b7d" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>internal::allocate_child_proxy</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0e99ce0045ea3c55d239f38ea026b8a7"></a><!-- doxytag: member="tbb::task::internal::allocate_additional_child_of_proxy" ref="0e99ce0045ea3c55d239f38ea026b8a7" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>internal::allocate_additional_child_of_proxy</b></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Base class for user-defined tasks. 
+<p>
+<hr><h2>Member Typedef Documentation</h2>
+<a class="anchor" name="d61bb32389d3857bf7511d69beaafb76"></a><!-- doxytag: member="tbb::task::affinity_id" ref="d61bb32389d3857bf7511d69beaafb76" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef internal::affinity_id <a class="el" href="a00132.html#d61bb32389d3857bf7511d69beaafb76">tbb::task::affinity_id</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+An id as used for specifying affinity. 
+<p>
+Guaranteed to be integral type. Value of 0 means no affinity. 
+</div>
+</div><p>
+<a class="anchor" name="d8815c39bb61bd7e2d2691c476ed03b9"></a><!-- doxytag: member="tbb::task::depth_type" ref="d8815c39bb61bd7e2d2691c476ed03b9" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef internal::intptr <a class="el" href="a00132.html#d8815c39bb61bd7e2d2691c476ed03b9">tbb::task::depth_type</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+A scheduling depth. 
+<p>
+Guaranteed to be a signed integral type. 
+</div>
+</div><p>
+<hr><h2>Member Enumeration Documentation</h2>
+<a class="anchor" name="4a3c415562d17905390ea5b49d12293e"></a><!-- doxytag: member="tbb::task::state_type" ref="4a3c415562d17905390ea5b49d12293e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e">tbb::task::state_type</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Enumeration of task states that the scheduler considers. 
+<p>
+<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="4a3c415562d17905390ea5b49d12293ead0fe2302ccc360923f738c2ed7ec1b9"></a><!-- doxytag: member="executing" ref="4a3c415562d17905390ea5b49d12293ead0fe2302ccc360923f738c2ed7ec1b9" args="" -->executing</em> </td><td>
+task is running, and will be destroyed after method <a class="el" href="a00132.html#22c298cd40937a431a06777423f002f6">execute()</a> completes. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="4a3c415562d17905390ea5b49d12293e3bf499aa6e6487cd1ace883a63100513"></a><!-- doxytag: member="reexecute" ref="4a3c415562d17905390ea5b49d12293e3bf499aa6e6487cd1ace883a63100513" args="" -->reexecute</em> </td><td>
+task to be rescheduled. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="4a3c415562d17905390ea5b49d12293e0841dcf1c2a96dee9aa7b69f636cb81a"></a><!-- doxytag: member="ready" ref="4a3c415562d17905390ea5b49d12293e0841dcf1c2a96dee9aa7b69f636cb81a" args="" -->ready</em> </td><td>
+task is in ready pool, or is going to be put there, or was just taken off. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="4a3c415562d17905390ea5b49d12293ebe94d3348dd038e41107819f00c1884c"></a><!-- doxytag: member="allocated" ref="4a3c415562d17905390ea5b49d12293ebe94d3348dd038e41107819f00c1884c" args="" -->allocated</em> </td><td>
+task object is freshly allocated or recycled. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="4a3c415562d17905390ea5b49d12293ecc67ca92bd6f1ce9738a1e9e7206b735"></a><!-- doxytag: member="freed" ref="4a3c415562d17905390ea5b49d12293ecc67ca92bd6f1ce9738a1e9e7206b735" args="" -->freed</em> </td><td>
+task object is on free list, or is going to be put there, or was just taken off. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="4a3c415562d17905390ea5b49d12293e58debec6ab130290640d0cc2eedba35d"></a><!-- doxytag: member="recycle" ref="4a3c415562d17905390ea5b49d12293e58debec6ab130290640d0cc2eedba35d" args="" -->recycle</em> </td><td>
+task to be recycled as continuation </td></tr>
+</table>
+</dl>
+
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="b0f98c633647fc73b978fe4cd2277ac4"></a><!-- doxytag: member="tbb::task::add_to_depth" ref="b0f98c633647fc73b978fe4cd2277ac4" args="(int delta)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::task::add_to_depth           </td>
+          <td>(</td>
+          <td class="paramtype">int </td>
+          <td class="paramname"> <em>delta</em>          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Change scheduling depth by given amount. 
+<p>
+The resulting depth must be non-negative. 
+</div>
+</div><p>
+<a class="anchor" name="43bfe64c0e9333c0ca895cc0c375512b"></a><!-- doxytag: member="tbb::task::allocate_additional_child_of" ref="43bfe64c0e9333c0ca895cc0c375512b" args="(task &t)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">internal::allocate_additional_child_of_proxy tbb::task::allocate_additional_child_of           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00132.html">task</a> & </td>
+          <td class="paramname"> <em>t</em>          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Like allocate_child, except that task's parent becomes "t", not this. 
+<p>
+Typically used in conjunction with schedule_to_reexecute to implement while loops. Atomically increments the reference count of t.parent() 
+</div>
+</div><p>
+<a class="anchor" name="1434c79a5138993269d034008bff7329"></a><!-- doxytag: member="tbb::task::allocate_continuation" ref="1434c79a5138993269d034008bff7329" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">internal::allocate_continuation_proxy& tbb::task::allocate_continuation           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Returns proxy for overloaded new that allocates a continuation task of *this. 
+<p>
+The continuation's parent becomes the parent of *this. 
+</div>
+</div><p>
+<a class="anchor" name="0f3fb4aac549ab642022450a4bd13326"></a><!-- doxytag: member="tbb::task::cancel_group_execution" ref="0f3fb4aac549ab642022450a4bd13326" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool tbb::task::cancel_group_execution           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Initiates cancellation of all tasks in this cancellation group and its subordinate groups. 
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>false if cancellation has already been requested, true otherwise. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="a57def00c8e9d932dbea0b3ee23991b9"></a><!-- doxytag: member="tbb::task::destroy" ref="a57def00c8e9d932dbea0b3ee23991b9" args="(task &victim)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void __TBB_EXPORTED_METHOD tbb::task::destroy           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00132.html">task</a> & </td>
+          <td class="paramname"> <em>victim</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Destroy a task. 
+<p>
+Usually, calling this method is unnecessary, because a task is implicitly deleted after its <a class="el" href="a00132.html#22c298cd40937a431a06777423f002f6">execute()</a> method runs. However, sometimes a task needs to be explicitly deallocated, such as when a root task is used as the parent in spawn_and_wait_for_all. 
+</div>
+</div><p>
+<a class="anchor" name="713c338c8eeaebdc5a6b10a69c039b06"></a><!-- doxytag: member="tbb::task::note_affinity" ref="713c338c8eeaebdc5a6b10a69c039b06" args="(affinity_id id)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual void __TBB_EXPORTED_METHOD tbb::task::note_affinity           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00132.html#d61bb32389d3857bf7511d69beaafb76">affinity_id</a> </td>
+          <td class="paramname"> <em>id</em>          </td>
+          <td> ) </td>
+          <td width="100%"><code> [virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Invoked by scheduler to notify task that it ran on unexpected thread. 
+<p>
+Invoked before method <a class="el" href="a00132.html#22c298cd40937a431a06777423f002f6">execute()</a> runs, if task is stolen, or task has affinity but will be executed on another thread.<p>
+The default action does nothing. 
+</div>
+</div><p>
+<a class="anchor" name="a67a79e18f62b43a623a00cfbd76db4c"></a><!-- doxytag: member="tbb::task::recycle_as_continuation" ref="a67a79e18f62b43a623a00cfbd76db4c" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::task::recycle_as_continuation           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Change this to be a continuation of its former self. 
+<p>
+The caller must guarantee that the task's refcount does not become zero until after the method <a class="el" href="a00132.html#22c298cd40937a431a06777423f002f6">execute()</a> returns. Typically, this is done by having method <a class="el" href="a00132.html#22c298cd40937a431a06777423f002f6">execute()</a> return a pointer to a child of the task. If the guarantee cannot be made, use method recycle_as_safe_continuation instead.<p>
+Because of the hazard, this method may be deprecated in the future. 
+</div>
+</div><p>
+<a class="anchor" name="3b290d14109704e2b69dc1ac980a7a76"></a><!-- doxytag: member="tbb::task::recycle_as_safe_continuation" ref="3b290d14109704e2b69dc1ac980a7a76" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::task::recycle_as_safe_continuation           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Recommended to use, safe variant of recycle_as_continuation. 
+<p>
+For safety, it requires additional increment of ref_count. 
+</div>
+</div><p>
+<a class="anchor" name="4f1be9bbcdb487830dbe298b68d85144"></a><!-- doxytag: member="tbb::task::recycle_to_reexecute" ref="4f1be9bbcdb487830dbe298b68d85144" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::task::recycle_to_reexecute           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Schedule this for reexecution after current <a class="el" href="a00132.html#22c298cd40937a431a06777423f002f6">execute()</a> returns. 
+<p>
+Requires that this.execute() be running. 
+</div>
+</div><p>
+<a class="anchor" name="fc4d4e61a56823aa1efdbb5d59e42973"></a><!-- doxytag: member="tbb::task::set_depth" ref="fc4d4e61a56823aa1efdbb5d59e42973" args="(depth_type new_depth)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::task::set_depth           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00132.html#d8815c39bb61bd7e2d2691c476ed03b9">depth_type</a> </td>
+          <td class="paramname"> <em>new_depth</em>          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set scheduling depth to given value. 
+<p>
+The depth must be non-negative 
+</div>
+</div><p>
+<a class="anchor" name="db841c647eb6d754440c2f4e4a73c80b"></a><!-- doxytag: member="tbb::task::spawn" ref="db841c647eb6d754440c2f4e4a73c80b" args="(task_list &list)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::task::spawn           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00134.html">task_list</a> & </td>
+          <td class="paramname"> <em>list</em>          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Spawn multiple tasks and clear list. 
+<p>
+All of the tasks must be at the same depth. 
+</div>
+</div><p>
+<a class="anchor" name="f7737143d458f1ed1c0d7da3971d9e6b"></a><!-- doxytag: member="tbb::task::spawn" ref="f7737143d458f1ed1c0d7da3971d9e6b" args="(task &child)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::task::spawn           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00132.html">task</a> & </td>
+          <td class="paramname"> <em>child</em>          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Schedule task for execution when a worker becomes available. 
+<p>
+After all children spawned so far finish their method <a class="el" href="a00132.html#22c298cd40937a431a06777423f002f6">task::execute</a>, their parent's method <a class="el" href="a00132.html#22c298cd40937a431a06777423f002f6">task::execute</a> may start running. Therefore, it is important to ensure that at least one child has not completed until the parent is ready to run. 
+</div>
+</div><p>
+<a class="anchor" name="c33c7edbaec67aa8a56f48986a9dc69f"></a><!-- doxytag: member="tbb::task::spawn_root_and_wait" ref="c33c7edbaec67aa8a56f48986a9dc69f" args="(task_list &root_list)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::task::spawn_root_and_wait           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00134.html">task_list</a> & </td>
+          <td class="paramname"> <em>root_list</em>          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline, static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Spawn root tasks on list and wait for all of them to finish. 
+<p>
+If there are more tasks than worker threads, the tasks are spawned in order of front to back. 
+</div>
+</div><p>
+<a class="anchor" name="ce8ce689c26a4ddf343829bc3c73290a"></a><!-- doxytag: member="tbb::task::spawn_root_and_wait" ref="ce8ce689c26a4ddf343829bc3c73290a" args="(task &root)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void tbb::task::spawn_root_and_wait           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00132.html">task</a> & </td>
+          <td class="paramname"> <em>root</em>          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline, static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Spawn task allocated by allocate_root, wait for it to complete, and deallocate it. 
+<p>
+The thread that calls spawn_root_and_wait must be the same thread that allocated the task. 
+</div>
+</div><p>
+<a class="anchor" name="53d2615ad9c38859b4c8080936600283"></a><!-- doxytag: member="tbb::task::wait_for_all" ref="53d2615ad9c38859b4c8080936600283" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::task::wait_for_all           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Wait for reference count to become one, and set reference count to zero. 
+<p>
+Works on tasks while waiting. 
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00276.html">task.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00133.html b/doc/html/a00133.html
index dbf6b01..f54131d 100644
--- a/doc/html/a00133.html
+++ b/doc/html/a00133.html
@@ -1,21 +1,177 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::task_group_context Class Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::captured_exception Member List</h1>This is the complete list of members for <a class="el" href="a00200.html">tbb::captured_exception</a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>captured_exception</b>(const captured_exception &src) (defined in <a class="el" href="a00200.html">tbb::captured_exception</a>)</td><td><a class="el" href="a00200.html">tbb::captured_exception</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>captured_exception</b>(const char *name, const char *info) (defined in <a class="el" href="a00200.html">tbb::captured_exception</a>)</td><td><a class="el" href="a00200.html">tbb::captured_exception</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00200.html#a5">destroy</a>()</td><td><a class="el" href="a00200.html">tbb::captured_exception</a></td><td><code> [virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00200.html#a4">move</a>()</td><td><a class="el" href="a00200.html">tbb::captured_exception</a></td><td><code> [virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00200.html#a7">name</a>() const </td><td><a class="el" href="a00200.html">tbb::captured_exception</a></td><td><code> [virtual]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator=</b>(const captured_exception &src) (defined in <a class="el" href="a00200.html">tbb::captured_exception</a>)</td><td><a class="el" href="a00200.html">tbb::captured_exception</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00200.html#a6">throw_self</a>()</td><td><a class="el" href="a00200.html">tbb::captured_exception</a></td><td><code> [inline, virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00200.html#a8">what</a>() const </td><td><a class="el" href="a00200.html">tbb::captured_exception</a></td><td><code> [virtual]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>~captured_exception</b>() (defined in <a class="el" href="a00200.html">tbb::captured_exception</a>)</td><td><a class="el" href="a00200.html">tbb::captured_exception</a></td><td><code> [inline]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00133.html">task_group_context</a></div>
+<h1>tbb::task_group_context Class Reference<br>
+<small>
+[<a class="el" href="a00188.html">Task Scheduling</a>]</small>
+</h1><!-- doxytag: class="tbb::task_group_context" -->Used to form groups of tasks.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00276.html">task.h</a>></code>
+<p>
+<a href="a00055.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d5af85179a348162d4ddd66b6fc0d60fb4fda16c4f77defd3d0f6aad87fceed4"></a><!-- doxytag: member="tbb::task_group_context::isolated" ref="d5af85179a348162d4ddd66b6fc0d60fb4fda16c4f77defd3d0f6aad87fceed4" args="" -->
+ </td><td class="memItemRight" valign="bottom"><b>isolated</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d5af85179a348162d4ddd66b6fc0d60fc7f37e067ba1fca8a5c809d20522662b"></a><!-- doxytag: member="tbb::task_group_context::bound" ref="d5af85179a348162d4ddd66b6fc0d60fc7f37e067ba1fca8a5c809d20522662b" args="" -->
+ </td><td class="memItemRight" valign="bottom"><b>bound</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>kind_type</b> { <b>isolated</b>, 
+<b>bound</b>
+ }</td></tr>
+
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00133.html#6fc0ba6f3abcdb4d43277c05bd67bdd4">task_group_context</a> (kind_type relation_with_parent=bound)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Default & binding constructor.  <a href="#6fc0ba6f3abcdb4d43277c05bd67bdd4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00133.html#6d30d16bf1cd22f86c6afaf29c2b430c">reset</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Forcefully reinitializes context object after an algorithm it was used with finished.  <a href="#6d30d16bf1cd22f86c6afaf29c2b430c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00133.html#8bcdfdf4e6bfb76125b6de15c00b571d">cancel_group_execution</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Initiates cancellation of all tasks in this cancellation group and its subordinate groups.  <a href="#8bcdfdf4e6bfb76125b6de15c00b571d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4db72f16210b0a991b2c134d6763a4cc"></a><!-- doxytag: member="tbb::task_group_context::is_group_execution_cancelled" ref="4db72f16210b0a991b2c134d6763a4cc" args="() const " -->
+bool __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00133.html#4db72f16210b0a991b2c134d6763a4cc">is_group_execution_cancelled</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if the context received cancellation request. <br></td></tr>
+<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00133.html#49a55352084fd44b8863d182e839e6dc">init</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Out-of-line part of the constructor.  <a href="#49a55352084fd44b8863d182e839e6dc"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e656073628561c8fd68f6134d527e2de"></a><!-- doxytag: member="tbb::task_group_context::task" ref="e656073628561c8fd68f6134d527e2de" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>task</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ecedb9436fb30df30cb3a52c64bb97e5"></a><!-- doxytag: member="tbb::task_group_context::internal::allocate_root_with_context_proxy" ref="ecedb9436fb30df30cb3a52c64bb97e5" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>internal::allocate_root_with_context_proxy</b></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Used to form groups of tasks. 
+<p>
+The context services explicit cancellation requests from user code, and unhandled exceptions intercepted during tasks execution. Intercepting an exception results in generating internal cancellation requests (which is processed in exactly the same way as external ones).<p>
+The context is associated with one or more root tasks and defines the cancellation group that includes all the descendants of the corresponding root task(s). Association is established when a context object is passed as an argument to the <a class="el" href="a00132.html#23acb0da0afd690da797f9f882027d34">task::allocate_root()</a> method. See <a class="el" href="a00133.html#6fc0ba6f3abcdb4d43277c05bd67bdd4">task_group_context::task_group_context</a> for more details.<p>
+The context can be bound to another one, and other contexts can be bound to it, forming a tree-like structure: parent -> this -> children. Arrows here designate cancellation propagation direction. If a task in a cancellation group is canceled all the other tasks in this group and groups bound to it (as children) get canceled too. 
+<p>
+<hr><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" name="6fc0ba6f3abcdb4d43277c05bd67bdd4"></a><!-- doxytag: member="tbb::task_group_context::task_group_context" ref="6fc0ba6f3abcdb4d43277c05bd67bdd4" args="(kind_type relation_with_parent=bound)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">tbb::task_group_context::task_group_context           </td>
+          <td>(</td>
+          <td class="paramtype">kind_type </td>
+          <td class="paramname"> <em>relation_with_parent</em> = <code>bound</code>          </td>
+          <td> ) </td>
+          <td width="100%"><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Default & binding constructor. 
+<p>
+By default a bound context is created. That is this context will be bound (as child) to the context of the task calling task::allocate_root(this_context) method. Cancellation requests passed to the parent context are propagated to all the contexts bound to it.<p>
+If task_group_context::isolated is used as the argument, then the tasks associated with this context will never be affected by events in any other context.<p>
+Creating isolated context is involves much less overhead, but they have limited utility. Normally when an exception occur in an algorithm that has nested algorithms running one would want all the nested ones canceled as well. Such behavior requires nested algorithms to use bound contexts.<p>
+There is one good place where using isolated algorithms is beneficial. It is a master thread. That is if a particular algorithm is invoked directly from the master thread (not from a TBB task), supplying it with explicitly created isolated context will result in a faster algorithm startup. 
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="8bcdfdf4e6bfb76125b6de15c00b571d"></a><!-- doxytag: member="tbb::task_group_context::cancel_group_execution" ref="8bcdfdf4e6bfb76125b6de15c00b571d" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool __TBB_EXPORTED_METHOD tbb::task_group_context::cancel_group_execution           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Initiates cancellation of all tasks in this cancellation group and its subordinate groups. 
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>false if cancellation has already been requested, true otherwise.</dd></dl>
+Note that canceling never fails. When false is returned, it just means that another thread (or this one) has already sent cancellation request to this context or to one of its ancestors (if this context is bound). It is guaranteed that when this method is called on the same context, true may be returned by at most one invocation. 
+</div>
+</div><p>
+<a class="anchor" name="49a55352084fd44b8863d182e839e6dc"></a><!-- doxytag: member="tbb::task_group_context::init" ref="49a55352084fd44b8863d182e839e6dc" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void __TBB_EXPORTED_METHOD tbb::task_group_context::init           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"><code> [protected]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Out-of-line part of the constructor. 
+<p>
+Separated to facilitate future support for backward binary compatibility. 
+</div>
+</div><p>
+<a class="anchor" name="6d30d16bf1cd22f86c6afaf29c2b430c"></a><!-- doxytag: member="tbb::task_group_context::reset" ref="6d30d16bf1cd22f86c6afaf29c2b430c" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void __TBB_EXPORTED_METHOD tbb::task_group_context::reset           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Forcefully reinitializes context object after an algorithm it was used with finished. 
+<p>
+Because the method assumes that the all the tasks that used to be associated with this context have already finished, you must be extremely careful to not invalidate the context while it is still in use somewhere in the task hierarchy.<p>
+IMPORTANT: It is assumed that this method is not used concurrently!<p>
+The method does not change the context's parent if it is set. 
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00276.html">task.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00134.html b/doc/html/a00134.html
index 598e3b4..5b59cea 100644
--- a/doc/html/a00134.html
+++ b/doc/html/a00134.html
@@ -1,24 +1,75 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::task_list Class Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::movable_exception< ExceptionData > Member List</h1>This is the complete list of members for <a class="el" href="a00226.html">tbb::movable_exception< ExceptionData ></a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>data</b>() (defined in <a class="el" href="a00226.html">tbb::movable_exception< ExceptionData ></a>)</td><td><a class="el" href="a00226.html">tbb::movable_exception< ExceptionData ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>data</b>() const  (defined in <a class="el" href="a00226.html">tbb::movable_exception< ExceptionData ></a>)</td><td><a class="el" href="a00226.html">tbb::movable_exception< ExceptionData ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00226.html#a9">destroy</a>()</td><td><a class="el" href="a00226.html">tbb::movable_exception< ExceptionData ></a></td><td><code> [inline, virtual]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>movable_exception</b>(const ExceptionData &data) (defined in <a class="el" href="a00226.html">tbb::movable_exception< ExceptionData ></a>)</td><td><a class="el" href="a00226.html">tbb::movable_exception< ExceptionData ></a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>movable_exception</b>(const movable_exception &src) (defined in <a class="el" href="a00226.html">tbb::movable_exception< ExceptionData ></a>)</td><td><a class="el" href="a00226.html">tbb::movable_exception< ExceptionData ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00226.html#a8">move</a>()</td><td><a class="el" href="a00226.html">tbb::movable_exception< ExceptionData ></a></td><td><code> [inline, virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00226.html#p0">my_exception_data</a></td><td><a class="el" href="a00226.html">tbb::movable_exception< ExceptionData ></a></td><td><code> [protected]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00226.html#a6">name</a>() const </td><td><a class="el" href="a00226.html">tbb::movable_exception< ExceptionData ></a></td><td><code> [inline, virtual]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator=</b>(const movable_exception &src) (defined in <a class="el" href="a00226.html">tbb::movable_exception< ExceptionData ></a>)</td><td><a class="el" href="a00226.html">tbb::movable_exception< ExceptionData ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00226.html#a10">throw_self</a>()</td><td><a class="el" href="a00226.html">tbb::movable_exception< ExceptionData ></a></td><td><code> [inline, virtual]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00226.html#a7">what</a>() const </td><td><a class="el" href="a00226.html">tbb::movable_exception< ExceptionData ></a></td><td><code> [inline, virtual]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>~movable_exception</b>() (defined in <a class="el" href="a00226.html">tbb::movable_exception< ExceptionData ></a>)</td><td><a class="el" href="a00226.html">tbb::movable_exception< ExceptionData ></a></td><td><code> [inline]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00134.html">task_list</a></div>
+<h1>tbb::task_list Class Reference<br>
+<small>
+[<a class="el" href="a00188.html">Task Scheduling</a>]</small>
+</h1><!-- doxytag: class="tbb::task_list" -->A list of children.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00276.html">task.h</a>></code>
+<p>
+<a href="a00059.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="416341c2047eaef50417b41eaf7e9de6"></a><!-- doxytag: member="tbb::task_list::task_list" ref="416341c2047eaef50417b41eaf7e9de6" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00134.html#416341c2047eaef50417b41eaf7e9de6">task_list</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct empty list. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6d438f1499a02db1e59c24ab6043e5ba"></a><!-- doxytag: member="tbb::task_list::~task_list" ref="6d438f1499a02db1e59c24ab6043e5ba" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00134.html#6d438f1499a02db1e59c24ab6043e5ba">~task_list</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroys the list, but does not destroy the task objects. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f3ac31e092814b90929f81bb30441959"></a><!-- doxytag: member="tbb::task_list::empty" ref="f3ac31e092814b90929f81bb30441959" args="() const " -->
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00134.html#f3ac31e092814b90929f81bb30441959">empty</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">True if list if empty; false otherwise. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4cd34756bc4763dafb8c84838a0124ff"></a><!-- doxytag: member="tbb::task_list::push_back" ref="4cd34756bc4763dafb8c84838a0124ff" args="(task &task)" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00134.html#4cd34756bc4763dafb8c84838a0124ff">push_back</a> (<a class="el" href="a00132.html">task</a> &<a class="el" href="a00132.html">task</a>)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Push task onto back of list. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5fe85df5ed524418389d34051750347d"></a><!-- doxytag: member="tbb::task_list::pop_front" ref="5fe85df5ed524418389d34051750347d" args="()" -->
+<a class="el" href="a00132.html">task</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00134.html#5fe85df5ed524418389d34051750347d">pop_front</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Pop the front task from the list. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fce446ee13e025969945328f3ff59b95"></a><!-- doxytag: member="tbb::task_list::clear" ref="fce446ee13e025969945328f3ff59b95" args="()" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00134.html#fce446ee13e025969945328f3ff59b95">clear</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Clear the list. <br></td></tr>
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e656073628561c8fd68f6134d527e2de"></a><!-- doxytag: member="tbb::task_list::task" ref="e656073628561c8fd68f6134d527e2de" args="" -->
+class </td><td class="memItemRight" valign="bottom"><b>task</b></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+A list of children. 
+<p>
+Used for method task::spawn_children 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00276.html">task.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00135.html b/doc/html/a00135.html
index 4a0d9f2..6339c08 100644
--- a/doc/html/a00135.html
+++ b/doc/html/a00135.html
@@ -1,16 +1,159 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::task_scheduler_init Class Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::AtomicBackoff Member List</h1>This is the complete list of members for <a class="el" href="a00192.html">tbb::internal::AtomicBackoff</a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>AtomicBackoff</b>() (defined in <a class="el" href="a00192.html">tbb::internal::AtomicBackoff</a>)</td><td><a class="el" href="a00192.html">tbb::internal::AtomicBackoff</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>bounded_pause</b>() (defined in <a class="el" href="a00192.html">tbb::internal::AtomicBackoff</a>)</td><td><a class="el" href="a00192.html">tbb::internal::AtomicBackoff</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00192.html#a1">pause</a>()</td><td><a class="el" href="a00192.html">tbb::internal::AtomicBackoff</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>reset</b>() (defined in <a class="el" href="a00192.html">tbb::internal::AtomicBackoff</a>)</td><td><a class="el" href="a00192.html">tbb::internal::AtomicBackoff</a></td><td><code> [inline]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00135.html">task_scheduler_init</a></div>
+<h1>tbb::task_scheduler_init Class Reference<br>
+<small>
+[<a class="el" href="a00188.html">Task Scheduling</a>]</small>
+</h1><!-- doxytag: class="tbb::task_scheduler_init" -->Class representing reference to tbb scheduler.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00285.html">task_scheduler_init.h</a>></code>
+<p>
+<a href="a00060.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#d476053cc712e572554823492a5229ce">initialize</a> (int number_of_threads=<a class="el" href="a00135.html#8f5988e2b0fbb2d533fcbb7f2583743f">automatic</a>)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Ensure that scheduler exists for this thread.  <a href="#d476053cc712e572554823492a5229ce"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#d5ed214a8bb53b0466ed91ff4734b9a3">initialize</a> (int number_of_threads, stack_size_type thread_stack_size)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The overloaded method with stack size parameter.  <a href="#d5ed214a8bb53b0466ed91ff4734b9a3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f73257e04cb7fb9bd5be2b635d9016f1"></a><!-- doxytag: member="tbb::task_scheduler_init::terminate" ref="f73257e04cb7fb9bd5be2b635d9016f1" args="()" -->
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#f73257e04cb7fb9bd5be2b635d9016f1">terminate</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Inverse of method initialize. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="421600bf9bf9338bcf937063f2ff0e90"></a><!-- doxytag: member="tbb::task_scheduler_init::task_scheduler_init" ref="421600bf9bf9338bcf937063f2ff0e90" args="(int number_of_threads=automatic, stack_size_type thread_stack_size=0)" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#421600bf9bf9338bcf937063f2ff0e90">task_scheduler_init</a> (int number_of_threads=<a class="el" href="a00135.html#8f5988e2b0fbb2d533fcbb7f2583743f">automatic</a>, stack_size_type thread_stack_size=0)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for default constructor followed by call to intialize(number_of_threads). <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4da6c86292d80c703a66c1f6f5299488"></a><!-- doxytag: member="tbb::task_scheduler_init::~task_scheduler_init" ref="4da6c86292d80c703a66c1f6f5299488" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#4da6c86292d80c703a66c1f6f5299488">~task_scheduler_init</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroy scheduler for this thread if thread has no other live task_scheduler_inits. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="12752282977029f23416642bc03e8b74"></a><!-- doxytag: member="tbb::task_scheduler_init::is_active" ref="12752282977029f23416642bc03e8b74" args="() const " -->
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#12752282977029f23416642bc03e8b74">is_active</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if scheduler is active (initialized); false otherwise. <br></td></tr>
+<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static int __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#ba00714c33a41a3c2216f48613971cab">default_num_threads</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of threads tbb scheduler would create if initialized by default.  <a href="#ba00714c33a41a3c2216f48613971cab"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8f5988e2b0fbb2d533fcbb7f2583743f"></a><!-- doxytag: member="tbb::task_scheduler_init::automatic" ref="8f5988e2b0fbb2d533fcbb7f2583743f" args="" -->
+static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#8f5988e2b0fbb2d533fcbb7f2583743f">automatic</a> = -1</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Typedef for number of threads that is automatic. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e6c860f1e559026ff3ef4599c0d6c514"></a><!-- doxytag: member="tbb::task_scheduler_init::deferred" ref="e6c860f1e559026ff3ef4599c0d6c514" args="" -->
+static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#e6c860f1e559026ff3ef4599c0d6c514">deferred</a> = -2</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Argument to <a class="el" href="a00135.html#d476053cc712e572554823492a5229ce">initialize()</a> or constructor that causes initialization to be deferred. <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Class representing reference to tbb scheduler. 
+<p>
+A thread must construct a <a class="el" href="a00135.html">task_scheduler_init</a>, and keep it alive, during the time that it uses the services of class task. 
+<p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="ba00714c33a41a3c2216f48613971cab"></a><!-- doxytag: member="tbb::task_scheduler_init::default_num_threads" ref="ba00714c33a41a3c2216f48613971cab" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static int __TBB_EXPORTED_FUNC tbb::task_scheduler_init::default_num_threads           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Returns the number of threads tbb scheduler would create if initialized by default. 
+<p>
+Result returned by this method does not depend on whether the scheduler has already been initialized.<p>
+Because tbb 2.0 does not support blocking tasks yet, you may use this method to boost the number of threads in the tbb's internal pool, if your tasks are doing I/O operations. The optimal number of additional threads depends on how much time your tasks spend in the blocked state. 
+</div>
+</div><p>
+<a class="anchor" name="d5ed214a8bb53b0466ed91ff4734b9a3"></a><!-- doxytag: member="tbb::task_scheduler_init::initialize" ref="d5ed214a8bb53b0466ed91ff4734b9a3" args="(int number_of_threads, stack_size_type thread_stack_size)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void __TBB_EXPORTED_METHOD tbb::task_scheduler_init::initialize           </td>
+          <td>(</td>
+          <td class="paramtype">int </td>
+          <td class="paramname"> <em>number_of_threads</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">stack_size_type </td>
+          <td class="paramname"> <em>thread_stack_size</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+The overloaded method with stack size parameter. 
+<p>
+Overloading is necessary to preserve ABI compatibility 
+</div>
+</div><p>
+<a class="anchor" name="d476053cc712e572554823492a5229ce"></a><!-- doxytag: member="tbb::task_scheduler_init::initialize" ref="d476053cc712e572554823492a5229ce" args="(int number_of_threads=automatic)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void __TBB_EXPORTED_METHOD tbb::task_scheduler_init::initialize           </td>
+          <td>(</td>
+          <td class="paramtype">int </td>
+          <td class="paramname"> <em>number_of_threads</em> = <code><a class="el" href="a00135.html#8f5988e2b0fbb2d533fcbb7f2583743f">automatic</a></code>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Ensure that scheduler exists for this thread. 
+<p>
+A value of -1 lets tbb decide on the number of threads, which is typically the number of hardware threads. For production code, the default value of -1 should be used, particularly if the client code is mixed with third party clients that might also use tbb.<p>
+The number_of_threads is ignored if any other task_scheduler_inits currently exist. A thread may construct multiple task_scheduler_inits. Doing so does no harm because the underlying scheduler is reference counted. 
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00285.html">task_scheduler_init.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00136.html b/doc/html/a00136.html
new file mode 100644
index 0000000..7166aae
--- /dev/null
+++ b/doc/html/a00136.html
@@ -0,0 +1,130 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb::tbb_allocator< T > Class Template Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00136.html">tbb_allocator</a></div>
+<h1>tbb::tbb_allocator< T > Class Template Reference<br>
+<small>
+[<a class="el" href="a00185.html">Memory Allocation</a>]</small>
+</h1><!-- doxytag: class="tbb::tbb_allocator" -->Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00288.html">tbb_allocator.h</a>></code>
+<p>
+<a href="a00062.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3cdd9619bc0a802763e7823068f83a4c"></a><!-- doxytag: member="tbb::tbb_allocator::value_type" ref="3cdd9619bc0a802763e7823068f83a4c" args="" -->
+typedef internal::allocator_type<<br>
+ T >::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f979d0e74d7c6e5aeb0d26408776a9e1"></a><!-- doxytag: member="tbb::tbb_allocator::pointer" ref="f979d0e74d7c6e5aeb0d26408776a9e1" args="" -->
+typedef value_type * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1622504886ef265016a5821d61bf7adc"></a><!-- doxytag: member="tbb::tbb_allocator::const_pointer" ref="1622504886ef265016a5821d61bf7adc" args="" -->
+typedef const value_type * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b8e58d23c5c98fd65d4432c1e324f4c0"></a><!-- doxytag: member="tbb::tbb_allocator::reference" ref="b8e58d23c5c98fd65d4432c1e324f4c0" args="" -->
+typedef value_type & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="532f36f99650b1c26a2b8899383c5411"></a><!-- doxytag: member="tbb::tbb_allocator::const_reference" ref="532f36f99650b1c26a2b8899383c5411" args="" -->
+typedef const value_type & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="639df0fb169cfcb94ba1b12429b736f4"></a><!-- doxytag: member="tbb::tbb_allocator::size_type" ref="639df0fb169cfcb94ba1b12429b736f4" args="" -->
+typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="54828b5d0b937d608f76650a5df0e39f"></a><!-- doxytag: member="tbb::tbb_allocator::difference_type" ref="54828b5d0b937d608f76650a5df0e39f" args="" -->
+typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="09a7f81fb2c3055aaecf058b11538544d524c717485b74aa552fb45b45562cb5"></a><!-- doxytag: member="tbb::tbb_allocator::scalable" ref="09a7f81fb2c3055aaecf058b11538544d524c717485b74aa552fb45b45562cb5" args="" -->
+ </td><td class="memItemRight" valign="bottom"><b>scalable</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="09a7f81fb2c3055aaecf058b11538544e108c3168e3be5de1d98e74723136fbf"></a><!-- doxytag: member="tbb::tbb_allocator::standard" ref="09a7f81fb2c3055aaecf058b11538544e108c3168e3be5de1d98e74723136fbf" args="" -->
+ </td><td class="memItemRight" valign="bottom"><b>standard</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00136.html#09a7f81fb2c3055aaecf058b11538544">malloc_type</a> { <b>scalable</b>, 
+<b>standard</b>
+ }</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Specifies current allocator. <br></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d85cd071047b52eeb207d458d54098cc"></a><!-- doxytag: member="tbb::tbb_allocator::tbb_allocator" ref="d85cd071047b52eeb207d458d54098cc" args="(const tbb_allocator &)" -->
+ </td><td class="memItemRight" valign="bottom"><b>tbb_allocator</b> (const <a class="el" href="a00136.html">tbb_allocator</a> &)  throw ()</td></tr>
+
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="5c3cb04a50d15d38f4c66ca3e5d2f6af"></a><!-- doxytag: member="tbb::tbb_allocator::tbb_allocator" ref="5c3cb04a50d15d38f4c66ca3e5d2f6af" args="(const tbb_allocator< U > &)" -->
+template<typename U> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>tbb_allocator</b> (const <a class="el" href="a00136.html">tbb_allocator</a>< U > &)  throw ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="08d3822344271d0a1c2e64e8c9c16b58"></a><!-- doxytag: member="tbb::tbb_allocator::address" ref="08d3822344271d0a1c2e64e8c9c16b58" args="(reference x) const " -->
+pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (reference x) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2b388f25858f783d995d61506de24656"></a><!-- doxytag: member="tbb::tbb_allocator::address" ref="2b388f25858f783d995d61506de24656" args="(const_reference x) const " -->
+const_pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (const_reference x) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f6cb487b1bdce0b581f265a77dca6d53"></a><!-- doxytag: member="tbb::tbb_allocator::allocate" ref="f6cb487b1bdce0b581f265a77dca6d53" args="(size_type n, const void *=0)" -->
+pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00136.html#f6cb487b1bdce0b581f265a77dca6d53">allocate</a> (size_type n, const void *=0)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Allocate space for n objects. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fdd011fdf2f9ad07006dc7c0a7ec1da2"></a><!-- doxytag: member="tbb::tbb_allocator::deallocate" ref="fdd011fdf2f9ad07006dc7c0a7ec1da2" args="(pointer p, size_type)" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00136.html#fdd011fdf2f9ad07006dc7c0a7ec1da2">deallocate</a> (pointer p, size_type)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Free previously allocated block of memory. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f059ca2c96243024f0d562ee3a87a3a5"></a><!-- doxytag: member="tbb::tbb_allocator::max_size" ref="f059ca2c96243024f0d562ee3a87a3a5" args="() const " -->
+size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00136.html#f059ca2c96243024f0d562ee3a87a3a5">max_size</a> () const   throw ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Largest value for which method allocate might succeed. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ab228ab9e324ed041c2226e1d717df5f"></a><!-- doxytag: member="tbb::tbb_allocator::construct" ref="ab228ab9e324ed041c2226e1d717df5f" args="(pointer p, const value_type &value)" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00136.html#ab228ab9e324ed041c2226e1d717df5f">construct</a> (pointer p, const value_type &value)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy-construct value at location pointed to by p. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ef133522bf55f05a605bee0763208281"></a><!-- doxytag: member="tbb::tbb_allocator::destroy" ref="ef133522bf55f05a605bee0763208281" args="(pointer p)" -->
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00136.html#ef133522bf55f05a605bee0763208281">destroy</a> (pointer p)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroy value at location pointed to by p. <br></td></tr>
+<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="78701e7454ef8e1a25b5acd364367080"></a><!-- doxytag: member="tbb::tbb_allocator::allocator_type" ref="78701e7454ef8e1a25b5acd364367080" args="()" -->
+static <a class="el" href="a00136.html#09a7f81fb2c3055aaecf058b11538544">malloc_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00136.html#78701e7454ef8e1a25b5acd364367080">allocator_type</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns current allocator. <br></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>rebind</b></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template<typename T><br>
+ class tbb::tbb_allocator< T ></h3>
+
+Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. 
+<p>
+The class selects the best memory allocation mechanism available from scalable_malloc and standard malloc. The members are ordered the same way they are in section 20.4.1 of the ISO C++ standard. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00288.html">tbb_allocator.h</a></ul>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00137.html b/doc/html/a00137.html
new file mode 100644
index 0000000..06ac73c
--- /dev/null
+++ b/doc/html/a00137.html
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb::tbb_allocator< void > Class Template Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00137.html">tbb_allocator< void ></a></div>
+<h1>tbb::tbb_allocator< void > Class Template Reference<br>
+<small>
+[<a class="el" href="a00185.html">Memory Allocation</a>]</small>
+</h1><!-- doxytag: class="tbb::tbb_allocator< void >" -->Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00288.html">tbb_allocator.h</a>></code>
+<p>
+<a href="a00064.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="05f5ff584890407c8d672e4b4378744d"></a><!-- doxytag: member="tbb::tbb_allocator< void >::pointer" ref="05f5ff584890407c8d672e4b4378744d" args="" -->
+typedef void * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="33e64ba71f06ef24a5093415185e66cb"></a><!-- doxytag: member="tbb::tbb_allocator< void >::const_pointer" ref="33e64ba71f06ef24a5093415185e66cb" args="" -->
+typedef const void * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="81595a776b9d206a92caa526cad9c637"></a><!-- doxytag: member="tbb::tbb_allocator< void >::value_type" ref="81595a776b9d206a92caa526cad9c637" args="" -->
+typedef void </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>rebind</b></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template<><br>
+ class tbb::tbb_allocator< void ></h3>
+
+Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00288.html">tbb_allocator.h</a></ul>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00138.html b/doc/html/a00138.html
new file mode 100644
index 0000000..6f3bd9c
--- /dev/null
+++ b/doc/html/a00138.html
@@ -0,0 +1,141 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb::tbb_exception Class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00138.html">tbb_exception</a></div>
+<h1>tbb::tbb_exception Class Reference</h1><!-- doxytag: class="tbb::tbb_exception" -->Interface to be implemented by all exceptions TBB recognizes and propagates across the threads.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00289.html">tbb_exception.h</a>></code>
+<p>
+Inherited by <a class="el" href="a00102.html">tbb::captured_exception</a>, and <a class="el" href="a00111.html">tbb::movable_exception< ExceptionData ></a>.
+<p>
+Inheritance diagram for tbb::tbb_exception:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00067.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="a00138.html">tbb_exception</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00138.html#3e3482bf264d4ca4dde046cd9c02c766">move</a> ()=0  throw ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates and returns pointer to the deep copy of this exception object.  <a href="#3e3482bf264d4ca4dde046cd9c02c766"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00138.html#66c94938eca8bf88b76f3eccaaf215d8">destroy</a> ()=0  throw ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroys objects created by the <a class="el" href="a00138.html#3e3482bf264d4ca4dde046cd9c02c766">move()</a> method.  <a href="#66c94938eca8bf88b76f3eccaaf215d8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00138.html#8588e07fa49692f4d734e4f2e4f048f4">throw_self</a> ()=0</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Throws this exception object.  <a href="#8588e07fa49692f4d734e4f2e4f048f4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d00f6497e552fee978a02bfcbebf46e2"></a><!-- doxytag: member="tbb::tbb_exception::name" ref="d00f6497e552fee978a02bfcbebf46e2" args="() const =0" -->
+virtual const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00138.html#d00f6497e552fee978a02bfcbebf46e2">name</a> () const =0  throw ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns RTTI name of the originally intercepted exception. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e8157689ecb66bc6c72d3618bf3cc371"></a><!-- doxytag: member="tbb::tbb_exception::what" ref="e8157689ecb66bc6c72d3618bf3cc371" args="() const =0" -->
+virtual const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00138.html#e8157689ecb66bc6c72d3618bf3cc371">what</a> () const =0  throw ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the result of originally intercepted exception's <a class="el" href="a00138.html#e8157689ecb66bc6c72d3618bf3cc371">what()</a> method. <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Interface to be implemented by all exceptions TBB recognizes and propagates across the threads. 
+<p>
+If an unhandled exception of the type derived from <a class="el" href="a00138.html">tbb::tbb_exception</a> is intercepted by the TBB scheduler in one of the worker threads, it is delivered to and re-thrown in the root thread. The root thread is the thread that has started the outermost algorithm or root task sharing the same <a class="el" href="a00133.html">task_group_context</a> with the guilty algorithm/task (the one that threw the exception first).<p>
+Note: when documentation mentions workers with respect to exception handling, masters are implied as well, because they are completely equivalent in this context. Consequently a root thread can be master or worker thread.<p>
+NOTE: In case of nested algorithms or complex task hierarchies when the nested levels share (explicitly or by means of implicit inheritance) the task group context of the outermost level, the exception may be (re-)thrown multiple times (ultimately - in each worker on each nesting level) before reaching the root thread at the outermost level. IMPORTANT: if you intercept an exception derived from this class on a nested level, you must re-throw it in the catch block by means of the "throw;" [...]
+TBB provides two implementations of this interface: <a class="el" href="a00102.html">tbb::captured_exception</a> and template class <a class="el" href="a00111.html">tbb::movable_exception</a>. See their declarations for more info. 
+<p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="66c94938eca8bf88b76f3eccaaf215d8"></a><!-- doxytag: member="tbb::tbb_exception::destroy" ref="66c94938eca8bf88b76f3eccaaf215d8" args="()=0" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual void tbb::tbb_exception::destroy           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%">  throw ()<code> [pure virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Destroys objects created by the <a class="el" href="a00138.html#3e3482bf264d4ca4dde046cd9c02c766">move()</a> method. 
+<p>
+Frees memory and calls destructor for this exception object. Can and must be used only on objects created by the move method. 
+<p>
+Implemented in <a class="el" href="a00102.html#667812a82f1525e968c52593dea0ef4c">tbb::captured_exception</a>, and <a class="el" href="a00111.html#7a46873119d9f85a7b0009c13e41a258">tbb::movable_exception< ExceptionData ></a>.
+</div>
+</div><p>
+<a class="anchor" name="3e3482bf264d4ca4dde046cd9c02c766"></a><!-- doxytag: member="tbb::tbb_exception::move" ref="3e3482bf264d4ca4dde046cd9c02c766" args="()=0" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual <a class="el" href="a00138.html">tbb_exception</a>* tbb::tbb_exception::move           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%">  throw ()<code> [pure virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Creates and returns pointer to the deep copy of this exception object. 
+<p>
+Move semantics is allowed. 
+<p>
+Implemented in <a class="el" href="a00102.html#df6bbb78a362fe862a341e81e2999810">tbb::captured_exception</a>, and <a class="el" href="a00111.html#1aea0ad179d6f0481fe7f3495f66adf9">tbb::movable_exception< ExceptionData ></a>.
+</div>
+</div><p>
+<a class="anchor" name="8588e07fa49692f4d734e4f2e4f048f4"></a><!-- doxytag: member="tbb::tbb_exception::throw_self" ref="8588e07fa49692f4d734e4f2e4f048f4" args="()=0" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual void tbb::tbb_exception::throw_self           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"><code> [pure virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Throws this exception object. 
+<p>
+Make sure that if you have several levels of derivation from this interface you implement or override this method on the most derived level. The implementation is as simple as "throw *this;". Failure to do this will result in exception of a base class type being thrown. 
+<p>
+Implemented in <a class="el" href="a00102.html#2dd1be66ab32fa27e0ddef5707fa67ef">tbb::captured_exception</a>, and <a class="el" href="a00111.html#17cffba35811c92b7e65d63506b69602">tbb::movable_exception< ExceptionData ></a>.
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00289.html">tbb_exception.h</a></ul>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00139.html b/doc/html/a00139.html
new file mode 100644
index 0000000..bcc8d1a
--- /dev/null
+++ b/doc/html/a00139.html
@@ -0,0 +1,56 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb::tbb_hash_compare< T > Struct Template Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00139.html">tbb_hash_compare</a></div>
+<h1>tbb::tbb_hash_compare< T > Struct Template Reference</h1><!-- doxytag: class="tbb::tbb_hash_compare" -->hash_compare - default argument  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00205.html">concurrent_hash_map.h</a>></code>
+<p>
+<a href="a00012.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f49bb57008f05e1db7d1e80ead996193"></a><!-- doxytag: member="tbb::tbb_hash_compare::hash" ref="f49bb57008f05e1db7d1e80ead996193" args="(const T &t)" -->
+static internal::hashcode_t </td><td class="memItemRight" valign="bottom"><b>hash</b> (const T &t)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="553e13ec26df66be906c01cc4c39ed88"></a><!-- doxytag: member="tbb::tbb_hash_compare::equal" ref="553e13ec26df66be906c01cc4c39ed88" args="(const T &a, const T &b)" -->
+static bool </td><td class="memItemRight" valign="bottom"><b>equal</b> (const T &a, const T &b)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template<typename T><br>
+ struct tbb::tbb_hash_compare< T ></h3>
+
+hash_compare - default argument 
+<p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="a00205.html">concurrent_hash_map.h</a></ul>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00140.html b/doc/html/a00140.html
new file mode 100644
index 0000000..17e74e3
--- /dev/null
+++ b/doc/html/a00140.html
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb::tick_count Class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00140.html">tick_count</a></div>
+<h1>tbb::tick_count Class Reference<br>
+<small>
+[<a class="el" href="a00187.html">Timing</a>]</small>
+</h1><!-- doxytag: class="tbb::tick_count" -->Absolute timestamp.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00307.html">tick_count.h</a>></code>
+<p>
+<a href="a00079.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="34593326ae4191e02a13c7cbdab9de4c"></a><!-- doxytag: member="tbb::tick_count::tick_count" ref="34593326ae4191e02a13c7cbdab9de4c" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#34593326ae4191e02a13c7cbdab9de4c">tick_count</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct an absolute timestamp initialized to zero. <br></td></tr>
+<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fb7f78ca61cf28398645ace66e284473"></a><!-- doxytag: member="tbb::tick_count::now" ref="fb7f78ca61cf28398645ace66e284473" args="()" -->
+static <a class="el" href="a00140.html">tick_count</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#fb7f78ca61cf28398645ace66e284473">now</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return current time. <br></td></tr>
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="09dde78a4100800c11bb883d6204b586"></a><!-- doxytag: member="tbb::tick_count::operator-" ref="09dde78a4100800c11bb883d6204b586" args="(const tick_count &t1, const tick_count &t0)" -->
+<a class="el" href="a00141.html">interval_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#09dde78a4100800c11bb883d6204b586">operator-</a> (const <a class="el" href="a00140.html">tick_count</a> &t1, const <a class="el" href="a00140.html">tick_count</a> &t0)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Subtract two timestamps to get the time interval between. <br></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html">interval_t</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Relative time interval.  <a href="a00141.html#_details">More...</a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Absolute timestamp. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00307.html">tick_count.h</a></ul>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00141.html b/doc/html/a00141.html
new file mode 100644
index 0000000..37f6678
--- /dev/null
+++ b/doc/html/a00141.html
@@ -0,0 +1,83 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb::tick_count::interval_t Class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<a class="el" href="a00140.html">tick_count</a>::<a class="el" href="a00141.html">interval_t</a></div>
+<h1>tbb::tick_count::interval_t Class Reference</h1><!-- doxytag: class="tbb::tick_count::interval_t" -->Relative time interval.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00307.html">tick_count.h</a>></code>
+<p>
+<a href="a00080.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="75a9a0949f8a8a84d6758835f1b48dad"></a><!-- doxytag: member="tbb::tick_count::interval_t::interval_t" ref="75a9a0949f8a8a84d6758835f1b48dad" args="()" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html#75a9a0949f8a8a84d6758835f1b48dad">interval_t</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct a time interval representing zero time duration. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1a21a428e00cced2e6a49e0f5f2258bf"></a><!-- doxytag: member="tbb::tick_count::interval_t::interval_t" ref="1a21a428e00cced2e6a49e0f5f2258bf" args="(double sec)" -->
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html#1a21a428e00cced2e6a49e0f5f2258bf">interval_t</a> (double sec)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct a time interval representing sec seconds time duration. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d5d8429c0bc59cf6131b2abc7929fa59"></a><!-- doxytag: member="tbb::tick_count::interval_t::seconds" ref="d5d8429c0bc59cf6131b2abc7929fa59" args="() const " -->
+double </td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html#d5d8429c0bc59cf6131b2abc7929fa59">seconds</a> () const </td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the length of a time interval in seconds. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cd9814947902e26463a69a111530f81b"></a><!-- doxytag: member="tbb::tick_count::interval_t::operator+=" ref="cd9814947902e26463a69a111530f81b" args="(const interval_t &i)" -->
+<a class="el" href="a00141.html">interval_t</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html#cd9814947902e26463a69a111530f81b">operator+=</a> (const <a class="el" href="a00141.html">interval_t</a> &i)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Accumulation operator. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="35ff7eaf7c2031b4a991402ac9ecb940"></a><!-- doxytag: member="tbb::tick_count::interval_t::operator-=" ref="35ff7eaf7c2031b4a991402ac9ecb940" args="(const interval_t &i)" -->
+<a class="el" href="a00141.html">interval_t</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html#35ff7eaf7c2031b4a991402ac9ecb940">operator-=</a> (const <a class="el" href="a00141.html">interval_t</a> &i)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Subtraction operator. <br></td></tr>
+<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cc3a7ad7000317951ce61f706163efe8"></a><!-- doxytag: member="tbb::tick_count::interval_t::tbb::tick_count" ref="cc3a7ad7000317951ce61f706163efe8" args="" -->
+class </td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html#cc3a7ad7000317951ce61f706163efe8">tbb::tick_count</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="09dde78a4100800c11bb883d6204b586"></a><!-- doxytag: member="tbb::tick_count::interval_t::operator-" ref="09dde78a4100800c11bb883d6204b586" args="(const tick_count &t1, const tick_count &t0)" -->
+<a class="el" href="a00141.html">interval_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html#09dde78a4100800c11bb883d6204b586">operator-</a> (const <a class="el" href="a00140.html">tick_count</a> &t1, const <a class="el" href="a00140.html">tick_count</a> &t0)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Extract the intervals from the tick_counts and subtract them. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5871ead1ca230efbe52a5008470e6428"></a><!-- doxytag: member="tbb::tick_count::interval_t::operator+" ref="5871ead1ca230efbe52a5008470e6428" args="(const interval_t &i, const interval_t &j)" -->
+<a class="el" href="a00141.html">interval_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html#5871ead1ca230efbe52a5008470e6428">operator+</a> (const <a class="el" href="a00141.html">interval_t</a> &i, const <a class="el" href="a00141.html">interval_t</a> &j)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Add two intervals. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fa509691e1d689830931e36edd274f76"></a><!-- doxytag: member="tbb::tick_count::interval_t::operator-" ref="fa509691e1d689830931e36edd274f76" args="(const interval_t &i, const interval_t &j)" -->
+<a class="el" href="a00141.html">interval_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html#fa509691e1d689830931e36edd274f76">operator-</a> (const <a class="el" href="a00141.html">interval_t</a> &i, const <a class="el" href="a00141.html">interval_t</a> &j)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Subtract two intervals. <br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Relative time interval. 
+<p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00307.html">tick_count.h</a></ul>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00142.html b/doc/html/a00142.html
index cd8bdc0..f8acd79 100644
--- a/doc/html/a00142.html
+++ b/doc/html/a00142.html
@@ -1,13 +1,50 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
+<title>tbb::internal::work_around_alignment_bug< Size, T > Struct Template Reference</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::work_around_alignment_bug< Size, T > Member List</h1>This is the complete list of members for <a class="el" href="a00279.html">tbb::internal::work_around_alignment_bug< Size, T ></a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>alignment</b> (defined in <a class="el" href="a00279.html">tbb::internal::work_around_alignment_bug< Size, T ></a>)</td><td><a class="el" href="a00279.html">tbb::internal::work_around_alignment_bug< Size, T ></a></td><td><code> [static]</code></td></tr>
-</table><hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="a00181.html">tbb</a>::<b>internal</b>::<a class="el" href="a00142.html">work_around_alignment_bug</a></div>
+<h1>tbb::internal::work_around_alignment_bug< Size, T > Struct Template Reference</h1><!-- doxytag: class="tbb::internal::work_around_alignment_bug" -->Work around for bug in GNU 3.2 and MSVC compilers.  
+<a href="#_details">More...</a>
+<p>
+<code>#include <<a class="el" href="a00290.html">tbb_machine.h</a>></code>
+<p>
+<a href="a00077.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="137d1b1dd94016bc52e423dc33c4fd1d"></a><!-- doxytag: member="tbb::internal::work_around_alignment_bug::alignment" ref="137d1b1dd94016bc52e423dc33c4fd1d" args="" -->
+static const size_t </td><td class="memItemRight" valign="bottom"><b>alignment</b> = __alignof(T)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template<size_t Size, typename T><br>
+ struct tbb::internal::work_around_alignment_bug< Size, T ></h3>
+
+Work around for bug in GNU 3.2 and MSVC compilers. 
+<p>
+Bug is that compiler sometimes returns 0 for __alignof(T) when T has not yet been instantiated. The work-around forces instantiation by forcing computation of sizeof(T) before __alignof(T). 
+<p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="a00290.html">tbb_machine.h</a></ul>
+<hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00144.html b/doc/html/a00144.html
deleted file mode 100644
index b4528fc..0000000
--- a/doc/html/a00144.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::no_assign Member List</h1>This is the complete list of members for <a class="el" href="a00229.html">tbb::internal::no_assign</a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00229.html#a0">no_assign</a>()</td><td><a class="el" href="a00229.html">tbb::internal::no_assign</a></td><td><code> [inline]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00145.html b/doc/html/a00145.html
deleted file mode 100644
index 2ae5612..0000000
--- a/doc/html/a00145.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::no_copy Member List</h1>This is the complete list of members for <a class="el" href="a00230.html">tbb::internal::no_copy</a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00229.html#a0">no_assign</a>()</td><td><a class="el" href="a00229.html">tbb::internal::no_assign</a></td><td><code> [inline, private]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00230.html#a0">no_copy</a>()</td><td><a class="el" href="a00230.html">tbb::internal::no_copy</a></td><td><code> [inline]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00149.html b/doc/html/a00149.html
deleted file mode 100644
index a2c252b..0000000
--- a/doc/html/a00149.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::thread_closure_1< F, X > Member List</h1>This is the complete list of members for <a class="el" href="a00271.html">tbb::internal::thread_closure_1< F, X ></a>, including all inherited members.<p><table>
-  <tr bgcolor="#f0f0f0"><td><b>arg1</b> (defined in <a class="el" href="a00271.html">tbb::internal::thread_closure_1< F, X ></a>)</td><td><a class="el" href="a00271.html">tbb::internal::thread_closure_1< F, X ></a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>function</b> (defined in <a class="el" href="a00271.html">tbb::internal::thread_closure_1< F, X ></a>)</td><td><a class="el" href="a00271.html">tbb::internal::thread_closure_1< F, X ></a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00271.html#e0">start_routine</a>(void *c)</td><td><a class="el" href="a00271.html">tbb::internal::thread_closure_1< F, X ></a></td><td><code> [inline, static]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>thread_closure_1</b>(const F &f, const X &x) (defined in <a class="el" href="a00271.html">tbb::internal::thread_closure_1< F, X ></a>)</td><td><a class="el" href="a00271.html">tbb::internal::thread_closure_1< F, X ></a></td><td><code> [inline]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00151.html b/doc/html/a00151.html
deleted file mode 100644
index fea81f1..0000000
--- a/doc/html/a00151.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::tbb_thread_v3 Member List</h1>This is the complete list of members for <a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00270.html#a7">detach</a>()</td><td><a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>get_id</b>() const  (defined in <a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a>)</td><td><a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00270.html#e0">hardware_concurrency</a>()</td><td><a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00270.html#a6">join</a>()</td><td><a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>joinable</b>() const  (defined in <a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a>)</td><td><a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>move_v3</b> (defined in <a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a>)</td><td><a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a></td><td><code> [friend]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>native_handle</b>() (defined in <a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a>)</td><td><a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>native_handle_type</b> typedef (defined in <a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a>)</td><td><a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>native_handle_type</b> typedef (defined in <a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a>)</td><td><a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a></td><td></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>operator=</b>(tbb_thread_v3 &x) (defined in <a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a>)</td><td><a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>tbb::swap</b> (defined in <a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a>)</td><td><a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00270.html#a0">tbb_thread_v3</a>()</td><td><a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00270.html#a1">tbb_thread_v3</a>(F f)</td><td><a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a></td><td><code> [inline, explicit]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00270.html#a2">tbb_thread_v3</a>(F f, X x)</td><td><a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00270.html#a3">tbb_thread_v3</a>(F f, X x, Y y)</td><td><a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>~tbb_thread_v3</b>() (defined in <a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a>)</td><td><a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a></td><td><code> [inline]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00153.html b/doc/html/a00153.html
deleted file mode 100644
index 8b06288..0000000
--- a/doc/html/a00153.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::tick_count Member List</h1>This is the complete list of members for <a class="el" href="a00272.html">tbb::tick_count</a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00272.html#e0">now</a>()</td><td><a class="el" href="a00272.html">tbb::tick_count</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00272.html#n0">operator-</a>(const tick_count &t1, const tick_count &t0)</td><td><a class="el" href="a00272.html">tbb::tick_count</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00272.html#a0">tick_count</a>()</td><td><a class="el" href="a00272.html">tbb::tick_count</a></td><td><code> [inline]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00154.html b/doc/html/a00154.html
deleted file mode 100644
index 5cfc33c..0000000
--- a/doc/html/a00154.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Member List</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::tick_count::interval_t Member List</h1>This is the complete list of members for <a class="el" href="a00273.html">tbb::tick_count::interval_t</a>, including all inherited members.<p><table>
-  <tr class="memlist"><td><a class="el" href="a00273.html#a0">interval_t</a>()</td><td><a class="el" href="a00273.html">tbb::tick_count::interval_t</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00273.html#a1">interval_t</a>(double sec)</td><td><a class="el" href="a00273.html">tbb::tick_count::interval_t</a></td><td><code> [inline, explicit]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00273.html#n2">operator+</a>(const interval_t &i, const interval_t &j)</td><td><a class="el" href="a00273.html">tbb::tick_count::interval_t</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00273.html#a3">operator+=</a>(const interval_t &i)</td><td><a class="el" href="a00273.html">tbb::tick_count::interval_t</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00273.html#n1">operator-</a>(const tick_count &t1, const tick_count &t0)</td><td><a class="el" href="a00273.html">tbb::tick_count::interval_t</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00273.html#n3">operator-</a>(const interval_t &i, const interval_t &j)</td><td><a class="el" href="a00273.html">tbb::tick_count::interval_t</a></td><td><code> [friend]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00273.html#a4">operator-=</a>(const interval_t &i)</td><td><a class="el" href="a00273.html">tbb::tick_count::interval_t</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="a00273.html#a2">seconds</a>() const </td><td><a class="el" href="a00273.html">tbb::tick_count::interval_t</a></td><td><code> [inline]</code></td></tr>
-  <tr bgcolor="#f0f0f0"><td><b>tbb::tick_count</b> (defined in <a class="el" href="a00273.html">tbb::tick_count::interval_t</a>)</td><td><a class="el" href="a00273.html">tbb::tick_count::interval_t</a></td><td><code> [friend]</code></td></tr>
-</table><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00167.html b/doc/html/a00167.html
new file mode 100644
index 0000000..90d96f0
--- /dev/null
+++ b/doc/html/a00167.html
@@ -0,0 +1,75 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>scalable_allocator.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>scalable_allocator.h File Reference</h1>
+<p>
+<a href="a00273.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00181.html">tbb</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html">tbb::scalable_allocator< T ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00124.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::scalable_allocator< T >::rebind< U ></b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00125.html">tbb::scalable_allocator< void ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00125.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::scalable_allocator< void >::rebind< U ></b></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00185.html#gc25b8e6c76db0b346a8249796a7a2475">scalable_malloc</a> (size_t size)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00185.html#gca3579c21244dba9f0c351e5984d4565">scalable_free</a> (void *ptr)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00185.html#g951bbbbd2d041acb59ba5fa910b52543">scalable_realloc</a> (void *ptr, size_t size)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00185.html#g3f5a2fde0bcaa3eda35be32c8658f444">scalable_calloc</a> (size_t nobj, size_t size)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00185.html#g05dcec987480bb2c82ecdead6a085899">scalable_posix_memalign</a> (void **memptr, size_t alignment, size_t size)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00185.html#gc1c7aaa1fe85c17ba5a3a96f7e8d89e7">scalable_aligned_malloc</a> (size_t size, size_t alignment)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00185.html#gbaea91376be80dfabd7c93eaffd9abaa">scalable_aligned_realloc</a> (void *ptr, size_t size, size_t alignment)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00185.html#g65a20e812012f15ec7442d5b45d0cba5">scalable_aligned_free</a> (void *ptr)</td></tr>
+
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="906ebb461ecb0446989739fd0399e4b8"></a><!-- doxytag: member="scalable_allocator.h::operator==" ref="906ebb461ecb0446989739fd0399e4b8" args="(const scalable_allocator< T > &, const scalable_allocator< U > &)" -->
+template<typename T, typename U> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>tbb::operator==</b> (const scalable_allocator< T > &, const scalable_allocator< U > &)</td></tr>
+
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a92757aca0a69082eb8dc223eb257433"></a><!-- doxytag: member="scalable_allocator.h::operator!=" ref="a92757aca0a69082eb8dc223eb257433" args="(const scalable_allocator< T > &, const scalable_allocator< U > &)" -->
+template<typename T, typename U> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>tbb::operator!=</b> (const scalable_allocator< T > &, const scalable_allocator< U > &)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00181.html b/doc/html/a00181.html
new file mode 100644
index 0000000..ed13ccd
--- /dev/null
+++ b/doc/html/a00181.html
@@ -0,0 +1,501 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb Namespace Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li id="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="namespaces.html"><span>Namespace List</span></a></li>
+    <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
+  </ul></div>
+<h1>tbb Namespace Reference</h1>The namespace tbb contains all components of the library.  
+<a href="#_details">More...</a>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00092.html">aligned_space</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Block of space aligned sufficiently to construct an array T with N elements.  <a href="a00092.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00093.html">atomic</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Primary template for atomic.  <a href="a00093.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>atomic< void * ></b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>atomic< bool ></b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html">blocked_range</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">A range over which to iterate.  <a href="a00097.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00098.html">blocked_range2d</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">A 2-dimensional range that models the Range concept.  <a href="a00098.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00099.html">blocked_range3d</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">A 3-dimensional range that models the Range concept.  <a href="a00099.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00100.html">cache_aligned_allocator</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00100.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00101.html">cache_aligned_allocator< void ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00101.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00139.html">tbb_hash_compare</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">hash_compare - default argument  <a href="a00139.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html">concurrent_hash_map</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Unordered map from Key to T.  <a href="a00103.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html">concurrent_queue</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">A high-performance thread-safe queue.  <a href="a00106.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html">concurrent_vector</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Concurrent vector container.  <a href="a00107.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00112.html">mutex</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Wrapper around the platform's native reader-writer lock.  <a href="a00112.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>null_mutex</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>null_rw_mutex</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00114.html">parallel_do_feeder</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Class the user supplied algorithm body uses to add new tasks.  <a href="a00114.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00117.html">pre_scan_tag</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Used to indicate that the initial scan is being performed.  <a href="a00117.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00110.html">final_scan_tag</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Used to indicate that the final scan is being performed.  <a href="a00110.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00115.html">parallel_while</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over a stream, with optional addition of more work.  <a href="a00115.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00126.html">simple_partitioner</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">A simple partitioner.  <a href="a00126.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00095.html">auto_partitioner</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">An auto partitioner.  <a href="a00095.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html">affinity_partitioner</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">An affinity partitioner.  <a href="a00091.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00109.html">filter</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">A stage in a pipeline.  <a href="a00109.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00116.html">pipeline</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">A processing pipeling that applies filters to items.  <a href="a00116.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00118.html">queuing_mutex</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Queuing lock with local-only spinning.  <a href="a00118.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html">queuing_rw_mutex</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Reader-writer lock with local-only spinning.  <a href="a00120.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00122.html">recursive_mutex</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Mutex that allows recursive mutex acquisition.  <a href="a00122.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html">scalable_allocator</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00124.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00125.html">scalable_allocator< void ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00125.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00127.html">spin_mutex</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">A lock that occupies a single byte.  <a href="a00127.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00129.html">spin_rw_mutex_v3</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Fast, unfair, spinning reader-writer lock with backoff and writer-preference.  <a href="a00129.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00133.html">task_group_context</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Used to form groups of tasks.  <a href="a00133.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html">task</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Base class for user-defined tasks.  <a href="a00132.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00108.html">empty_task</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">task that does nothing. Useful for synchronization.  <a href="a00108.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00134.html">task_list</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">A list of children.  <a href="a00134.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html">task_scheduler_init</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Class representing reference to tbb scheduler.  <a href="a00135.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00136.html">tbb_allocator</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00136.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00137.html">tbb_allocator< void ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00137.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00096.html">bad_last_alloc</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception for concurrent containers.  <a href="a00096.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00138.html">tbb_exception</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Interface to be implemented by all exceptions TBB recognizes and propagates across the threads.  <a href="a00138.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00102.html">captured_exception</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">This class is used by TBB to propagate information about unhandled exceptions into the root thread.  <a href="a00102.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00111.html">movable_exception</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Template that can be used to implement exception that transfers arbitrary ExceptionData to the root thread.  <a href="a00111.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00131.html">split</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Dummy type that distinguishes splitting constructor from copy constructor.  <a href="a00131.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html">tick_count</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Absolute timestamp.  <a href="a00140.html#_details">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>parallel_do</h2></td></tr>
+<tr><td colspan="2">See also requirements on <a class="el" href="parallel_do_body_req.html">parallel_do Body</a>. <br><br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g3383e2703977012b6f384d673410f1f7"></a><!-- doxytag: member="tbb::parallel_do" ref="g3383e2703977012b6f384d673410f1f7" args="(Iterator first, Iterator last, const Body &body)" -->
+template<typename Iterator, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g3383e2703977012b6f384d673410f1f7">parallel_do</a> (Iterator first, Iterator last, const Body &body)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over a range, with optional addition of more work. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g2617dc9b88b3285a7212599d49f74228"></a><!-- doxytag: member="tbb::parallel_do" ref="g2617dc9b88b3285a7212599d49f74228" args="(Iterator first, Iterator last, const Body &body, task_group_context &context)" -->
+template<typename Iterator, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g2617dc9b88b3285a7212599d49f74228">parallel_do</a> (Iterator first, Iterator last, const Body &body, <a class="el" href="a00133.html">task_group_context</a> &context)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over a range, with optional addition of more work and user-supplied context. <br></td></tr>
+<tr><td colspan="2"><br><h2>parallel_for</h2></td></tr>
+<tr><td colspan="2">See also requirements on <a class="el" href="range_req.html">Range</a> and <a class="el" href="parallel_for_body_req.html">parallel_for Body</a>. <br><br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g2e90dde1b5dfe6cb03e64c7d7cd0d778"></a><!-- doxytag: member="tbb::parallel_for" ref="g2e90dde1b5dfe6cb03e64c7d7cd0d778" args="(const Range &range, const Body &body, const simple_partitioner &partitioner=simple_partitioner())" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g2e90dde1b5dfe6cb03e64c7d7cd0d778">parallel_for</a> (const Range &range, const Body &body, const <a class="el" href="a00126.html">simple_partitioner</a> &partitioner=<a class="el" href="a00126.html">simple_partitioner</a>())</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with simple partitioner, or default partitioner if no partitioner is specified. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga7ac75d532389b55b9247f3fdb0b00d1"></a><!-- doxytag: member="tbb::parallel_for" ref="ga7ac75d532389b55b9247f3fdb0b00d1" args="(const Range &range, const Body &body, const auto_partitioner &partitioner)" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#ga7ac75d532389b55b9247f3fdb0b00d1">parallel_for</a> (const Range &range, const Body &body, const <a class="el" href="a00095.html">auto_partitioner</a> &partitioner)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with <a class="el" href="a00095.html">auto_partitioner</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g9cd1b210ceb1c040f30e390b4a21bde8"></a><!-- doxytag: member="tbb::parallel_for" ref="g9cd1b210ceb1c040f30e390b4a21bde8" args="(const Range &range, const Body &body, affinity_partitioner &partitioner)" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g9cd1b210ceb1c040f30e390b4a21bde8">parallel_for</a> (const Range &range, const Body &body, <a class="el" href="a00091.html">affinity_partitioner</a> &partitioner)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with <a class="el" href="a00091.html">affinity_partitioner</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g2d317a5e0078cd193125439fed60dfdc"></a><!-- doxytag: member="tbb::parallel_for" ref="g2d317a5e0078cd193125439fed60dfdc" args="(const Range &range, const Body &body, const simple_partitioner &partitioner, task_group_context &context)" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g2d317a5e0078cd193125439fed60dfdc">parallel_for</a> (const Range &range, const Body &body, const <a class="el" href="a00126.html">simple_partitioner</a> &partitioner, <a class="el" href="a00133.html">task_group_context</a> &context)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with simple partitioner and user-supplied context. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g1c0700e3f85e83a788ff3ede88ebb7e9"></a><!-- doxytag: member="tbb::parallel_for" ref="g1c0700e3f85e83a788ff3ede88ebb7e9" args="(const Range &range, const Body &body, const auto_partitioner &partitioner, task_group_context &context)" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g1c0700e3f85e83a788ff3ede88ebb7e9">parallel_for</a> (const Range &range, const Body &body, const <a class="el" href="a00095.html">auto_partitioner</a> &partitioner, <a class="el" href="a00133.html">task_group_context</a> &context)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with <a class="el" href="a00095.html">auto_partitioner</a> and user-supplied context. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g04b4696b67370c01353ff5974c8f1196"></a><!-- doxytag: member="tbb::parallel_for" ref="g04b4696b67370c01353ff5974c8f1196" args="(const Range &range, const Body &body, affinity_partitioner &partitioner, task_group_context &context)" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g04b4696b67370c01353ff5974c8f1196">parallel_for</a> (const Range &range, const Body &body, <a class="el" href="a00091.html">affinity_partitioner</a> &partitioner, <a class="el" href="a00133.html">task_group_context</a> &context)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with <a class="el" href="a00091.html">affinity_partitioner</a> and user-supplied context. <br></td></tr>
+<tr><td colspan="2"><br><h2>parallel_reduce</h2></td></tr>
+<tr><td colspan="2">See also requirements on <a class="el" href="range_req.html">Range</a> and <a class="el" href="parallel_reduce_body_req.html">parallel_reduce Body</a>. <br><br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="gaf32af4ef8fe4261b10e9f6086ce54dc"></a><!-- doxytag: member="tbb::parallel_reduce" ref="gaf32af4ef8fe4261b10e9f6086ce54dc" args="(const Range &range, Body &body, const simple_partitioner &partitioner=simple_partitioner())" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#gaf32af4ef8fe4261b10e9f6086ce54dc">parallel_reduce</a> (const Range &range, Body &body, const <a class="el" href="a00126.html">simple_partitioner</a> &partitioner=<a class="el" href="a00126.html">simple_partitioner</a>())</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and <a class="el" href="a00126.html">simple_partitioner</a>, or no partitioner specified. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g18a19157e6245992fc00ca0adeb7dd37"></a><!-- doxytag: member="tbb::parallel_reduce" ref="g18a19157e6245992fc00ca0adeb7dd37" args="(const Range &range, Body &body, const auto_partitioner &partitioner)" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g18a19157e6245992fc00ca0adeb7dd37">parallel_reduce</a> (const Range &range, Body &body, const <a class="el" href="a00095.html">auto_partitioner</a> &partitioner)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and <a class="el" href="a00095.html">auto_partitioner</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="gc61e73fcc36c92d79a217fc355ff4a6b"></a><!-- doxytag: member="tbb::parallel_reduce" ref="gc61e73fcc36c92d79a217fc355ff4a6b" args="(const Range &range, Body &body, affinity_partitioner &partitioner)" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#gc61e73fcc36c92d79a217fc355ff4a6b">parallel_reduce</a> (const Range &range, Body &body, <a class="el" href="a00091.html">affinity_partitioner</a> &partitioner)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and <a class="el" href="a00091.html">affinity_partitioner</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g45cb00c42a18e334bbde8b7535afe460"></a><!-- doxytag: member="tbb::parallel_reduce" ref="g45cb00c42a18e334bbde8b7535afe460" args="(const Range &range, Body &body, const simple_partitioner &partitioner, task_group_context &context)" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g45cb00c42a18e334bbde8b7535afe460">parallel_reduce</a> (const Range &range, Body &body, const <a class="el" href="a00126.html">simple_partitioner</a> &partitioner, <a class="el" href="a00133.html">task_group_context</a> &context)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, simple partitioner and user-supplied context. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g1c1ea1d7c61b3c225e92c70d669a53a5"></a><!-- doxytag: member="tbb::parallel_reduce" ref="g1c1ea1d7c61b3c225e92c70d669a53a5" args="(const Range &range, Body &body, const auto_partitioner &partitioner, task_group_context &context)" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g1c1ea1d7c61b3c225e92c70d669a53a5">parallel_reduce</a> (const Range &range, Body &body, const <a class="el" href="a00095.html">auto_partitioner</a> &partitioner, <a class="el" href="a00133.html">task_group_context</a> &context)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, <a class="el" href="a00095.html">auto_partitioner</a> and user-supplied context. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="gd9ac3a3811060314695f33b703c6e11b"></a><!-- doxytag: member="tbb::parallel_reduce" ref="gd9ac3a3811060314695f33b703c6e11b" args="(const Range &range, Body &body, affinity_partitioner &partitioner, task_group_context &context)" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#gd9ac3a3811060314695f33b703c6e11b">parallel_reduce</a> (const Range &range, Body &body, <a class="el" href="a00091.html">affinity_partitioner</a> &partitioner, <a class="el" href="a00133.html">task_group_context</a> &context)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, <a class="el" href="a00091.html">affinity_partitioner</a> and user-supplied context. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="gdddb4cb5d9de2f3d6bad3ffa6b64db07"></a><!-- doxytag: member="tbb::parallel_reduce" ref="gdddb4cb5d9de2f3d6bad3ffa6b64db07" args="(const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner=simple_partitioner())" -->
+template<typename Range, typename Value, typename RealBody, typename Reduction> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#gdddb4cb5d9de2f3d6bad3ffa6b64db07">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const <a class="el" href="a00126.html">simple_partitioner</a> &partitioner=<a class="el" href="a00126.html">simple_partitioner</a>())</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and <a class="el" href="a00126.html">simple_partitioner</a>, or no partitioner specified. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="gb175401f0729e40dd2c5860a17c14385"></a><!-- doxytag: member="tbb::parallel_reduce" ref="gb175401f0729e40dd2c5860a17c14385" args="(const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const auto_partitioner &partitioner)" -->
+template<typename Range, typename Value, typename RealBody, typename Reduction> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#gb175401f0729e40dd2c5860a17c14385">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const <a class="el" href="a00095.html">auto_partitioner</a> &partitioner)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and <a class="el" href="a00095.html">auto_partitioner</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="gb7f1f1828ae2b330ce05b8513a495154"></a><!-- doxytag: member="tbb::parallel_reduce" ref="gb7f1f1828ae2b330ce05b8513a495154" args="(const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, affinity_partitioner &partitioner)" -->
+template<typename Range, typename Value, typename RealBody, typename Reduction> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#gb7f1f1828ae2b330ce05b8513a495154">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, <a class="el" href="a00091.html">affinity_partitioner</a> &partitioner)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and <a class="el" href="a00091.html">affinity_partitioner</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="gfbc0cc2026d87f11a96bcd62788f5bb5"></a><!-- doxytag: member="tbb::parallel_reduce" ref="gfbc0cc2026d87f11a96bcd62788f5bb5" args="(const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner, task_group_context &context)" -->
+template<typename Range, typename Value, typename RealBody, typename Reduction> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#gfbc0cc2026d87f11a96bcd62788f5bb5">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const <a class="el" href="a00126.html">simple_partitioner</a> &partitioner, <a class="el" href="a00133.html">task_group_context</a> &context)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, simple partitioner and user-supplied context. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g630c90a399937d9d4ae70ff883186dfd"></a><!-- doxytag: member="tbb::parallel_reduce" ref="g630c90a399937d9d4ae70ff883186dfd" args="(const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const auto_partitioner &partitioner, task_group_context &context)" -->
+template<typename Range, typename Value, typename RealBody, typename Reduction> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g630c90a399937d9d4ae70ff883186dfd">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const <a class="el" href="a00095.html">auto_partitioner</a> &partitioner, <a class="el" href="a00133.html">task_group_context</a> &context)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, <a class="el" href="a00095.html">auto_partitioner</a> and user-supplied context. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g496bd7eadb3b97495ccb5655ef90319e"></a><!-- doxytag: member="tbb::parallel_reduce" ref="g496bd7eadb3b97495ccb5655ef90319e" args="(const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, affinity_partitioner &partitioner, task_group_context &context)" -->
+template<typename Range, typename Value, typename RealBody, typename Reduction> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g496bd7eadb3b97495ccb5655ef90319e">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, <a class="el" href="a00091.html">affinity_partitioner</a> &partitioner, <a class="el" href="a00133.html">task_group_context</a> &context)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, <a class="el" href="a00091.html">affinity_partitioner</a> and user-supplied context. <br></td></tr>
+<tr><td colspan="2"><br><h2>parallel_scan</h2></td></tr>
+<tr><td colspan="2">See also requirements on <a class="el" href="range_req.html">Range</a> and <a class="el" href="parallel_scan_body_req.html">parallel_scan Body</a>. <br><br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="gdf44892aacffa7360018e96ebdaae2ba"></a><!-- doxytag: member="tbb::parallel_scan" ref="gdf44892aacffa7360018e96ebdaae2ba" args="(const Range &range, Body &body, const simple_partitioner &partitioner=simple_partitioner())" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#gdf44892aacffa7360018e96ebdaae2ba">parallel_scan</a> (const Range &range, Body &body, const <a class="el" href="a00126.html">simple_partitioner</a> &partitioner=<a class="el" href="a00126.html">simple_partitioner</a>())</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel prefix with <a class="el" href="a00126.html">simple_partitioner</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g62fde400a37bbca1a2fddc8e3d22f556"></a><!-- doxytag: member="tbb::parallel_scan" ref="g62fde400a37bbca1a2fddc8e3d22f556" args="(const Range &range, Body &body, const auto_partitioner &partitioner)" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g62fde400a37bbca1a2fddc8e3d22f556">parallel_scan</a> (const Range &range, Body &body, const <a class="el" href="a00095.html">auto_partitioner</a> &partitioner)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel prefix with <a class="el" href="a00095.html">auto_partitioner</a>. <br></td></tr>
+<tr><td colspan="2"><br><h2>parallel_sort</h2></td></tr>
+<tr><td colspan="2">See also requirements on <a class="el" href="parallel_sort_iter_req.html">iterators for parallel_sort</a>. <br><br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename RandomAccessIterator, typename Compare> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g49edcf9447cd91a9527a3f8e8512b7aa">parallel_sort</a> (RandomAccessIterator begin, RandomAccessIterator end, const Compare &comp)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in [begin,end) using the given comparator.  <a href="a00183.html#g49edcf9447cd91a9527a3f8e8512b7aa"></a><br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g16c3eb77d0e530834c51ce3857f01012"></a><!-- doxytag: member="tbb::parallel_sort" ref="g16c3eb77d0e530834c51ce3857f01012" args="(RandomAccessIterator begin, RandomAccessIterator end)" -->
+template<typename RandomAccessIterator> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g16c3eb77d0e530834c51ce3857f01012">parallel_sort</a> (RandomAccessIterator begin, RandomAccessIterator end)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in [begin,end) with a default comparator <code>std::less<RandomAccessIterator></code>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="gc7576f82fdedc8a701a6c17ad9415926"></a><!-- doxytag: member="tbb::parallel_sort" ref="gc7576f82fdedc8a701a6c17ad9415926" args="(T *begin, T *end)" -->
+template<typename T> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#gc7576f82fdedc8a701a6c17ad9415926">parallel_sort</a> (T *begin, T *end)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in the range <code></code>[begin,end) with a default comparator <code>std::less<T></code>. <br></td></tr>
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7fdc2b067a243747d4c3dfe6f3d28476"></a><!-- doxytag: member="tbb::spin_rw_mutex" ref="7fdc2b067a243747d4c3dfe6f3d28476" args="" -->
+typedef <a class="el" href="a00129.html">spin_rw_mutex_v3</a> </td><td class="memItemRight" valign="bottom"><b>spin_rw_mutex</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3d457eb737199125df5ab0cf2f44094"></a><!-- doxytag: member="tbb::stack_size_type" ref="a3d457eb737199125df5ab0cf2f44094" args="" -->
+typedef std::size_t </td><td class="memItemRight" valign="bottom"><b>stack_size_type</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ceb89493291d4b03ce5f062fbaac0653"></a><!-- doxytag: member="tbb::task_scheduler_observer" ref="ceb89493291d4b03ce5f062fbaac0653" args="" -->
+typedef internal::task_scheduler_observer_v3 </td><td class="memItemRight" valign="bottom"><b>task_scheduler_observer</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ed375248ff6019a70ca0f9da528e5d0b"></a><!-- doxytag: member="tbb::assertion_handler_type" ref="ed375248ff6019a70ca0f9da528e5d0b" args="(const char *filename, int line, const char *expression, const char *comment)" -->
+typedef void(*) </td><td class="memItemRight" valign="bottom"><a class="el" href="a00181.html#ed375248ff6019a70ca0f9da528e5d0b">assertion_handler_type</a> (const char *filename, int line, const char *expression, const char *comment)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Type for an assertion handler. <br></td></tr>
+<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00181.html#a8686246bb5d3664bd07563749970fef">memory_semantics</a> { <a class="el" href="a00181.html#a8686246bb5d3664bd07563749970fefc6db01678b1749dff7554688d079520c">__TBB_full_fence</a>, 
+<a class="el" href="a00181.html#a8686246bb5d3664bd07563749970fef5f1fafe8d229d348ff91d937f64e79c7">acquire</a>, 
+<a class="el" href="a00181.html#a8686246bb5d3664bd07563749970fefaa1fa107db0245c41fb109d976ae8d70">release</a>
+ }</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Specifies memory fencing.  <a href="a00181.html#a8686246bb5d3664bd07563749970fef">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2e067bc86f20023cf3034f2ac310927b"></a><!-- doxytag: member="tbb::__TBB_DECL_ATOMIC" ref="2e067bc86f20023cf3034f2ac310927b" args="(__TBB_LONG_LONG) __TBB_DECL_ATOMIC(unsigned __TBB_LONG_LONG) __TBB_DECL_ATOMIC(long) __TBB_DECL_ATOMIC(unsigned long) __TBB_DECL_ATOMIC_ALT(unsigned" -->
+ </td><td class="memItemRight" valign="bottom"><b>__TBB_DECL_ATOMIC</b> (__TBB_LONG_LONG) __TBB_DECL_ATOMIC(unsigned __TBB_LONG_LONG) __TBB_DECL_ATOMIC(long) __TBB_DECL_ATOMIC(unsigned long) __TBB_DECL_ATOMIC_ALT(unsigned</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ad165cf61abbe349d413df2589679add"></a><!-- doxytag: member="tbb::__TBB_DECL_ATOMIC_ALT" ref="ad165cf61abbe349d413df2589679add" args="(int, ptrdiff_t) __TBB_DECL_ATOMIC(unsigned) __TBB_DECL_ATOMIC(int) __TBB_DECL_ATOMIC(unsigned short) __TBB_DECL_ATOMIC(short) __TBB_DECL_ATOMIC(char) __TBB_DECL_ATOMIC(signed char) __TBB_DECL_ATOMIC(unsigned char) __TBB_DECL_ATOMIC(wchar_t) template< typename T > st [...]
+size_t </td><td class="memItemRight" valign="bottom"><b>__TBB_DECL_ATOMIC_ALT</b> (int, ptrdiff_t) __TBB_DECL_ATOMIC(unsigned) __TBB_DECL_ATOMIC(int) __TBB_DECL_ATOMIC(unsigned short) __TBB_DECL_ATOMIC(short) __TBB_DECL_ATOMIC(char) __TBB_DECL_ATOMIC(signed char) __TBB_DECL_ATOMIC(unsigned char) __TBB_DECL_ATOMIC(wchar_t) template< typename T > struct <a class="el" href="a00093.html">atomic</a>< T * ></td></tr>
+
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="7af9509624a62ea848afe775f892ed12"></a><!-- doxytag: member="tbb::operator==" ref="7af9509624a62ea848afe775f892ed12" args="(const cache_aligned_allocator< T > &, const cache_aligned_allocator< U > &)" -->
+template<typename T, typename U> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00100.html">cache_aligned_allocator</a>< T > &, const <a class="el" href="a00100.html">cache_aligned_allocator</a>< U > &)</td></tr>
+
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="426abbf5243087148f5e3767e68c286b"></a><!-- doxytag: member="tbb::operator!=" ref="426abbf5243087148f5e3767e68c286b" args="(const cache_aligned_allocator< T > &, const cache_aligned_allocator< U > &)" -->
+template<typename T, typename U> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00100.html">cache_aligned_allocator</a>< T > &, const <a class="el" href="a00100.html">cache_aligned_allocator</a>< U > &)</td></tr>
+
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="f3609fc523a99c101572fdc68f918d66"></a><!-- doxytag: member="tbb::operator==" ref="f3609fc523a99c101572fdc68f918d66" args="(const concurrent_hash_map< Key, T, HashCompare, A1 > &a, const concurrent_hash_map< Key, T, HashCompare, A2 > &b)" -->
+template<typename Key, typename T, typename HashCompare, typename A1, typename A2> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00103.html">concurrent_hash_map</a>< Key, T, HashCompare, A1 > &a, const <a class="el" href="a00103.html">concurrent_hash_map</a>< Key, T, HashCompare, A2 > &b)</td></tr>
+
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="2da30ff86b9a39722f45bc35e1c6934d"></a><!-- doxytag: member="tbb::operator!=" ref="2da30ff86b9a39722f45bc35e1c6934d" args="(const concurrent_hash_map< Key, T, HashCompare, A1 > &a, const concurrent_hash_map< Key, T, HashCompare, A2 > &b)" -->
+template<typename Key, typename T, typename HashCompare, typename A1, typename A2> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00103.html">concurrent_hash_map</a>< Key, T, HashCompare, A1 > &a, const <a class="el" href="a00103.html">concurrent_hash_map</a>< Key, T, HashCompare, A2 > &b)</td></tr>
+
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="817c20df80fe1a933a8557eb76113e24"></a><!-- doxytag: member="tbb::swap" ref="817c20df80fe1a933a8557eb76113e24" args="(concurrent_hash_map< Key, T, HashCompare, A > &a, concurrent_hash_map< Key, T, HashCompare, A > &b)" -->
+template<typename Key, typename T, typename HashCompare, typename A> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>swap</b> (<a class="el" href="a00103.html">concurrent_hash_map</a>< Key, T, HashCompare, A > &a, <a class="el" href="a00103.html">concurrent_hash_map</a>< Key, T, HashCompare, A > &b)</td></tr>
+
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="11419db87ac98110907dda08a24f0949"></a><!-- doxytag: member="tbb::operator==" ref="11419db87ac98110907dda08a24f0949" args="(const concurrent_vector< T, A1 > &a, const concurrent_vector< T, A2 > &b)" -->
+template<typename T, class A1, class A2> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00107.html">concurrent_vector</a>< T, A1 > &a, const <a class="el" href="a00107.html">concurrent_vector</a>< T, A2 > &b)</td></tr>
+
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="aa9e09f2e9154ffd6658fad8355fb491"></a><!-- doxytag: member="tbb::operator!=" ref="aa9e09f2e9154ffd6658fad8355fb491" args="(const concurrent_vector< T, A1 > &a, const concurrent_vector< T, A2 > &b)" -->
+template<typename T, class A1, class A2> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00107.html">concurrent_vector</a>< T, A1 > &a, const <a class="el" href="a00107.html">concurrent_vector</a>< T, A2 > &b)</td></tr>
+
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="33267dd805415351956d45b4b5347190"></a><!-- doxytag: member="tbb::operator<" ref="33267dd805415351956d45b4b5347190" args="(const concurrent_vector< T, A1 > &a, const concurrent_vector< T, A2 > &b)" -->
+template<typename T, class A1, class A2> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator<</b> (const <a class="el" href="a00107.html">concurrent_vector</a>< T, A1 > &a, const <a class="el" href="a00107.html">concurrent_vector</a>< T, A2 > &b)</td></tr>
+
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="14e2968ab20cb714bef1f0352fc152f0"></a><!-- doxytag: member="tbb::operator>" ref="14e2968ab20cb714bef1f0352fc152f0" args="(const concurrent_vector< T, A1 > &a, const concurrent_vector< T, A2 > &b)" -->
+template<typename T, class A1, class A2> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator></b> (const <a class="el" href="a00107.html">concurrent_vector</a>< T, A1 > &a, const <a class="el" href="a00107.html">concurrent_vector</a>< T, A2 > &b)</td></tr>
+
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="0042a36a670a397fb52e713edbaecd0e"></a><!-- doxytag: member="tbb::operator<=" ref="0042a36a670a397fb52e713edbaecd0e" args="(const concurrent_vector< T, A1 > &a, const concurrent_vector< T, A2 > &b)" -->
+template<typename T, class A1, class A2> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator<=</b> (const <a class="el" href="a00107.html">concurrent_vector</a>< T, A1 > &a, const <a class="el" href="a00107.html">concurrent_vector</a>< T, A2 > &b)</td></tr>
+
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="f70eb1d931473b69ba4bcf93af8baa33"></a><!-- doxytag: member="tbb::operator>=" ref="f70eb1d931473b69ba4bcf93af8baa33" args="(const concurrent_vector< T, A1 > &a, const concurrent_vector< T, A2 > &b)" -->
+template<typename T, class A1, class A2> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator>=</b> (const <a class="el" href="a00107.html">concurrent_vector</a>< T, A1 > &a, const <a class="el" href="a00107.html">concurrent_vector</a>< T, A2 > &b)</td></tr>
+
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="4a3897ea8d8a48e885d764bd7d370d50"></a><!-- doxytag: member="tbb::swap" ref="4a3897ea8d8a48e885d764bd7d370d50" args="(concurrent_vector< T, A > &a, concurrent_vector< T, A > &b)" -->
+template<typename T, class A> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>swap</b> (<a class="el" href="a00107.html">concurrent_vector</a>< T, A > &a, <a class="el" href="a00107.html">concurrent_vector</a>< T, A > &b)</td></tr>
+
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="906ebb461ecb0446989739fd0399e4b8"></a><!-- doxytag: member="tbb::operator==" ref="906ebb461ecb0446989739fd0399e4b8" args="(const scalable_allocator< T > &, const scalable_allocator< U > &)" -->
+template<typename T, typename U> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00124.html">scalable_allocator</a>< T > &, const <a class="el" href="a00124.html">scalable_allocator</a>< U > &)</td></tr>
+
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a92757aca0a69082eb8dc223eb257433"></a><!-- doxytag: member="tbb::operator!=" ref="a92757aca0a69082eb8dc223eb257433" args="(const scalable_allocator< T > &, const scalable_allocator< U > &)" -->
+template<typename T, typename U> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00124.html">scalable_allocator</a>< T > &, const <a class="el" href="a00124.html">scalable_allocator</a>< U > &)</td></tr>
+
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="c8a46d6c0fe474eb399d0d09c27a4685"></a><!-- doxytag: member="tbb::operator==" ref="c8a46d6c0fe474eb399d0d09c27a4685" args="(const tbb_allocator< T > &, const tbb_allocator< U > &)" -->
+template<typename T, typename U> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00136.html">tbb_allocator</a>< T > &, const <a class="el" href="a00136.html">tbb_allocator</a>< U > &)</td></tr>
+
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="3d9665c21c894f06f1614947103dc9d6"></a><!-- doxytag: member="tbb::operator!=" ref="3d9665c21c894f06f1614947103dc9d6" args="(const tbb_allocator< T > &, const tbb_allocator< U > &)" -->
+template<typename T, typename U> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00136.html">tbb_allocator</a>< T > &, const <a class="el" href="a00136.html">tbb_allocator</a>< U > &)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="823fa1c15dd829d1d9167157450ddcd9"></a><!-- doxytag: member="tbb::set_assertion_handler" ref="823fa1c15dd829d1d9167157450ddcd9" args="(assertion_handler_type new_handler)" -->
+<a class="el" href="a00181.html#ed375248ff6019a70ca0f9da528e5d0b">assertion_handler_type</a> __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00181.html#823fa1c15dd829d1d9167157450ddcd9">set_assertion_handler</a> (<a class="el" href="a00181.html#ed375248ff6019a70ca0f9da528e5d0b">assertion_handler_type</a> new_handler)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set assertion handler and return previous value of it. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00181.html#3d1252787be39b4aef311f1cadaff9e8">assertion_failure</a> (const char *filename, int line, const char *expression, const char *comment)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Process an assertion failure.  <a href="#3d1252787be39b4aef311f1cadaff9e8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00181.html#a6858b22e90041c9c4669674ff39b056">TBB_runtime_interface_version</a> ()</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The function returns the interface version of the TBB shared library being used.  <a href="#a6858b22e90041c9c4669674ff39b056"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6a42aa5dbcf06ba86c71efb73d8311c3"></a><!-- doxytag: member="tbb::operator-" ref="6a42aa5dbcf06ba86c71efb73d8311c3" args="(const tick_count &t1, const tick_count &t0)" -->
+<a class="el" href="a00141.html">tick_count::interval_t</a> </td><td class="memItemRight" valign="bottom"><b>operator-</b> (const <a class="el" href="a00140.html">tick_count</a> &t1, const <a class="el" href="a00140.html">tick_count</a> &t0)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The namespace tbb contains all components of the library. <hr><h2>Enumeration Type Documentation</h2>
+<a class="anchor" name="a8686246bb5d3664bd07563749970fef"></a><!-- doxytag: member="tbb::memory_semantics" ref="a8686246bb5d3664bd07563749970fef" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="a00181.html#a8686246bb5d3664bd07563749970fef">tbb::memory_semantics</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Specifies memory fencing. 
+<p>
+<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="a8686246bb5d3664bd07563749970fefc6db01678b1749dff7554688d079520c"></a><!-- doxytag: member="__TBB_full_fence" ref="a8686246bb5d3664bd07563749970fefc6db01678b1749dff7554688d079520c" args="" -->__TBB_full_fence</em> </td><td>
+For internal use only. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="a8686246bb5d3664bd07563749970fef5f1fafe8d229d348ff91d937f64e79c7"></a><!-- doxytag: member="acquire" ref="a8686246bb5d3664bd07563749970fef5f1fafe8d229d348ff91d937f64e79c7" args="" -->acquire</em> </td><td>
+Acquire fence. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="a8686246bb5d3664bd07563749970fefaa1fa107db0245c41fb109d976ae8d70"></a><!-- doxytag: member="release" ref="a8686246bb5d3664bd07563749970fefaa1fa107db0245c41fb109d976ae8d70" args="" -->release</em> </td><td>
+Release fence. </td></tr>
+</table>
+</dl>
+
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="3d1252787be39b4aef311f1cadaff9e8"></a><!-- doxytag: member="tbb::assertion_failure" ref="3d1252787be39b4aef311f1cadaff9e8" args="(const char *filename, int line, const char *expression, const char *comment)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void __TBB_EXPORTED_FUNC tbb::assertion_failure           </td>
+          <td>(</td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>filename</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int </td>
+          <td class="paramname"> <em>line</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>expression</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"> <em>comment</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Process an assertion failure. 
+<p>
+Normally called from __TBB_ASSERT macro. If assertion handler is null, print message for assertion failure and abort. Otherwise call the assertion handler. 
+</div>
+</div><p>
+<a class="anchor" name="a6858b22e90041c9c4669674ff39b056"></a><!-- doxytag: member="tbb::TBB_runtime_interface_version" ref="a6858b22e90041c9c4669674ff39b056" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int __TBB_EXPORTED_FUNC tbb::TBB_runtime_interface_version           </td>
+          <td>(</td>
+          <td class="paramname">          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+The function returns the interface version of the TBB shared library being used. 
+<p>
+The version it returns is determined at runtime, not at compile/link time. So it can be different than the value of TBB_INTERFACE_VERSION obtained at compile time. 
+</div>
+</div><p>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00183.html b/doc/html/a00183.html
new file mode 100644
index 0000000..85872af
--- /dev/null
+++ b/doc/html/a00183.html
@@ -0,0 +1,236 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Algorithms</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<h1>Algorithms</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html">tbb::blocked_range< Value ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">A range over which to iterate.  <a href="a00097.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00098.html">tbb::blocked_range2d< RowValue, ColValue ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">A 2-dimensional range that models the Range concept.  <a href="a00098.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00099.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">A 3-dimensional range that models the Range concept.  <a href="a00099.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00117.html">tbb::pre_scan_tag</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Used to indicate that the initial scan is being performed.  <a href="a00117.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00110.html">tbb::final_scan_tag</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Used to indicate that the final scan is being performed.  <a href="a00110.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00115.html">tbb::parallel_while< Body ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over a stream, with optional addition of more work.  <a href="a00115.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00126.html">tbb::simple_partitioner</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">A simple partitioner.  <a href="a00126.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00095.html">tbb::auto_partitioner</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">An auto partitioner.  <a href="a00095.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00109.html">tbb::filter</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">A stage in a pipeline.  <a href="a00109.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00116.html">tbb::pipeline</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">A processing pipeling that applies filters to items.  <a href="a00116.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00131.html">tbb::split</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Dummy type that distinguishes splitting constructor from copy constructor.  <a href="a00131.html#_details">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>parallel_do</h2></td></tr>
+<tr><td colspan="2">See also requirements on <a class="el" href="parallel_do_body_req.html">parallel_do Body</a>. <br><br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g3383e2703977012b6f384d673410f1f7"></a><!-- doxytag: member="algorithms::parallel_do" ref="g3383e2703977012b6f384d673410f1f7" args="(Iterator first, Iterator last, const Body &body)" -->
+template<typename Iterator, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g3383e2703977012b6f384d673410f1f7">tbb::parallel_do</a> (Iterator first, Iterator last, const Body &body)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over a range, with optional addition of more work. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g2617dc9b88b3285a7212599d49f74228"></a><!-- doxytag: member="algorithms::parallel_do" ref="g2617dc9b88b3285a7212599d49f74228" args="(Iterator first, Iterator last, const Body &body, task_group_context &context)" -->
+template<typename Iterator, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g2617dc9b88b3285a7212599d49f74228">tbb::parallel_do</a> (Iterator first, Iterator last, const Body &body, task_group_context &context)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over a range, with optional addition of more work and user-supplied context. <br></td></tr>
+<tr><td colspan="2"><br><h2>parallel_for</h2></td></tr>
+<tr><td colspan="2">See also requirements on <a class="el" href="range_req.html">Range</a> and <a class="el" href="parallel_for_body_req.html">parallel_for Body</a>. <br><br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g2e90dde1b5dfe6cb03e64c7d7cd0d778"></a><!-- doxytag: member="algorithms::parallel_for" ref="g2e90dde1b5dfe6cb03e64c7d7cd0d778" args="(const Range &range, const Body &body, const simple_partitioner &partitioner=simple_partitioner())" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g2e90dde1b5dfe6cb03e64c7d7cd0d778">tbb::parallel_for</a> (const Range &range, const Body &body, const simple_partitioner &partitioner=simple_partitioner())</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with simple partitioner, or default partitioner if no partitioner is specified. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga7ac75d532389b55b9247f3fdb0b00d1"></a><!-- doxytag: member="algorithms::parallel_for" ref="ga7ac75d532389b55b9247f3fdb0b00d1" args="(const Range &range, const Body &body, const auto_partitioner &partitioner)" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#ga7ac75d532389b55b9247f3fdb0b00d1">tbb::parallel_for</a> (const Range &range, const Body &body, const auto_partitioner &partitioner)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with <a class="el" href="a00095.html">auto_partitioner</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g9cd1b210ceb1c040f30e390b4a21bde8"></a><!-- doxytag: member="algorithms::parallel_for" ref="g9cd1b210ceb1c040f30e390b4a21bde8" args="(const Range &range, const Body &body, affinity_partitioner &partitioner)" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g9cd1b210ceb1c040f30e390b4a21bde8">tbb::parallel_for</a> (const Range &range, const Body &body, affinity_partitioner &partitioner)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with <a class="el" href="a00091.html">affinity_partitioner</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g2d317a5e0078cd193125439fed60dfdc"></a><!-- doxytag: member="algorithms::parallel_for" ref="g2d317a5e0078cd193125439fed60dfdc" args="(const Range &range, const Body &body, const simple_partitioner &partitioner, task_group_context &context)" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g2d317a5e0078cd193125439fed60dfdc">tbb::parallel_for</a> (const Range &range, const Body &body, const simple_partitioner &partitioner, task_group_context &context)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with simple partitioner and user-supplied context. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g1c0700e3f85e83a788ff3ede88ebb7e9"></a><!-- doxytag: member="algorithms::parallel_for" ref="g1c0700e3f85e83a788ff3ede88ebb7e9" args="(const Range &range, const Body &body, const auto_partitioner &partitioner, task_group_context &context)" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g1c0700e3f85e83a788ff3ede88ebb7e9">tbb::parallel_for</a> (const Range &range, const Body &body, const auto_partitioner &partitioner, task_group_context &context)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with <a class="el" href="a00095.html">auto_partitioner</a> and user-supplied context. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g04b4696b67370c01353ff5974c8f1196"></a><!-- doxytag: member="algorithms::parallel_for" ref="g04b4696b67370c01353ff5974c8f1196" args="(const Range &range, const Body &body, affinity_partitioner &partitioner, task_group_context &context)" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g04b4696b67370c01353ff5974c8f1196">tbb::parallel_for</a> (const Range &range, const Body &body, affinity_partitioner &partitioner, task_group_context &context)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with <a class="el" href="a00091.html">affinity_partitioner</a> and user-supplied context. <br></td></tr>
+<tr><td colspan="2"><br><h2>parallel_reduce</h2></td></tr>
+<tr><td colspan="2">See also requirements on <a class="el" href="range_req.html">Range</a> and <a class="el" href="parallel_reduce_body_req.html">parallel_reduce Body</a>. <br><br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="gaf32af4ef8fe4261b10e9f6086ce54dc"></a><!-- doxytag: member="algorithms::parallel_reduce" ref="gaf32af4ef8fe4261b10e9f6086ce54dc" args="(const Range &range, Body &body, const simple_partitioner &partitioner=simple_partitioner())" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#gaf32af4ef8fe4261b10e9f6086ce54dc">tbb::parallel_reduce</a> (const Range &range, Body &body, const simple_partitioner &partitioner=simple_partitioner())</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and <a class="el" href="a00126.html">simple_partitioner</a>, or no partitioner specified. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g18a19157e6245992fc00ca0adeb7dd37"></a><!-- doxytag: member="algorithms::parallel_reduce" ref="g18a19157e6245992fc00ca0adeb7dd37" args="(const Range &range, Body &body, const auto_partitioner &partitioner)" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g18a19157e6245992fc00ca0adeb7dd37">tbb::parallel_reduce</a> (const Range &range, Body &body, const auto_partitioner &partitioner)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and <a class="el" href="a00095.html">auto_partitioner</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="gc61e73fcc36c92d79a217fc355ff4a6b"></a><!-- doxytag: member="algorithms::parallel_reduce" ref="gc61e73fcc36c92d79a217fc355ff4a6b" args="(const Range &range, Body &body, affinity_partitioner &partitioner)" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#gc61e73fcc36c92d79a217fc355ff4a6b">tbb::parallel_reduce</a> (const Range &range, Body &body, affinity_partitioner &partitioner)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and <a class="el" href="a00091.html">affinity_partitioner</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g45cb00c42a18e334bbde8b7535afe460"></a><!-- doxytag: member="algorithms::parallel_reduce" ref="g45cb00c42a18e334bbde8b7535afe460" args="(const Range &range, Body &body, const simple_partitioner &partitioner, task_group_context &context)" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g45cb00c42a18e334bbde8b7535afe460">tbb::parallel_reduce</a> (const Range &range, Body &body, const simple_partitioner &partitioner, task_group_context &context)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, simple partitioner and user-supplied context. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g1c1ea1d7c61b3c225e92c70d669a53a5"></a><!-- doxytag: member="algorithms::parallel_reduce" ref="g1c1ea1d7c61b3c225e92c70d669a53a5" args="(const Range &range, Body &body, const auto_partitioner &partitioner, task_group_context &context)" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g1c1ea1d7c61b3c225e92c70d669a53a5">tbb::parallel_reduce</a> (const Range &range, Body &body, const auto_partitioner &partitioner, task_group_context &context)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, <a class="el" href="a00095.html">auto_partitioner</a> and user-supplied context. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="gd9ac3a3811060314695f33b703c6e11b"></a><!-- doxytag: member="algorithms::parallel_reduce" ref="gd9ac3a3811060314695f33b703c6e11b" args="(const Range &range, Body &body, affinity_partitioner &partitioner, task_group_context &context)" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#gd9ac3a3811060314695f33b703c6e11b">tbb::parallel_reduce</a> (const Range &range, Body &body, affinity_partitioner &partitioner, task_group_context &context)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, <a class="el" href="a00091.html">affinity_partitioner</a> and user-supplied context. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="gdddb4cb5d9de2f3d6bad3ffa6b64db07"></a><!-- doxytag: member="algorithms::parallel_reduce" ref="gdddb4cb5d9de2f3d6bad3ffa6b64db07" args="(const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner=simple_partitioner())" -->
+template<typename Range, typename Value, typename RealBody, typename Reduction> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#gdddb4cb5d9de2f3d6bad3ffa6b64db07">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner=simple_partitioner())</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and <a class="el" href="a00126.html">simple_partitioner</a>, or no partitioner specified. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="gb175401f0729e40dd2c5860a17c14385"></a><!-- doxytag: member="algorithms::parallel_reduce" ref="gb175401f0729e40dd2c5860a17c14385" args="(const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const auto_partitioner &partitioner)" -->
+template<typename Range, typename Value, typename RealBody, typename Reduction> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#gb175401f0729e40dd2c5860a17c14385">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const auto_partitioner &partitioner)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and <a class="el" href="a00095.html">auto_partitioner</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="gb7f1f1828ae2b330ce05b8513a495154"></a><!-- doxytag: member="algorithms::parallel_reduce" ref="gb7f1f1828ae2b330ce05b8513a495154" args="(const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, affinity_partitioner &partitioner)" -->
+template<typename Range, typename Value, typename RealBody, typename Reduction> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#gb7f1f1828ae2b330ce05b8513a495154">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, affinity_partitioner &partitioner)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and <a class="el" href="a00091.html">affinity_partitioner</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="gfbc0cc2026d87f11a96bcd62788f5bb5"></a><!-- doxytag: member="algorithms::parallel_reduce" ref="gfbc0cc2026d87f11a96bcd62788f5bb5" args="(const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner, task_group_context &context)" -->
+template<typename Range, typename Value, typename RealBody, typename Reduction> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#gfbc0cc2026d87f11a96bcd62788f5bb5">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner, task_group_context &context)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, simple partitioner and user-supplied context. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g630c90a399937d9d4ae70ff883186dfd"></a><!-- doxytag: member="algorithms::parallel_reduce" ref="g630c90a399937d9d4ae70ff883186dfd" args="(const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const auto_partitioner &partitioner, task_group_context &context)" -->
+template<typename Range, typename Value, typename RealBody, typename Reduction> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g630c90a399937d9d4ae70ff883186dfd">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const auto_partitioner &partitioner, task_group_context &context)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, <a class="el" href="a00095.html">auto_partitioner</a> and user-supplied context. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g496bd7eadb3b97495ccb5655ef90319e"></a><!-- doxytag: member="algorithms::parallel_reduce" ref="g496bd7eadb3b97495ccb5655ef90319e" args="(const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, affinity_partitioner &partitioner, task_group_context &context)" -->
+template<typename Range, typename Value, typename RealBody, typename Reduction> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g496bd7eadb3b97495ccb5655ef90319e">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, affinity_partitioner &partitioner, task_group_context &context)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, <a class="el" href="a00091.html">affinity_partitioner</a> and user-supplied context. <br></td></tr>
+<tr><td colspan="2"><br><h2>parallel_scan</h2></td></tr>
+<tr><td colspan="2">See also requirements on <a class="el" href="range_req.html">Range</a> and <a class="el" href="parallel_scan_body_req.html">parallel_scan Body</a>. <br><br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="gdf44892aacffa7360018e96ebdaae2ba"></a><!-- doxytag: member="algorithms::parallel_scan" ref="gdf44892aacffa7360018e96ebdaae2ba" args="(const Range &range, Body &body, const simple_partitioner &partitioner=simple_partitioner())" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#gdf44892aacffa7360018e96ebdaae2ba">tbb::parallel_scan</a> (const Range &range, Body &body, const simple_partitioner &partitioner=simple_partitioner())</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel prefix with <a class="el" href="a00126.html">simple_partitioner</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g62fde400a37bbca1a2fddc8e3d22f556"></a><!-- doxytag: member="algorithms::parallel_scan" ref="g62fde400a37bbca1a2fddc8e3d22f556" args="(const Range &range, Body &body, const auto_partitioner &partitioner)" -->
+template<typename Range, typename Body> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g62fde400a37bbca1a2fddc8e3d22f556">tbb::parallel_scan</a> (const Range &range, Body &body, const auto_partitioner &partitioner)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel prefix with <a class="el" href="a00095.html">auto_partitioner</a>. <br></td></tr>
+<tr><td colspan="2"><br><h2>parallel_sort</h2></td></tr>
+<tr><td colspan="2">See also requirements on <a class="el" href="parallel_sort_iter_req.html">iterators for parallel_sort</a>. <br><br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename RandomAccessIterator, typename Compare> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g49edcf9447cd91a9527a3f8e8512b7aa">tbb::parallel_sort</a> (RandomAccessIterator begin, RandomAccessIterator end, const Compare &comp)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in [begin,end) using the given comparator.  <a href="#g49edcf9447cd91a9527a3f8e8512b7aa"></a><br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g16c3eb77d0e530834c51ce3857f01012"></a><!-- doxytag: member="algorithms::parallel_sort" ref="g16c3eb77d0e530834c51ce3857f01012" args="(RandomAccessIterator begin, RandomAccessIterator end)" -->
+template<typename RandomAccessIterator> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#g16c3eb77d0e530834c51ce3857f01012">tbb::parallel_sort</a> (RandomAccessIterator begin, RandomAccessIterator end)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in [begin,end) with a default comparator <code>std::less<RandomAccessIterator></code>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="gc7576f82fdedc8a701a6c17ad9415926"></a><!-- doxytag: member="algorithms::parallel_sort" ref="gc7576f82fdedc8a701a6c17ad9415926" args="(T *begin, T *end)" -->
+template<typename T> </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#gc7576f82fdedc8a701a6c17ad9415926">tbb::parallel_sort</a> (T *begin, T *end)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in the range <code></code>[begin,end) with a default comparator <code>std::less<T></code>. <br></td></tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g49edcf9447cd91a9527a3f8e8512b7aa"></a><!-- doxytag: member="tbb::parallel_sort" ref="g49edcf9447cd91a9527a3f8e8512b7aa" args="(RandomAccessIterator begin, RandomAccessIterator end, const Compare &comp)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename RandomAccessIterator, typename Compare> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_sort           </td>
+          <td>(</td>
+          <td class="paramtype">RandomAccessIterator </td>
+          <td class="paramname"> <em>begin</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">RandomAccessIterator </td>
+          <td class="paramname"> <em>end</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Compare & </td>
+          <td class="paramname"> <em>comp</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sorts the data in [begin,end) using the given comparator. 
+<p>
+The compare function object is used for all comparisons between elements during sorting. The compare object must define a bool operator() function. 
+</div>
+</div><p>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00184.html b/doc/html/a00184.html
new file mode 100644
index 0000000..aed2638
--- /dev/null
+++ b/doc/html/a00184.html
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Containers</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<h1>Containers</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Unordered map from Key to T.  <a href="a00103.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">A high-performance thread-safe queue.  <a href="a00106.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Concurrent vector container.  <a href="a00107.html#_details">More...</a><br></td></tr>
+</table>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00185.html b/doc/html/a00185.html
new file mode 100644
index 0000000..f46dc59
--- /dev/null
+++ b/doc/html/a00185.html
@@ -0,0 +1,285 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Memory Allocation</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<h1>Memory Allocation</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00092.html">tbb::aligned_space< T, N ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Block of space aligned sufficiently to construct an array T with N elements.  <a href="a00092.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00100.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00101.html">tbb::cache_aligned_allocator< void ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00101.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html">tbb::scalable_allocator< T ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00124.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00125.html">tbb::scalable_allocator< void ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00125.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00136.html">tbb::tbb_allocator< T ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00136.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00137.html">tbb::tbb_allocator< void ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00137.html#_details">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00185.html#gc25b8e6c76db0b346a8249796a7a2475">scalable_malloc</a> (size_t size)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00185.html#gca3579c21244dba9f0c351e5984d4565">scalable_free</a> (void *ptr)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00185.html#g951bbbbd2d041acb59ba5fa910b52543">scalable_realloc</a> (void *ptr, size_t size)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00185.html#g3f5a2fde0bcaa3eda35be32c8658f444">scalable_calloc</a> (size_t nobj, size_t size)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00185.html#g05dcec987480bb2c82ecdead6a085899">scalable_posix_memalign</a> (void **memptr, size_t alignment, size_t size)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00185.html#gc1c7aaa1fe85c17ba5a3a96f7e8d89e7">scalable_aligned_malloc</a> (size_t size, size_t alignment)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00185.html#gbaea91376be80dfabd7c93eaffd9abaa">scalable_aligned_realloc</a> (void *ptr, size_t size, size_t alignment)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00185.html#g65a20e812012f15ec7442d5b45d0cba5">scalable_aligned_free</a> (void *ptr)</td></tr>
+
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g65a20e812012f15ec7442d5b45d0cba5"></a><!-- doxytag: member="scalable_allocator.h::scalable_aligned_free" ref="g65a20e812012f15ec7442d5b45d0cba5" args="(void *ptr)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void __TBB_EXPORTED_FUNC scalable_aligned_free           </td>
+          <td>(</td>
+          <td class="paramtype">void * </td>
+          <td class="paramname"> <em>ptr</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+The "_aligned_free" analogue. 
+</div>
+</div><p>
+<a class="anchor" name="gc1c7aaa1fe85c17ba5a3a96f7e8d89e7"></a><!-- doxytag: member="scalable_allocator.h::scalable_aligned_malloc" ref="gc1c7aaa1fe85c17ba5a3a96f7e8d89e7" args="(size_t size, size_t alignment)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void* __TBB_EXPORTED_FUNC scalable_aligned_malloc           </td>
+          <td>(</td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"> <em>size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"> <em>alignment</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+The "_aligned_malloc" analogue. 
+</div>
+</div><p>
+<a class="anchor" name="gbaea91376be80dfabd7c93eaffd9abaa"></a><!-- doxytag: member="scalable_allocator.h::scalable_aligned_realloc" ref="gbaea91376be80dfabd7c93eaffd9abaa" args="(void *ptr, size_t size, size_t alignment)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void* __TBB_EXPORTED_FUNC scalable_aligned_realloc           </td>
+          <td>(</td>
+          <td class="paramtype">void * </td>
+          <td class="paramname"> <em>ptr</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"> <em>size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"> <em>alignment</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+The "_aligned_realloc" analogue. 
+</div>
+</div><p>
+<a class="anchor" name="g3f5a2fde0bcaa3eda35be32c8658f444"></a><!-- doxytag: member="scalable_allocator.h::scalable_calloc" ref="g3f5a2fde0bcaa3eda35be32c8658f444" args="(size_t nobj, size_t size)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void* __TBB_EXPORTED_FUNC scalable_calloc           </td>
+          <td>(</td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"> <em>nobj</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"> <em>size</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+The "calloc" analogue complementing scalable_malloc. 
+</div>
+</div><p>
+<a class="anchor" name="gca3579c21244dba9f0c351e5984d4565"></a><!-- doxytag: member="scalable_allocator.h::scalable_free" ref="gca3579c21244dba9f0c351e5984d4565" args="(void *ptr)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void __TBB_EXPORTED_FUNC scalable_free           </td>
+          <td>(</td>
+          <td class="paramtype">void * </td>
+          <td class="paramname"> <em>ptr</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+The "free" analogue to discard a previously allocated piece of memory. 
+</div>
+</div><p>
+<a class="anchor" name="gc25b8e6c76db0b346a8249796a7a2475"></a><!-- doxytag: member="scalable_allocator.h::scalable_malloc" ref="gc25b8e6c76db0b346a8249796a7a2475" args="(size_t size)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void* __TBB_EXPORTED_FUNC scalable_malloc           </td>
+          <td>(</td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"> <em>size</em>          </td>
+          <td> ) </td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+The "malloc" analogue to allocate block of memory of size bytes. 
+</div>
+</div><p>
+<a class="anchor" name="g05dcec987480bb2c82ecdead6a085899"></a><!-- doxytag: member="scalable_allocator.h::scalable_posix_memalign" ref="g05dcec987480bb2c82ecdead6a085899" args="(void **memptr, size_t alignment, size_t size)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int __TBB_EXPORTED_FUNC scalable_posix_memalign           </td>
+          <td>(</td>
+          <td class="paramtype">void ** </td>
+          <td class="paramname"> <em>memptr</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"> <em>alignment</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"> <em>size</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+The "posix_memalign" analogue. 
+</div>
+</div><p>
+<a class="anchor" name="g951bbbbd2d041acb59ba5fa910b52543"></a><!-- doxytag: member="scalable_allocator.h::scalable_realloc" ref="g951bbbbd2d041acb59ba5fa910b52543" args="(void *ptr, size_t size)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void* __TBB_EXPORTED_FUNC scalable_realloc           </td>
+          <td>(</td>
+          <td class="paramtype">void * </td>
+          <td class="paramname"> <em>ptr</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"> <em>size</em></td><td> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+The "realloc" analogue complementing scalable_malloc. 
+</div>
+</div><p>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00186.html b/doc/html/a00186.html
new file mode 100644
index 0000000..05125d7
--- /dev/null
+++ b/doc/html/a00186.html
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Synchronization</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<h1>Synchronization</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00093.html">tbb::atomic< T ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Primary template for atomic.  <a href="a00093.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00112.html">tbb::mutex</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Wrapper around the platform's native reader-writer lock.  <a href="a00112.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00118.html">tbb::queuing_mutex</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Queuing lock with local-only spinning.  <a href="a00118.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html">tbb::queuing_rw_mutex</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Reader-writer lock with local-only spinning.  <a href="a00120.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00122.html">tbb::recursive_mutex</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Mutex that allows recursive mutex acquisition.  <a href="a00122.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00127.html">tbb::spin_mutex</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">A lock that occupies a single byte.  <a href="a00127.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00129.html">tbb::spin_rw_mutex_v3</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Fast, unfair, spinning reader-writer lock with backoff and writer-preference.  <a href="a00129.html#_details">More...</a><br></td></tr>
+</table>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00187.html b/doc/html/a00187.html
new file mode 100644
index 0000000..1def26c
--- /dev/null
+++ b/doc/html/a00187.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Timing</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<h1>Timing</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html">tbb::tick_count</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Absolute timestamp.  <a href="a00140.html#_details">More...</a><br></td></tr>
+</table>
+<hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00188.html b/doc/html/a00188.html
index 1c6e92f..32d5667 100644
--- a/doc/html/a00188.html
+++ b/doc/html/a00188.html
@@ -1,38 +1,38 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::affinity_partitioner Class Reference</title>
+<title>Task Scheduling</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::affinity_partitioner Class Reference</h1>An affinity partitioner.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00341.html">partitioner.h</a>></code>
-<p>
-Inherits <a class="el" href="a00189.html">tbb::internal::affinity_partitioner_base_v3</a>.
-<p>
-Inheritance diagram for tbb::affinity_partitioner:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00094.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<h1>Task Scheduling</h1><table border="0" cellpadding="0" cellspacing="0">
 <tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::affinity_partitioner::internal::start_for"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::start_for</b></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00133.html">tbb::task_group_context</a></td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n1" doxytag="tbb::affinity_partitioner::internal::start_reduce_with_affinity"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::start_reduce_with_affinity</b></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Used to form groups of tasks.  <a href="a00133.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html">tbb::task</a></td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n2" doxytag="tbb::affinity_partitioner::internal::start_scan"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::start_scan</b></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Base class for user-defined tasks.  <a href="a00132.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00108.html">tbb::empty_task</a></td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n3" doxytag="tbb::affinity_partitioner::internal::affinity_partition_type"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::affinity_partition_type</b></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">task that does nothing. Useful for synchronization.  <a href="a00108.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00134.html">tbb::task_list</a></td></tr>
 
+<tr><td class="mdescLeft"> </td><td class="mdescRight">A list of children.  <a href="a00134.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html">tbb::task_scheduler_init</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Class representing reference to tbb scheduler.  <a href="a00135.html#_details">More...</a><br></td></tr>
 </table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-An affinity partitioner. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00341.html">partitioner.h</a></ul>
 <hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/a00189.html b/doc/html/a00189.html
index a54ea11..e6bd6a3 100644
--- a/doc/html/a00189.html
+++ b/doc/html/a00189.html
@@ -1,37 +1,101 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::affinity_partitioner_base_v3 Class Reference</title>
+<title>_tbb_windef.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::affinity_partitioner_base_v3 Class Reference</h1>Defines entry points into tbb run-time library;.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00341.html">partitioner.h</a>></code>
-<p>
-Inherits <a class="el" href="a00230.html">tbb::internal::no_copy</a>.
-<p>
-Inherited by <a class="el" href="a00188.html">tbb::affinity_partitioner</a><code> [private]</code>.
-<p>
-Inheritance diagram for tbb::internal::affinity_partitioner_base_v3:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00088.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::internal::affinity_partitioner_base_v3::tbb::affinity_partitioner"></a>
-class </td><td class="memItemRight" valign="bottom"><a class="el" href="a00189.html#n0">tbb::affinity_partitioner</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n1" doxytag="tbb::internal::affinity_partitioner_base_v3::affinity_partition_type"></a>
-class </td><td class="memItemRight" valign="bottom"><b>affinity_partition_type</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Defines entry points into tbb run-time library;. 
-<p>
-The entry points are the constructor and destructor. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00341.html">partitioner.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>_tbb_windef.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_tbb_windef_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#error Do not #include this file directly.  Use "#include tbb/tbb_stddef.h" instead.</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* __TBB_tbb_windef_H */</span>
+<a name="l00024"></a>00024 
+<a name="l00025"></a>00025 <span class="comment">// Check that the target Windows version has all API calls requried for TBB.</span>
+<a name="l00026"></a>00026 <span class="comment">// Do not increase the version in condition beyond 0x0500 without prior discussion!</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#if defined(_WIN32_WINNT) && _WIN32_WINNT<0x0400</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#error TBB is unable to run on old Windows versions; _WIN32_WINNT must be 0x0400 or greater.</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span>
+<a name="l00031"></a>00031 <span class="preprocessor">#if !defined(_MT)</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#error TBB requires linkage with multithreaded C/C++ runtime library. \</span>
+<a name="l00033"></a>00033 <span class="preprocessor">       Choose multithreaded DLL runtime in project settings, or use /MD[d] compiler switch.</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor">#elif !defined(_DLL)</span>
+<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#pragma message("Warning: Using TBB together with static C/C++ runtime library is not recommended. " \</span>
+<a name="l00036"></a>00036 <span class="preprocessor">                "Consider switching your project to multithreaded DLL runtime used by TBB.")</span>
+<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span>
+<a name="l00039"></a>00039 <span class="comment">// Workaround for the problem with MVSC headers failing to define namespace std</span>
+<a name="l00040"></a>00040 <span class="keyword">namespace </span>std {
+<a name="l00041"></a>00041   using ::size_t; using ::ptrdiff_t;
+<a name="l00042"></a>00042 }
+<a name="l00043"></a>00043 
+<a name="l00044"></a>00044 <span class="preprocessor">#define __TBB_STRING_AUX(x) #x</span>
+<a name="l00045"></a>00045 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_STRING(x) __TBB_STRING_AUX(x)</span>
+<a name="l00046"></a>00046 <span class="preprocessor"></span>
+<a name="l00047"></a>00047 <span class="comment">// Default setting of TBB_USE_DEBUG</span>
+<a name="l00048"></a>00048 <span class="preprocessor">#ifdef TBB_USE_DEBUG</span>
+<a name="l00049"></a>00049 <span class="preprocessor"></span><span class="preprocessor">#    if TBB_USE_DEBUG </span>
+<a name="l00050"></a>00050 <span class="preprocessor"></span><span class="preprocessor">#        if !defined(_DEBUG)</span>
+<a name="l00051"></a>00051 <span class="preprocessor"></span><span class="preprocessor">#            pragma message(__FILE__ "(" __TBB_STRING(__LINE__) ") : Warning: Recommend using /MDd if compiling with TBB_USE_DEBUG!=0")</span>
+<a name="l00052"></a>00052 <span class="preprocessor"></span><span class="preprocessor">#        endif</span>
+<a name="l00053"></a>00053 <span class="preprocessor"></span><span class="preprocessor">#    else</span>
+<a name="l00054"></a>00054 <span class="preprocessor"></span><span class="preprocessor">#        if defined(_DEBUG)</span>
+<a name="l00055"></a>00055 <span class="preprocessor"></span><span class="preprocessor">#            pragma message(__FILE__ "(" __TBB_STRING(__LINE__) ") : Warning: Recommend using /MD if compiling with TBB_USE_DEBUG==0")</span>
+<a name="l00056"></a>00056 <span class="preprocessor"></span><span class="preprocessor">#        endif</span>
+<a name="l00057"></a>00057 <span class="preprocessor"></span><span class="preprocessor">#    endif</span>
+<a name="l00058"></a>00058 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00059"></a>00059 <span class="preprocessor"></span><span class="preprocessor">#    ifdef _DEBUG</span>
+<a name="l00060"></a>00060 <span class="preprocessor"></span><span class="preprocessor">#        define TBB_USE_DEBUG 1</span>
+<a name="l00061"></a>00061 <span class="preprocessor"></span><span class="preprocessor">#    endif</span>
+<a name="l00062"></a>00062 <span class="preprocessor"></span><span class="preprocessor">#endif </span>
+<a name="l00063"></a>00063 <span class="preprocessor"></span>
+<a name="l00064"></a>00064 <span class="preprocessor">#if __TBB_BUILD && !defined(__TBB_NO_IMPLICIT_LINKAGE)</span>
+<a name="l00065"></a>00065 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_NO_IMPLICIT_LINKAGE 1</span>
+<a name="l00066"></a>00066 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00067"></a>00067 <span class="preprocessor"></span>
+<a name="l00068"></a>00068 <span class="preprocessor">#if _MSC_VER</span>
+<a name="l00069"></a>00069 <span class="preprocessor"></span><span class="preprocessor">    #if !__TBB_NO_IMPLICIT_LINKAGE</span>
+<a name="l00070"></a>00070 <span class="preprocessor"></span><span class="preprocessor">        #ifdef _DEBUG</span>
+<a name="l00071"></a>00071 <span class="preprocessor"></span><span class="preprocessor">            #pragma comment(lib, "tbb_debug.lib")</span>
+<a name="l00072"></a>00072 <span class="preprocessor"></span><span class="preprocessor">        #else</span>
+<a name="l00073"></a>00073 <span class="preprocessor"></span><span class="preprocessor">            #pragma comment(lib, "tbb.lib")</span>
+<a name="l00074"></a>00074 <span class="preprocessor"></span><span class="preprocessor">        #endif</span>
+<a name="l00075"></a>00075 <span class="preprocessor"></span><span class="preprocessor">    #endif</span>
+<a name="l00076"></a>00076 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00190.html b/doc/html/a00190.html
deleted file mode 100644
index eb1fdd9..0000000
--- a/doc/html/a00190.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::aligned_space< T, N > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::aligned_space< T, N > Class Template Reference</h1>Block of space aligned sufficiently to construct an array T with N elements.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00323.html">aligned_space.h</a>></code>
-<p>
-<a href="a00001.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::aligned_space::begin"></a>
-T * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00190.html#a0">begin</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Pointer to beginning of array. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::aligned_space::end"></a>
-T * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00190.html#a1">end</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Pointer to one past last element in array. <br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename T, size_t N><br>
- class tbb::aligned_space< T, N ></h3>
-
-Block of space aligned sufficiently to construct an array T with N elements. 
-<p>
-The elements are not constructed or destroyed by this class. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00323.html">aligned_space.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00191.html b/doc/html/a00191.html
index 8e00611..14dd7af 100644
--- a/doc/html/a00191.html
+++ b/doc/html/a00191.html
@@ -1,29 +1,68 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::atomic< T > Struct Template Reference</title>
+<title>aligned_space.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::atomic< T > Struct Template Reference</h1>Primary template for atomic.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00324.html">atomic.h</a>></code>
-<p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename T><br>
- struct tbb::atomic< T ></h3>
-
-Primary template for atomic. 
-<p>
-See the Reference for details. 
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="a00324.html">atomic.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>aligned_space.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_aligned_space_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_aligned_space_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "tbb_stddef.h"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "tbb_machine.h"</span>
+<a name="l00026"></a>00026 
+<a name="l00027"></a><a class="code" href="a00181.html">00027</a> <span class="keyword">namespace </span>tbb {
+<a name="l00028"></a>00028 
+<a name="l00030"></a>00030 
+<a name="l00032"></a>00032 <span class="keyword">template</span><<span class="keyword">typename</span> T,size_t N>
+<a name="l00033"></a><a class="code" href="a00092.html">00033</a> <span class="keyword">class </span><a class="code" href="a00092.html">aligned_space</a> {
+<a name="l00034"></a>00034 <span class="keyword">private</span>:
+<a name="l00035"></a>00035     <span class="keyword">typedef</span> __TBB_TypeWithAlignmentAtLeastAsStrict(T) element_type;
+<a name="l00036"></a>00036     element_type array[(<span class="keyword">sizeof</span>(T)*N+<span class="keyword">sizeof</span>(element_type)-1)/<span class="keyword">sizeof</span>(element_type)];
+<a name="l00037"></a>00037 <span class="keyword">public</span>:
+<a name="l00039"></a><a class="code" href="a00092.html#0d702fc6b9e9d061ace3501b3c861cdf">00039</a>     T* <a class="code" href="a00092.html#0d702fc6b9e9d061ace3501b3c861cdf">begin</a>() {<span class="keywordflow">return</span> reinterpret_cast<T*>(<span class="keyword">this</span>);}
+<a name="l00040"></a>00040 
+<a name="l00042"></a><a class="code" href="a00092.html#024be075c23c0394c9a2518d993bcd9e">00042</a>     T* <a class="code" href="a00092.html#024be075c23c0394c9a2518d993bcd9e">end</a>() {<span class="keywordflow">return</span> <a class="code" href="a00092.html#0d702fc6b9e9d061ace3501b3c861cdf">begin</a>()+N;}
+<a name="l00043"></a>00043 };
+<a name="l00044"></a>00044 
+<a name="l00045"></a>00045 } <span class="comment">// namespace tbb </span>
+<a name="l00046"></a>00046 
+<a name="l00047"></a>00047 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_aligned_space_H */</span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00192.html b/doc/html/a00192.html
deleted file mode 100644
index 57fb161..0000000
--- a/doc/html/a00192.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::AtomicBackoff Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::AtomicBackoff Class Reference</h1>Class that implements exponential backoff.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00354.html">tbb_machine.h</a>></code>
-<p>
-<a href="a00135.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::internal::AtomicBackoff::pause"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a1">pause</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Pause for a while. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::internal::AtomicBackoff::bounded_pause"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>bounded_pause</b> ()</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::internal::AtomicBackoff::reset"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Class that implements exponential backoff. 
-<p>
-See implementation of SpinwaitWhileEq for an example. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00354.html">tbb_machine.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00193.html b/doc/html/a00193.html
index e0f5a6f..06eb648 100644
--- a/doc/html/a00193.html
+++ b/doc/html/a00193.html
@@ -1,39 +1,452 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::auto_partitioner Class Reference</title>
+<title>atomic.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::auto_partitioner Class Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>An auto partitioner.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00341.html">partitioner.h</a>></code>
-<p>
-<a href="a00092.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::auto_partitioner::internal::start_for"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::start_for</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n1" doxytag="tbb::auto_partitioner::internal::start_reduce"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::start_reduce</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n2" doxytag="tbb::auto_partitioner::internal::start_scan"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::start_scan</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-An auto partitioner. 
-<p>
-The range is initial divided into several large chunks. Chunks are further subdivided into VICTIM_CHUNKS pieces if they are stolen and divisible. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00341.html">partitioner.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>atomic.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_atomic_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_atomic_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <cstddef></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "tbb_stddef.h"</span>
+<a name="l00026"></a>00026 
+<a name="l00027"></a>00027 <span class="preprocessor">#if _MSC_VER </span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_LONG_LONG __int64</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_LONG_LONG long long</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* _MSC_VER */</span>
+<a name="l00032"></a>00032 
+<a name="l00033"></a>00033 <span class="preprocessor">#include "tbb_machine.h"</span>
+<a name="l00034"></a>00034 
+<a name="l00035"></a>00035 <span class="preprocessor">#if defined(_MSC_VER) && !defined(__INTEL_COMPILER)</span>
+<a name="l00036"></a>00036 <span class="preprocessor"></span>    <span class="comment">// Workaround for overzealous compiler warnings </span>
+<a name="l00037"></a>00037 <span class="preprocessor">    #pragma warning (push)</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (disable: 4244 4267)</span>
+<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00040"></a>00040 <span class="preprocessor"></span>
+<a name="l00041"></a>00041 <span class="keyword">namespace </span>tbb {
+<a name="l00042"></a>00042 
+<a name="l00044"></a><a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fef">00044</a> <span class="keyword">enum</span> <a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fef">memory_semantics</a> {
+<a name="l00046"></a>00046     <a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fefc6db01678b1749dff7554688d079520c">__TBB_full_fence</a>,
+<a name="l00048"></a>00048     <a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fef5f1fafe8d229d348ff91d937f64e79c7">acquire</a>,
+<a name="l00050"></a>00050     <a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fefaa1fa107db0245c41fb109d976ae8d70">release</a>
+<a name="l00051"></a>00051 };
+<a name="l00052"></a>00052 
+<a name="l00054"></a>00054 <span class="keyword">namespace </span>internal {
+<a name="l00055"></a>00055 
+<a name="l00056"></a>00056 <span class="keyword">template</span><size_t Size, memory_semantics M>
+<a name="l00057"></a>00057 <span class="keyword">struct </span>atomic_traits {       <span class="comment">// Primary template</span>
+<a name="l00058"></a>00058 };
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060 <span class="keyword">template</span><size_t Size>
+<a name="l00061"></a>00061 <span class="keyword">struct </span>atomic_word {             <span class="comment">// Primary template</span>
+<a name="l00062"></a>00062     <span class="keyword">typedef</span> intptr word;
+<a name="l00063"></a>00063 };
+<a name="l00064"></a>00064 
+<a name="l00065"></a>00065 <span class="keyword">template</span><<span class="keyword">typename</span> I>            <span class="comment">// Primary template</span>
+<a name="l00066"></a>00066 <span class="keyword">struct </span>atomic_base {
+<a name="l00067"></a>00067     I my_value;
+<a name="l00068"></a>00068 };
+<a name="l00069"></a>00069 
+<a name="l00070"></a>00070 <span class="preprocessor">#if __GNUC__ || __SUNPRO_CC</span>
+<a name="l00071"></a>00071 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_DECL_ATOMIC_FIELD(t,f,a) t f  __attribute__ ((aligned(a)));</span>
+<a name="l00072"></a>00072 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__INTEL_COMPILER)||_MSC_VER >= 1300</span>
+<a name="l00073"></a>00073 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_DECL_ATOMIC_FIELD(t,f,a) __declspec(align(a)) t f;</span>
+<a name="l00074"></a>00074 <span class="preprocessor"></span><span class="preprocessor">#else </span>
+<a name="l00075"></a>00075 <span class="preprocessor"></span><span class="preprocessor">#error Do not know syntax for forcing alignment.</span>
+<a name="l00076"></a>00076 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* __GNUC__ */</span>
+<a name="l00077"></a>00077 
+<a name="l00078"></a>00078 <span class="keyword">template</span><>
+<a name="l00079"></a>00079 <span class="keyword">struct </span>atomic_word<8> {          <span class="comment">// Specialization</span>
+<a name="l00080"></a>00080     <span class="keyword">typedef</span> int64_t word;
+<a name="l00081"></a>00081 };
+<a name="l00082"></a>00082 
+<a name="l00083"></a>00083 <span class="preprocessor">#if _WIN32 && __TBB_x86_64</span>
+<a name="l00084"></a>00084 <span class="preprocessor"></span><span class="comment">// ATTENTION: On 64-bit Windows, we currently have to specialize atomic_word</span>
+<a name="l00085"></a>00085 <span class="comment">// for every size to avoid type conversion warnings</span>
+<a name="l00086"></a>00086 <span class="comment">// See declarations of atomic primitives in machine/windows_em64t.h</span>
+<a name="l00087"></a>00087 <span class="keyword">template</span><>
+<a name="l00088"></a>00088 <span class="keyword">struct </span>atomic_word<1> {          <span class="comment">// Specialization</span>
+<a name="l00089"></a>00089     <span class="keyword">typedef</span> int8_t word;
+<a name="l00090"></a>00090 };
+<a name="l00091"></a>00091 <span class="keyword">template</span><>
+<a name="l00092"></a>00092 <span class="keyword">struct </span>atomic_word<2> {          <span class="comment">// Specialization</span>
+<a name="l00093"></a>00093     <span class="keyword">typedef</span> int16_t word;
+<a name="l00094"></a>00094 };
+<a name="l00095"></a>00095 <span class="keyword">template</span><>
+<a name="l00096"></a>00096 <span class="keyword">struct </span>atomic_word<4> {          <span class="comment">// Specialization</span>
+<a name="l00097"></a>00097     <span class="keyword">typedef</span> int32_t word;
+<a name="l00098"></a>00098 };
+<a name="l00099"></a>00099 <span class="preprocessor">#endif</span>
+<a name="l00100"></a>00100 <span class="preprocessor"></span>
+<a name="l00101"></a>00101 <span class="keyword">template</span><>
+<a name="l00102"></a>00102 <span class="keyword">struct </span>atomic_base<uint64_t> {   <span class="comment">// Specialization</span>
+<a name="l00103"></a>00103     __TBB_DECL_ATOMIC_FIELD(uint64_t,my_value,8)
+<a name="l00104"></a>00104 };
+<a name="l00105"></a>00105 
+<a name="l00106"></a>00106 <span class="keyword">template</span><>
+<a name="l00107"></a>00107 <span class="keyword">struct </span>atomic_base<int64_t> {    <span class="comment">// Specialization</span>
+<a name="l00108"></a>00108     __TBB_DECL_ATOMIC_FIELD(int64_t,my_value,8)
+<a name="l00109"></a>00109 };
+<a name="l00110"></a>00110 
+<a name="l00111"></a>00111 <span class="preprocessor">#define __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(S,M)                         \</span>
+<a name="l00112"></a>00112 <span class="preprocessor">    template<> struct atomic_traits<S,M> {                               \</span>
+<a name="l00113"></a>00113 <span class="preprocessor">        typedef atomic_word<S>::word word;                               \</span>
+<a name="l00114"></a>00114 <span class="preprocessor">        inline static word compare_and_swap( volatile void* location, word new_value, word comparand ) {\</span>
+<a name="l00115"></a>00115 <span class="preprocessor">            return __TBB_CompareAndSwap##S##M(location,new_value,comparand);    \</span>
+<a name="l00116"></a>00116 <span class="preprocessor">        }                                                                       \</span>
+<a name="l00117"></a>00117 <span class="preprocessor">        inline static word fetch_and_add( volatile void* location, word addend ) { \</span>
+<a name="l00118"></a>00118 <span class="preprocessor">            return __TBB_FetchAndAdd##S##M(location,addend);                    \</span>
+<a name="l00119"></a>00119 <span class="preprocessor">        }                                                                       \</span>
+<a name="l00120"></a>00120 <span class="preprocessor">        inline static word fetch_and_store( volatile void* location, word value ) {\</span>
+<a name="l00121"></a>00121 <span class="preprocessor">            return __TBB_FetchAndStore##S##M(location,value);                   \</span>
+<a name="l00122"></a>00122 <span class="preprocessor">        }                                                                       \</span>
+<a name="l00123"></a>00123 <span class="preprocessor">    };</span>
+<a name="l00124"></a>00124 <span class="preprocessor"></span>
+<a name="l00125"></a>00125 <span class="preprocessor">#define __TBB_DECL_ATOMIC_PRIMITIVES(S)                                  \</span>
+<a name="l00126"></a>00126 <span class="preprocessor">    template<memory_semantics M>                                         \</span>
+<a name="l00127"></a>00127 <span class="preprocessor">    struct atomic_traits<S,M> {                                          \</span>
+<a name="l00128"></a>00128 <span class="preprocessor">        typedef atomic_word<S>::word word;                               \</span>
+<a name="l00129"></a>00129 <span class="preprocessor">        inline static word compare_and_swap( volatile void* location, word new_value, word comparand ) {\</span>
+<a name="l00130"></a>00130 <span class="preprocessor">            return __TBB_CompareAndSwap##S(location,new_value,comparand);       \</span>
+<a name="l00131"></a>00131 <span class="preprocessor">        }                                                                       \</span>
+<a name="l00132"></a>00132 <span class="preprocessor">        inline static word fetch_and_add( volatile void* location, word addend ) { \</span>
+<a name="l00133"></a>00133 <span class="preprocessor">            return __TBB_FetchAndAdd##S(location,addend);                       \</span>
+<a name="l00134"></a>00134 <span class="preprocessor">        }                                                                       \</span>
+<a name="l00135"></a>00135 <span class="preprocessor">        inline static word fetch_and_store( volatile void* location, word value ) {\</span>
+<a name="l00136"></a>00136 <span class="preprocessor">            return __TBB_FetchAndStore##S(location,value);                      \</span>
+<a name="l00137"></a>00137 <span class="preprocessor">        }                                                                       \</span>
+<a name="l00138"></a>00138 <span class="preprocessor">    };</span>
+<a name="l00139"></a>00139 <span class="preprocessor"></span>
+<a name="l00140"></a>00140 <span class="preprocessor">#if __TBB_DECL_FENCED_ATOMICS</span>
+<a name="l00141"></a>00141 <span class="preprocessor"></span>__TBB_DECL_FENCED_ATOMIC_PRIMITIVES(1,<a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fefc6db01678b1749dff7554688d079520c">__TBB_full_fence</a>)
+<a name="l00142"></a>00142 __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(2,<a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fefc6db01678b1749dff7554688d079520c">__TBB_full_fence</a>)
+<a name="l00143"></a>00143 __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(4,<a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fefc6db01678b1749dff7554688d079520c">__TBB_full_fence</a>)
+<a name="l00144"></a>00144 __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(8,<a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fefc6db01678b1749dff7554688d079520c">__TBB_full_fence</a>)
+<a name="l00145"></a>00145 __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(1,<a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fef5f1fafe8d229d348ff91d937f64e79c7">acquire</a>)
+<a name="l00146"></a>00146 __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(2,<a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fef5f1fafe8d229d348ff91d937f64e79c7">acquire</a>)
+<a name="l00147"></a>00147 __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(4,<a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fef5f1fafe8d229d348ff91d937f64e79c7">acquire</a>)
+<a name="l00148"></a>00148 __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(8,<a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fef5f1fafe8d229d348ff91d937f64e79c7">acquire</a>)
+<a name="l00149"></a>00149 __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(1,<a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fefaa1fa107db0245c41fb109d976ae8d70">release</a>)
+<a name="l00150"></a>00150 __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(2,<a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fefaa1fa107db0245c41fb109d976ae8d70">release</a>)
+<a name="l00151"></a>00151 __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(4,<a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fefaa1fa107db0245c41fb109d976ae8d70">release</a>)
+<a name="l00152"></a>00152 __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(8,<a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fefaa1fa107db0245c41fb109d976ae8d70">release</a>)
+<a name="l00153"></a>00153 <span class="preprocessor">#else</span>
+<a name="l00154"></a>00154 <span class="preprocessor"></span>__TBB_DECL_ATOMIC_PRIMITIVES(1)
+<a name="l00155"></a>00155 __TBB_DECL_ATOMIC_PRIMITIVES(2)
+<a name="l00156"></a>00156 __TBB_DECL_ATOMIC_PRIMITIVES(4)
+<a name="l00157"></a>00157 __TBB_DECL_ATOMIC_PRIMITIVES(8)
+<a name="l00158"></a>00158 <span class="preprocessor">#endif</span>
+<a name="l00159"></a>00159 <span class="preprocessor"></span>
+<a name="l00161"></a>00161 
+<a name="l00163"></a>00163 <span class="preprocessor">#define __TBB_MINUS_ONE(T) (T(T(0)-T(1)))</span>
+<a name="l00164"></a>00164 <span class="preprocessor"></span>
+<a name="l00166"></a>00166 
+<a name="l00169"></a>00169 <span class="keyword">template</span><<span class="keyword">typename</span> I, <span class="keyword">typename</span> D, <span class="keyword">typename</span> StepType>
+<a name="l00170"></a>00170 <span class="keyword">struct </span>atomic_impl: <span class="keyword">private</span> atomic_base<I> {
+<a name="l00171"></a>00171 <span class="keyword">private</span>:
+<a name="l00172"></a>00172     <span class="keyword">typedef</span> <span class="keyword">typename</span> atomic_word<sizeof(I)>::word word;
+<a name="l00173"></a>00173 <span class="keyword">public</span>:
+<a name="l00174"></a>00174     <span class="keyword">typedef</span> I value_type;
+<a name="l00175"></a>00175 
+<a name="l00176"></a>00176     <span class="keyword">template</span><memory_semantics M>
+<a name="l00177"></a>00177     value_type fetch_and_add( D addend ) {
+<a name="l00178"></a>00178         <span class="keywordflow">return</span> value_type(internal::atomic_traits<<span class="keyword">sizeof</span>(value_type),M>::fetch_and_add( &this->my_value, addend*<span class="keyword">sizeof</span>(StepType) ));
+<a name="l00179"></a>00179     }
+<a name="l00180"></a>00180 
+<a name="l00181"></a>00181     value_type fetch_and_add( D addend ) {
+<a name="l00182"></a>00182         <span class="keywordflow">return</span> fetch_and_add<__TBB_full_fence>(addend);
+<a name="l00183"></a>00183     }
+<a name="l00184"></a>00184 
+<a name="l00185"></a>00185     <span class="keyword">template</span><memory_semantics M>
+<a name="l00186"></a>00186     value_type fetch_and_increment() {
+<a name="l00187"></a>00187         <span class="keywordflow">return</span> fetch_and_add<M>(1);
+<a name="l00188"></a>00188     }
+<a name="l00189"></a>00189 
+<a name="l00190"></a>00190     value_type fetch_and_increment() {
+<a name="l00191"></a>00191         <span class="keywordflow">return</span> fetch_and_add(1);
+<a name="l00192"></a>00192     }
+<a name="l00193"></a>00193 
+<a name="l00194"></a>00194     <span class="keyword">template</span><memory_semantics M>
+<a name="l00195"></a>00195     value_type fetch_and_decrement() {
+<a name="l00196"></a>00196         <span class="keywordflow">return</span> fetch_and_add<M>(__TBB_MINUS_ONE(D));
+<a name="l00197"></a>00197     }
+<a name="l00198"></a>00198 
+<a name="l00199"></a>00199     value_type fetch_and_decrement() {
+<a name="l00200"></a>00200         <span class="keywordflow">return</span> fetch_and_add(__TBB_MINUS_ONE(D));
+<a name="l00201"></a>00201     }
+<a name="l00202"></a>00202 
+<a name="l00203"></a>00203     <span class="keyword">template</span><memory_semantics M>
+<a name="l00204"></a>00204     value_type fetch_and_store( value_type value ) {
+<a name="l00205"></a>00205         <span class="keywordflow">return</span> value_type(internal::atomic_traits<<span class="keyword">sizeof</span>(value_type),M>::fetch_and_store(&this->my_value,word(value)));
+<a name="l00206"></a>00206     }
+<a name="l00207"></a>00207 
+<a name="l00208"></a>00208     value_type fetch_and_store( value_type value ) {
+<a name="l00209"></a>00209         <span class="keywordflow">return</span> fetch_and_store<__TBB_full_fence>(value);
+<a name="l00210"></a>00210     }
+<a name="l00211"></a>00211 
+<a name="l00212"></a>00212     <span class="keyword">template</span><memory_semantics M>
+<a name="l00213"></a>00213     value_type compare_and_swap( value_type value, value_type comparand ) {
+<a name="l00214"></a>00214         <span class="keywordflow">return</span> value_type(internal::atomic_traits<<span class="keyword">sizeof</span>(value_type),M>::compare_and_swap(&this->my_value,word(value),word(comparand)));
+<a name="l00215"></a>00215     }
+<a name="l00216"></a>00216 
+<a name="l00217"></a>00217     value_type compare_and_swap( value_type value, value_type comparand ) {
+<a name="l00218"></a>00218         <span class="keywordflow">return</span> compare_and_swap<__TBB_full_fence>(value,comparand);
+<a name="l00219"></a>00219     }
+<a name="l00220"></a>00220 
+<a name="l00221"></a>00221     operator value_type()<span class="keyword"> const volatile </span>{                <span class="comment">// volatile qualifier here for backwards compatibility </span>
+<a name="l00222"></a>00222         <span class="keywordflow">return</span> __TBB_load_with_acquire( this->my_value );
+<a name="l00223"></a>00223     }
+<a name="l00224"></a>00224 
+<a name="l00225"></a>00225 <span class="keyword">protected</span>:
+<a name="l00226"></a>00226     value_type store_with_release( value_type rhs ) {
+<a name="l00227"></a>00227         __TBB_store_with_release(this->my_value,rhs);
+<a name="l00228"></a>00228         <span class="keywordflow">return</span> rhs;
+<a name="l00229"></a>00229     }
+<a name="l00230"></a>00230 
+<a name="l00231"></a>00231 <span class="keyword">public</span>:
+<a name="l00232"></a>00232     value_type operator+=( D addend ) {
+<a name="l00233"></a>00233         <span class="keywordflow">return</span> fetch_and_add(addend)+addend;
+<a name="l00234"></a>00234     }
+<a name="l00235"></a>00235 
+<a name="l00236"></a>00236     value_type operator-=( D addend ) {
+<a name="l00237"></a>00237         <span class="comment">// Additive inverse of addend computed using binary minus,</span>
+<a name="l00238"></a>00238         <span class="comment">// instead of unary minus, for sake of avoiding compiler warnings.</span>
+<a name="l00239"></a>00239         <span class="keywordflow">return</span> operator+=(D(0)-addend);    
+<a name="l00240"></a>00240     }
+<a name="l00241"></a>00241 
+<a name="l00242"></a>00242     value_type operator++() {
+<a name="l00243"></a>00243         <span class="keywordflow">return</span> fetch_and_add(1)+1;
+<a name="l00244"></a>00244     }
+<a name="l00245"></a>00245 
+<a name="l00246"></a>00246     value_type operator--() {
+<a name="l00247"></a>00247         <span class="keywordflow">return</span> fetch_and_add(__TBB_MINUS_ONE(D))-1;
+<a name="l00248"></a>00248     }
+<a name="l00249"></a>00249 
+<a name="l00250"></a>00250     value_type operator++(<span class="keywordtype">int</span>) {
+<a name="l00251"></a>00251         <span class="keywordflow">return</span> fetch_and_add(1);
+<a name="l00252"></a>00252     }
+<a name="l00253"></a>00253 
+<a name="l00254"></a>00254     value_type operator--(<span class="keywordtype">int</span>) {
+<a name="l00255"></a>00255         <span class="keywordflow">return</span> fetch_and_add(__TBB_MINUS_ONE(D));
+<a name="l00256"></a>00256     }
+<a name="l00257"></a>00257 };
+<a name="l00258"></a>00258 
+<a name="l00259"></a>00259 <span class="preprocessor">#if __TBB_WORDSIZE == 4</span>
+<a name="l00260"></a>00260 <span class="preprocessor"></span><span class="comment">// Plaforms with 32-bit hardware require special effort for 64-bit loads and stores.</span>
+<a name="l00261"></a>00261 <span class="preprocessor">#if defined(__INTEL_COMPILER)||!defined(_MSC_VER)||_MSC_VER>=1400</span>
+<a name="l00262"></a>00262 <span class="preprocessor"></span>
+<a name="l00263"></a>00263 <span class="keyword">template</span><>
+<a name="l00264"></a>00264 <span class="keyword">inline</span> atomic_impl<__TBB_LONG_LONG,__TBB_LONG_LONG,char>::operator atomic_impl<__TBB_LONG_LONG,__TBB_LONG_LONG,char>::value_type()<span class="keyword"> const volatile </span>{
+<a name="l00265"></a>00265     <span class="keywordflow">return</span> __TBB_Load8(&this->my_value);
+<a name="l00266"></a>00266 }
+<a name="l00267"></a>00267 
+<a name="l00268"></a>00268 <span class="keyword">template</span><>
+<a name="l00269"></a>00269 <span class="keyword">inline</span> atomic_impl<unsigned __TBB_LONG_LONG,unsigned __TBB_LONG_LONG,char>::operator atomic_impl<unsigned __TBB_LONG_LONG,unsigned __TBB_LONG_LONG,char>::value_type()<span class="keyword"> const volatile </span>{
+<a name="l00270"></a>00270     <span class="keywordflow">return</span> __TBB_Load8(&this->my_value);
+<a name="l00271"></a>00271 }
+<a name="l00272"></a>00272 
+<a name="l00273"></a>00273 <span class="keyword">template</span><>
+<a name="l00274"></a>00274 <span class="keyword">inline</span> atomic_impl<__TBB_LONG_LONG,__TBB_LONG_LONG,char>::value_type atomic_impl<__TBB_LONG_LONG,__TBB_LONG_LONG,char>::store_with_release( value_type rhs ) {
+<a name="l00275"></a>00275     __TBB_Store8(&this->my_value,rhs);
+<a name="l00276"></a>00276     <span class="keywordflow">return</span> rhs;
+<a name="l00277"></a>00277 }
+<a name="l00278"></a>00278 
+<a name="l00279"></a>00279 <span class="keyword">template</span><>
+<a name="l00280"></a>00280 <span class="keyword">inline</span> atomic_impl<unsigned __TBB_LONG_LONG,unsigned __TBB_LONG_LONG,char>::value_type atomic_impl<unsigned __TBB_LONG_LONG,unsigned __TBB_LONG_LONG,char>::store_with_release( value_type rhs ) {
+<a name="l00281"></a>00281     __TBB_Store8(&this->my_value,rhs);
+<a name="l00282"></a>00282     <span class="keywordflow">return</span> rhs;
+<a name="l00283"></a>00283 }
+<a name="l00284"></a>00284 
+<a name="l00285"></a>00285 <span class="preprocessor">#endif </span><span class="comment">/* defined(__INTEL_COMPILER)||!defined(_MSC_VER)||_MSC_VER>=1400 */</span>
+<a name="l00286"></a>00286 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_WORDSIZE==4 */</span>
+<a name="l00287"></a>00287 
+<a name="l00288"></a>00288 } <span class="comment">/* Internal */</span>
+<a name="l00290"></a>00290 
+<a name="l00292"></a>00292 
+<a name="l00294"></a>00294 <span class="keyword">template</span><<span class="keyword">typename</span> T>
+<a name="l00295"></a><a class="code" href="a00093.html">00295</a> <span class="keyword">struct </span><a class="code" href="a00093.html">atomic</a> {
+<a name="l00296"></a>00296 };
+<a name="l00297"></a>00297 
+<a name="l00298"></a>00298 <span class="preprocessor">#define __TBB_DECL_ATOMIC(T) \</span>
+<a name="l00299"></a>00299 <span class="preprocessor">    template<> struct atomic<T>: internal::atomic_impl<T,T,char> {  \</span>
+<a name="l00300"></a>00300 <span class="preprocessor">        T operator=( T rhs ) {return store_with_release(rhs);}  \</span>
+<a name="l00301"></a>00301 <span class="preprocessor">        atomic<T>& operator=( const atomic<T>& rhs ) {store_with_release(rhs); return *this;}  \</span>
+<a name="l00302"></a>00302 <span class="preprocessor">    };</span>
+<a name="l00303"></a>00303 <span class="preprocessor"></span>
+<a name="l00304"></a>00304 <span class="preprocessor">#if defined(__INTEL_COMPILER)||!defined(_MSC_VER)||_MSC_VER>=1400</span>
+<a name="l00305"></a>00305 <span class="preprocessor"></span>__TBB_DECL_ATOMIC(__TBB_LONG_LONG)
+<a name="l00306"></a>00306 __TBB_DECL_ATOMIC(<span class="keywordtype">unsigned</span> __TBB_LONG_LONG)
+<a name="l00307"></a>00307 <span class="preprocessor">#else</span>
+<a name="l00308"></a>00308 <span class="preprocessor"></span><span class="comment">// Some old versions of MVSC cannot correctly compile templates with "long long".</span>
+<a name="l00309"></a>00309 <span class="preprocessor">#endif </span><span class="comment">/* defined(__INTEL_COMPILER)||!defined(_MSC_VER)||_MSC_VER>=1400 */</span>
+<a name="l00310"></a>00310 
+<a name="l00311"></a>00311 __TBB_DECL_ATOMIC(<span class="keywordtype">long</span>)
+<a name="l00312"></a>00312 __TBB_DECL_ATOMIC(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)
+<a name="l00313"></a>00313 
+<a name="l00314"></a>00314 <span class="preprocessor">#if defined(_MSC_VER) && __TBB_WORDSIZE==4</span>
+<a name="l00315"></a>00315 <span class="preprocessor"></span><span class="comment">/* Special version of __TBB_DECL_ATOMIC that avoids gratuitous warnings from cl /Wp64 option. </span>
+<a name="l00316"></a>00316 <span class="comment">   It is identical to __TBB_DECL_ATOMIC(unsigned) except that it replaces operator=(T) </span>
+<a name="l00317"></a>00317 <span class="comment">   with an operator=(U) that explicitly converts the U to a T.  Types T and U should be</span>
+<a name="l00318"></a>00318 <span class="comment">   type synonyms on the platform.  Type U should be the wider variant of T from the</span>
+<a name="l00319"></a>00319 <span class="comment">   perspective of /Wp64. */</span>
+<a name="l00320"></a>00320 <span class="preprocessor">#define __TBB_DECL_ATOMIC_ALT(T,U) \</span>
+<a name="l00321"></a>00321 <span class="preprocessor">    template<> struct atomic<T>: internal::atomic_impl<T,T,char> {  \</span>
+<a name="l00322"></a>00322 <span class="preprocessor">        T operator=( U rhs ) {return store_with_release(T(rhs));}  \</span>
+<a name="l00323"></a>00323 <span class="preprocessor">        atomic<T>& operator=( const atomic<T>& rhs ) {store_with_release(rhs); return *this;}  \</span>
+<a name="l00324"></a>00324 <span class="preprocessor">    };</span>
+<a name="l00325"></a>00325 <span class="preprocessor"></span>__TBB_DECL_ATOMIC_ALT(<span class="keywordtype">unsigned</span>,size_t)
+<a name="l00326"></a>00326 __TBB_DECL_ATOMIC_ALT(<span class="keywordtype">int</span>,ptrdiff_t)
+<a name="l00327"></a>00327 <span class="preprocessor">#else</span>
+<a name="l00328"></a>00328 <span class="preprocessor"></span>__TBB_DECL_ATOMIC(<span class="keywordtype">unsigned</span>)
+<a name="l00329"></a>00329 __TBB_DECL_ATOMIC(<span class="keywordtype">int</span>)
+<a name="l00330"></a>00330 <span class="preprocessor">#endif </span><span class="comment">/* defined(_MSC_VER) && __TBB_WORDSIZE==4 */</span>
+<a name="l00331"></a>00331 
+<a name="l00332"></a>00332 __TBB_DECL_ATOMIC(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span>)
+<a name="l00333"></a>00333 __TBB_DECL_ATOMIC(<span class="keywordtype">short</span>)
+<a name="l00334"></a>00334 __TBB_DECL_ATOMIC(<span class="keywordtype">char</span>)
+<a name="l00335"></a>00335 __TBB_DECL_ATOMIC(<span class="keywordtype">signed</span> <span class="keywordtype">char</span>)
+<a name="l00336"></a>00336 __TBB_DECL_ATOMIC(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)
+<a name="l00337"></a>00337 
+<a name="l00338"></a>00338 <span class="preprocessor">#if !defined(_MSC_VER)||defined(_NATIVE_WCHAR_T_DEFINED) </span>
+<a name="l00339"></a>00339 <span class="preprocessor"></span>__TBB_DECL_ATOMIC(<span class="keywordtype">wchar_t</span>)
+<a name="l00340"></a>00340 <span class="preprocessor">#endif </span><span class="comment">/* _MSC_VER||!defined(_NATIVE_WCHAR_T_DEFINED) */</span>
+<a name="l00341"></a>00341 
+<a name="l00342"></a>00342 <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">struct </span><a class="code" href="a00093.html">atomic</a><T*>: internal::atomic_impl<T*,ptrdiff_t,T> {
+<a name="l00343"></a>00343     T* operator=( T* rhs ) {
+<a name="l00344"></a>00344         <span class="comment">// "this" required here in strict ISO C++ because store_with_release is a dependent name</span>
+<a name="l00345"></a>00345         <span class="keywordflow">return</span> this->store_with_release(rhs);
+<a name="l00346"></a>00346     }
+<a name="l00347"></a>00347     atomic<T*>& operator=( <span class="keyword">const</span> atomic<T*>& rhs ) {this->store_with_release(rhs); <span class="keywordflow">return</span> *<span class="keyword">this</span>;}
+<a name="l00348"></a>00348     T* operator->()<span class="keyword"> const </span>{
+<a name="l00349"></a>00349         <span class="keywordflow">return</span> (*<span class="keyword">this</span>);
+<a name="l00350"></a>00350     }
+<a name="l00351"></a>00351 };
+<a name="l00352"></a>00352 
+<a name="l00353"></a>00353 <span class="keyword">template</span><>
+<a name="l00354"></a>00354 <span class="keyword">struct </span>atomic<void*> {
+<a name="l00355"></a>00355 <span class="keyword">private</span>:
+<a name="l00356"></a>00356     <span class="keywordtype">void</span>* my_value;
+<a name="l00357"></a>00357 
+<a name="l00358"></a>00358 <span class="keyword">public</span>:
+<a name="l00359"></a>00359     <span class="keyword">typedef</span> <span class="keywordtype">void</span>* value_type;
+<a name="l00360"></a>00360 
+<a name="l00361"></a>00361     <span class="keyword">template</span><memory_semantics M>
+<a name="l00362"></a>00362     value_type compare_and_swap( value_type value, value_type comparand ) {
+<a name="l00363"></a>00363         <span class="keywordflow">return</span> value_type(internal::atomic_traits<<span class="keyword">sizeof</span>(value_type),M>::compare_and_swap(&my_value,internal::intptr(value),internal::intptr(comparand)));
+<a name="l00364"></a>00364     }
+<a name="l00365"></a>00365 
+<a name="l00366"></a>00366     value_type compare_and_swap( value_type value, value_type comparand ) {
+<a name="l00367"></a>00367         <span class="keywordflow">return</span> compare_and_swap<__TBB_full_fence>(value,comparand);
+<a name="l00368"></a>00368     }
+<a name="l00369"></a>00369 
+<a name="l00370"></a>00370     <span class="keyword">template</span><memory_semantics M>
+<a name="l00371"></a>00371     value_type fetch_and_store( value_type value ) {
+<a name="l00372"></a>00372         <span class="keywordflow">return</span> value_type(internal::atomic_traits<<span class="keyword">sizeof</span>(value_type),M>::fetch_and_store(&my_value,internal::intptr(value)));
+<a name="l00373"></a>00373     }
+<a name="l00374"></a>00374 
+<a name="l00375"></a>00375     value_type fetch_and_store( value_type value ) {
+<a name="l00376"></a>00376         <span class="keywordflow">return</span> fetch_and_store<__TBB_full_fence>(value);
+<a name="l00377"></a>00377     }
+<a name="l00378"></a>00378 
+<a name="l00379"></a>00379     operator value_type()<span class="keyword"> const </span>{
+<a name="l00380"></a>00380         <span class="keywordflow">return</span> __TBB_load_with_acquire(my_value);
+<a name="l00381"></a>00381     }
+<a name="l00382"></a>00382 
+<a name="l00383"></a>00383     value_type operator=( value_type rhs ) {
+<a name="l00384"></a>00384         __TBB_store_with_release(my_value,rhs);
+<a name="l00385"></a>00385         <span class="keywordflow">return</span> rhs;
+<a name="l00386"></a>00386     }
+<a name="l00387"></a>00387 
+<a name="l00388"></a>00388     atomic<void*>& operator=( <span class="keyword">const</span> atomic<void*>& rhs ) {
+<a name="l00389"></a>00389         __TBB_store_with_release(my_value,rhs);
+<a name="l00390"></a>00390         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00391"></a>00391     }
+<a name="l00392"></a>00392 };
+<a name="l00393"></a>00393 
+<a name="l00394"></a>00394 <span class="keyword">template</span><>
+<a name="l00395"></a>00395 <span class="keyword">struct </span>atomic<bool> {
+<a name="l00396"></a>00396 <span class="keyword">private</span>:
+<a name="l00397"></a>00397     <span class="keywordtype">bool</span> my_value;
+<a name="l00398"></a>00398     <span class="keyword">typedef</span> internal::atomic_word<sizeof(bool)>::word word;
+<a name="l00399"></a>00399 <span class="keyword">public</span>:
+<a name="l00400"></a>00400     <span class="keyword">typedef</span> <span class="keywordtype">bool</span> value_type;
+<a name="l00401"></a>00401     <span class="keyword">template</span><memory_semantics M>
+<a name="l00402"></a>00402     value_type compare_and_swap( value_type value, value_type comparand ) {
+<a name="l00403"></a>00403         <span class="keywordflow">return</span> internal::atomic_traits<sizeof(value_type),M>::compare_and_swap(&my_value,word(value),word(comparand))!=0;
+<a name="l00404"></a>00404     }
+<a name="l00405"></a>00405 
+<a name="l00406"></a>00406     value_type compare_and_swap( value_type value, value_type comparand ) {
+<a name="l00407"></a>00407         <span class="keywordflow">return</span> compare_and_swap<__TBB_full_fence>(value,comparand);
+<a name="l00408"></a>00408     }
+<a name="l00409"></a>00409 
+<a name="l00410"></a>00410     <span class="keyword">template</span><memory_semantics M>
+<a name="l00411"></a>00411     value_type fetch_and_store( value_type value ) {
+<a name="l00412"></a>00412         <span class="keywordflow">return</span> internal::atomic_traits<sizeof(value_type),M>::fetch_and_store(&my_value,word(value))!=0;
+<a name="l00413"></a>00413     }
+<a name="l00414"></a>00414 
+<a name="l00415"></a>00415     value_type fetch_and_store( value_type value ) {
+<a name="l00416"></a>00416         <span class="keywordflow">return</span> fetch_and_store<__TBB_full_fence>(value);
+<a name="l00417"></a>00417     }
+<a name="l00418"></a>00418 
+<a name="l00419"></a>00419     operator value_type()<span class="keyword"> const </span>{
+<a name="l00420"></a>00420         <span class="keywordflow">return</span> __TBB_load_with_acquire(my_value);
+<a name="l00421"></a>00421     }
+<a name="l00422"></a>00422 
+<a name="l00423"></a>00423     value_type operator=( value_type rhs ) {
+<a name="l00424"></a>00424         __TBB_store_with_release(my_value,rhs);
+<a name="l00425"></a>00425         <span class="keywordflow">return</span> rhs;
+<a name="l00426"></a>00426     }
+<a name="l00427"></a>00427 
+<a name="l00428"></a>00428     atomic<bool>& operator=( <span class="keyword">const</span> atomic<bool>& rhs ) {
+<a name="l00429"></a>00429         __TBB_store_with_release(my_value,rhs);
+<a name="l00430"></a>00430         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00431"></a>00431     }
+<a name="l00432"></a>00432 };
+<a name="l00433"></a>00433 
+<a name="l00434"></a>00434 } <span class="comment">// namespace tbb</span>
+<a name="l00435"></a>00435 
+<a name="l00436"></a>00436 <span class="preprocessor">#if defined(_MSC_VER) && !defined(__INTEL_COMPILER)</span>
+<a name="l00437"></a>00437 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (pop)</span>
+<a name="l00438"></a>00438 <span class="preprocessor"></span><span class="preprocessor">#endif // warnings 4244, 4267 are back</span>
+<a name="l00439"></a>00439 <span class="preprocessor"></span>
+<a name="l00440"></a>00440 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_atomic_H */</span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00194.html b/doc/html/a00194.html
deleted file mode 100644
index f1241e9..0000000
--- a/doc/html/a00194.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::bad_last_alloc Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::bad_last_alloc Class Reference</h1>Exception for concurrent containers.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00353.html">tbb_exception.h</a>></code>
-<p>
-<a href="a00131.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::bad_last_alloc::what"></a>
-virtual const char * </td><td class="memItemRight" valign="bottom"><b>what</b> () const   throw ()</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Exception for concurrent containers. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00353.html">tbb_exception.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00195.html b/doc/html/a00195.html
deleted file mode 100644
index 54f1e0e..0000000
--- a/doc/html/a00195.html
+++ /dev/null
@@ -1,257 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::blocked_range< Value > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::blocked_range< Value > Class Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>A range over which to iterate.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00325.html">blocked_range.h</a>></code>
-<p>
-<a href="a00015.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef Value </td><td class="memItemRight" valign="bottom"><a class="el" href="a00195.html#w0">const_iterator</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Type of a value.  <a href="#w0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w1" doxytag="tbb::blocked_range::size_type"></a>
-typedef std::size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00195.html#w1">size_type</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Type for size of a range. <br></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00195.html#a0">blocked_range</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct range with default-constructed values for begin and end.  <a href="#a0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::blocked_range::blocked_range"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00195.html#a1">blocked_range</a> (Value begin_, Value end_, <a class="el" href="a00195.html#w1">size_type</a> grainsize_=1)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct range over half-open interval [begin,end), with the given grainsize. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::blocked_range::begin"></a>
-<a class="el" href="a00195.html#w0">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00195.html#a2">begin</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Beginning of range. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::blocked_range::end"></a>
-<a class="el" href="a00195.html#w0">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00195.html#a3">end</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">One past last value in range. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00195.html#w1">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00195.html#a4">size</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Size of the range.  <a href="#a4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::blocked_range::grainsize"></a>
-<a class="el" href="a00195.html#w1">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00195.html#a5">grainsize</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The grain size for this range. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a6" doxytag="tbb::blocked_range::empty"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00195.html#a6">empty</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">True if range is empty. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00195.html#a7">is_divisible</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">True if range is divisible.  <a href="#a7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00195.html#a8">blocked_range</a> (<a class="el" href="a00195.html">blocked_range</a> &r, <a class="el" href="a00254.html">split</a>)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Split range.  <a href="#a8"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::blocked_range::blocked_range2d"></a>
-class </td><td class="memItemRight" valign="bottom"><b>blocked_range2d</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n1" doxytag="tbb::blocked_range::blocked_range3d"></a>
-class </td><td class="memItemRight" valign="bottom"><b>blocked_range3d</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Value><br>
- class tbb::blocked_range< Value ></h3>
-
-A range over which to iterate. 
-<p>
-<hr><h2>Member Typedef Documentation</h2>
-<a class="anchor" name="w0" doxytag="tbb::blocked_range::const_iterator"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename Value> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">typedef Value <a class="el" href="a00195.html">tbb::blocked_range</a>< Value >::<a class="el" href="a00195.html#w0">const_iterator</a>          </td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Type of a value. 
-<p>
-Called a const_iterator for sake of algorithms that need to treat a <a class="el" href="a00195.html">blocked_range</a> as an STL container.     </td>
-  </tr>
-</table>
-<hr><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" name="a0" doxytag="tbb::blocked_range::blocked_range"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename Value> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top"><a class="el" href="a00195.html">tbb::blocked_range</a>< Value >::<a class="el" href="a00195.html">blocked_range</a>           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Construct range with default-constructed values for begin and end. 
-<p>
-Requires that Value have a default constructor.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a8" doxytag="tbb::blocked_range::blocked_range"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename Value> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top"><a class="el" href="a00195.html">tbb::blocked_range</a>< Value >::<a class="el" href="a00195.html">blocked_range</a>           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top"><a class="el" href="a00195.html">blocked_range</a>< Value > & </td>
-          <td class="mdname" nowrap> <em>r</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap><a class="el" href="a00254.html">split</a> </td>
-          <td class="mdname" nowrap></td>
-        </tr>
-        <tr>
-          <td class="md"></td>
-          <td class="md">) </td>
-          <td class="md" colspan="2"><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Split range. 
-<p>
-The new Range *this has the second half, the old range r has the first half. Unspecified if <a class="el" href="a00195.html#a3">end()</a><<a class="el" href="a00195.html#a2">begin()</a> or !is_divisible().     </td>
-  </tr>
-</table>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="a7" doxytag="tbb::blocked_range::is_divisible"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename Value> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">bool <a class="el" href="a00195.html">tbb::blocked_range</a>< Value >::is_divisible           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap> const<code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-True if range is divisible. 
-<p>
-Unspecified if <a class="el" href="a00195.html#a3">end()</a><<a class="el" href="a00195.html#a2">begin()</a>.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a4" doxytag="tbb::blocked_range::size"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename Value> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top"><a class="el" href="a00195.html#w1">size_type</a> <a class="el" href="a00195.html">tbb::blocked_range</a>< Value >::size           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap> const<code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Size of the range. 
-<p>
-Unspecified if <a class="el" href="a00195.html#a3">end()</a><<a class="el" href="a00195.html#a2">begin()</a>.     </td>
-  </tr>
-</table>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00325.html">blocked_range.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00196.html b/doc/html/a00196.html
deleted file mode 100644
index e943fa2..0000000
--- a/doc/html/a00196.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::blocked_range2d< RowValue, ColValue > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::blocked_range2d< RowValue, ColValue > Class Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>A 2-dimensional range that models the Range concept.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00326.html">blocked_range2d.h</a>></code>
-<p>
-<a href="a00016.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w0" doxytag="tbb::blocked_range2d::row_range_type"></a>
-typedef <a class="el" href="a00195.html">blocked_range</a>< RowValue > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00196.html#w0">row_range_type</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Type for size of an iteation range. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w1" doxytag="tbb::blocked_range2d::col_range_type"></a>
-typedef <a class="el" href="a00195.html">blocked_range</a>< ColValue > </td><td class="memItemRight" valign="bottom"><b>col_range_type</b></td></tr>
-
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::blocked_range2d::blocked_range2d"></a>
- </td><td class="memItemRight" valign="bottom"><b>blocked_range2d</b> (RowValue row_begin, RowValue row_end, typename <a class="el" href="a00195.html#w1">row_range_type::size_type</a> row_grainsize, ColValue col_begin, ColValue col_end, typename <a class="el" href="a00195.html#w1">col_range_type::size_type</a> col_grainsize)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::blocked_range2d::blocked_range2d"></a>
- </td><td class="memItemRight" valign="bottom"><b>blocked_range2d</b> (RowValue row_begin, RowValue row_end, ColValue col_begin, ColValue col_end)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::blocked_range2d::empty"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00196.html#a2">empty</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">True if range is empty. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::blocked_range2d::is_divisible"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00196.html#a3">is_divisible</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">True if range is divisible into two pieces. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::blocked_range2d::blocked_range2d"></a>
- </td><td class="memItemRight" valign="bottom"><b>blocked_range2d</b> (<a class="el" href="a00196.html">blocked_range2d</a> &r, <a class="el" href="a00254.html">split</a>)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::blocked_range2d::rows"></a>
-const <a class="el" href="a00195.html">row_range_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00196.html#a5">rows</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The rows of the iteration space. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a6" doxytag="tbb::blocked_range2d::cols"></a>
-const <a class="el" href="a00195.html">col_range_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00196.html#a6">cols</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The columns of the iteration space. <br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename RowValue, typename ColValue = RowValue><br>
- class tbb::blocked_range2d< RowValue, ColValue ></h3>
-
-A 2-dimensional range that models the Range concept. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00326.html">blocked_range2d.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00197.html b/doc/html/a00197.html
deleted file mode 100644
index d906eed..0000000
--- a/doc/html/a00197.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::blocked_range3d< PageValue, RowValue, ColValue > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::blocked_range3d< PageValue, RowValue, ColValue > Class Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>A 3-dimensional range that models the Range concept.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00327.html">blocked_range3d.h</a>></code>
-<p>
-<a href="a00017.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w0" doxytag="tbb::blocked_range3d::page_range_type"></a>
-typedef <a class="el" href="a00195.html">blocked_range</a>< PageValue > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00197.html#w0">page_range_type</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Type for size of an iteation range. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w1" doxytag="tbb::blocked_range3d::row_range_type"></a>
-typedef <a class="el" href="a00195.html">blocked_range</a>< RowValue > </td><td class="memItemRight" valign="bottom"><b>row_range_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w2" doxytag="tbb::blocked_range3d::col_range_type"></a>
-typedef <a class="el" href="a00195.html">blocked_range</a>< ColValue > </td><td class="memItemRight" valign="bottom"><b>col_range_type</b></td></tr>
-
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::blocked_range3d::blocked_range3d"></a>
- </td><td class="memItemRight" valign="bottom"><b>blocked_range3d</b> (PageValue page_begin, PageValue page_end, RowValue row_begin, RowValue row_end, ColValue col_begin, ColValue col_end)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::blocked_range3d::blocked_range3d"></a>
- </td><td class="memItemRight" valign="bottom"><b>blocked_range3d</b> (PageValue page_begin, PageValue page_end, typename <a class="el" href="a00195.html#w1">page_range_type::size_type</a> page_grainsize, RowValue row_begin, RowValue row_end, typename <a class="el" href="a00195.html#w1">row_range_type::size_type</a> row_grainsize, ColValue col_begin, ColValue col_end, typename <a class="el" href="a00195.html#w1">col_range_type::size_type</a> col_grainsize)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::blocked_range3d::empty"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00197.html#a2">empty</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">True if range is empty. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::blocked_range3d::is_divisible"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00197.html#a3">is_divisible</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">True if range is divisible into two pieces. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::blocked_range3d::blocked_range3d"></a>
- </td><td class="memItemRight" valign="bottom"><b>blocked_range3d</b> (<a class="el" href="a00197.html">blocked_range3d</a> &r, <a class="el" href="a00254.html">split</a>)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::blocked_range3d::pages"></a>
-const <a class="el" href="a00195.html">page_range_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00197.html#a5">pages</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The pages of the iteration space. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a6" doxytag="tbb::blocked_range3d::rows"></a>
-const <a class="el" href="a00195.html">row_range_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00197.html#a6">rows</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The rows of the iteration space. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a7" doxytag="tbb::blocked_range3d::cols"></a>
-const <a class="el" href="a00195.html">col_range_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00197.html#a7">cols</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The columns of the iteration space. <br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename PageValue, typename RowValue = PageValue, typename ColValue = RowValue><br>
- class tbb::blocked_range3d< PageValue, RowValue, ColValue ></h3>
-
-A 3-dimensional range that models the Range concept. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00327.html">blocked_range3d.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00198.html b/doc/html/a00198.html
deleted file mode 100644
index 56bc9f1..0000000
--- a/doc/html/a00198.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::cache_aligned_allocator< T > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::cache_aligned_allocator< T > Class Template Reference</h1>Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00328.html">cache_aligned_allocator.h</a>></code>
-<p>
-<a href="a00018.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w0" doxytag="tbb::cache_aligned_allocator::pointer"></a>
-typedef T * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w1" doxytag="tbb::cache_aligned_allocator::const_pointer"></a>
-typedef const T * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w2" doxytag="tbb::cache_aligned_allocator::reference"></a>
-typedef T & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w3" doxytag="tbb::cache_aligned_allocator::const_reference"></a>
-typedef const T & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w4" doxytag="tbb::cache_aligned_allocator::value_type"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w5" doxytag="tbb::cache_aligned_allocator::size_type"></a>
-typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w6" doxytag="tbb::cache_aligned_allocator::difference_type"></a>
-typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
-
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::cache_aligned_allocator::cache_aligned_allocator"></a>
- </td><td class="memItemRight" valign="bottom"><b>cache_aligned_allocator</b> (const <a class="el" href="a00198.html">cache_aligned_allocator</a> &)  throw ()</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a2" doxytag="tbb::cache_aligned_allocator::cache_aligned_allocator"></a>
-template<typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>cache_aligned_allocator</b> (const <a class="el" href="a00198.html">cache_aligned_allocator</a>< U > &)  throw ()</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::cache_aligned_allocator::address"></a>
-pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (reference x) const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::cache_aligned_allocator::address"></a>
-const_pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (const_reference x) const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::cache_aligned_allocator::allocate"></a>
-pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00198.html#a5">allocate</a> (size_type n, const void *hint=0)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allocate space for n objects, starting on a cache/sector line. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a6" doxytag="tbb::cache_aligned_allocator::deallocate"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00198.html#a6">deallocate</a> (pointer p, size_type)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Free block of memory that starts on a cache line. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a7" doxytag="tbb::cache_aligned_allocator::max_size"></a>
-size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00198.html#a7">max_size</a> () const   throw ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Largest value for which method allocate might succeed. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a8" doxytag="tbb::cache_aligned_allocator::construct"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00198.html#a8">construct</a> (pointer p, const T &value)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy-construct value at location pointed to by p. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a9" doxytag="tbb::cache_aligned_allocator::destroy"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00198.html#a9">destroy</a> (pointer p)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroy value at location pointed to by p. <br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename T><br>
- class tbb::cache_aligned_allocator< T ></h3>
-
-Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. 
-<p>
-The members are ordered the same way they are in section 20.4.1 of the ISO C++ standard. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00328.html">cache_aligned_allocator.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00199.html b/doc/html/a00199.html
deleted file mode 100644
index b25976d..0000000
--- a/doc/html/a00199.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::cache_aligned_allocator< void > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::cache_aligned_allocator< void > Class Template Reference</h1>Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00328.html">cache_aligned_allocator.h</a>></code>
-<p>
-<a href="a00020.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w0" doxytag="tbb::cache_aligned_allocator< void >::pointer"></a>
-typedef void * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w1" doxytag="tbb::cache_aligned_allocator< void >::const_pointer"></a>
-typedef const void * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w2" doxytag="tbb::cache_aligned_allocator< void >::value_type"></a>
-typedef void </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<><br>
- class tbb::cache_aligned_allocator< void ></h3>
-
-Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00328.html">cache_aligned_allocator.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00200.html b/doc/html/a00200.html
index 36a2266..95daa5a 100644
--- a/doc/html/a00200.html
+++ b/doc/html/a00200.html
@@ -1,150 +1,122 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::captured_exception Class Reference</title>
+<title>blocked_range.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::captured_exception Class Reference</h1>This class is used by TBB to propagate information about unhandled exceptions into the root thread.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00353.html">tbb_exception.h</a>></code>
-<p>
-Inherits <a class="el" href="a00268.html">tbb::tbb_exception</a>.
-<p>
-Inheritance diagram for tbb::captured_exception:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00133.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::captured_exception::captured_exception"></a>
- </td><td class="memItemRight" valign="bottom"><b>captured_exception</b> (const <a class="el" href="a00200.html">captured_exception</a> &src)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::captured_exception::captured_exception"></a>
- </td><td class="memItemRight" valign="bottom"><b>captured_exception</b> (const char *name, const char *info)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::captured_exception::operator="></a>
-<a class="el" href="a00200.html">captured_exception</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00200.html">captured_exception</a> &src)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00200.html">captured_exception</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00200.html#a4">move</a> ()  throw ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates and returns pointer to the deep copy of this exception object.  <a href="#a4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00200.html#a5">destroy</a> ()  throw ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroys objects created by the <a class="el" href="a00200.html#a4">move()</a> method.  <a href="#a5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00200.html#a6">throw_self</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Throws this exception object.  <a href="#a6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a7" doxytag="tbb::captured_exception::name"></a>
-const char *__TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00200.html#a7">name</a> () const   throw ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns RTTI name of the originally intercepted exception. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a8" doxytag="tbb::captured_exception::what"></a>
-const char *__TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00200.html#a8">what</a> () const   throw ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the result of originally intercepted exception's <a class="el" href="a00200.html#a8">what()</a> method. <br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This class is used by TBB to propagate information about unhandled exceptions into the root thread. 
-<p>
-Exception of this type is thrown by TBB in the root thread (thread that started a parallel algorithm ) if an unhandled exception was intercepted during the algorithm execution in one of the workers. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00268.html">tbb::tbb_exception</a> * </dd></dl>
-
-<p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="a5" doxytag="tbb::captured_exception::destroy"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void tbb::captured_exception::destroy           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap>  throw ()<code> [virtual]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Destroys objects created by the <a class="el" href="a00200.html#a4">move()</a> method. 
-<p>
-Frees memory and calls destructor for this exception object. Can and must be used only on objects created by the move method. * 
-<p>
-Implements <a class="el" href="a00268.html#a1">tbb::tbb_exception</a>.    </td>
-  </tr>
-</table>
-<a class="anchor" name="a4" doxytag="tbb::captured_exception::move"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top"><a class="el" href="a00200.html">captured_exception</a>* tbb::captured_exception::move           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap>  throw ()<code> [virtual]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Creates and returns pointer to the deep copy of this exception object. 
-<p>
-Move semantics is allowed. * 
-<p>
-Implements <a class="el" href="a00268.html#a0">tbb::tbb_exception</a>.    </td>
-  </tr>
-</table>
-<a class="anchor" name="a6" doxytag="tbb::captured_exception::throw_self"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void tbb::captured_exception::throw_self           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline, virtual]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Throws this exception object. 
-<p>
-Make sure that if you have several levels of derivation from this interface you implement or override this method on the most derived level. The implementation is as simple as "throw *this;". Failure to do this will result in exception of a base class type being thrown. * 
-<p>
-Implements <a class="el" href="a00268.html#a2">tbb::tbb_exception</a>.    </td>
-  </tr>
-</table>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00353.html">tbb_exception.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>blocked_range.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_blocked_range_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_blocked_range_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "tbb_stddef.h"</span>
+<a name="l00025"></a>00025 
+<a name="l00026"></a>00026 <span class="keyword">namespace </span>tbb {
+<a name="l00027"></a>00027 
+<a name="l00037"></a>00037 
+<a name="l00038"></a>00038 
+<a name="l00039"></a>00039 <span class="keyword">template</span><<span class="keyword">typename</span> Value>
+<a name="l00040"></a><a class="code" href="a00097.html">00040</a> <span class="keyword">class </span><a class="code" href="a00097.html">blocked_range</a> {
+<a name="l00041"></a>00041 <span class="keyword">public</span>:
+<a name="l00043"></a>00043 
+<a name="l00045"></a><a class="code" href="a00097.html#1a8d05842c2b3dfc177bc4d347e4cef7">00045</a>     <span class="keyword">typedef</span> Value <a class="code" href="a00097.html#1a8d05842c2b3dfc177bc4d347e4cef7">const_iterator</a>;
+<a name="l00046"></a>00046 
+<a name="l00048"></a><a class="code" href="a00097.html#f5707bffea38eee5c9680f37358afb8e">00048</a>     <span class="keyword">typedef</span> std::size_t <a class="code" href="a00097.html#f5707bffea38eee5c9680f37358afb8e">size_type</a>;
+<a name="l00049"></a>00049 
+<a name="l00051"></a>00051 
+<a name="l00052"></a><a class="code" href="a00097.html#94607755c5110d199202234d58d022ac">00052</a>     <a class="code" href="a00097.html#94607755c5110d199202234d58d022ac">blocked_range</a>() : my_begin(), my_end() {}
+<a name="l00053"></a>00053 
+<a name="l00055"></a><a class="code" href="a00097.html#14795a36ead1414b4371dbe1a4656359">00055</a>     <a class="code" href="a00097.html#94607755c5110d199202234d58d022ac">blocked_range</a>( Value begin_, Value end_, <a class="code" href="a00097.html#f5707bffea38eee5c9680f37358afb8e">size_type</a> grainsize_=1 ) : 
+<a name="l00056"></a>00056         my_end(end_), my_begin(begin_), my_grainsize(grainsize_) 
+<a name="l00057"></a>00057     {
+<a name="l00058"></a>00058         __TBB_ASSERT( my_grainsize>0, <span class="stringliteral">"grainsize must be positive"</span> );
+<a name="l00059"></a>00059     }
+<a name="l00060"></a>00060 
+<a name="l00062"></a><a class="code" href="a00097.html#18d2258400756ac1446dac7676b18df3">00062</a>     <a class="code" href="a00097.html#1a8d05842c2b3dfc177bc4d347e4cef7">const_iterator</a> <a class="code" href="a00097.html#18d2258400756ac1446dac7676b18df3">begin</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_begin;}
+<a name="l00063"></a>00063 
+<a name="l00065"></a><a class="code" href="a00097.html#8b929d93ddc13f148b11bceef3a3bdf8">00065</a>     <a class="code" href="a00097.html#1a8d05842c2b3dfc177bc4d347e4cef7">const_iterator</a> <a class="code" href="a00097.html#8b929d93ddc13f148b11bceef3a3bdf8">end</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_end;}
+<a name="l00066"></a>00066 
+<a name="l00068"></a>00068 
+<a name="l00069"></a><a class="code" href="a00097.html#9eaa0b6beff1420f688570bbf6b8c462">00069</a>     <a class="code" href="a00097.html#f5707bffea38eee5c9680f37358afb8e">size_type</a> <a class="code" href="a00097.html#9eaa0b6beff1420f688570bbf6b8c462">size</a>()<span class="keyword"> const </span>{
+<a name="l00070"></a>00070         __TBB_ASSERT( !(<a class="code" href="a00097.html#8b929d93ddc13f148b11bceef3a3bdf8">end</a>()<<a class="code" href="a00097.html#18d2258400756ac1446dac7676b18df3">begin</a>()), <span class="stringliteral">"size() unspecified if end()<begin()"</span> );
+<a name="l00071"></a>00071         <span class="keywordflow">return</span> <a class="code" href="a00097.html#f5707bffea38eee5c9680f37358afb8e">size_type</a>(my_end-my_begin);
+<a name="l00072"></a>00072     }
+<a name="l00073"></a>00073 
+<a name="l00075"></a><a class="code" href="a00097.html#fcd2e5b8b6c11fd3f20fc0aa9f11bbc2">00075</a>     <a class="code" href="a00097.html#f5707bffea38eee5c9680f37358afb8e">size_type</a> <a class="code" href="a00097.html#fcd2e5b8b6c11fd3f20fc0aa9f11bbc2">grainsize</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_grainsize;}
+<a name="l00076"></a>00076 
+<a name="l00077"></a>00077     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00078"></a>00078     <span class="comment">// Methods that implement Range concept</span>
+<a name="l00079"></a>00079     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00080"></a>00080 
+<a name="l00082"></a><a class="code" href="a00097.html#8f4f02f530eb3f2e7ea26e06f76aef9d">00082</a>     <span class="keywordtype">bool</span> <a class="code" href="a00097.html#8f4f02f530eb3f2e7ea26e06f76aef9d">empty</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> !(my_begin<my_end);}
+<a name="l00083"></a>00083 
+<a name="l00085"></a>00085 
+<a name="l00086"></a><a class="code" href="a00097.html#41a58b703d574b6e1ca155df3576f578">00086</a>     <span class="keywordtype">bool</span> <a class="code" href="a00097.html#41a58b703d574b6e1ca155df3576f578">is_divisible</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_grainsize<<a class="code" href="a00097.html#9eaa0b6beff1420f688570bbf6b8c462">size</a>();}
+<a name="l00087"></a>00087 
+<a name="l00089"></a>00089 
+<a name="l00091"></a><a class="code" href="a00097.html#4c0efd2be3f96a0ab3ba5085e8b3fcc7">00091</a>     <a class="code" href="a00097.html#94607755c5110d199202234d58d022ac">blocked_range</a>( <a class="code" href="a00097.html">blocked_range</a>& r, <a class="code" href="a00131.html">split</a> ) : 
+<a name="l00092"></a>00092         my_end(r.my_end),
+<a name="l00093"></a>00093         my_begin(do_split(r)),
+<a name="l00094"></a>00094         my_grainsize(r.my_grainsize)
+<a name="l00095"></a>00095     {}
+<a name="l00096"></a>00096 
+<a name="l00097"></a>00097 <span class="keyword">private</span>:
+<a name="l00099"></a>00099     Value my_end;
+<a name="l00100"></a>00100     Value my_begin;
+<a name="l00101"></a>00101     <a class="code" href="a00097.html#f5707bffea38eee5c9680f37358afb8e">size_type</a> my_grainsize;
+<a name="l00102"></a>00102 
+<a name="l00104"></a>00104 
+<a name="l00105"></a>00105     <span class="keyword">static</span> Value do_split( <a class="code" href="a00097.html">blocked_range</a>& r ) {
+<a name="l00106"></a>00106         __TBB_ASSERT( r.<a class="code" href="a00097.html#41a58b703d574b6e1ca155df3576f578">is_divisible</a>(), <span class="stringliteral">"cannot split blocked_range that is not divisible"</span> );
+<a name="l00107"></a>00107         Value middle = r.<a class="code" href="a00097.html#e02559f817d8352c7bdf41dfddc53958">my_begin</a> + (r.<a class="code" href="a00097.html#1ec95c8988b50064dd603998b16f3930">my_end</a>-r.<a class="code" href="a00097.html#e02559f817d8352c7bdf41dfddc53958">my_begin</a>)/2u;
+<a name="l00108"></a>00108         r.<a class="code" href="a00097.html#1ec95c8988b50064dd603998b16f3930">my_end</a> = middle;
+<a name="l00109"></a>00109         <span class="keywordflow">return</span> middle;
+<a name="l00110"></a>00110     }
+<a name="l00111"></a>00111 
+<a name="l00112"></a>00112     <span class="keyword">template</span><<span class="keyword">typename</span> RowValue, <span class="keyword">typename</span> ColValue>
+<a name="l00113"></a>00113     <span class="keyword">friend</span> <span class="keyword">class </span>blocked_range2d;
+<a name="l00114"></a>00114 
+<a name="l00115"></a>00115     <span class="keyword">template</span><<span class="keyword">typename</span> RowValue, <span class="keyword">typename</span> ColValue, <span class="keyword">typename</span> PageValue>
+<a name="l00116"></a>00116     <span class="keyword">friend</span> <span class="keyword">class </span>blocked_range3d;
+<a name="l00117"></a>00117 };
+<a name="l00118"></a>00118 
+<a name="l00119"></a>00119 } <span class="comment">// namespace tbb </span>
+<a name="l00120"></a>00120 
+<a name="l00121"></a>00121 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_blocked_range_H */</span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00201.html b/doc/html/a00201.html
index 25f4e86..da0f52a 100644
--- a/doc/html/a00201.html
+++ b/doc/html/a00201.html
@@ -1,644 +1,108 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::concurrent_hash_map< Key, T, HashCompare, A > Class Template Reference</title>
+<title>blocked_range2d.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::concurrent_hash_map< Key, T, HashCompare, A > Class Template Reference</h1>Unordered map from Key to T.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00329.html">concurrent_hash_map.h</a>></code>
-<p>
-Inherits <a class="el" href="a00222.html">tbb::internal::hash_map_base</a>.
-<p>
-Inheritance diagram for tbb::concurrent_hash_map< Key, T, HashCompare, A >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00027.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w0" doxytag="tbb::concurrent_hash_map::key_type"></a>
-typedef Key </td><td class="memItemRight" valign="bottom"><b>key_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w1" doxytag="tbb::concurrent_hash_map::mapped_type"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>mapped_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w2" doxytag="tbb::concurrent_hash_map::value_type"></a>
-typedef std::pair< const Key,<br>
- T > </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w3" doxytag="tbb::concurrent_hash_map::size_type"></a>
-typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w4" doxytag="tbb::concurrent_hash_map::difference_type"></a>
-typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w5" doxytag="tbb::concurrent_hash_map::pointer"></a>
-typedef value_type * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w6" doxytag="tbb::concurrent_hash_map::const_pointer"></a>
-typedef const value_type * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w7" doxytag="tbb::concurrent_hash_map::reference"></a>
-typedef value_type & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w8" doxytag="tbb::concurrent_hash_map::const_reference"></a>
-typedef const value_type & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w9" doxytag="tbb::concurrent_hash_map::iterator"></a>
-typedef <a class="el" href="a00223.html">internal::hash_map_iterator</a><<br>
- <a class="el" href="a00201.html">concurrent_hash_map</a>, value_type > </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w10" doxytag="tbb::concurrent_hash_map::const_iterator"></a>
-typedef <a class="el" href="a00223.html">internal::hash_map_iterator</a><<br>
- <a class="el" href="a00201.html">concurrent_hash_map</a>, const <br>
-value_type > </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w11" doxytag="tbb::concurrent_hash_map::range_type"></a>
-typedef <a class="el" href="a00224.html">internal::hash_map_range</a><<br>
- <a class="el" href="a00223.html">iterator</a> > </td><td class="memItemRight" valign="bottom"><b>range_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w12" doxytag="tbb::concurrent_hash_map::const_range_type"></a>
-typedef <a class="el" href="a00224.html">internal::hash_map_range</a><<br>
- <a class="el" href="a00223.html">const_iterator</a> > </td><td class="memItemRight" valign="bottom"><b>const_range_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w13" doxytag="tbb::concurrent_hash_map::allocator_type"></a>
-typedef A </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
-
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::concurrent_hash_map::concurrent_hash_map"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00201.html#a0">concurrent_hash_map</a> (const allocator_type &a=allocator_type())</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct empty table. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::concurrent_hash_map::concurrent_hash_map"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00201.html#a1">concurrent_hash_map</a> (const <a class="el" href="a00201.html">concurrent_hash_map</a> &table, const allocator_type &a=allocator_type())</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a2" doxytag="tbb::concurrent_hash_map::concurrent_hash_map"></a>
-template<typename I> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00201.html#a2">concurrent_hash_map</a> (I first, I last, const allocator_type &a=allocator_type())</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construction with copying iteration range and given allocator instance. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::concurrent_hash_map::operator="></a>
-<a class="el" href="a00201.html">concurrent_hash_map</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00201.html#a3">operator=</a> (const <a class="el" href="a00201.html">concurrent_hash_map</a> &table)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Assignment. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::concurrent_hash_map::clear"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00201.html#a4">clear</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Clear table. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::concurrent_hash_map::~concurrent_hash_map"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00201.html#a5">~concurrent_hash_map</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Clear table and destroy it. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a6" doxytag="tbb::concurrent_hash_map::range"></a>
-<a class="el" href="a00224.html">range_type</a> </td><td class="memItemRight" valign="bottom"><b>range</b> (size_type grainsize=1)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a7" doxytag="tbb::concurrent_hash_map::range"></a>
-<a class="el" href="a00224.html">const_range_type</a> </td><td class="memItemRight" valign="bottom"><b>range</b> (size_type grainsize=1) const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a8" doxytag="tbb::concurrent_hash_map::begin"></a>
-<a class="el" href="a00223.html">iterator</a> </td><td class="memItemRight" valign="bottom"><b>begin</b> ()</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a9" doxytag="tbb::concurrent_hash_map::end"></a>
-<a class="el" href="a00223.html">iterator</a> </td><td class="memItemRight" valign="bottom"><b>end</b> ()</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a10" doxytag="tbb::concurrent_hash_map::begin"></a>
-<a class="el" href="a00223.html">const_iterator</a> </td><td class="memItemRight" valign="bottom"><b>begin</b> () const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a11" doxytag="tbb::concurrent_hash_map::end"></a>
-<a class="el" href="a00223.html">const_iterator</a> </td><td class="memItemRight" valign="bottom"><b>end</b> () const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a12" doxytag="tbb::concurrent_hash_map::equal_range"></a>
-std::pair< <a class="el" href="a00223.html">iterator</a>, <a class="el" href="a00223.html">iterator</a> > </td><td class="memItemRight" valign="bottom"><b>equal_range</b> (const Key &key)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a13" doxytag="tbb::concurrent_hash_map::equal_range"></a>
-std::pair< <a class="el" href="a00223.html">const_iterator</a>,<br>
- <a class="el" href="a00223.html">const_iterator</a> > </td><td class="memItemRight" valign="bottom"><b>equal_range</b> (const Key &key) const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00201.html#a14">size</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Number of items in table.  <a href="#a14"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a15" doxytag="tbb::concurrent_hash_map::empty"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00201.html#a15">empty</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">True if <a class="el" href="a00201.html#a14">size()</a>==0. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a16" doxytag="tbb::concurrent_hash_map::max_size"></a>
-size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00201.html#a16">max_size</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Upper bound on size. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a17" doxytag="tbb::concurrent_hash_map::get_allocator"></a>
-allocator_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00201.html#a17">get_allocator</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">return allocator object <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a18" doxytag="tbb::concurrent_hash_map::swap"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00201.html#a18">swap</a> (<a class="el" href="a00201.html">concurrent_hash_map</a> &table)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">swap two instances <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a19" doxytag="tbb::concurrent_hash_map::count"></a>
-size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00201.html#a19">count</a> (const Key &key) const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return count of items (0 or 1). <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00201.html#a20">find</a> (<a class="el" href="a00203.html">const_accessor</a> &result, const Key &key) const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Find item and acquire a read lock on the item.  <a href="#a20"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00201.html#a21">find</a> (<a class="el" href="a00202.html">accessor</a> &result, const Key &key)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Find item and acquire a write lock on the item.  <a href="#a21"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00201.html#a22">insert</a> (<a class="el" href="a00203.html">const_accessor</a> &result, const Key &key)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Insert item (if not already present) and acquire a read lock on the item.  <a href="#a22"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00201.html#a23">insert</a> (<a class="el" href="a00202.html">accessor</a> &result, const Key &key)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Insert item (if not already present) and acquire a write lock on the item.  <a href="#a23"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00201.html#a24">insert</a> (<a class="el" href="a00203.html">const_accessor</a> &result, const value_type &value)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Insert item by copying if there is no such key present already and acquire a read lock on the item.  <a href="#a24"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00201.html#a25">insert</a> (<a class="el" href="a00202.html">accessor</a> &result, const value_type &value)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Insert item by copying if there is no such key present already and acquire a write lock on the item.  <a href="#a25"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00201.html#a26">insert</a> (const value_type &value)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Insert item by copying if there is no such key present already.  <a href="#a26"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a27" doxytag="tbb::concurrent_hash_map::insert"></a>
-template<typename I> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00201.html#a27">insert</a> (I first, I last)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Insert range [first, last). <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00201.html#a28">erase</a> (const Key &key)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Erase item.  <a href="#a28"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00201.html#a29">erase</a> (<a class="el" href="a00203.html">const_accessor</a> &item_accessor)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Erase item by <a class="el" href="a00203.html">const_accessor</a>.  <a href="#a29"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00201.html#a30">erase</a> (<a class="el" href="a00202.html">accessor</a> &item_accessor)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Erase item by accessor.  <a href="#a30"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::concurrent_hash_map::internal::hash_map_iterator"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::hash_map_iterator</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n1" doxytag="tbb::concurrent_hash_map::internal::hash_map_range"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::hash_map_range</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n2" doxytag="tbb::concurrent_hash_map::node"></a>
-struct </td><td class="memItemRight" valign="bottom"><b>node</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n3" doxytag="tbb::concurrent_hash_map::const_accessor"></a>
-class </td><td class="memItemRight" valign="bottom"><b>const_accessor</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n4" doxytag="tbb::concurrent_hash_map::chain"></a>
-struct </td><td class="memItemRight" valign="bottom"><b>chain</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n5" doxytag="tbb::concurrent_hash_map::segment"></a>
-struct </td><td class="memItemRight" valign="bottom"><b>segment</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Key, typename T, typename HashCompare, typename A><br>
- class tbb::concurrent_hash_map< Key, T, HashCompare, A ></h3>
-
-Unordered map from Key to T. 
-<p>
-<a class="el" href="a00201.html">concurrent_hash_map</a> is associative container with concurrent access.<p>
-<dl compact><dt><b>Compatibility</b></dt><dd>The class meets all Container Requirements from C++ Standard (See ISO/IEC 14882:2003(E), clause 23.1).</dd></dl>
-<dl compact><dt><b>Exception Safety</b></dt><dd><ul>
-<li>Hash function is not permitted to throw an exception. User-defined types Key and T are forbidden from throwing an exception in destructors.</li><li>If exception happens during <a class="el" href="a00201.html#a22">insert()</a> operations, it has no effect (unless exception raised by HashCompare::hash() function during grow_segment).</li><li>If exception happens during <a class="el" href="a00201.html#a3">operator=()</a> operation, the container can have a part of source items, and meth [...]
-</dd></dl>
-<dl compact><dt><b>Changes since TBB 2.0</b></dt><dd><ul>
-<li>Fixed exception-safety</li><li>Added template argument for allocator</li><li>Added allocator argument in constructors</li><li>Added constructor from a range of iterators</li><li>Added several new overloaded <a class="el" href="a00201.html#a22">insert()</a> methods</li><li>Added <a class="el" href="a00201.html#a17">get_allocator()</a></li><li>Added <a class="el" href="a00201.html#a18">swap()</a></li><li>Added <a class="el" href="a00201.html#a19">count()</a></li><li>Added overloaded <a [...]
-</dd></dl>
-
-<p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="a30" doxytag="tbb::concurrent_hash_map::erase"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename Key, typename T, typename HashCompare, typename A> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">bool <a class="el" href="a00201.html">tbb::concurrent_hash_map</a>< Key, T, HashCompare, A >::erase           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top"><a class="el" href="a00202.html">accessor</a> & </td>
-          <td class="mdname1" valign="top" nowrap> <em>item_accessor</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Erase item by accessor. 
-<p>
-Return true if item was erased by particularly this call.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a29" doxytag="tbb::concurrent_hash_map::erase"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename Key, typename T, typename HashCompare, typename A> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">bool <a class="el" href="a00201.html">tbb::concurrent_hash_map</a>< Key, T, HashCompare, A >::erase           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top"><a class="el" href="a00203.html">const_accessor</a> & </td>
-          <td class="mdname1" valign="top" nowrap> <em>item_accessor</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Erase item by <a class="el" href="a00203.html">const_accessor</a>. 
-<p>
-Return true if item was erased by particularly this call.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a28" doxytag="tbb::concurrent_hash_map::erase"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename Key, typename T, typename HashCompare, typename A> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">bool <a class="el" href="a00201.html">tbb::concurrent_hash_map</a>< Key, T, HashCompare, A >::erase           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">const Key & </td>
-          <td class="mdname1" valign="top" nowrap> <em>key</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Erase item. 
-<p>
-Return true if item was erased by particularly this call.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a21" doxytag="tbb::concurrent_hash_map::find"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename Key, typename T, typename HashCompare, typename A> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">bool <a class="el" href="a00201.html">tbb::concurrent_hash_map</a>< Key, T, HashCompare, A >::find           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top"><a class="el" href="a00202.html">accessor</a> & </td>
-          <td class="mdname" nowrap> <em>result</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>const Key & </td>
-          <td class="mdname" nowrap> <em>key</em></td>
-        </tr>
-        <tr>
-          <td class="md"></td>
-          <td class="md">) </td>
-          <td class="md" colspan="2"><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Find item and acquire a write lock on the item. 
-<p>
-Return true if item is found, false otherwise.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a20" doxytag="tbb::concurrent_hash_map::find"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename Key, typename T, typename HashCompare, typename A> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">bool <a class="el" href="a00201.html">tbb::concurrent_hash_map</a>< Key, T, HashCompare, A >::find           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top"><a class="el" href="a00203.html">const_accessor</a> & </td>
-          <td class="mdname" nowrap> <em>result</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>const Key & </td>
-          <td class="mdname" nowrap> <em>key</em></td>
-        </tr>
-        <tr>
-          <td class="md"></td>
-          <td class="md">) </td>
-          <td class="md" colspan="2"> const<code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Find item and acquire a read lock on the item. 
-<p>
-Return true if item is found, false otherwise.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a26" doxytag="tbb::concurrent_hash_map::insert"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename Key, typename T, typename HashCompare, typename A> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">bool <a class="el" href="a00201.html">tbb::concurrent_hash_map</a>< Key, T, HashCompare, A >::insert           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">const value_type & </td>
-          <td class="mdname1" valign="top" nowrap> <em>value</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Insert item by copying if there is no such key present already. 
-<p>
-Returns true if item is inserted.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a25" doxytag="tbb::concurrent_hash_map::insert"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename Key, typename T, typename HashCompare, typename A> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">bool <a class="el" href="a00201.html">tbb::concurrent_hash_map</a>< Key, T, HashCompare, A >::insert           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top"><a class="el" href="a00202.html">accessor</a> & </td>
-          <td class="mdname" nowrap> <em>result</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>const value_type & </td>
-          <td class="mdname" nowrap> <em>value</em></td>
-        </tr>
-        <tr>
-          <td class="md"></td>
-          <td class="md">) </td>
-          <td class="md" colspan="2"><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Insert item by copying if there is no such key present already and acquire a write lock on the item. 
-<p>
-Returns true if item is new.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a24" doxytag="tbb::concurrent_hash_map::insert"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename Key, typename T, typename HashCompare, typename A> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">bool <a class="el" href="a00201.html">tbb::concurrent_hash_map</a>< Key, T, HashCompare, A >::insert           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top"><a class="el" href="a00203.html">const_accessor</a> & </td>
-          <td class="mdname" nowrap> <em>result</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>const value_type & </td>
-          <td class="mdname" nowrap> <em>value</em></td>
-        </tr>
-        <tr>
-          <td class="md"></td>
-          <td class="md">) </td>
-          <td class="md" colspan="2"><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Insert item by copying if there is no such key present already and acquire a read lock on the item. 
-<p>
-Returns true if item is new.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a23" doxytag="tbb::concurrent_hash_map::insert"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename Key, typename T, typename HashCompare, typename A> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">bool <a class="el" href="a00201.html">tbb::concurrent_hash_map</a>< Key, T, HashCompare, A >::insert           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top"><a class="el" href="a00202.html">accessor</a> & </td>
-          <td class="mdname" nowrap> <em>result</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>const Key & </td>
-          <td class="mdname" nowrap> <em>key</em></td>
-        </tr>
-        <tr>
-          <td class="md"></td>
-          <td class="md">) </td>
-          <td class="md" colspan="2"><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Insert item (if not already present) and acquire a write lock on the item. 
-<p>
-Returns true if item is new.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a22" doxytag="tbb::concurrent_hash_map::insert"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename Key, typename T, typename HashCompare, typename A> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">bool <a class="el" href="a00201.html">tbb::concurrent_hash_map</a>< Key, T, HashCompare, A >::insert           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top"><a class="el" href="a00203.html">const_accessor</a> & </td>
-          <td class="mdname" nowrap> <em>result</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>const Key & </td>
-          <td class="mdname" nowrap> <em>key</em></td>
-        </tr>
-        <tr>
-          <td class="md"></td>
-          <td class="md">) </td>
-          <td class="md" colspan="2"><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Insert item (if not already present) and acquire a read lock on the item. 
-<p>
-Returns true if item is new.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a14" doxytag="tbb::concurrent_hash_map::size"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename Key, typename T, typename HashCompare, typename A> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top"><a class="el" href="a00201.html">concurrent_hash_map</a>< Key, T, HashCompare, A >::size_type <a class="el" href="a00201.html">tbb::concurrent_hash_map</a>< Key, T, HashCompare, A >::size           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap> const</td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Number of items in table. 
-<p>
-Be aware that this method is relatively slow compared to the typical <a class="el" href="a00201.html#a14">size()</a> method for an STL container.     </td>
-  </tr>
-</table>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00329.html">concurrent_hash_map.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>blocked_range2d.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_blocked_range2d_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_blocked_range2d_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "tbb_stddef.h"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "blocked_range.h"</span>
+<a name="l00026"></a>00026 
+<a name="l00027"></a>00027 <span class="keyword">namespace </span>tbb {
+<a name="l00028"></a>00028 
+<a name="l00030"></a>00030 
+<a name="l00031"></a>00031 <span class="keyword">template</span><<span class="keyword">typename</span> RowValue, <span class="keyword">typename</span> ColValue=RowValue>
+<a name="l00032"></a><a class="code" href="a00098.html">00032</a> <span class="keyword">class </span><a class="code" href="a00098.html">blocked_range2d</a> {
+<a name="l00033"></a>00033 <span class="keyword">public</span>:
+<a name="l00035"></a><a class="code" href="a00098.html#a807a22fe658ec38b8edfd69521d0383">00035</a>     <span class="keyword">typedef</span> <a class="code" href="a00097.html">blocked_range<RowValue></a> <a class="code" href="a00097.html">row_range_type</a>;
+<a name="l00036"></a>00036     <span class="keyword">typedef</span> <a class="code" href="a00097.html">blocked_range<ColValue></a> <a class="code" href="a00097.html">col_range_type</a>;
+<a name="l00037"></a>00037  
+<a name="l00038"></a>00038 <span class="keyword">private</span>:
+<a name="l00039"></a>00039     <a class="code" href="a00097.html">row_range_type</a> my_rows;
+<a name="l00040"></a>00040     <a class="code" href="a00097.html">col_range_type</a> my_cols;
+<a name="l00041"></a>00041 
+<a name="l00042"></a>00042 <span class="keyword">public</span>:
+<a name="l00043"></a>00043 
+<a name="l00044"></a>00044     <a class="code" href="a00098.html">blocked_range2d</a>( RowValue row_begin, RowValue row_end, <span class="keyword">typename</span> <a class="code" href="a00097.html#f5707bffea38eee5c9680f37358afb8e">row_range_type::size_type</a> row_grainsize,
+<a name="l00045"></a>00045                      ColValue col_begin, ColValue col_end, <span class="keyword">typename</span> <a class="code" href="a00097.html#f5707bffea38eee5c9680f37358afb8e">col_range_type::size_type</a> col_grainsize ) : 
+<a name="l00046"></a>00046         my_rows(row_begin,row_end,row_grainsize),
+<a name="l00047"></a>00047         my_cols(col_begin,col_end,col_grainsize)
+<a name="l00048"></a>00048     {
+<a name="l00049"></a>00049     }
+<a name="l00050"></a>00050 
+<a name="l00051"></a>00051     <a class="code" href="a00098.html">blocked_range2d</a>( RowValue row_begin, RowValue row_end,
+<a name="l00052"></a>00052                      ColValue col_begin, ColValue col_end ) : 
+<a name="l00053"></a>00053         my_rows(row_begin,row_end),
+<a name="l00054"></a>00054         my_cols(col_begin,col_end)
+<a name="l00055"></a>00055     {
+<a name="l00056"></a>00056     }
+<a name="l00057"></a>00057 
+<a name="l00059"></a><a class="code" href="a00098.html#d144cb2d88cef553420311aca8667a44">00059</a>     <span class="keywordtype">bool</span> <a class="code" href="a00098.html#d144cb2d88cef553420311aca8667a44">empty</a>()<span class="keyword"> const </span>{
+<a name="l00060"></a>00060         <span class="comment">// Yes, it is a logical OR here, not AND.</span>
+<a name="l00061"></a>00061         <span class="keywordflow">return</span> my_rows.<a class="code" href="a00097.html#8f4f02f530eb3f2e7ea26e06f76aef9d">empty</a>() || my_cols.<a class="code" href="a00097.html#8f4f02f530eb3f2e7ea26e06f76aef9d">empty</a>();
+<a name="l00062"></a>00062     }
+<a name="l00063"></a>00063 
+<a name="l00065"></a><a class="code" href="a00098.html#ad36a9b38e4fef26d376f99552ce2d92">00065</a>     <span class="keywordtype">bool</span> <a class="code" href="a00098.html#ad36a9b38e4fef26d376f99552ce2d92">is_divisible</a>()<span class="keyword"> const </span>{
+<a name="l00066"></a>00066         <span class="keywordflow">return</span> my_rows.<a class="code" href="a00097.html#41a58b703d574b6e1ca155df3576f578">is_divisible</a>() || my_cols.<a class="code" href="a00097.html#41a58b703d574b6e1ca155df3576f578">is_divisible</a>();
+<a name="l00067"></a>00067     }
+<a name="l00068"></a>00068 
+<a name="l00069"></a>00069     <a class="code" href="a00098.html">blocked_range2d</a>( <a class="code" href="a00098.html">blocked_range2d</a>& r, <a class="code" href="a00131.html">split</a> ) : 
+<a name="l00070"></a>00070         my_rows(r.my_rows),
+<a name="l00071"></a>00071         my_cols(r.my_cols)
+<a name="l00072"></a>00072     {
+<a name="l00073"></a>00073         <span class="keywordflow">if</span>( my_rows.<a class="code" href="a00097.html#9eaa0b6beff1420f688570bbf6b8c462">size</a>()*double(my_cols.<a class="code" href="a00097.html#fcd2e5b8b6c11fd3f20fc0aa9f11bbc2">grainsize</a>()) < my_cols.<a class="code" href="a00097.html#9eaa0b6beff1420f688570bbf6b8c462">size</a>()*double(my_rows.<a class="code" href="a00097.html#fcd2e5b8b6c11fd3f20fc0aa9f11bbc2">grainsize</a>()) ) {
+<a name="l00074"></a>00074             my_cols.<a class="code" href="a00097.html#e02559f817d8352c7bdf41dfddc53958">my_begin</a> = col_range_type::do_split(r.<a class="code" href="a00098.html#9837bbaabc5836741fde79512ea1131d">my_cols</a>);
+<a name="l00075"></a>00075         } <span class="keywordflow">else</span> {
+<a name="l00076"></a>00076             my_rows.<a class="code" href="a00097.html#e02559f817d8352c7bdf41dfddc53958">my_begin</a> = row_range_type::do_split(r.<a class="code" href="a00098.html#4be7c7b39da256afe9c67be735b6f788">my_rows</a>);
+<a name="l00077"></a>00077         }
+<a name="l00078"></a>00078     }
+<a name="l00079"></a>00079 
+<a name="l00081"></a><a class="code" href="a00098.html#f496e7348a82652fba581203477cc07c">00081</a>     <span class="keyword">const</span> <a class="code" href="a00097.html">row_range_type</a>& <a class="code" href="a00098.html#f496e7348a82652fba581203477cc07c">rows</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_rows;}
+<a name="l00082"></a>00082 
+<a name="l00084"></a><a class="code" href="a00098.html#392a46759af2c884957115771affa7f4">00084</a>     <span class="keyword">const</span> <a class="code" href="a00097.html">col_range_type</a>& <a class="code" href="a00098.html#392a46759af2c884957115771affa7f4">cols</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_cols;}
+<a name="l00085"></a>00085 };
+<a name="l00086"></a>00086 
+<a name="l00087"></a>00087 } <span class="comment">// namespace tbb </span>
+<a name="l00088"></a>00088 
+<a name="l00089"></a>00089 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_blocked_range2d_H */</span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00202.html b/doc/html/a00202.html
index 8be2b65..54fc43d 100644
--- a/doc/html/a00202.html
+++ b/doc/html/a00202.html
@@ -1,44 +1,126 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor Class Reference</title>
+<title>blocked_range3d.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor Class Reference</h1>Allows write access to elements and combines data access, locking, and garbage collection.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00329.html">concurrent_hash_map.h</a>></code>
-<p>
-Inherits <a class="el" href="a00203.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>.
-<p>
-Inheritance diagram for tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00029.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w0" doxytag="tbb::concurrent_hash_map::accessor::value_type"></a>
-typedef std::pair< const Key,<br>
- T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00202.html#w0">value_type</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Type of value. <br></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::concurrent_hash_map::accessor::operator *"></a>
-reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00202.html#a0">operator *</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return reference to associated value in hash table. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::concurrent_hash_map::accessor::operator->"></a>
-pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00202.html#a1">operator-></a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return pointer to associated value in hash table. <br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Key, typename T, typename HashCompare, typename A><br>
- class tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</h3>
-
-Allows write access to elements and combines data access, locking, and garbage collection. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00329.html">concurrent_hash_map.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>blocked_range3d.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_blocked_range3d_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_blocked_range3d_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "tbb_stddef.h"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "blocked_range.h"</span>
+<a name="l00026"></a>00026 
+<a name="l00027"></a>00027 <span class="keyword">namespace </span>tbb {
+<a name="l00028"></a>00028 
+<a name="l00030"></a>00030 
+<a name="l00031"></a>00031 <span class="keyword">template</span><<span class="keyword">typename</span> PageValue, <span class="keyword">typename</span> RowValue=PageValue, <span class="keyword">typename</span> ColValue=RowValue>
+<a name="l00032"></a><a class="code" href="a00099.html">00032</a> <span class="keyword">class </span><a class="code" href="a00099.html">blocked_range3d</a> {
+<a name="l00033"></a>00033 <span class="keyword">public</span>:
+<a name="l00035"></a><a class="code" href="a00099.html#b8ebf17a552ba47825e9b3887855b719">00035</a>     <span class="keyword">typedef</span> <a class="code" href="a00097.html">blocked_range<PageValue></a> <a class="code" href="a00097.html">page_range_type</a>;
+<a name="l00036"></a>00036     <span class="keyword">typedef</span> <a class="code" href="a00097.html">blocked_range<RowValue></a>  <a class="code" href="a00097.html">row_range_type</a>;
+<a name="l00037"></a>00037     <span class="keyword">typedef</span> <a class="code" href="a00097.html">blocked_range<ColValue></a>  <a class="code" href="a00097.html">col_range_type</a>;
+<a name="l00038"></a>00038  
+<a name="l00039"></a>00039 <span class="keyword">private</span>:
+<a name="l00040"></a>00040     <a class="code" href="a00097.html">page_range_type</a> my_pages;
+<a name="l00041"></a>00041     <a class="code" href="a00097.html">row_range_type</a>  my_rows;
+<a name="l00042"></a>00042     <a class="code" href="a00097.html">col_range_type</a>  my_cols;
+<a name="l00043"></a>00043 
+<a name="l00044"></a>00044 <span class="keyword">public</span>:
+<a name="l00045"></a>00045 
+<a name="l00046"></a>00046     <a class="code" href="a00099.html">blocked_range3d</a>( PageValue page_begin, PageValue page_end,
+<a name="l00047"></a>00047                      RowValue  row_begin,  RowValue row_end,
+<a name="l00048"></a>00048                      ColValue  col_begin,  ColValue col_end ) : 
+<a name="l00049"></a>00049         my_pages(page_begin,page_end),
+<a name="l00050"></a>00050         my_rows(row_begin,row_end),
+<a name="l00051"></a>00051         my_cols(col_begin,col_end)
+<a name="l00052"></a>00052     {
+<a name="l00053"></a>00053     }
+<a name="l00054"></a>00054 
+<a name="l00055"></a>00055     <a class="code" href="a00099.html">blocked_range3d</a>( PageValue page_begin, PageValue page_end, <span class="keyword">typename</span> <a class="code" href="a00097.html#f5707bffea38eee5c9680f37358afb8e">page_range_type::size_type</a> page_grainsize, 
+<a name="l00056"></a>00056                      RowValue  row_begin,  RowValue row_end,   <span class="keyword">typename</span> <a class="code" href="a00097.html#f5707bffea38eee5c9680f37358afb8e">row_range_type::size_type</a> row_grainsize,
+<a name="l00057"></a>00057                      ColValue  col_begin,  ColValue col_end,   <span class="keyword">typename</span> <a class="code" href="a00097.html#f5707bffea38eee5c9680f37358afb8e">col_range_type::size_type</a> col_grainsize ) :  
+<a name="l00058"></a>00058         my_pages(page_begin,page_end,page_grainsize),
+<a name="l00059"></a>00059         my_rows(row_begin,row_end,row_grainsize),
+<a name="l00060"></a>00060         my_cols(col_begin,col_end,col_grainsize)
+<a name="l00061"></a>00061     {
+<a name="l00062"></a>00062     }
+<a name="l00063"></a>00063 
+<a name="l00065"></a><a class="code" href="a00099.html#356860e1c977d91711e8216bd55c0b25">00065</a>     <span class="keywordtype">bool</span> <a class="code" href="a00099.html#356860e1c977d91711e8216bd55c0b25">empty</a>()<span class="keyword"> const </span>{
+<a name="l00066"></a>00066         <span class="comment">// Yes, it is a logical OR here, not AND.</span>
+<a name="l00067"></a>00067         <span class="keywordflow">return</span> my_pages.<a class="code" href="a00097.html#8f4f02f530eb3f2e7ea26e06f76aef9d">empty</a>() || my_rows.<a class="code" href="a00097.html#8f4f02f530eb3f2e7ea26e06f76aef9d">empty</a>() || my_cols.<a class="code" href="a00097.html#8f4f02f530eb3f2e7ea26e06f76aef9d">empty</a>();
+<a name="l00068"></a>00068     }
+<a name="l00069"></a>00069 
+<a name="l00071"></a><a class="code" href="a00099.html#39d69191721c488e737ae5d9c5336b9c">00071</a>     <span class="keywordtype">bool</span> <a class="code" href="a00099.html#39d69191721c488e737ae5d9c5336b9c">is_divisible</a>()<span class="keyword"> const </span>{
+<a name="l00072"></a>00072         <span class="keywordflow">return</span>  my_pages.<a class="code" href="a00097.html#41a58b703d574b6e1ca155df3576f578">is_divisible</a>() || my_rows.<a class="code" href="a00097.html#41a58b703d574b6e1ca155df3576f578">is_divisible</a>() || my_cols.<a class="code" href="a00097.html#41a58b703d574b6e1ca155df3576f578">is_divisible</a>();
+<a name="l00073"></a>00073     }
+<a name="l00074"></a>00074 
+<a name="l00075"></a>00075     <a class="code" href="a00099.html">blocked_range3d</a>( <a class="code" href="a00099.html">blocked_range3d</a>& r, <a class="code" href="a00131.html">split</a> ) : 
+<a name="l00076"></a>00076         my_pages(r.my_pages),
+<a name="l00077"></a>00077         my_rows(r.my_rows),
+<a name="l00078"></a>00078         my_cols(r.my_cols)
+<a name="l00079"></a>00079     {
+<a name="l00080"></a>00080         <span class="keywordflow">if</span>( my_pages.<a class="code" href="a00097.html#9eaa0b6beff1420f688570bbf6b8c462">size</a>()*double(my_rows.<a class="code" href="a00097.html#fcd2e5b8b6c11fd3f20fc0aa9f11bbc2">grainsize</a>()) < my_rows.<a class="code" href="a00097.html#9eaa0b6beff1420f688570bbf6b8c462">size</a>()*double(my_pages.<a class="code" href="a00097.html#fcd2e5b8b6c11fd3f20fc0aa9f11bbc2">grainsize</a>()) ) {
+<a name="l00081"></a>00081             <span class="keywordflow">if</span> ( my_rows.<a class="code" href="a00097.html#9eaa0b6beff1420f688570bbf6b8c462">size</a>()*double(my_cols.<a class="code" href="a00097.html#fcd2e5b8b6c11fd3f20fc0aa9f11bbc2">grainsize</a>()) < my_cols.<a class="code" href="a00097.html#9eaa0b6beff1420f688570bbf6b8c462">size</a>()*double(my_rows.<a class="code" href="a00097.html#fcd2e5b8b6c11fd3f20fc0aa9f11bbc2">grainsize</a>()) ) {
+<a name="l00082"></a>00082                 my_cols.<a class="code" href="a00097.html#e02559f817d8352c7bdf41dfddc53958">my_begin</a> = col_range_type::do_split(r.<a class="code" href="a00099.html#ef7143ddf8f5b1265b5a6d05be00cde5">my_cols</a>);
+<a name="l00083"></a>00083             } <span class="keywordflow">else</span> {
+<a name="l00084"></a>00084                 my_rows.<a class="code" href="a00097.html#e02559f817d8352c7bdf41dfddc53958">my_begin</a> = row_range_type::do_split(r.<a class="code" href="a00099.html#76ead25c280ef630b88a1c8846471707">my_rows</a>);
+<a name="l00085"></a>00085             }
+<a name="l00086"></a>00086         } <span class="keywordflow">else</span> {
+<a name="l00087"></a>00087             <span class="keywordflow">if</span> ( my_pages.<a class="code" href="a00097.html#9eaa0b6beff1420f688570bbf6b8c462">size</a>()*double(my_cols.<a class="code" href="a00097.html#fcd2e5b8b6c11fd3f20fc0aa9f11bbc2">grainsize</a>()) < my_cols.<a class="code" href="a00097.html#9eaa0b6beff1420f688570bbf6b8c462">size</a>()*double(my_pages.<a class="code" href="a00097.html#fcd2e5b8b6c11fd3f20fc0aa9f11bbc2">grainsize</a>()) ) {
+<a name="l00088"></a>00088                 my_cols.<a class="code" href="a00097.html#e02559f817d8352c7bdf41dfddc53958">my_begin</a> = col_range_type::do_split(r.<a class="code" href="a00099.html#ef7143ddf8f5b1265b5a6d05be00cde5">my_cols</a>);
+<a name="l00089"></a>00089             } <span class="keywordflow">else</span> {
+<a name="l00090"></a>00090                     my_pages.<a class="code" href="a00097.html#e02559f817d8352c7bdf41dfddc53958">my_begin</a> = page_range_type::do_split(r.<a class="code" href="a00099.html#b18ae46a01d42745078d9e287ab87baa">my_pages</a>);
+<a name="l00091"></a>00091             }
+<a name="l00092"></a>00092         }
+<a name="l00093"></a>00093     }
+<a name="l00094"></a>00094 
+<a name="l00096"></a><a class="code" href="a00099.html#cf971430aa12361d3ed245344b7c6764">00096</a>     <span class="keyword">const</span> <a class="code" href="a00097.html">page_range_type</a>& <a class="code" href="a00099.html#cf971430aa12361d3ed245344b7c6764">pages</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_pages;}
+<a name="l00097"></a>00097 
+<a name="l00099"></a><a class="code" href="a00099.html#1584623e59ff32a8aa82006827508be4">00099</a>     <span class="keyword">const</span> <a class="code" href="a00097.html">row_range_type</a>& <a class="code" href="a00099.html#1584623e59ff32a8aa82006827508be4">rows</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_rows;}
+<a name="l00100"></a>00100 
+<a name="l00102"></a><a class="code" href="a00099.html#3336ba9480fd6c43e158f9beb024c050">00102</a>     <span class="keyword">const</span> <a class="code" href="a00097.html">col_range_type</a>& <a class="code" href="a00099.html#3336ba9480fd6c43e158f9beb024c050">cols</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_cols;}
+<a name="l00103"></a>00103 
+<a name="l00104"></a>00104 };
+<a name="l00105"></a>00105 
+<a name="l00106"></a>00106 } <span class="comment">// namespace tbb </span>
+<a name="l00107"></a>00107 
+<a name="l00108"></a>00108 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_blocked_range3d_H */</span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00203.html b/doc/html/a00203.html
index d688798..03ac18f 100644
--- a/doc/html/a00203.html
+++ b/doc/html/a00203.html
@@ -1,67 +1,138 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor Class Reference</title>
+<title>cache_aligned_allocator.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor Class Reference</h1>Combines data access, locking, and garbage collection.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00329.html">concurrent_hash_map.h</a>></code>
-<p>
-Inherited by <a class="el" href="a00202.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>.
-<p>
-Inheritance diagram for tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00028.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w0" doxytag="tbb::concurrent_hash_map::const_accessor::value_type"></a>
-typedef const std::pair< const <br>
-Key, T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00203.html#w0">value_type</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Type of value. <br></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::concurrent_hash_map::const_accessor::empty"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00203.html#a0">empty</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">True if result is empty. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::concurrent_hash_map::const_accessor::release"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00203.html#a1">release</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set to null. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::concurrent_hash_map::const_accessor::operator *"></a>
-const_reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00203.html#a2">operator *</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return reference to associated value in hash table. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::concurrent_hash_map::const_accessor::operator->"></a>
-const_pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00203.html#a3">operator-></a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return pointer to associated value in hash table. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::concurrent_hash_map::const_accessor::const_accessor"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00203.html#a4">const_accessor</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create empty result. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::concurrent_hash_map::const_accessor::~const_accessor"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00203.html#a5">~const_accessor</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroy result after releasing the underlying reference. <br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::concurrent_hash_map::const_accessor::concurrent_hash_map<Key,T,HashCompare,A>"></a>
-class </td><td class="memItemRight" valign="bottom"><b>concurrent_hash_map<Key,T,HashCompare,A></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n1" doxytag="tbb::concurrent_hash_map::const_accessor::accessor"></a>
-class </td><td class="memItemRight" valign="bottom"><b>accessor</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Key, typename T, typename HashCompare, typename A><br>
- class tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</h3>
-
-Combines data access, locking, and garbage collection. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00329.html">concurrent_hash_map.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>cache_aligned_allocator.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_cache_aligned_allocator_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_cache_aligned_allocator_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <new></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "tbb_stddef.h"</span>
+<a name="l00026"></a>00026 
+<a name="l00027"></a>00027 <span class="keyword">namespace </span>tbb {
+<a name="l00028"></a>00028 
+<a name="l00030"></a>00030 <span class="keyword">namespace </span>internal {
+<a name="l00032"></a>00032 
+<a name="l00035"></a>00035     <span class="keyword">const</span> size_t NFS_MaxLineSize = 128;
+<a name="l00036"></a>00036 
+<a name="l00038"></a>00038 
+<a name="l00039"></a>00039     size_t __TBB_EXPORTED_FUNC NFS_GetLineSize();
+<a name="l00040"></a>00040 
+<a name="l00042"></a>00042 
+<a name="l00043"></a>00043     <span class="keywordtype">void</span>* __TBB_EXPORTED_FUNC NFS_Allocate( size_t n_element, size_t element_size, <span class="keywordtype">void</span>* hint );
+<a name="l00044"></a>00044 
+<a name="l00046"></a>00046 
+<a name="l00048"></a>00048     <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC NFS_Free( <span class="keywordtype">void</span>* );
+<a name="l00049"></a>00049 }
+<a name="l00051"></a>00051 
+<a name="l00052"></a>00052 <span class="preprocessor">#if _MSC_VER && !defined(__INTEL_COMPILER)</span>
+<a name="l00053"></a>00053 <span class="preprocessor"></span>    <span class="comment">// Workaround for erroneous "unreferenced parameter" warning in method destroy.</span>
+<a name="l00054"></a>00054 <span class="preprocessor">    #pragma warning (push)</span>
+<a name="l00055"></a>00055 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (disable: 4100)</span>
+<a name="l00056"></a>00056 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00057"></a>00057 <span class="preprocessor"></span>
+<a name="l00059"></a>00059 
+<a name="l00062"></a>00062 <span class="keyword">template</span><<span class="keyword">typename</span> T>
+<a name="l00063"></a><a class="code" href="a00100.html">00063</a> <span class="keyword">class </span><a class="code" href="a00100.html">cache_aligned_allocator</a> {
+<a name="l00064"></a>00064 <span class="keyword">public</span>:
+<a name="l00065"></a>00065     <span class="keyword">typedef</span> <span class="keyword">typename</span> internal::allocator_type<T>::value_type value_type;
+<a name="l00066"></a>00066     <span class="keyword">typedef</span> value_type* pointer;
+<a name="l00067"></a>00067     <span class="keyword">typedef</span> <span class="keyword">const</span> value_type* const_pointer;
+<a name="l00068"></a>00068     <span class="keyword">typedef</span> value_type& reference;
+<a name="l00069"></a>00069     <span class="keyword">typedef</span> <span class="keyword">const</span> value_type& const_reference;
+<a name="l00070"></a>00070     <span class="keyword">typedef</span> size_t size_type;
+<a name="l00071"></a>00071     <span class="keyword">typedef</span> ptrdiff_t difference_type;
+<a name="l00072"></a>00072     <span class="keyword">template</span><<span class="keyword">typename</span> U> <span class="keyword">struct </span>rebind {
+<a name="l00073"></a>00073         <span class="keyword">typedef</span> <a class="code" href="a00100.html">cache_aligned_allocator<U></a> other;
+<a name="l00074"></a>00074     };
+<a name="l00075"></a>00075 
+<a name="l00076"></a>00076     <a class="code" href="a00100.html">cache_aligned_allocator</a>() <span class="keywordflow">throw</span>() {}
+<a name="l00077"></a>00077     <a class="code" href="a00100.html">cache_aligned_allocator</a>( <span class="keyword">const</span> <a class="code" href="a00100.html">cache_aligned_allocator</a>& ) <span class="keywordflow">throw</span>() {}
+<a name="l00078"></a>00078     <span class="keyword">template</span><<span class="keyword">typename</span> U> <a class="code" href="a00100.html">cache_aligned_allocator</a>(<span class="keyword">const</span> <a class="code" href="a00100.html">cache_aligned_allocator<U></a>&) <span class="keywordflow">throw</span>() {}
+<a name="l00079"></a>00079 
+<a name="l00080"></a>00080     pointer address(reference x)<span class="keyword"> const </span>{<span class="keywordflow">return</span> &x;}
+<a name="l00081"></a>00081     const_pointer address(const_reference x)<span class="keyword"> const </span>{<span class="keywordflow">return</span> &x;}
+<a name="l00082"></a>00082     
+<a name="l00084"></a><a class="code" href="a00100.html#4cdeea67af6c1fcd8f1d5e9c4cab61e8">00084</a>     pointer <a class="code" href="a00100.html#4cdeea67af6c1fcd8f1d5e9c4cab61e8">allocate</a>( size_type n, <span class="keyword">const</span> <span class="keywordtype">void</span>* hint=0 ) {
+<a name="l00085"></a>00085         <span class="comment">// The "hint" argument is always ignored in NFS_Allocate thus const_cast shouldn't hurt</span>
+<a name="l00086"></a>00086         <span class="keywordflow">return</span> pointer(internal::NFS_Allocate( n, <span class="keyword">sizeof</span>(value_type), const_cast<void*>(hint) ));
+<a name="l00087"></a>00087     }
+<a name="l00088"></a>00088 
+<a name="l00090"></a><a class="code" href="a00100.html#3d4eadf188f7d85d3805ae534e0b8e1c">00090</a>     <span class="keywordtype">void</span> <a class="code" href="a00100.html#3d4eadf188f7d85d3805ae534e0b8e1c">deallocate</a>( pointer p, size_type ) {
+<a name="l00091"></a>00091         internal::NFS_Free(p);
+<a name="l00092"></a>00092     }
+<a name="l00093"></a>00093 
+<a name="l00095"></a><a class="code" href="a00100.html#fb23b687b4c0429dab4c7f8017266cf0">00095</a>     size_type <a class="code" href="a00100.html#fb23b687b4c0429dab4c7f8017266cf0">max_size</a>() const throw() {
+<a name="l00096"></a>00096         <span class="keywordflow">return</span> (~size_t(0)-internal::NFS_MaxLineSize)/<span class="keyword">sizeof</span>(value_type);
+<a name="l00097"></a>00097     }
+<a name="l00098"></a>00098 
+<a name="l00100"></a><a class="code" href="a00100.html#958ee8745c86c275bfc9533af565e017">00100</a>     <span class="keywordtype">void</span> <a class="code" href="a00100.html#958ee8745c86c275bfc9533af565e017">construct</a>( pointer p, <span class="keyword">const</span> value_type& value ) {<span class="keyword">new</span>(static_cast<void*>(p)) value_type(value);}
+<a name="l00101"></a>00101 
+<a name="l00103"></a><a class="code" href="a00100.html#cd298895a4f1654b5149ec84b591ecb5">00103</a>     <span class="keywordtype">void</span> <a class="code" href="a00100.html#cd298895a4f1654b5149ec84b591ecb5">destroy</a>( pointer p ) {p->~value_type();}
+<a name="l00104"></a>00104 };
+<a name="l00105"></a>00105 
+<a name="l00106"></a>00106 <span class="preprocessor">#if _MSC_VER && !defined(__INTEL_COMPILER)</span>
+<a name="l00107"></a>00107 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (pop)</span>
+<a name="l00108"></a>00108 <span class="preprocessor"></span><span class="preprocessor">#endif // warning 4100 is back</span>
+<a name="l00109"></a>00109 <span class="preprocessor"></span>
+<a name="l00111"></a>00111 
+<a name="l00112"></a>00112 <span class="keyword">template</span><> 
+<a name="l00113"></a><a class="code" href="a00101.html">00113</a> <span class="keyword">class </span><a class="code" href="a00100.html">cache_aligned_allocator</a><void> {
+<a name="l00114"></a>00114 <span class="keyword">public</span>:
+<a name="l00115"></a>00115     <span class="keyword">typedef</span> <span class="keywordtype">void</span>* pointer;
+<a name="l00116"></a>00116     <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="keywordtype">void</span>* const_pointer;
+<a name="l00117"></a>00117     <span class="keyword">typedef</span> <span class="keywordtype">void</span> value_type;
+<a name="l00118"></a>00118     <span class="keyword">template</span><<span class="keyword">typename</span> U> <span class="keyword">struct </span>rebind {
+<a name="l00119"></a>00119         <span class="keyword">typedef</span> <a class="code" href="a00100.html">cache_aligned_allocator<U></a> other;
+<a name="l00120"></a>00120     };
+<a name="l00121"></a>00121 };
+<a name="l00122"></a>00122 
+<a name="l00123"></a>00123 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00124"></a>00124 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator==( <span class="keyword">const</span> <a class="code" href="a00100.html">cache_aligned_allocator<T></a>&, <span class="keyword">const</span> <a class="code" href="a00100.html">cache_aligned_allocator<U></a>& ) {<span class="keywordflow">return</span> <span class="keyword">true</span>;}
+<a name="l00125"></a>00125 
+<a name="l00126"></a>00126 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00127"></a>00127 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator!=( <span class="keyword">const</span> cache_aligned_allocator<T>&, <span class="keyword">const</span> cache_aligned_allocator<U>& ) {<span class="keywordflow">return</span> <span class="keyword">false</span>;}
+<a name="l00128"></a>00128 
+<a name="l00129"></a>00129 } <span class="comment">// namespace tbb</span>
+<a name="l00130"></a>00130 
+<a name="l00131"></a>00131 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_cache_aligned_allocator_H */</span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00204.html b/doc/html/a00204.html
deleted file mode 100644
index b7e3d7a..0000000
--- a/doc/html/a00204.html
+++ /dev/null
@@ -1,337 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::concurrent_queue< T, A > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::concurrent_queue< T, A > Class Template Reference</h1>A high-performance thread-safe queue.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00330.html">concurrent_queue.h</a>></code>
-<p>
-Inherits <a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a>.
-<p>
-Inheritance diagram for tbb::concurrent_queue< T, A >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00037.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w0" doxytag="tbb::concurrent_queue::value_type"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00204.html#w0">value_type</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Element type in the queue. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w1" doxytag="tbb::concurrent_queue::allocator_type"></a>
-typedef A </td><td class="memItemRight" valign="bottom"><a class="el" href="a00204.html#w1">allocator_type</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allocator type. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w2" doxytag="tbb::concurrent_queue::reference"></a>
-typedef T & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00204.html#w2">reference</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Reference type. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w3" doxytag="tbb::concurrent_queue::const_reference"></a>
-typedef const T & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00204.html#w3">const_reference</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Const reference type. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::ptrdiff_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00204.html#w4">size_type</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Integral type for representing size of the queue.  <a href="#w4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w5" doxytag="tbb::concurrent_queue::difference_type"></a>
-typedef std::ptrdiff_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00204.html#w5">difference_type</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Difference type for iterator. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w6" doxytag="tbb::concurrent_queue::iterator"></a>
-typedef <a class="el" href="a00207.html">internal::concurrent_queue_iterator</a><<br>
- <a class="el" href="a00204.html">concurrent_queue</a>, T > </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w7" doxytag="tbb::concurrent_queue::const_iterator"></a>
-typedef <a class="el" href="a00207.html">internal::concurrent_queue_iterator</a><<br>
- <a class="el" href="a00204.html">concurrent_queue</a>, const T > </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
-
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::concurrent_queue::concurrent_queue"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00204.html#a0">concurrent_queue</a> (const <a class="el" href="a00204.html#w1">allocator_type</a> &a=<a class="el" href="a00204.html#w1">allocator_type</a>())</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct empty queue. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::concurrent_queue::~concurrent_queue"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00204.html#a1">~concurrent_queue</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroy queue. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::concurrent_queue::push"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00204.html#a2">push</a> (const T &source)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Enqueue an item at tail of queue. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00204.html#a3">pop</a> (T &destination)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Dequeue item from head of queue.  <a href="#a3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00204.html#a4">push_if_not_full</a> (const T &source)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Enqueue an item at tail of queue if queue is not already full.  <a href="#a4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00204.html#a5">pop_if_present</a> (T &destination)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Attempt to dequeue an item from head of queue.  <a href="#a5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00204.html#w4">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00204.html#a6">size</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return number of pushes minus number of pops.  <a href="#a6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a7" doxytag="tbb::concurrent_queue::empty"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00204.html#a7">empty</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Equivalent to <a class="el" href="a00204.html#a6">size()</a><=0. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a8" doxytag="tbb::concurrent_queue::capacity"></a>
-<a class="el" href="a00204.html#w4">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00204.html#a8">capacity</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Maximum number of allowed elements. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00204.html#a9">set_capacity</a> (<a class="el" href="a00204.html#w4">size_type</a> capacity)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the capacity.  <a href="#a9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a10" doxytag="tbb::concurrent_queue::get_allocator"></a>
-<a class="el" href="a00204.html#w1">allocator_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00204.html#a10">get_allocator</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">return allocator object <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a11" doxytag="tbb::concurrent_queue::clear"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00204.html#a11">clear</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">clear the queue. not thread-safe. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a12" doxytag="tbb::concurrent_queue::begin"></a>
-<a class="el" href="a00207.html">iterator</a> </td><td class="memItemRight" valign="bottom"><b>begin</b> ()</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a13" doxytag="tbb::concurrent_queue::end"></a>
-<a class="el" href="a00207.html">iterator</a> </td><td class="memItemRight" valign="bottom"><b>end</b> ()</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a14" doxytag="tbb::concurrent_queue::begin"></a>
-<a class="el" href="a00207.html">const_iterator</a> </td><td class="memItemRight" valign="bottom"><b>begin</b> () const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a15" doxytag="tbb::concurrent_queue::end"></a>
-<a class="el" href="a00207.html">const_iterator</a> </td><td class="memItemRight" valign="bottom"><b>end</b> () const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a16" doxytag="tbb::concurrent_queue::concurrent_queue"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00204.html#a16">concurrent_queue</a> (const <a class="el" href="a00204.html">concurrent_queue</a> &src, const <a class="el" href="a00204.html#w1">allocator_type</a> &a=<a class="el" href="a00204.html#w1">allocator_type</a>())</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a17" doxytag="tbb::concurrent_queue::concurrent_queue"></a>
-template<typename InputIterator> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00204.html#a17">concurrent_queue</a> (InputIterator begin, InputIterator end, const <a class="el" href="a00204.html#w1">allocator_type</a> &a=<a class="el" href="a00204.html#w1">allocator_type</a>())</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">[begin,end) constructor <br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::concurrent_queue::internal::concurrent_queue_iterator"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::concurrent_queue_iterator</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename T, class A><br>
- class tbb::concurrent_queue< T, A ></h3>
-
-A high-performance thread-safe queue. 
-<p>
-Multiple threads may each push and pop concurrently. Assignment and copy construction are not allowed. 
-<p>
-<hr><h2>Member Typedef Documentation</h2>
-<a class="anchor" name="w4" doxytag="tbb::concurrent_queue::size_type"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename T, class A> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">typedef std::ptrdiff_t <a class="el" href="a00204.html">tbb::concurrent_queue</a>< T, A >::<a class="el" href="a00204.html#w4">size_type</a>          </td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Integral type for representing size of the queue. 
-<p>
-Notice that the size_type is a signed integral type. This is because the size can be negative if there are pending pops without corresponding pushes.     </td>
-  </tr>
-</table>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="a3" doxytag="tbb::concurrent_queue::pop"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename T, class A> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">void <a class="el" href="a00204.html">tbb::concurrent_queue</a>< T, A >::pop           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">T & </td>
-          <td class="mdname1" valign="top" nowrap> <em>destination</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Dequeue item from head of queue. 
-<p>
-Block until an item becomes available, and then dequeue it.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a5" doxytag="tbb::concurrent_queue::pop_if_present"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename T, class A> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">bool <a class="el" href="a00204.html">tbb::concurrent_queue</a>< T, A >::pop_if_present           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">T & </td>
-          <td class="mdname1" valign="top" nowrap> <em>destination</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Attempt to dequeue an item from head of queue. 
-<p>
-Does not wait for item to become available. Returns true if successful; false otherwise.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a4" doxytag="tbb::concurrent_queue::push_if_not_full"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename T, class A> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">bool <a class="el" href="a00204.html">tbb::concurrent_queue</a>< T, A >::push_if_not_full           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">const T & </td>
-          <td class="mdname1" valign="top" nowrap> <em>source</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Enqueue an item at tail of queue if queue is not already full. 
-<p>
-Does not wait for queue to become not full. Returns true if item is pushed; false if queue was already full.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a9" doxytag="tbb::concurrent_queue::set_capacity"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename T, class A> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">void <a class="el" href="a00204.html">tbb::concurrent_queue</a>< T, A >::set_capacity           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top"><a class="el" href="a00204.html#w4">size_type</a> </td>
-          <td class="mdname1" valign="top" nowrap> <em>capacity</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Set the capacity. 
-<p>
-Setting the capacity to 0 causes subsequent push_if_not_full operations to always fail, and subsequent push operations to block forever.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a6" doxytag="tbb::concurrent_queue::size"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename T, class A> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top"><a class="el" href="a00204.html#w4">size_type</a> <a class="el" href="a00204.html">tbb::concurrent_queue</a>< T, A >::size           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap> const<code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Return number of pushes minus number of pops. 
-<p>
-Note that the result can be negative if there are pops waiting for the corresponding pushes. The result can also exceed <a class="el" href="a00204.html#a8">capacity()</a> if there are push operations in flight.     </td>
-  </tr>
-</table>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00330.html">concurrent_queue.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00205.html b/doc/html/a00205.html
index 0a0f91c..ed5d36b 100644
--- a/doc/html/a00205.html
+++ b/doc/html/a00205.html
@@ -1,137 +1,940 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::concurrent_queue_base_v3 Class Reference</title>
+<title>concurrent_hash_map.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::concurrent_queue_base_v3 Class Reference</h1>For internal use only.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00330.html">concurrent_queue.h</a>></code>
-<p>
-Inherits <a class="el" href="a00230.html">tbb::internal::no_copy</a>.
-<p>
-Inherited by <a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a>.
-<p>
-Inheritance diagram for tbb::internal::concurrent_queue_base_v3:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00033.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b0" doxytag="tbb::internal::concurrent_queue_base_v3::concurrent_queue_base_v3"></a>
-__TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>concurrent_queue_base_v3</b> (size_t <a class="el" href="a00205.html#p2">item_size</a>)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b2" doxytag="tbb::internal::concurrent_queue_base_v3::internal_push"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00205.html#b2">internal_push</a> (const void *src)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Enqueue item at tail of queue. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b3" doxytag="tbb::internal::concurrent_queue_base_v3::internal_pop"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00205.html#b3">internal_pop</a> (void *dst)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Dequeue item from head of queue. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b4" doxytag="tbb::internal::concurrent_queue_base_v3::internal_push_if_not_full"></a>
-bool __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00205.html#b4">internal_push_if_not_full</a> (const void *src)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Attempt to enqueue item onto queue. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00205.html#b5">internal_pop_if_present</a> (void *dst)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Attempt to dequeue item from queue.  <a href="#b5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b6" doxytag="tbb::internal::concurrent_queue_base_v3::internal_size"></a>
-ptrdiff_t __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00205.html#b6">internal_size</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get size of queue. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b7" doxytag="tbb::internal::concurrent_queue_base_v3::internal_set_capacity"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00205.html#b7">internal_set_capacity</a> (ptrdiff_t capacity, size_t element_size)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">set the queue capacity <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b8" doxytag="tbb::internal::concurrent_queue_base_v3::allocate_page"></a>
-virtual <a class="el" href="a00206.html">page</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00205.html#b8">allocate_page</a> ()=0</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">custom allocator <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b9" doxytag="tbb::internal::concurrent_queue_base_v3::deallocate_page"></a>
-virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00205.html#b9">deallocate_page</a> (<a class="el" href="a00206.html">page</a> *p)=0</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">custom de-allocator <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b10" doxytag="tbb::internal::concurrent_queue_base_v3::internal_finish_clear"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00205.html#b10">internal_finish_clear</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">free any remaining pages <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b11" doxytag="tbb::internal::concurrent_queue_base_v3::internal_throw_exception"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00205.html#b11">internal_throw_exception</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">throw an exception <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b12" doxytag="tbb::internal::concurrent_queue_base_v3::assign"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00205.html#b12">assign</a> (const <a class="el" href="a00205.html">concurrent_queue_base_v3</a> &src)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">copy internal representation <br></td></tr>
-<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="p0" doxytag="tbb::internal::concurrent_queue_base_v3::my_capacity"></a>
-ptrdiff_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00205.html#p0">my_capacity</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Capacity of the queue. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="p1" doxytag="tbb::internal::concurrent_queue_base_v3::items_per_page"></a>
-size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00205.html#p1">items_per_page</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Always a power of 2. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="p2" doxytag="tbb::internal::concurrent_queue_base_v3::item_size"></a>
-size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00205.html#p2">item_size</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Size of an item. <br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::internal::concurrent_queue_base_v3::concurrent_queue_rep"></a>
-class </td><td class="memItemRight" valign="bottom"><b>concurrent_queue_rep</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n1" doxytag="tbb::internal::concurrent_queue_base_v3::micro_queue"></a>
-struct </td><td class="memItemRight" valign="bottom"><b>micro_queue</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n2" doxytag="tbb::internal::concurrent_queue_base_v3::micro_queue_pop_finalizer"></a>
-class </td><td class="memItemRight" valign="bottom"><b>micro_queue_pop_finalizer</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n3" doxytag="tbb::internal::concurrent_queue_base_v3::concurrent_queue_iterator_rep"></a>
-class </td><td class="memItemRight" valign="bottom"><b>concurrent_queue_iterator_rep</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n4" doxytag="tbb::internal::concurrent_queue_base_v3::concurrent_queue_iterator_base_v3"></a>
-class </td><td class="memItemRight" valign="bottom"><b>concurrent_queue_iterator_base_v3</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-For internal use only. 
-<p>
-Type-independent portion of <a class="el" href="a00204.html">concurrent_queue</a>. 
-<p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="b5" doxytag="tbb::internal::concurrent_queue_base_v3::internal_pop_if_present"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">bool __TBB_EXPORTED_METHOD tbb::internal::concurrent_queue_base_v3::internal_pop_if_present           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">void * </td>
-          <td class="mdname1" valign="top" nowrap> <em>dst</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [protected]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Attempt to dequeue item from queue. 
-<p>
-NULL if there was no item to dequeue.     </td>
-  </tr>
-</table>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00330.html">concurrent_queue.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>concurrent_hash_map.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_concurrent_hash_map_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_concurrent_hash_map_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <stdexcept></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include <iterator></span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include <utility></span>      <span class="comment">// Need std::pair</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include <cstring></span>      <span class="comment">// Need std::memset</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include <string></span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include "tbb_stddef.h"</span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include "cache_aligned_allocator.h"</span>
+<a name="l00031"></a>00031 <span class="preprocessor">#include "tbb_allocator.h"</span>
+<a name="l00032"></a>00032 <span class="preprocessor">#include "spin_rw_mutex.h"</span>
+<a name="l00033"></a>00033 <span class="preprocessor">#include "atomic.h"</span>
+<a name="l00034"></a>00034 <span class="preprocessor">#if TBB_USE_PERFORMANCE_WARNINGS</span>
+<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#include <typeinfo></span>
+<a name="l00036"></a>00036 <span class="preprocessor">#endif</span>
+<a name="l00037"></a>00037 <span class="preprocessor"></span>
+<a name="l00038"></a>00038 <span class="keyword">namespace </span>tbb {
+<a name="l00039"></a>00039 
+<a name="l00040"></a>00040 <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">struct </span>tbb_hash_compare;
+<a name="l00041"></a>00041 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare = tbb_hash_compare<Key>, <span class="keyword">typename</span> A = tbb_allocator<std::pair<Key, T> > >
+<a name="l00042"></a>00042 <span class="keyword">class </span>concurrent_hash_map;
+<a name="l00043"></a>00043 
+<a name="l00045"></a>00045 <span class="keyword">namespace </span>internal {
+<a name="l00047"></a>00047     <span class="keyword">typedef</span> size_t hashcode_t;
+<a name="l00049"></a>00049     <span class="keyword">class </span>hash_map_base {
+<a name="l00050"></a>00050     <span class="keyword">public</span>:
+<a name="l00051"></a>00051         <span class="comment">// Mutex types for each layer of the container</span>
+<a name="l00052"></a>00052         <span class="keyword">typedef</span> spin_rw_mutex node_mutex_t;
+<a name="l00053"></a>00053         <span class="keyword">typedef</span> spin_rw_mutex chain_mutex_t;
+<a name="l00054"></a>00054         <span class="keyword">typedef</span> spin_rw_mutex segment_mutex_t;
+<a name="l00055"></a>00055 
+<a name="l00057"></a>00057         <span class="keyword">typedef</span> internal::hashcode_t hashcode_t;
+<a name="l00059"></a>00059         <span class="keyword">static</span> <span class="keyword">const</span> size_t n_segment_bits = 6;
+<a name="l00061"></a>00061         <span class="keyword">static</span> <span class="keyword">const</span> size_t n_segment = size_t(1)<<n_segment_bits; 
+<a name="l00063"></a>00063         <span class="keyword">static</span> <span class="keyword">const</span> size_t max_physical_size = size_t(1)<<(8*<span class="keyword">sizeof</span>(hashcode_t)-n_segment_bits);
+<a name="l00064"></a>00064     };
+<a name="l00065"></a>00065 
+<a name="l00066"></a>00066     <span class="keyword">template</span><<span class="keyword">typename</span> Iterator>
+<a name="l00067"></a>00067     <span class="keyword">class </span>hash_map_range;
+<a name="l00068"></a>00068 
+<a name="l00069"></a>00069     <span class="keyword">struct </span>hash_map_segment_base {
+<a name="l00071"></a>00071         hash_map_base::segment_mutex_t my_mutex;
+<a name="l00072"></a>00072 
+<a name="l00073"></a>00073         <span class="comment">// Number of nodes</span>
+<a name="l00074"></a>00074         atomic<size_t> my_logical_size;
+<a name="l00075"></a>00075 
+<a name="l00076"></a>00076         <span class="comment">// Size of chains</span>
+<a name="l00078"></a>00078 <span class="comment"></span>        size_t my_physical_size;
+<a name="l00079"></a>00079 
+<a name="l00081"></a>00081 
+<a name="l00082"></a>00082         <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD internal_grow_predicate() <span class="keyword">const</span>;
+<a name="l00083"></a>00083     };
+<a name="l00084"></a>00084 
+<a name="l00086"></a>00086 
+<a name="l00088"></a>00088     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> Value>
+<a name="l00089"></a>00089     <span class="keyword">class </span>hash_map_iterator
+<a name="l00090"></a>00090         : <span class="keyword">public</span> std::iterator<std::forward_iterator_tag,Value>
+<a name="l00091"></a>00091     {
+<a name="l00092"></a>00092         <span class="keyword">typedef</span> <span class="keyword">typename</span> Container::node node;
+<a name="l00093"></a>00093         <span class="keyword">typedef</span> <span class="keyword">typename</span> Container::chain chain;
+<a name="l00094"></a>00094         <span class="keyword">typedef</span> <span class="keyword">typename</span> Container::segment segment;
+<a name="l00095"></a>00095 
+<a name="l00097"></a>00097         Container* my_table;
+<a name="l00098"></a>00098 
+<a name="l00100"></a>00100         node* my_node;
+<a name="l00101"></a>00101 
+<a name="l00103"></a>00103         size_t my_array_index;
+<a name="l00104"></a>00104 
+<a name="l00106"></a>00106         size_t my_segment_index;
+<a name="l00107"></a>00107 
+<a name="l00108"></a>00108         <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00109"></a>00109         <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator==( <span class="keyword">const</span> hash_map_iterator<C,T>& i, <span class="keyword">const</span> hash_map_iterator<C,U>& j );
+<a name="l00110"></a>00110 
+<a name="l00111"></a>00111         <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00112"></a>00112         <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator!=( <span class="keyword">const</span> hash_map_iterator<C,T>& i, <span class="keyword">const</span> hash_map_iterator<C,U>& j );
+<a name="l00113"></a>00113 
+<a name="l00114"></a>00114         <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00115"></a>00115         <span class="keyword">friend</span> ptrdiff_t operator-( <span class="keyword">const</span> hash_map_iterator<C,T>& i, <span class="keyword">const</span> hash_map_iterator<C,U>& j );
+<a name="l00116"></a>00116     
+<a name="l00117"></a>00117         <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> U>
+<a name="l00118"></a>00118         <span class="keyword">friend</span> <span class="keyword">class </span>internal::hash_map_iterator;
+<a name="l00119"></a>00119 
+<a name="l00120"></a>00120         <span class="keyword">template</span><<span class="keyword">typename</span> I>
+<a name="l00121"></a>00121         <span class="keyword">friend</span> <span class="keyword">class </span>internal::hash_map_range;
+<a name="l00122"></a>00122 
+<a name="l00123"></a>00123         <span class="keywordtype">void</span> advance_to_next_node() {
+<a name="l00124"></a>00124             size_t i = my_array_index+1;
+<a name="l00125"></a>00125             <span class="keywordflow">do</span> {
+<a name="l00126"></a>00126                 segment &s = my_table->my_segment[my_segment_index];
+<a name="l00127"></a>00127                 <span class="keywordflow">while</span>( i<s.my_physical_size ) {
+<a name="l00128"></a>00128                     my_node = s.my_array[i].node_list;
+<a name="l00129"></a>00129                     <span class="keywordflow">if</span>( my_node ) <span class="keywordflow">goto</span> done;
+<a name="l00130"></a>00130                     ++i;
+<a name="l00131"></a>00131                 }
+<a name="l00132"></a>00132                 i = 0;
+<a name="l00133"></a>00133             } <span class="keywordflow">while</span>( ++my_segment_index<my_table->n_segment );
+<a name="l00134"></a>00134         done:
+<a name="l00135"></a>00135             my_array_index = i;
+<a name="l00136"></a>00136         }
+<a name="l00137"></a>00137 <span class="preprocessor">#if !defined(_MSC_VER) || defined(__INTEL_COMPILER)</span>
+<a name="l00138"></a>00138 <span class="preprocessor"></span>        <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
+<a name="l00139"></a>00139         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00103.html">tbb::concurrent_hash_map</a>;
+<a name="l00140"></a>00140 <span class="preprocessor">#else</span>
+<a name="l00141"></a>00141 <span class="preprocessor"></span>    <span class="keyword">public</span>: <span class="comment">// workaround</span>
+<a name="l00142"></a>00142 <span class="preprocessor">#endif</span>
+<a name="l00143"></a>00143 <span class="preprocessor"></span>        hash_map_iterator( <span class="keyword">const</span> Container& table, size_t segment_index, size_t array_index=0, node* b=NULL );
+<a name="l00144"></a>00144     <span class="keyword">public</span>:
+<a name="l00146"></a>00146         hash_map_iterator() {}
+<a name="l00147"></a>00147         hash_map_iterator( <span class="keyword">const</span> hash_map_iterator<Container,typename Container::value_type>& other ) :
+<a name="l00148"></a>00148             my_table(other.my_table),
+<a name="l00149"></a>00149             my_node(other.my_node),
+<a name="l00150"></a>00150             my_array_index(other.my_array_index),
+<a name="l00151"></a>00151             my_segment_index(other.my_segment_index)
+<a name="l00152"></a>00152         {}
+<a name="l00153"></a>00153         Value& operator*()<span class="keyword"> const </span>{
+<a name="l00154"></a>00154             __TBB_ASSERT( my_node, <span class="stringliteral">"iterator uninitialized or at end of container?"</span> );
+<a name="l00155"></a>00155             <span class="keywordflow">return</span> my_node->item;
+<a name="l00156"></a>00156         }
+<a name="l00157"></a>00157         Value* operator->()<span class="keyword"> const </span>{<span class="keywordflow">return</span> &operator*();}
+<a name="l00158"></a>00158         hash_map_iterator& operator++();
+<a name="l00159"></a>00159         
+<a name="l00161"></a>00161         Value* operator++(<span class="keywordtype">int</span>) {
+<a name="l00162"></a>00162             Value* result = &operator*();
+<a name="l00163"></a>00163             operator++();
+<a name="l00164"></a>00164             <span class="keywordflow">return</span> result;
+<a name="l00165"></a>00165         }
+<a name="l00166"></a>00166     };
+<a name="l00167"></a>00167 
+<a name="l00168"></a>00168     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> Value>
+<a name="l00169"></a>00169     hash_map_iterator<Container,Value>::hash_map_iterator( <span class="keyword">const</span> Container& table, size_t segment_index, size_t array_index, node* b ) : 
+<a name="l00170"></a>00170         my_table(const_cast<Container*>(&table)),
+<a name="l00171"></a>00171         my_node(b),
+<a name="l00172"></a>00172         my_array_index(array_index),
+<a name="l00173"></a>00173         my_segment_index(segment_index)
+<a name="l00174"></a>00174     {
+<a name="l00175"></a>00175         <span class="keywordflow">if</span>( segment_index<my_table->n_segment ) {
+<a name="l00176"></a>00176             <span class="keywordflow">if</span>( !my_node ) {
+<a name="l00177"></a>00177                 segment &s = my_table->my_segment[segment_index];
+<a name="l00178"></a>00178                 chain* first_chain = s.my_array;
+<a name="l00179"></a>00179                 <span class="keywordflow">if</span>( first_chain && my_array_index < s.my_physical_size)
+<a name="l00180"></a>00180                     my_node = first_chain[my_array_index].node_list;
+<a name="l00181"></a>00181             }
+<a name="l00182"></a>00182             <span class="keywordflow">if</span>( !my_node ) advance_to_next_node();
+<a name="l00183"></a>00183         }
+<a name="l00184"></a>00184     }
+<a name="l00185"></a>00185 
+<a name="l00186"></a>00186     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> Value>
+<a name="l00187"></a>00187     hash_map_iterator<Container,Value>& hash_map_iterator<Container,Value>::operator++() {
+<a name="l00188"></a>00188         my_node=my_node->next;
+<a name="l00189"></a>00189         <span class="keywordflow">if</span>( !my_node ) advance_to_next_node();
+<a name="l00190"></a>00190         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00191"></a>00191     }
+<a name="l00192"></a>00192 
+<a name="l00193"></a>00193     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00194"></a>00194     <span class="keywordtype">bool</span> operator==( <span class="keyword">const</span> hash_map_iterator<Container,T>& i, <span class="keyword">const</span> hash_map_iterator<Container,U>& j ) {
+<a name="l00195"></a>00195         <span class="keywordflow">return</span> i.my_node==j.my_node;
+<a name="l00196"></a>00196     }
+<a name="l00197"></a>00197 
+<a name="l00198"></a>00198     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00199"></a>00199     <span class="keywordtype">bool</span> operator!=( <span class="keyword">const</span> hash_map_iterator<Container,T>& i, <span class="keyword">const</span> hash_map_iterator<Container,U>& j ) {
+<a name="l00200"></a>00200         <span class="keywordflow">return</span> i.my_node!=j.my_node;
+<a name="l00201"></a>00201     }
+<a name="l00202"></a>00202 
+<a name="l00204"></a>00204 
+<a name="l00205"></a>00205     <span class="keyword">template</span><<span class="keyword">typename</span> Iterator>
+<a name="l00206"></a>00206     <span class="keyword">class </span>hash_map_range {
+<a name="l00207"></a>00207     <span class="keyword">private</span>:
+<a name="l00208"></a>00208         Iterator my_begin;
+<a name="l00209"></a>00209         Iterator my_end;
+<a name="l00210"></a>00210         <span class="keyword">mutable</span> Iterator my_midpoint;
+<a name="l00211"></a>00211         size_t my_grainsize;
+<a name="l00213"></a>00213         <span class="keywordtype">void</span> set_midpoint() <span class="keyword">const</span>;
+<a name="l00214"></a>00214         <span class="keyword">template</span><<span class="keyword">typename</span> U> <span class="keyword">friend</span> <span class="keyword">class </span>hash_map_range;
+<a name="l00215"></a>00215     <span class="keyword">public</span>:
+<a name="l00217"></a>00217         <span class="keyword">typedef</span> std::size_t size_type;
+<a name="l00218"></a>00218         <span class="keyword">typedef</span> <span class="keyword">typename</span> Iterator::value_type value_type;
+<a name="l00219"></a>00219         <span class="keyword">typedef</span> <span class="keyword">typename</span> Iterator::reference reference;
+<a name="l00220"></a>00220         <span class="keyword">typedef</span> <span class="keyword">typename</span> Iterator::difference_type difference_type;
+<a name="l00221"></a>00221         <span class="keyword">typedef</span> Iterator iterator;
+<a name="l00222"></a>00222 
+<a name="l00224"></a>00224         <span class="keywordtype">bool</span> empty()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_begin==my_end;}
+<a name="l00225"></a>00225 
+<a name="l00227"></a>00227         <span class="keywordtype">bool</span> is_divisible()<span class="keyword"> const </span>{
+<a name="l00228"></a>00228             <span class="keywordflow">return</span> my_midpoint!=my_end;
+<a name="l00229"></a>00229         }
+<a name="l00231"></a>00231         hash_map_range( hash_map_range& r, split ) : 
+<a name="l00232"></a>00232             my_end(r.my_end),
+<a name="l00233"></a>00233             my_grainsize(r.my_grainsize)
+<a name="l00234"></a>00234         {
+<a name="l00235"></a>00235             r.my_end = my_begin = r.my_midpoint;
+<a name="l00236"></a>00236             __TBB_ASSERT( my_begin!=my_end, <span class="stringliteral">"Splitting despite the range is not divisible"</span> );
+<a name="l00237"></a>00237             __TBB_ASSERT( r.my_begin!=r.my_end, <span class="stringliteral">"Splitting despite the range is not divisible"</span> );
+<a name="l00238"></a>00238             set_midpoint();
+<a name="l00239"></a>00239             r.set_midpoint();
+<a name="l00240"></a>00240         }
+<a name="l00242"></a>00242         <span class="keyword">template</span><<span class="keyword">typename</span> U>
+<a name="l00243"></a>00243         hash_map_range( hash_map_range<U>& r) : 
+<a name="l00244"></a>00244             my_begin(r.my_begin),
+<a name="l00245"></a>00245             my_end(r.my_end),
+<a name="l00246"></a>00246             my_midpoint(r.my_midpoint),
+<a name="l00247"></a>00247             my_grainsize(r.my_grainsize)
+<a name="l00248"></a>00248         {}
+<a name="l00250"></a>00250         hash_map_range( <span class="keyword">const</span> Iterator& begin_, <span class="keyword">const</span> Iterator& end_, size_type grainsize = 1 ) : 
+<a name="l00251"></a>00251             my_begin(begin_), 
+<a name="l00252"></a>00252             my_end(end_), 
+<a name="l00253"></a>00253             my_grainsize(grainsize) 
+<a name="l00254"></a>00254         {
+<a name="l00255"></a>00255             set_midpoint();
+<a name="l00256"></a>00256             __TBB_ASSERT( grainsize>0, <span class="stringliteral">"grainsize must be positive"</span> );
+<a name="l00257"></a>00257         }
+<a name="l00258"></a>00258         <span class="keyword">const</span> Iterator& begin()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_begin;}
+<a name="l00259"></a>00259         <span class="keyword">const</span> Iterator& end()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_end;}
+<a name="l00261"></a>00261         size_type grainsize()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_grainsize;}
+<a name="l00262"></a>00262     };
+<a name="l00263"></a>00263 
+<a name="l00264"></a>00264     <span class="keyword">template</span><<span class="keyword">typename</span> Iterator>
+<a name="l00265"></a>00265     <span class="keywordtype">void</span> hash_map_range<Iterator>::set_midpoint()<span class="keyword"> const </span>{
+<a name="l00266"></a>00266         size_t n = my_end.my_segment_index - my_begin.my_segment_index;
+<a name="l00267"></a>00267         <span class="keywordflow">if</span>( n > 1 || (n == 1 && my_end.my_array_index > my_grainsize/2) ) {
+<a name="l00268"></a>00268             <span class="comment">// Split by groups of segments</span>
+<a name="l00269"></a>00269             my_midpoint = Iterator(*my_begin.my_table,(my_end.my_segment_index+my_begin.my_segment_index+1)/2u);
+<a name="l00270"></a>00270         } <span class="keywordflow">else</span> {
+<a name="l00271"></a>00271             <span class="comment">// Split by groups of nodes</span>
+<a name="l00272"></a>00272             size_t m = my_end.my_array_index-my_begin.my_array_index;
+<a name="l00273"></a>00273             <span class="keywordflow">if</span>( n ) m += my_begin.my_table->my_segment[my_begin.my_segment_index].my_physical_size;
+<a name="l00274"></a>00274             <span class="keywordflow">if</span>( m > my_grainsize ) {
+<a name="l00275"></a>00275                 my_midpoint = Iterator(*my_begin.my_table,my_begin.my_segment_index,my_begin.my_array_index + m/2u);
+<a name="l00276"></a>00276             } <span class="keywordflow">else</span> {
+<a name="l00277"></a>00277                 my_midpoint = my_end;
+<a name="l00278"></a>00278             }
+<a name="l00279"></a>00279         }
+<a name="l00280"></a>00280         __TBB_ASSERT( my_begin.my_segment_index < my_midpoint.my_segment_index
+<a name="l00281"></a>00281             || (my_begin.my_segment_index == my_midpoint.my_segment_index
+<a name="l00282"></a>00282             && my_begin.my_array_index <= my_midpoint.my_array_index),
+<a name="l00283"></a>00283             <span class="stringliteral">"my_begin is after my_midpoint"</span> );
+<a name="l00284"></a>00284         __TBB_ASSERT( my_midpoint.my_segment_index < my_end.my_segment_index
+<a name="l00285"></a>00285             || (my_midpoint.my_segment_index == my_end.my_segment_index
+<a name="l00286"></a>00286             && my_midpoint.my_array_index <= my_end.my_array_index),
+<a name="l00287"></a>00287             <span class="stringliteral">"my_midpoint is after my_end"</span> );
+<a name="l00288"></a>00288         __TBB_ASSERT( my_begin != my_midpoint || my_begin == my_end,
+<a name="l00289"></a>00289             <span class="stringliteral">"[my_begin, my_midpoint) range should not be empty"</span> );
+<a name="l00290"></a>00290     }
+<a name="l00292"></a>00292     <span class="keyword">static</span> <span class="keyword">const</span> hashcode_t hash_multiplier = <span class="keyword">sizeof</span>(hashcode_t)==4? 2654435769U : 11400714819323198485ULL;
+<a name="l00294"></a>00294     <span class="keyword">template</span><<span class="keyword">typename</span> T>
+<a name="l00295"></a>00295     <span class="keyword">inline</span> <span class="keyword">static</span> hashcode_t hasher( <span class="keyword">const</span> T& t ) {
+<a name="l00296"></a>00296         <span class="keywordflow">return</span> static_cast<hashcode_t>( t ) * hash_multiplier;
+<a name="l00297"></a>00297     }
+<a name="l00298"></a>00298     <span class="keyword">template</span><<span class="keyword">typename</span> P>
+<a name="l00299"></a>00299     <span class="keyword">inline</span> <span class="keyword">static</span> hashcode_t hasher( P* ptr ) {
+<a name="l00300"></a>00300         hashcode_t <span class="keyword">const</span> h = reinterpret_cast<hashcode_t>( ptr );
+<a name="l00301"></a>00301         <span class="keywordflow">return</span> (h >> 3) ^ h;
+<a name="l00302"></a>00302     }
+<a name="l00303"></a>00303     <span class="keyword">template</span><<span class="keyword">typename</span> E, <span class="keyword">typename</span> S, <span class="keyword">typename</span> A>
+<a name="l00304"></a>00304     <span class="keyword">inline</span> <span class="keyword">static</span> hashcode_t hasher( <span class="keyword">const</span> std::basic_string<E,S,A>& s ) {
+<a name="l00305"></a>00305         hashcode_t h = 0;
+<a name="l00306"></a>00306         <span class="keywordflow">for</span>( <span class="keyword">const</span> E* c = s.c_str(); *c; c++ )
+<a name="l00307"></a>00307             h = static_cast<hashcode_t>(*c) ^ (h * hash_multiplier);
+<a name="l00308"></a>00308         <span class="keywordflow">return</span> h;
+<a name="l00309"></a>00309     }
+<a name="l00310"></a>00310     <span class="keyword">template</span><<span class="keyword">typename</span> F, <span class="keyword">typename</span> S>
+<a name="l00311"></a>00311     <span class="keyword">inline</span> <span class="keyword">static</span> hashcode_t hasher( <span class="keyword">const</span> std::pair<F,S>& p ) {
+<a name="l00312"></a>00312         <span class="keywordflow">return</span> hasher(p.first) ^ hasher(p.second);
+<a name="l00313"></a>00313     }
+<a name="l00314"></a>00314 } <span class="comment">// namespace internal</span>
+<a name="l00316"></a>00316 <span class="comment"></span>
+<a name="l00318"></a>00318 <span class="keyword">template</span><<span class="keyword">typename</span> T>
+<a name="l00319"></a><a class="code" href="a00139.html">00319</a> <span class="keyword">struct </span><a class="code" href="a00139.html">tbb_hash_compare</a> {
+<a name="l00320"></a>00320     <span class="keyword">static</span> internal::hashcode_t hash( <span class="keyword">const</span> T& t ) { <span class="keywordflow">return</span> internal::hasher(t); }
+<a name="l00321"></a>00321     <span class="keyword">static</span> <span class="keywordtype">bool</span> equal( <span class="keyword">const</span> T& a, <span class="keyword">const</span> T& b ) { <span class="keywordflow">return</span> a == b; }
+<a name="l00322"></a>00322 };
+<a name="l00323"></a>00323 
+<a name="l00325"></a>00325 
+<a name="l00350"></a>00350 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
+<a name="l00351"></a><a class="code" href="a00103.html">00351</a> <span class="keyword">class </span><a class="code" href="a00103.html">concurrent_hash_map</a> : <span class="keyword">protected</span> internal::hash_map_base {
+<a name="l00352"></a>00352     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> Value>
+<a name="l00353"></a>00353     <span class="keyword">friend</span> <span class="keyword">class </span>internal::hash_map_iterator;
+<a name="l00354"></a>00354 
+<a name="l00355"></a>00355     <span class="keyword">template</span><<span class="keyword">typename</span> I>
+<a name="l00356"></a>00356     <span class="keyword">friend</span> <span class="keyword">class </span>internal::hash_map_range;
+<a name="l00357"></a>00357 
+<a name="l00358"></a>00358     <span class="keyword">struct </span>node;
+<a name="l00359"></a>00359     <span class="keyword">friend</span> <span class="keyword">struct </span>node;
+<a name="l00360"></a>00360     <span class="keyword">typedef</span> <span class="keyword">typename</span> A::template rebind<node>::other node_allocator_type;
+<a name="l00361"></a>00361 
+<a name="l00362"></a>00362 <span class="keyword">public</span>:
+<a name="l00363"></a>00363     <span class="keyword">class </span><a class="code" href="a00105.html">const_accessor</a>;
+<a name="l00364"></a>00364     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00105.html">const_accessor</a>;
+<a name="l00365"></a>00365     <span class="keyword">class </span><a class="code" href="a00104.html">accessor</a>;
+<a name="l00366"></a>00366 
+<a name="l00367"></a>00367     <span class="keyword">typedef</span> Key key_type;
+<a name="l00368"></a>00368     <span class="keyword">typedef</span> T mapped_type;
+<a name="l00369"></a>00369     <span class="keyword">typedef</span> std::pair<const Key,T> value_type;
+<a name="l00370"></a>00370     <span class="keyword">typedef</span> size_t size_type;
+<a name="l00371"></a>00371     <span class="keyword">typedef</span> ptrdiff_t difference_type;
+<a name="l00372"></a>00372     <span class="keyword">typedef</span> value_type *pointer;
+<a name="l00373"></a>00373     <span class="keyword">typedef</span> <span class="keyword">const</span> value_type *const_pointer;
+<a name="l00374"></a>00374     <span class="keyword">typedef</span> value_type &reference;
+<a name="l00375"></a>00375     <span class="keyword">typedef</span> <span class="keyword">const</span> value_type &const_reference;
+<a name="l00376"></a>00376     <span class="keyword">typedef</span> internal::hash_map_iterator<concurrent_hash_map,value_type> iterator;
+<a name="l00377"></a>00377     <span class="keyword">typedef</span> internal::hash_map_iterator<concurrent_hash_map,const value_type> const_iterator;
+<a name="l00378"></a>00378     <span class="keyword">typedef</span> internal::hash_map_range<iterator> range_type;
+<a name="l00379"></a>00379     <span class="keyword">typedef</span> internal::hash_map_range<const_iterator> const_range_type;
+<a name="l00380"></a>00380     <span class="keyword">typedef</span> A allocator_type;
+<a name="l00381"></a>00381 
+<a name="l00383"></a><a class="code" href="a00105.html">00383</a>     <span class="keyword">class </span><a class="code" href="a00105.html">const_accessor</a> {
+<a name="l00384"></a>00384         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00103.html">concurrent_hash_map</a><Key,T,HashCompare,A>;
+<a name="l00385"></a>00385         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00104.html">accessor</a>;
+<a name="l00386"></a>00386         <span class="keywordtype">void</span> operator=( <span class="keyword">const</span> <a class="code" href="a00104.html">accessor</a>& ) <span class="keyword">const</span>; <span class="comment">// Deny access</span>
+<a name="l00387"></a>00387         <a class="code" href="a00105.html">const_accessor</a>( <span class="keyword">const</span> <a class="code" href="a00104.html">accessor</a>& );       <span class="comment">// Deny access</span>
+<a name="l00388"></a>00388     <span class="keyword">public</span>:
+<a name="l00390"></a><a class="code" href="a00105.html#b5fe45b58ccc252b8ce70ac6c896c648">00390</a>         <span class="keyword">typedef</span> <span class="keyword">const</span> std::pair<const Key,T> value_type;
+<a name="l00391"></a>00391 
+<a name="l00393"></a><a class="code" href="a00105.html#38712b9809d23d2fba5e4780bb3c4f18">00393</a>         <span class="keywordtype">bool</span> empty()<span class="keyword"> const </span>{<span class="keywordflow">return</span> !my_node;}
+<a name="l00394"></a>00394 
+<a name="l00396"></a><a class="code" href="a00105.html#c7f3f43eb5f98d8451b2b1d456a4ccd4">00396</a>         <span class="keywordtype">void</span> <a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fefaa1fa107db0245c41fb109d976ae8d70">release</a>() {
+<a name="l00397"></a>00397             <span class="keywordflow">if</span>( my_node ) {
+<a name="l00398"></a>00398                 my_lock.release();
+<a name="l00399"></a>00399                 my_node = NULL;
+<a name="l00400"></a>00400             }
+<a name="l00401"></a>00401         }
+<a name="l00402"></a>00402 
+<a name="l00404"></a><a class="code" href="a00105.html#ea4d48e45dd039a2be10178df9336001">00404</a>         const_reference operator*()<span class="keyword"> const </span>{
+<a name="l00405"></a>00405             __TBB_ASSERT( my_node, <span class="stringliteral">"attempt to dereference empty accessor"</span> );
+<a name="l00406"></a>00406             <span class="keywordflow">return</span> my_node->item;
+<a name="l00407"></a>00407         }
+<a name="l00408"></a>00408 
+<a name="l00410"></a><a class="code" href="a00105.html#def170ba3b18905cd4e9d90f8a9a9cd9">00410</a>         const_pointer operator->()<span class="keyword"> const </span>{
+<a name="l00411"></a>00411             <span class="keywordflow">return</span> &operator*();
+<a name="l00412"></a>00412         }
+<a name="l00413"></a>00413 
+<a name="l00415"></a><a class="code" href="a00105.html#2a73cc49914e218e579eb77d3d9d6551">00415</a>         <a class="code" href="a00105.html">const_accessor</a>() : my_node(NULL) {}
+<a name="l00416"></a>00416 
+<a name="l00418"></a><a class="code" href="a00105.html#9b3fdcb8850d6f6dc749b72dbf2d593d">00418</a>         ~<a class="code" href="a00105.html">const_accessor</a>() {
+<a name="l00419"></a>00419             my_node = NULL; <span class="comment">// my_lock.release() is called in scoped_lock destructor</span>
+<a name="l00420"></a>00420         }
+<a name="l00421"></a>00421     <span class="keyword">private</span>:
+<a name="l00422"></a>00422         node* my_node;
+<a name="l00423"></a>00423         node_mutex_t::scoped_lock my_lock;
+<a name="l00424"></a>00424         hashcode_t my_hash;
+<a name="l00425"></a>00425     };
+<a name="l00426"></a>00426 
+<a name="l00428"></a><a class="code" href="a00104.html">00428</a>     <span class="keyword">class </span><a class="code" href="a00104.html">accessor</a>: <span class="keyword">public</span> <a class="code" href="a00105.html">const_accessor</a> {
+<a name="l00429"></a>00429     <span class="keyword">public</span>:
+<a name="l00431"></a><a class="code" href="a00104.html#8bc15c9c07f3e21583ab1a4ad0901ce5">00431</a>         <span class="keyword">typedef</span> std::pair<const Key,T> value_type;
+<a name="l00432"></a>00432 
+<a name="l00434"></a><a class="code" href="a00104.html#52334dd5411e7b95635b90527d7d6062">00434</a>         reference operator*()<span class="keyword"> const </span>{
+<a name="l00435"></a>00435             __TBB_ASSERT( this->my_node, <span class="stringliteral">"attempt to dereference empty accessor"</span> );
+<a name="l00436"></a>00436             <span class="keywordflow">return</span> this->my_node->item;
+<a name="l00437"></a>00437         }
+<a name="l00438"></a>00438 
+<a name="l00440"></a><a class="code" href="a00104.html#0fae0495144540e2b011a6530f68f1cb">00440</a>         pointer operator->()<span class="keyword"> const </span>{
+<a name="l00441"></a>00441             <span class="keywordflow">return</span> &operator*();
+<a name="l00442"></a>00442         }       
+<a name="l00443"></a>00443     };
+<a name="l00444"></a>00444 
+<a name="l00446"></a><a class="code" href="a00103.html#6a65733441a84e3581491eb49e305cf8">00446</a>     <a class="code" href="a00103.html">concurrent_hash_map</a>(<span class="keyword">const</span> allocator_type &a = allocator_type())
+<a name="l00447"></a>00447         : my_allocator(a)
+<a name="l00448"></a>00448 
+<a name="l00449"></a>00449     {
+<a name="l00450"></a>00450         initialize();
+<a name="l00451"></a>00451     }
+<a name="l00452"></a>00452 
+<a name="l00454"></a><a class="code" href="a00103.html#6af4e2b7d2434bc72a645b7e5eb3959f">00454</a>     <a class="code" href="a00103.html">concurrent_hash_map</a>( <span class="keyword">const</span> <a class="code" href="a00103.html">concurrent_hash_map</a>& table, <span class="keyword">const</span> allocator_type &a = allocator_type())
+<a name="l00455"></a>00455         : my_allocator(a)
+<a name="l00456"></a>00456     {
+<a name="l00457"></a>00457         initialize();
+<a name="l00458"></a>00458         internal_copy(table);
+<a name="l00459"></a>00459     }
+<a name="l00460"></a>00460 
+<a name="l00462"></a>00462     <span class="keyword">template</span><<span class="keyword">typename</span> I>
+<a name="l00463"></a><a class="code" href="a00103.html#51cccc7b42e83884462dcadede034822">00463</a>     <a class="code" href="a00103.html">concurrent_hash_map</a>(I first, I last, <span class="keyword">const</span> allocator_type &a = allocator_type())
+<a name="l00464"></a>00464         : my_allocator(a)
+<a name="l00465"></a>00465     {
+<a name="l00466"></a>00466         initialize();
+<a name="l00467"></a>00467         internal_copy(first, last);
+<a name="l00468"></a>00468     }
+<a name="l00469"></a>00469 
+<a name="l00471"></a><a class="code" href="a00103.html#d70ad33f97ce38d004620580bb1b09ba">00471</a>     <a class="code" href="a00103.html">concurrent_hash_map</a>& operator=( <span class="keyword">const</span> <a class="code" href="a00103.html">concurrent_hash_map</a>& table ) {
+<a name="l00472"></a>00472         <span class="keywordflow">if</span>( <span class="keyword">this</span>!=&table ) {
+<a name="l00473"></a>00473             clear();
+<a name="l00474"></a>00474             internal_copy(table);
+<a name="l00475"></a>00475         } 
+<a name="l00476"></a>00476         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00477"></a>00477     }
+<a name="l00478"></a>00478 
+<a name="l00479"></a>00479 
+<a name="l00481"></a>00481     <span class="keywordtype">void</span> clear();
+<a name="l00482"></a>00482 
+<a name="l00484"></a>00484     ~<a class="code" href="a00103.html">concurrent_hash_map</a>();
+<a name="l00485"></a>00485 
+<a name="l00486"></a>00486     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00487"></a>00487     <span class="comment">// Parallel algorithm support</span>
+<a name="l00488"></a>00488     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00489"></a>00489     range_type range( size_type grainsize=1 ) {
+<a name="l00490"></a>00490         <span class="keywordflow">return</span> range_type( begin(), end(), grainsize );
+<a name="l00491"></a>00491     }
+<a name="l00492"></a>00492     const_range_type range( size_type grainsize=1 )<span class="keyword"> const </span>{
+<a name="l00493"></a>00493         <span class="keywordflow">return</span> const_range_type( begin(), end(), grainsize );
+<a name="l00494"></a>00494     }
+<a name="l00495"></a>00495 
+<a name="l00496"></a>00496     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00497"></a>00497     <span class="comment">// STL support - not thread-safe methods</span>
+<a name="l00498"></a>00498     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00499"></a>00499     iterator begin() {<span class="keywordflow">return</span> iterator(*<span class="keyword">this</span>,0);}
+<a name="l00500"></a>00500     iterator end() {<span class="keywordflow">return</span> iterator(*<span class="keyword">this</span>,n_segment);}
+<a name="l00501"></a>00501     const_iterator begin()<span class="keyword"> const </span>{<span class="keywordflow">return</span> const_iterator(*<span class="keyword">this</span>,0);}
+<a name="l00502"></a>00502     const_iterator end()<span class="keyword"> const </span>{<span class="keywordflow">return</span> const_iterator(*<span class="keyword">this</span>,n_segment);}
+<a name="l00503"></a>00503     std::pair<iterator, iterator> equal_range( <span class="keyword">const</span> Key& key ) { <span class="keywordflow">return</span> internal_equal_range(key, end()); }
+<a name="l00504"></a>00504     std::pair<const_iterator, const_iterator> equal_range( <span class="keyword">const</span> Key& key )<span class="keyword"> const </span>{ <span class="keywordflow">return</span> internal_equal_range(key, end()); }
+<a name="l00505"></a>00505     
+<a name="l00507"></a>00507 
+<a name="l00509"></a>00509     size_type size() <span class="keyword">const</span>;
+<a name="l00510"></a>00510 
+<a name="l00512"></a>00512     <span class="keywordtype">bool</span> empty() <span class="keyword">const</span>;
+<a name="l00513"></a>00513 
+<a name="l00515"></a><a class="code" href="a00103.html#62d1fdc2c4d37d84b0dca1cd45f1cf1f">00515</a>     size_type max_size()<span class="keyword"> const </span>{<span class="keywordflow">return</span> (~size_type(0))/<span class="keyword">sizeof</span>(node);}
+<a name="l00516"></a>00516 
+<a name="l00518"></a><a class="code" href="a00103.html#14255f38f7b10bb892b233fce283fbce">00518</a>     allocator_type get_allocator()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this->my_allocator; }
+<a name="l00519"></a>00519 
+<a name="l00521"></a>00521     <span class="keywordtype">void</span> swap(<a class="code" href="a00103.html">concurrent_hash_map</a> &table);
+<a name="l00522"></a>00522 
+<a name="l00523"></a>00523     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00524"></a>00524     <span class="comment">// concurrent map operations</span>
+<a name="l00525"></a>00525     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00526"></a>00526 
+<a name="l00528"></a><a class="code" href="a00103.html#345daf26f2f7e2b4d93382fea80b3a7f">00528</a>     size_type count( <span class="keyword">const</span> Key& key )<span class="keyword"> const </span>{
+<a name="l00529"></a>00529         <span class="keywordflow">return</span> const_cast<concurrent_hash_map*>(<span class="keyword">this</span>)->lookup</*insert*/false>(NULL, key, <span class="comment">/*write=*/</span><span class="keyword">false</span>, NULL );
+<a name="l00530"></a>00530     }
+<a name="l00531"></a>00531 
+<a name="l00533"></a>00533 
+<a name="l00534"></a><a class="code" href="a00103.html#ae4b9cb9aa025de8251f90f5f21e9e95">00534</a>     <span class="keywordtype">bool</span> find( <a class="code" href="a00105.html">const_accessor</a>& result, <span class="keyword">const</span> Key& key )<span class="keyword"> const </span>{
+<a name="l00535"></a>00535         <span class="keywordflow">return</span> const_cast<concurrent_hash_map*>(<span class="keyword">this</span>)->lookup</*insert*/false>(&result, key, <span class="comment">/*write=*/</span><span class="keyword">false</span>, NULL );
+<a name="l00536"></a>00536     }
+<a name="l00537"></a>00537 
+<a name="l00539"></a>00539 
+<a name="l00540"></a><a class="code" href="a00103.html#68a6bd5b8a0bc2d5066e5eb175fd5ba9">00540</a>     <span class="keywordtype">bool</span> find( <a class="code" href="a00104.html">accessor</a>& result, <span class="keyword">const</span> Key& key ) {
+<a name="l00541"></a>00541         <span class="keywordflow">return</span> lookup<<span class="comment">/*insert*/</span><span class="keyword">false</span>>(&result, key, <span class="comment">/*write=*/</span><span class="keyword">true</span>, NULL );
+<a name="l00542"></a>00542     }
+<a name="l00543"></a>00543         
+<a name="l00545"></a>00545 
+<a name="l00546"></a><a class="code" href="a00103.html#2c10a645a8b40c6438c2bb119a61e93b">00546</a>     <span class="keywordtype">bool</span> insert( <a class="code" href="a00105.html">const_accessor</a>& result, <span class="keyword">const</span> Key& key ) {
+<a name="l00547"></a>00547         <span class="keywordflow">return</span> lookup<<span class="comment">/*insert*/</span><span class="keyword">true</span>>(&result, key, <span class="comment">/*write=*/</span><span class="keyword">false</span>, NULL );
+<a name="l00548"></a>00548     }
+<a name="l00549"></a>00549 
+<a name="l00551"></a>00551 
+<a name="l00552"></a><a class="code" href="a00103.html#da381dd244a7dbad494e1e60743b5afa">00552</a>     <span class="keywordtype">bool</span> insert( <a class="code" href="a00104.html">accessor</a>& result, <span class="keyword">const</span> Key& key ) {
+<a name="l00553"></a>00553         <span class="keywordflow">return</span> lookup<<span class="comment">/*insert*/</span><span class="keyword">true</span>>(&result, key, <span class="comment">/*write=*/</span><span class="keyword">true</span>, NULL );
+<a name="l00554"></a>00554     }
+<a name="l00555"></a>00555 
+<a name="l00557"></a>00557 
+<a name="l00558"></a><a class="code" href="a00103.html#7fa987ae247a894ce9f1ca097a919fd4">00558</a>     <span class="keywordtype">bool</span> insert( <a class="code" href="a00105.html">const_accessor</a>& result, <span class="keyword">const</span> value_type& value ) {
+<a name="l00559"></a>00559         <span class="keywordflow">return</span> lookup<<span class="comment">/*insert*/</span><span class="keyword">true</span>>(&result, value.first, <span class="comment">/*write=*/</span><span class="keyword">false</span>, &value.second );
+<a name="l00560"></a>00560     }
+<a name="l00561"></a>00561 
+<a name="l00563"></a>00563 
+<a name="l00564"></a><a class="code" href="a00103.html#2182c693d5898106675b76b443812b47">00564</a>     <span class="keywordtype">bool</span> insert( <a class="code" href="a00104.html">accessor</a>& result, <span class="keyword">const</span> value_type& value ) {
+<a name="l00565"></a>00565         <span class="keywordflow">return</span> lookup<<span class="comment">/*insert*/</span><span class="keyword">true</span>>(&result, value.first, <span class="comment">/*write=*/</span><span class="keyword">true</span>, &value.second );
+<a name="l00566"></a>00566     }
+<a name="l00567"></a>00567 
+<a name="l00569"></a>00569 
+<a name="l00570"></a><a class="code" href="a00103.html#70017dbe0ebbe8c83b9740cd54a6b7e0">00570</a>     <span class="keywordtype">bool</span> insert( <span class="keyword">const</span> value_type& value ) {
+<a name="l00571"></a>00571         <span class="keywordflow">return</span> lookup<<span class="comment">/*insert*/</span><span class="keyword">true</span>>(NULL, value.first, <span class="comment">/*write=*/</span><span class="keyword">false</span>, &value.second );
+<a name="l00572"></a>00572     }
+<a name="l00573"></a>00573 
+<a name="l00575"></a>00575     <span class="keyword">template</span><<span class="keyword">typename</span> I>
+<a name="l00576"></a><a class="code" href="a00103.html#06a95a56a40fcbdf3897051d22aaab19">00576</a>     <span class="keywordtype">void</span> insert(I first, I last) {
+<a name="l00577"></a>00577         <span class="keywordflow">for</span>(; first != last; ++first)
+<a name="l00578"></a>00578             insert( *first );
+<a name="l00579"></a>00579     }
+<a name="l00580"></a>00580 
+<a name="l00582"></a>00582 
+<a name="l00583"></a>00583     <span class="keywordtype">bool</span> erase( <span class="keyword">const</span> Key& key );
+<a name="l00584"></a>00584 
+<a name="l00586"></a>00586 
+<a name="l00587"></a><a class="code" href="a00103.html#cc090be8a6c0a3765360ec363cf2474e">00587</a>     <span class="keywordtype">bool</span> erase( <a class="code" href="a00105.html">const_accessor</a>& item_accessor ) {
+<a name="l00588"></a>00588         <span class="keywordflow">return</span> exclude( item_accessor, <span class="comment">/*readonly=*/</span> <span class="keyword">true</span> );
+<a name="l00589"></a>00589     }
+<a name="l00590"></a>00590 
+<a name="l00592"></a>00592 
+<a name="l00593"></a><a class="code" href="a00103.html#b5bd8c8f49f8d0e72afedca53caa6b15">00593</a>     <span class="keywordtype">bool</span> erase( <a class="code" href="a00104.html">accessor</a>& item_accessor ) {
+<a name="l00594"></a>00594         <span class="keywordflow">return</span> exclude( item_accessor, <span class="comment">/*readonly=*/</span> <span class="keyword">false</span> );
+<a name="l00595"></a>00595     }
+<a name="l00596"></a>00596 
+<a name="l00597"></a>00597 <span class="keyword">private</span>:
+<a name="l00599"></a>00599     <span class="keyword">struct </span>node: internal::no_copy {
+<a name="l00601"></a>00601         node* next;
+<a name="l00602"></a>00602         node_mutex_t <a class="code" href="a00112.html">mutex</a>;
+<a name="l00603"></a>00603         value_type item;
+<a name="l00604"></a>00604         node( <span class="keyword">const</span> Key& key ) : item(key, T()) {}
+<a name="l00605"></a>00605         node( <span class="keyword">const</span> Key& key, <span class="keyword">const</span> T& t ) : item(key, t) {}
+<a name="l00606"></a>00606         <span class="comment">// exception-safe allocation, see C++ Standard 2003, clause 5.3.4p17</span>
+<a name="l00607"></a>00607         <span class="keywordtype">void</span>* operator new( size_t <span class="comment">/*size*/</span>, node_allocator_type& a ) {
+<a name="l00608"></a>00608             <span class="keywordtype">void</span> *ptr = a.allocate(1);
+<a name="l00609"></a>00609             <span class="keywordflow">if</span>(!ptr) <span class="keywordflow">throw</span> std::bad_alloc();
+<a name="l00610"></a>00610             <span class="keywordflow">return</span> ptr;
+<a name="l00611"></a>00611         }
+<a name="l00612"></a>00612         <span class="comment">// match placement-new form above to be called if exception thrown in constructor</span>
+<a name="l00613"></a>00613         <span class="keywordtype">void</span> operator delete( <span class="keywordtype">void</span>* ptr, node_allocator_type& a ) {<span class="keywordflow">return</span> a.deallocate(static_cast<node*>(ptr),1); }
+<a name="l00614"></a>00614     };
+<a name="l00615"></a>00615 
+<a name="l00616"></a>00616     <span class="keyword">struct </span>chain;
+<a name="l00617"></a>00617     <span class="keyword">friend</span> <span class="keyword">struct </span>chain;
+<a name="l00618"></a>00618 
+<a name="l00620"></a>00620 
+<a name="l00621"></a>00621     <span class="keyword">struct </span>chain {
+<a name="l00622"></a>00622         <span class="keywordtype">void</span> push_front( node& b ) {
+<a name="l00623"></a>00623             b.next = node_list;
+<a name="l00624"></a>00624             node_list = &b;
+<a name="l00625"></a>00625         }
+<a name="l00626"></a>00626         chain_mutex_t mutex;
+<a name="l00627"></a>00627         node* node_list;
+<a name="l00628"></a>00628     };
+<a name="l00629"></a>00629 
+<a name="l00630"></a>00630     <span class="keyword">struct </span>segment;
+<a name="l00631"></a>00631     <span class="keyword">friend</span> <span class="keyword">struct </span>segment;
+<a name="l00632"></a>00632 
+<a name="l00634"></a>00634 
+<a name="l00636"></a>00636     <span class="keyword">struct </span>segment: internal::hash_map_segment_base {
+<a name="l00637"></a>00637 <span class="preprocessor">#if TBB_USE_ASSERT</span>
+<a name="l00638"></a>00638 <span class="preprocessor"></span>        ~segment() {
+<a name="l00639"></a>00639             __TBB_ASSERT( !my_array, <span class="stringliteral">"should have been cleared earlier"</span> );
+<a name="l00640"></a>00640         }
+<a name="l00641"></a>00641 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
+<a name="l00642"></a>00642 
+<a name="l00643"></a>00643         <span class="comment">// Pointer to array of chains</span>
+<a name="l00644"></a>00644         chain* my_array;
+<a name="l00645"></a>00645 
+<a name="l00646"></a>00646         <span class="comment">// Get chain in this segment that corresponds to given hash code.</span>
+<a name="l00647"></a>00647         chain& get_chain( hashcode_t hashcode, size_t n_segment_bits ) {
+<a name="l00648"></a>00648             <span class="keywordflow">return</span> my_array[(hashcode>>n_segment_bits)&(my_physical_size-1)];
+<a name="l00649"></a>00649         }
+<a name="l00650"></a>00650      
+<a name="l00652"></a>00652 
+<a name="l00654"></a>00654         <span class="keywordtype">void</span> allocate_array( size_t new_size ) {
+<a name="l00655"></a>00655             size_t n=(internal::NFS_GetLineSize()+<span class="keyword">sizeof</span>(chain)-1)/<span class="keyword">sizeof</span>(chain);
+<a name="l00656"></a>00656             __TBB_ASSERT((n&(n-1))==0, NULL);
+<a name="l00657"></a>00657             <span class="keywordflow">while</span>( n<new_size ) n<<=1;
+<a name="l00658"></a>00658             chain* array = cache_aligned_allocator<chain>().allocate( n );
+<a name="l00659"></a>00659             <span class="comment">// storing earlier might help overcome false positives of in deducing "bool grow" in concurrent threads</span>
+<a name="l00660"></a>00660             __TBB_store_with_release(my_physical_size, n);
+<a name="l00661"></a>00661             std::memset( array, 0, n*<span class="keyword">sizeof</span>(chain) );
+<a name="l00662"></a>00662             my_array = array;
+<a name="l00663"></a>00663         }
+<a name="l00664"></a>00664     };
+<a name="l00665"></a>00665 
+<a name="l00666"></a>00666     segment& get_segment( hashcode_t hashcode ) {
+<a name="l00667"></a>00667         <span class="keywordflow">return</span> my_segment[hashcode&(n_segment-1)];
+<a name="l00668"></a>00668     }
+<a name="l00669"></a>00669 
+<a name="l00670"></a>00670     node_allocator_type my_allocator;
+<a name="l00671"></a>00671 
+<a name="l00672"></a>00672     HashCompare my_hash_compare;
+<a name="l00673"></a>00673 
+<a name="l00674"></a>00674     segment* my_segment;
+<a name="l00675"></a>00675 
+<a name="l00676"></a>00676     node* create_node(<span class="keyword">const</span> Key& key, <span class="keyword">const</span> T* t) {
+<a name="l00677"></a>00677         <span class="comment">// exception-safe allocation and construction</span>
+<a name="l00678"></a>00678         <span class="keywordflow">if</span>(t) <span class="keywordflow">return</span> <span class="keyword">new</span>( my_allocator ) node(key, *t);
+<a name="l00679"></a>00679         <span class="keywordflow">else</span>  <span class="keywordflow">return</span> <span class="keyword">new</span>( my_allocator ) node(key);
+<a name="l00680"></a>00680     }
+<a name="l00681"></a>00681 
+<a name="l00682"></a>00682     <span class="keywordtype">void</span> delete_node(node* b) {
+<a name="l00683"></a>00683         my_allocator.destroy(b);
+<a name="l00684"></a>00684         my_allocator.deallocate(b, 1);
+<a name="l00685"></a>00685     }
+<a name="l00686"></a>00686 
+<a name="l00687"></a>00687     node* search_list( <span class="keyword">const</span> Key& key, chain& c )<span class="keyword"> const </span>{
+<a name="l00688"></a>00688         node* b = c.node_list;
+<a name="l00689"></a>00689         <span class="keywordflow">while</span>( b && !my_hash_compare.equal(key, b->item.first) )
+<a name="l00690"></a>00690             b = b->next;
+<a name="l00691"></a>00691         <span class="keywordflow">return</span> b;
+<a name="l00692"></a>00692     }
+<a name="l00694"></a>00694     <span class="keyword">template</span><<span class="keyword">typename</span> I>
+<a name="l00695"></a>00695     std::pair<I, I> internal_equal_range( <span class="keyword">const</span> Key& key, I end ) <span class="keyword">const</span>;
+<a name="l00696"></a>00696 
+<a name="l00698"></a>00698     <span class="keywordtype">bool</span> exclude( const_accessor& item_accessor, <span class="keywordtype">bool</span> readonly );
+<a name="l00699"></a>00699 
+<a name="l00701"></a>00701     <span class="keywordtype">void</span> grow_segment( segment_mutex_t::scoped_lock& segment_lock, segment& s );
+<a name="l00702"></a>00702 
+<a name="l00704"></a>00704     <span class="keyword">template</span><<span class="keywordtype">bool</span> op_insert>
+<a name="l00705"></a>00705     <span class="keywordtype">bool</span> lookup( const_accessor* result, <span class="keyword">const</span> Key& key, <span class="keywordtype">bool</span> write, <span class="keyword">const</span> T* t );
+<a name="l00706"></a>00706 
+<a name="l00708"></a>00708     <span class="keywordtype">void</span> initialize() {
+<a name="l00709"></a>00709         my_segment = cache_aligned_allocator<segment>().allocate(n_segment);
+<a name="l00710"></a>00710         std::memset( my_segment, 0, <span class="keyword">sizeof</span>(segment)*n_segment );
+<a name="l00711"></a>00711      }
+<a name="l00712"></a>00712 
+<a name="l00714"></a>00714     <span class="keywordtype">void</span> internal_copy( <span class="keyword">const</span> concurrent_hash_map& source );
+<a name="l00715"></a>00715 
+<a name="l00716"></a>00716     <span class="keyword">template</span><<span class="keyword">typename</span> I>
+<a name="l00717"></a>00717     <span class="keywordtype">void</span> internal_copy(I first, I last);
+<a name="l00718"></a>00718 };
+<a name="l00719"></a>00719 
+<a name="l00720"></a>00720 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
+<a name="l00721"></a><a class="code" href="a00103.html#5a683e8db50438b9976e46e7d4f60e65">00721</a> <a class="code" href="a00103.html">concurrent_hash_map<Key,T,HashCompare,A>::~concurrent_hash_map</a>() {
+<a name="l00722"></a>00722     <a class="code" href="a00103.html#36bcd50fd5383f3682032323b2d74333">clear</a>();
+<a name="l00723"></a>00723     <a class="code" href="a00100.html">cache_aligned_allocator<segment></a>().deallocate( my_segment, n_segment );
+<a name="l00724"></a>00724 }
+<a name="l00725"></a>00725 
+<a name="l00726"></a>00726 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
+<a name="l00727"></a><a class="code" href="a00103.html#75bb57a153952ffadfcf2e4c73deabb1">00727</a> <span class="keyword">typename</span> <a class="code" href="a00103.html">concurrent_hash_map<Key,T,HashCompare,A>::size_type</a> <a class="code" href="a00103.html">concurrent_hash_map<Key,T,HashCompare,A>::size</a>()<span class="keyword"> const </span>{
+<a name="l00728"></a>00728     size_type result = 0;
+<a name="l00729"></a>00729     <span class="keywordflow">for</span>( size_t k=0; k<n_segment; ++k )
+<a name="l00730"></a>00730         result += my_segment[k].my_logical_size;
+<a name="l00731"></a>00731     <span class="keywordflow">return</span> result;
+<a name="l00732"></a>00732 }
+<a name="l00733"></a>00733 
+<a name="l00734"></a>00734 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
+<a name="l00735"></a><a class="code" href="a00103.html#b9599dd587892366ed31dea23e5c5837">00735</a> <span class="keywordtype">bool</span> <a class="code" href="a00103.html">concurrent_hash_map<Key,T,HashCompare,A>::empty</a>()<span class="keyword"> const </span>{
+<a name="l00736"></a>00736     <span class="keywordflow">for</span>( size_t k=0; k<n_segment; ++k )
+<a name="l00737"></a>00737         <span class="keywordflow">if</span>( my_segment[k].my_logical_size )
+<a name="l00738"></a>00738             <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00739"></a>00739     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00740"></a>00740 }
+<a name="l00741"></a>00741 
+<a name="l00742"></a>00742 <span class="preprocessor">#if _MSC_VER && !defined(__INTEL_COMPILER)</span>
+<a name="l00743"></a>00743 <span class="preprocessor"></span>    <span class="comment">// Suppress "conditional expression is constant" warning.</span>
+<a name="l00744"></a>00744 <span class="preprocessor">    #pragma warning( push )</span>
+<a name="l00745"></a>00745 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning( disable: 4127 )</span>
+<a name="l00746"></a>00746 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00747"></a>00747 <span class="preprocessor"></span>
+<a name="l00748"></a>00748 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
+<a name="l00749"></a>00749 <span class="keyword">template</span><<span class="keywordtype">bool</span> op_insert>
+<a name="l00750"></a>00750 <span class="keywordtype">bool</span> <a class="code" href="a00103.html">concurrent_hash_map<Key,T,HashCompare,A>::lookup</a>( const_accessor* result, <span class="keyword">const</span> Key& key, <span class="keywordtype">bool</span> write, <span class="keyword">const</span> T* t ) {
+<a name="l00751"></a>00751     <span class="keywordflow">if</span>( result )
+<a name="l00752"></a>00752         result->release();
+<a name="l00753"></a>00753     <span class="keyword">const</span> hashcode_t h = my_hash_compare.hash( key );
+<a name="l00754"></a>00754     segment& s = get_segment(h);
+<a name="l00755"></a>00755 restart:
+<a name="l00756"></a>00756     <span class="keywordtype">bool</span> return_value = <span class="keyword">false</span>;
+<a name="l00757"></a>00757     <span class="comment">// first check in double-check sequence</span>
+<a name="l00758"></a>00758 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS</span>
+<a name="l00759"></a>00759 <span class="preprocessor"></span>    <span class="keywordtype">bool</span> grow = op_insert && s.internal_grow_predicate();
+<a name="l00760"></a>00760 <span class="preprocessor">#else</span>
+<a name="l00761"></a>00761 <span class="preprocessor"></span>    <span class="keywordtype">bool</span> grow = op_insert && s.my_logical_size >= s.my_physical_size
+<a name="l00762"></a>00762         && s.my_physical_size < max_physical_size; <span class="comment">// check whether there are free bits</span>
+<a name="l00763"></a>00763 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS */</span>
+<a name="l00764"></a>00764     segment_mutex_t::scoped_lock segment_lock( s.my_mutex, <span class="comment">/*write=*/</span>grow );
+<a name="l00765"></a>00765     <span class="keywordflow">if</span>( grow ) { <span class="comment">// Load factor is too high  </span>
+<a name="l00766"></a>00766         grow_segment( segment_lock, s );
+<a name="l00767"></a>00767     }
+<a name="l00768"></a>00768     <span class="keywordflow">if</span>( !s.my_array ) {
+<a name="l00769"></a>00769         __TBB_ASSERT( !op_insert, NULL );
+<a name="l00770"></a>00770         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00771"></a>00771     }
+<a name="l00772"></a>00772     __TBB_ASSERT( (s.my_physical_size&(s.my_physical_size-1))==0, NULL );
+<a name="l00773"></a>00773     chain& c = s.get_chain( h, n_segment_bits );
+<a name="l00774"></a>00774     chain_mutex_t::scoped_lock chain_lock( c.mutex, <span class="comment">/*write=*/</span><span class="keyword">false</span> );
+<a name="l00775"></a>00775 
+<a name="l00776"></a>00776     node* b = search_list( key, c );
+<a name="l00777"></a>00777     <span class="keywordflow">if</span>( op_insert ) {
+<a name="l00778"></a>00778         <span class="keywordflow">if</span>( !b ) {
+<a name="l00779"></a>00779             b = create_node(key, t);
+<a name="l00780"></a>00780             <span class="comment">// Search failed</span>
+<a name="l00781"></a>00781             <span class="keywordflow">if</span>( !chain_lock.upgrade_to_writer() ) {
+<a name="l00782"></a>00782                 <span class="comment">// Rerun search_list, in case another thread inserted the item during the upgrade.</span>
+<a name="l00783"></a>00783                 node* b_temp = search_list( key, c );
+<a name="l00784"></a>00784                 <span class="keywordflow">if</span>( b_temp ) { <span class="comment">// unfortunately, it did</span>
+<a name="l00785"></a>00785                     chain_lock.downgrade_to_reader();
+<a name="l00786"></a>00786                     delete_node( b );
+<a name="l00787"></a>00787                     b = b_temp;
+<a name="l00788"></a>00788                     <span class="keywordflow">goto</span> done;
+<a name="l00789"></a>00789                 }
+<a name="l00790"></a>00790             }
+<a name="l00791"></a>00791             ++s.my_logical_size; <span class="comment">// we can't change it earlier due to correctness of size() and exception safety of equal()</span>
+<a name="l00792"></a>00792             return_value = <span class="keyword">true</span>;
+<a name="l00793"></a>00793             c.push_front( *b );
+<a name="l00794"></a>00794         }
+<a name="l00795"></a>00795     } <span class="keywordflow">else</span> { <span class="comment">// find or count</span>
+<a name="l00796"></a>00796         <span class="keywordflow">if</span>( !b )      <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00797"></a>00797         return_value = <span class="keyword">true</span>;
+<a name="l00798"></a>00798     }
+<a name="l00799"></a>00799 done:
+<a name="l00800"></a>00800     <span class="keywordflow">if</span>( !result ) <span class="keywordflow">return</span> return_value;
+<a name="l00801"></a>00801     <span class="keywordflow">if</span>( !result->my_lock.try_acquire( b->mutex, write ) ) {
+<a name="l00802"></a>00802         <span class="comment">// we are unlucky, prepare for longer wait</span>
+<a name="l00803"></a>00803         internal::AtomicBackoff trials;
+<a name="l00804"></a>00804         <span class="keywordflow">do</span> {
+<a name="l00805"></a>00805             <span class="keywordflow">if</span>( !trials.bounded_pause() ) {
+<a name="l00806"></a>00806                 <span class="comment">// the wait takes really long, restart the operation</span>
+<a name="l00807"></a>00807                 chain_lock.release(); segment_lock.release();
+<a name="l00808"></a>00808                 __TBB_Yield();
+<a name="l00809"></a>00809                 <span class="keywordflow">goto</span> restart;
+<a name="l00810"></a>00810             }
+<a name="l00811"></a>00811         } <span class="keywordflow">while</span>( !result->my_lock.try_acquire( b->mutex, write ) );
+<a name="l00812"></a>00812     }
+<a name="l00813"></a>00813     result->my_node = b;
+<a name="l00814"></a>00814     result->my_hash = h;
+<a name="l00815"></a>00815     <span class="keywordflow">return</span> return_value;
+<a name="l00816"></a>00816 }
+<a name="l00817"></a>00817 
+<a name="l00818"></a>00818 <span class="preprocessor">#if _MSC_VER && !defined(__INTEL_COMPILER)</span>
+<a name="l00819"></a>00819 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning( pop )</span>
+<a name="l00820"></a>00820 <span class="preprocessor"></span><span class="preprocessor">#endif // warning 4127 is back</span>
+<a name="l00821"></a>00821 <span class="preprocessor"></span>
+<a name="l00822"></a>00822 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
+<a name="l00823"></a>00823 <span class="keyword">template</span><<span class="keyword">typename</span> I>
+<a name="l00824"></a>00824 std::pair<I, I> concurrent_hash_map<Key,T,HashCompare,A>::internal_equal_range( <span class="keyword">const</span> Key& key, I end )<span class="keyword"> const </span>{
+<a name="l00825"></a>00825     hashcode_t h = my_hash_compare.hash( key );
+<a name="l00826"></a>00826     size_t segment_index = h&(n_segment-1);
+<a name="l00827"></a>00827     segment& s = my_segment[segment_index ];
+<a name="l00828"></a>00828     size_t chain_index = (h>>n_segment_bits)&(s.my_physical_size-1);
+<a name="l00829"></a>00829     <span class="keywordflow">if</span>( !s.my_array )
+<a name="l00830"></a>00830         <span class="keywordflow">return</span> std::make_pair(end, end);
+<a name="l00831"></a>00831     chain& c = s.my_array[chain_index];
+<a name="l00832"></a>00832     node* b = search_list( key, c );
+<a name="l00833"></a>00833     <span class="keywordflow">if</span>( !b )
+<a name="l00834"></a>00834         <span class="keywordflow">return</span> std::make_pair(end, end);
+<a name="l00835"></a>00835     iterator lower(*<span class="keyword">this</span>, segment_index, chain_index, b), upper(lower);
+<a name="l00836"></a>00836     <span class="keywordflow">return</span> std::make_pair(lower, ++upper);
+<a name="l00837"></a>00837 }
+<a name="l00838"></a>00838 
+<a name="l00839"></a>00839 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
+<a name="l00840"></a><a class="code" href="a00103.html#58df7a1e4373c55eb4c2fa9dc69516b1">00840</a> <span class="keywordtype">bool</span> <a class="code" href="a00103.html">concurrent_hash_map<Key,T,HashCompare,A>::erase</a>( <span class="keyword">const</span> Key &key ) {
+<a name="l00841"></a>00841     hashcode_t h = my_hash_compare.hash( key );
+<a name="l00842"></a>00842     segment& s = get_segment( h );
+<a name="l00843"></a>00843     node* b=NULL; <span class="comment">// explicitly initialized to prevent compiler warnings</span>
+<a name="l00844"></a>00844     {
+<a name="l00845"></a>00845         <span class="keywordtype">bool</span> chain_locked_for_write = <span class="keyword">false</span>;
+<a name="l00846"></a>00846         segment_mutex_t::scoped_lock segment_lock( s.my_mutex, <span class="comment">/*write=*/</span><span class="keyword">false</span> );
+<a name="l00847"></a>00847         <span class="keywordflow">if</span>( !s.my_array ) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00848"></a>00848         __TBB_ASSERT( (s.my_physical_size&(s.my_physical_size-1))==0, NULL );
+<a name="l00849"></a>00849         chain& c = s.get_chain( h, n_segment_bits );
+<a name="l00850"></a>00850         chain_mutex_t::scoped_lock chain_lock( c.mutex, <span class="comment">/*write=*/</span><span class="keyword">false</span> );
+<a name="l00851"></a>00851     search:
+<a name="l00852"></a>00852         node** p = &c.node_list;
+<a name="l00853"></a>00853         b = *p;
+<a name="l00854"></a>00854         <span class="keywordflow">while</span>( b && !my_hash_compare.equal(key, b->item.first ) ) {
+<a name="l00855"></a>00855             p = &b->next;
+<a name="l00856"></a>00856             b = *p;
+<a name="l00857"></a>00857         }
+<a name="l00858"></a>00858         <span class="keywordflow">if</span>( !b ) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00859"></a>00859         <span class="keywordflow">if</span>( !chain_locked_for_write && !chain_lock.upgrade_to_writer() ) {
+<a name="l00860"></a>00860             chain_locked_for_write = <span class="keyword">true</span>;
+<a name="l00861"></a>00861             <span class="keywordflow">goto</span> search;
+<a name="l00862"></a>00862         }
+<a name="l00863"></a>00863         *p = b->next;
+<a name="l00864"></a>00864         --s.my_logical_size;
+<a name="l00865"></a>00865     }
+<a name="l00866"></a>00866     {
+<a name="l00867"></a>00867         node_mutex_t::scoped_lock item_locker( b->mutex, <span class="comment">/*write=*/</span><span class="keyword">true</span> );
+<a name="l00868"></a>00868     }
+<a name="l00869"></a>00869     <span class="comment">// note: there should be no threads pretending to acquire this mutex again, do not try to upgrade const_accessor!</span>
+<a name="l00870"></a>00870     delete_node( b ); <span class="comment">// Only one thread can delete it due to write lock on the chain_mutex</span>
+<a name="l00871"></a>00871     <span class="keywordflow">return</span> <span class="keyword">true</span>;        
+<a name="l00872"></a>00872 }
+<a name="l00873"></a>00873 
+<a name="l00874"></a>00874 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
+<a name="l00875"></a>00875 <span class="keywordtype">bool</span> <a class="code" href="a00103.html">concurrent_hash_map<Key,T,HashCompare,A>::exclude</a>( const_accessor &item_accessor, <span class="keywordtype">bool</span> readonly ) {
+<a name="l00876"></a>00876     __TBB_ASSERT( item_accessor.my_node, NULL );
+<a name="l00877"></a>00877     <span class="keyword">const</span> hashcode_t h = item_accessor.my_hash;
+<a name="l00878"></a>00878     node *<span class="keyword">const</span> b = item_accessor.my_node;
+<a name="l00879"></a>00879     item_accessor.my_node = NULL; <span class="comment">// we ought release accessor anyway</span>
+<a name="l00880"></a>00880     segment& s = get_segment( h );
+<a name="l00881"></a>00881     {
+<a name="l00882"></a>00882         segment_mutex_t::scoped_lock segment_lock( s.my_mutex, <span class="comment">/*write=*/</span><span class="keyword">false</span> );
+<a name="l00883"></a>00883         __TBB_ASSERT( s.my_array, NULL );
+<a name="l00884"></a>00884         __TBB_ASSERT( (s.my_physical_size&(s.my_physical_size-1))==0, NULL );
+<a name="l00885"></a>00885         chain& c = s.get_chain( h, n_segment_bits );
+<a name="l00886"></a>00886         chain_mutex_t::scoped_lock chain_lock( c.mutex, <span class="comment">/*write=*/</span><span class="keyword">true</span> );
+<a name="l00887"></a>00887         node** p = &c.node_list;
+<a name="l00888"></a>00888         <span class="keywordflow">while</span>( *p && *p != b )
+<a name="l00889"></a>00889             p = &(*p)->next;
+<a name="l00890"></a>00890         <span class="keywordflow">if</span>( !*p ) { <span class="comment">// someone else was the first</span>
+<a name="l00891"></a>00891             item_accessor.my_lock.release();
+<a name="l00892"></a>00892             <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00893"></a>00893         }
+<a name="l00894"></a>00894         __TBB_ASSERT( *p == b, NULL );
+<a name="l00895"></a>00895         *p = b->next;
+<a name="l00896"></a>00896         --s.my_logical_size;
+<a name="l00897"></a>00897     }
+<a name="l00898"></a>00898     <span class="keywordflow">if</span>( readonly ) <span class="comment">// need to get exclusive lock</span>
+<a name="l00899"></a>00899         item_accessor.my_lock.upgrade_to_writer(); <span class="comment">// return value means nothing here</span>
+<a name="l00900"></a>00900     item_accessor.my_lock.release();
+<a name="l00901"></a>00901     delete_node( b ); <span class="comment">// Only one thread can delete it due to write lock on the chain_mutex</span>
+<a name="l00902"></a>00902     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00903"></a>00903 }
+<a name="l00904"></a>00904 
+<a name="l00905"></a>00905 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
+<a name="l00906"></a>00906 <span class="keywordtype">void</span> concurrent_hash_map<Key,T,HashCompare,A>::swap(concurrent_hash_map<Key,T,HashCompare,A> &table) {
+<a name="l00907"></a>00907     std::swap(this->my_allocator, table.my_allocator);
+<a name="l00908"></a>00908     std::swap(this->my_hash_compare, table.my_hash_compare);
+<a name="l00909"></a>00909     std::swap(this->my_segment, table.my_segment);
+<a name="l00910"></a>00910 }
+<a name="l00911"></a>00911 
+<a name="l00912"></a>00912 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
+<a name="l00913"></a><a class="code" href="a00103.html#36bcd50fd5383f3682032323b2d74333">00913</a> <span class="keywordtype">void</span> <a class="code" href="a00103.html">concurrent_hash_map<Key,T,HashCompare,A>::clear</a>() {
+<a name="l00914"></a>00914 <span class="preprocessor">#if TBB_USE_PERFORMANCE_WARNINGS</span>
+<a name="l00915"></a>00915 <span class="preprocessor"></span>    size_t total_physical_size = 0, min_physical_size = size_t(-1L), max_physical_size = 0; <span class="comment">//< usage statistics</span>
+<a name="l00916"></a>00916     <span class="keyword">static</span> <span class="keywordtype">bool</span> reported = <span class="keyword">false</span>;
+<a name="l00917"></a>00917 <span class="preprocessor">#endif</span>
+<a name="l00918"></a>00918 <span class="preprocessor"></span>    <span class="keywordflow">for</span>( size_t i=0; i<n_segment; ++i ) {
+<a name="l00919"></a>00919         segment& s = my_segment[i];
+<a name="l00920"></a>00920         size_t n = s.my_physical_size;
+<a name="l00921"></a>00921         <span class="keywordflow">if</span>( chain* array = s.my_array ) {
+<a name="l00922"></a>00922             s.my_array = NULL;
+<a name="l00923"></a>00923             s.my_physical_size = 0;
+<a name="l00924"></a>00924             s.my_logical_size = 0;
+<a name="l00925"></a>00925             <span class="keywordflow">for</span>( size_t j=0; j<n; ++j ) {
+<a name="l00926"></a>00926                 <span class="keywordflow">while</span>( node* b = array[j].node_list ) {
+<a name="l00927"></a>00927                     array[j].node_list = b->next;
+<a name="l00928"></a>00928                     delete_node(b);
+<a name="l00929"></a>00929                 }
+<a name="l00930"></a>00930             }
+<a name="l00931"></a>00931             <a class="code" href="a00100.html">cache_aligned_allocator<chain></a>().deallocate( array, n );
+<a name="l00932"></a>00932         }
+<a name="l00933"></a>00933 <span class="preprocessor">#if TBB_USE_PERFORMANCE_WARNINGS</span>
+<a name="l00934"></a>00934 <span class="preprocessor"></span>        total_physical_size += n;
+<a name="l00935"></a>00935         <span class="keywordflow">if</span>(min_physical_size > n) min_physical_size = n;
+<a name="l00936"></a>00936         <span class="keywordflow">if</span>(max_physical_size < n) max_physical_size = n;
+<a name="l00937"></a>00937     }
+<a name="l00938"></a>00938     <span class="keywordflow">if</span>( !reported
+<a name="l00939"></a>00939         && ( (total_physical_size >= n_segment*48 && min_physical_size < total_physical_size/n_segment/2)
+<a name="l00940"></a>00940          || (total_physical_size >= n_segment*128 && max_physical_size > total_physical_size/n_segment*2) ) )
+<a name="l00941"></a>00941     {
+<a name="l00942"></a>00942         reported = <span class="keyword">true</span>;
+<a name="l00943"></a>00943         internal::runtime_warning(
+<a name="l00944"></a>00944             <span class="stringliteral">"Performance is not optimal because the hash function produces bad randomness in lower bits in %s"</span>,
+<a name="l00945"></a>00945             <span class="keyword">typeid</span>(*this).name() );
+<a name="l00946"></a>00946 <span class="preprocessor">#endif</span>
+<a name="l00947"></a>00947 <span class="preprocessor"></span>    }
+<a name="l00948"></a>00948 }
+<a name="l00949"></a>00949 
+<a name="l00950"></a>00950 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
+<a name="l00951"></a>00951 <span class="keywordtype">void</span> concurrent_hash_map<Key,T,HashCompare,A>::grow_segment( segment_mutex_t::scoped_lock& segment_lock, segment& s ) {
+<a name="l00952"></a>00952     <span class="comment">// Following is second check in a double-check.</span>
+<a name="l00953"></a>00953     <span class="keywordflow">if</span>( s.my_logical_size >= s.my_physical_size ) {
+<a name="l00954"></a>00954         chain* old_array = s.my_array;
+<a name="l00955"></a>00955         size_t old_size = s.my_physical_size;
+<a name="l00956"></a>00956         s.allocate_array( s.my_logical_size+1 );
+<a name="l00957"></a>00957         <span class="keywordflow">for</span>( size_t k=0; k<old_size; ++k )
+<a name="l00958"></a>00958             <span class="keywordflow">while</span>( node* b = old_array[k].node_list ) {
+<a name="l00959"></a>00959                 old_array[k].node_list = b->next;
+<a name="l00960"></a>00960                 hashcode_t h = my_hash_compare.hash( b->item.first );
+<a name="l00961"></a>00961                 __TBB_ASSERT( &get_segment(h)==&s, <span class="stringliteral">"hash function changed?"</span> );
+<a name="l00962"></a>00962                 s.get_chain(h,n_segment_bits).push_front(*b);
+<a name="l00963"></a>00963             }
+<a name="l00964"></a>00964         cache_aligned_allocator<chain>().deallocate( old_array, old_size );
+<a name="l00965"></a>00965     }
+<a name="l00966"></a>00966     segment_lock.downgrade_to_reader();
+<a name="l00967"></a>00967 }
+<a name="l00968"></a>00968 
+<a name="l00969"></a>00969 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
+<a name="l00970"></a>00970 <span class="keywordtype">void</span> concurrent_hash_map<Key,T,HashCompare,A>::internal_copy( <span class="keyword">const</span> concurrent_hash_map& source ) {
+<a name="l00971"></a>00971     <span class="keywordflow">for</span>( size_t i=0; i<n_segment; ++i ) {
+<a name="l00972"></a>00972         segment& s = source.my_segment[i];
+<a name="l00973"></a>00973         __TBB_ASSERT( !my_segment[i].my_array, <span class="stringliteral">"caller should have cleared"</span> );
+<a name="l00974"></a>00974         <span class="keywordflow">if</span>( s.my_logical_size ) {
+<a name="l00975"></a>00975             segment& d = my_segment[i];
+<a name="l00976"></a>00976             d.allocate_array( s.my_logical_size );
+<a name="l00977"></a>00977             d.my_logical_size = s.my_logical_size;
+<a name="l00978"></a>00978             size_t s_size = s.my_physical_size;
+<a name="l00979"></a>00979             chain* s_array = s.my_array;
+<a name="l00980"></a>00980             chain* d_array = d.my_array;
+<a name="l00981"></a>00981             <span class="keywordflow">for</span>( size_t k=0; k<s_size; ++k )
+<a name="l00982"></a>00982                 <span class="keywordflow">for</span>( node* b = s_array[k].node_list; b; b=b->next ) {
+<a name="l00983"></a>00983                     __TBB_ASSERT( &get_segment(my_hash_compare.hash( b->item.first ))==&d, <span class="stringliteral">"hash function changed?"</span> );
+<a name="l00984"></a>00984                     node* b_new = create_node(b->item.first, &b->item.second);
+<a name="l00985"></a>00985                     d_array[k].push_front(*b_new); <span class="comment">// hashcode is the same and segment and my_physical sizes are the same</span>
+<a name="l00986"></a>00986                 }
+<a name="l00987"></a>00987         }
+<a name="l00988"></a>00988     }
+<a name="l00989"></a>00989 }
+<a name="l00990"></a>00990 
+<a name="l00991"></a>00991 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
+<a name="l00992"></a>00992 <span class="keyword">template</span><<span class="keyword">typename</span> I>
+<a name="l00993"></a>00993 <span class="keywordtype">void</span> concurrent_hash_map<Key,T,HashCompare,A>::internal_copy(I first, I last) {
+<a name="l00994"></a>00994     <span class="keywordflow">for</span>(; first != last; ++first)
+<a name="l00995"></a>00995         <a class="code" href="a00103.html#2c10a645a8b40c6438c2bb119a61e93b">insert</a>( *first );
+<a name="l00996"></a>00996 }
+<a name="l00997"></a>00997 
+<a name="l00998"></a>00998 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2>
+<a name="l00999"></a>00999 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> concurrent_hash_map<Key, T, HashCompare, A1> &a, <span class="keyword">const</span> concurrent_hash_map<Key, T, HashCompare, A2> &b) {
+<a name="l01000"></a>01000     <span class="keywordflow">if</span>(a.size() != b.size()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01001"></a>01001     <span class="keyword">typename</span> concurrent_hash_map<Key, T, HashCompare, A1>::const_iterator i(a.begin()), i_end(a.end());
+<a name="l01002"></a>01002     <span class="keyword">typename</span> concurrent_hash_map<Key, T, HashCompare, A2>::const_iterator j, j_end(b.end());
+<a name="l01003"></a>01003     <span class="keywordflow">for</span>(; i != i_end; ++i) {
+<a name="l01004"></a>01004         j = b.equal_range(i->first).first;
+<a name="l01005"></a>01005         <span class="keywordflow">if</span>( j == j_end || !(i->second == j->second) ) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01006"></a>01006     }
+<a name="l01007"></a>01007     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01008"></a>01008 }
+<a name="l01009"></a>01009 
+<a name="l01010"></a>01010 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2>
+<a name="l01011"></a>01011 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> concurrent_hash_map<Key, T, HashCompare, A1> &a, <span class="keyword">const</span> concurrent_hash_map<Key, T, HashCompare, A2> &b)
+<a name="l01012"></a>01012 {    <span class="keywordflow">return</span> !(a == b); }
+<a name="l01013"></a>01013 
+<a name="l01014"></a>01014 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
+<a name="l01015"></a>01015 <span class="keyword">inline</span> <span class="keywordtype">void</span> swap(concurrent_hash_map<Key, T, HashCompare, A> &a, concurrent_hash_map<Key, T, HashCompare, A> &b)
+<a name="l01016"></a>01016 {    a.swap( b ); }
+<a name="l01017"></a>01017 
+<a name="l01018"></a>01018 } <span class="comment">// namespace tbb</span>
+<a name="l01019"></a>01019 
+<a name="l01020"></a>01020 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_concurrent_hash_map_H */</span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00206.html b/doc/html/a00206.html
deleted file mode 100644
index 82ecfdd..0000000
--- a/doc/html/a00206.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::concurrent_queue_base_v3::page Struct Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::concurrent_queue_base_v3::page Struct Reference</h1>Prefix on a page.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00330.html">concurrent_queue.h</a>></code>
-<p>
-<a href="a00034.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="o0" doxytag="tbb::internal::concurrent_queue_base_v3::page::next"></a>
-<a class="el" href="a00206.html">page</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="o1" doxytag="tbb::internal::concurrent_queue_base_v3::page::mask"></a>
-<a class="el" href="a00319.html#a21">uintptr</a> </td><td class="memItemRight" valign="bottom"><b>mask</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Prefix on a page. 
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="a00330.html">concurrent_queue.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00207.html b/doc/html/a00207.html
deleted file mode 100644
index 2718c96..0000000
--- a/doc/html/a00207.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::concurrent_queue_iterator< Container, Value > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::concurrent_queue_iterator< Container, Value > Class Template Reference</h1>Meets requirements of a forward iterator for STL.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00330.html">concurrent_queue.h</a>></code>
-<p>
-Inherits <a class="el" href="a00208.html">tbb::internal::concurrent_queue_iterator_base_v3</a>.
-<p>
-Inheritance diagram for tbb::internal::concurrent_queue_iterator< Container, Value >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00036.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::internal::concurrent_queue_iterator::concurrent_queue_iterator"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00207.html#a0">concurrent_queue_iterator</a> (const <a class="el" href="a00205.html">concurrent_queue_base</a> &queue)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct iterator pointing to head of queue. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00207.html#a2">concurrent_queue_iterator</a> (const <a class="el" href="a00207.html">concurrent_queue_iterator</a>< Container, typename Container::value_type > &other)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::internal::concurrent_queue_iterator::operator="></a>
-<a class="el" href="a00207.html">concurrent_queue_iterator</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00207.html#a3">operator=</a> (const <a class="el" href="a00207.html">concurrent_queue_iterator</a> &other)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Iterator assignment. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::internal::concurrent_queue_iterator::operator *"></a>
-Value & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00207.html#a4">operator *</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Reference to current item. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::internal::concurrent_queue_iterator::operator->"></a>
-Value * </td><td class="memItemRight" valign="bottom"><b>operator-></b> () const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a6" doxytag="tbb::internal::concurrent_queue_iterator::operator++"></a>
-<a class="el" href="a00207.html">concurrent_queue_iterator</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00207.html#a6">operator++</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Advance to next item in queue. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a7" doxytag="tbb::internal::concurrent_queue_iterator::operator++"></a>
-Value * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00207.html#a7">operator++</a> (int)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Post increment. <br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::internal::concurrent_queue_iterator::::tbb::concurrent_queue"></a>
-class </td><td class="memItemRight" valign="bottom"><b>::tbb::concurrent_queue</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Container, typename Value><br>
- class tbb::internal::concurrent_queue_iterator< Container, Value ></h3>
-
-Meets requirements of a forward iterator for STL. 
-<p>
-Value is either the T or const T type of the container. 
-<p>
-<hr><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" name="a2" doxytag="tbb::internal::concurrent_queue_iterator::concurrent_queue_iterator"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename Container, typename Value> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top"><a class="el" href="a00207.html">tbb::internal::concurrent_queue_iterator</a>< Container, Value >::<a class="el" href="a00207.html">concurrent_queue_iterator</a>           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">const <a class="el" href="a00207.html">concurrent_queue_iterator</a>< Container, typename Container::value_type > & </td>
-          <td class="mdname1" valign="top" nowrap> <em>other</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-If Value==Container::value_type, then this routine is the copy constructor. If Value==const Container::value_type, then this routine is a conversion constructor.     </td>
-  </tr>
-</table>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00330.html">concurrent_queue.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00208.html b/doc/html/a00208.html
deleted file mode 100644
index add5f56..0000000
--- a/doc/html/a00208.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::concurrent_queue_iterator_base_v3 Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::concurrent_queue_iterator_base_v3 Class Reference</h1>Type-independent portion of <a class="el" href="a00207.html">concurrent_queue_iterator</a>.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00330.html">concurrent_queue.h</a>></code>
-<p>
-Inherited by <a class="el" href="a00207.html">tbb::internal::concurrent_queue_iterator< Container, Value ></a>.
-<p>
-Inheritance diagram for tbb::internal::concurrent_queue_iterator_base_v3:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00035.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b0" doxytag="tbb::internal::concurrent_queue_iterator_base_v3::concurrent_queue_iterator_base_v3"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00208.html#b0">concurrent_queue_iterator_base_v3</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Default constructor. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b1" doxytag="tbb::internal::concurrent_queue_iterator_base_v3::concurrent_queue_iterator_base_v3"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00208.html#b1">concurrent_queue_iterator_base_v3</a> (const <a class="el" href="a00208.html">concurrent_queue_iterator_base_v3</a> &i)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b2" doxytag="tbb::internal::concurrent_queue_iterator_base_v3::concurrent_queue_iterator_base_v3"></a>
-__TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00208.html#b2">concurrent_queue_iterator_base_v3</a> (const <a class="el" href="a00205.html">concurrent_queue_base</a> &queue)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct iterator pointing to head of queue. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b3" doxytag="tbb::internal::concurrent_queue_iterator_base_v3::assign"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00208.html#b3">assign</a> (const <a class="el" href="a00208.html">concurrent_queue_iterator_base_v3</a> &i)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Assignment. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b4" doxytag="tbb::internal::concurrent_queue_iterator_base_v3::advance"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00208.html#b4">advance</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Advance iterator one step towards tail of queue. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b5" doxytag="tbb::internal::concurrent_queue_iterator_base_v3::~concurrent_queue_iterator_base_v3"></a>
-__TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00208.html#b5">~concurrent_queue_iterator_base_v3</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br></td></tr>
-<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="p0" doxytag="tbb::internal::concurrent_queue_iterator_base_v3::my_item"></a>
-void * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00208.html#p0">my_item</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Pointer to current item. <br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="n0" doxytag="tbb::internal::concurrent_queue_iterator_base_v3::operator=="></a>
-template<typename C, typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00207.html">concurrent_queue_iterator</a>< C, T > &i, const <a class="el" href="a00207.html">concurrent_queue_iterator</a>< C, U > &j)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="n1" doxytag="tbb::internal::concurrent_queue_iterator_base_v3::operator!="></a>
-template<typename C, typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00207.html">concurrent_queue_iterator</a>< C, T > &i, const <a class="el" href="a00207.html">concurrent_queue_iterator</a>< C, U > &j)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Type-independent portion of <a class="el" href="a00207.html">concurrent_queue_iterator</a>. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00330.html">concurrent_queue.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00209.html b/doc/html/a00209.html
deleted file mode 100644
index 9565cb8..0000000
--- a/doc/html/a00209.html
+++ /dev/null
@@ -1,464 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::concurrent_vector< T, A > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::concurrent_vector< T, A > Class Template Reference</h1>Concurrent vector container  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00331.html">concurrent_vector.h</a>></code>
-<p>
-Inherits <a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>.
-<p>
-Inheritance diagram for tbb::concurrent_vector< T, A >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00044.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w0" doxytag="tbb::concurrent_vector::size_type"></a>
-typedef internal::concurrent_vector_base_v3::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w1" doxytag="tbb::concurrent_vector::allocator_type"></a>
-typedef internal::allocator_base<<br>
- T, A >::allocator_type </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w2" doxytag="tbb::concurrent_vector::value_type"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w3" doxytag="tbb::concurrent_vector::difference_type"></a>
-typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w4" doxytag="tbb::concurrent_vector::reference"></a>
-typedef T & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w5" doxytag="tbb::concurrent_vector::const_reference"></a>
-typedef const T & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w6" doxytag="tbb::concurrent_vector::pointer"></a>
-typedef T * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w7" doxytag="tbb::concurrent_vector::const_pointer"></a>
-typedef const T * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w8" doxytag="tbb::concurrent_vector::iterator"></a>
-typedef <a class="el" href="a00274.html">internal::vector_iterator</a><<br>
- <a class="el" href="a00209.html">concurrent_vector</a>, T > </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w9" doxytag="tbb::concurrent_vector::const_iterator"></a>
-typedef <a class="el" href="a00274.html">internal::vector_iterator</a><<br>
- <a class="el" href="a00209.html">concurrent_vector</a>, const <br>
-T > </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w10" doxytag="tbb::concurrent_vector::reverse_iterator"></a>
-typedef std::reverse_iterator<<br>
- <a class="el" href="a00274.html">iterator</a> > </td><td class="memItemRight" valign="bottom"><b>reverse_iterator</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w11" doxytag="tbb::concurrent_vector::const_reverse_iterator"></a>
-typedef std::reverse_iterator<<br>
- <a class="el" href="a00274.html">const_iterator</a> > </td><td class="memItemRight" valign="bottom"><b>const_reverse_iterator</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w12" doxytag="tbb::concurrent_vector::reverse_iterator"></a>
-typedef std::reverse_iterator<<br>
- <a class="el" href="a00274.html">iterator</a>, T, T &, T * > </td><td class="memItemRight" valign="bottom"><b>reverse_iterator</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w13" doxytag="tbb::concurrent_vector::const_reverse_iterator"></a>
-typedef std::reverse_iterator<<br>
- <a class="el" href="a00274.html">const_iterator</a>, T, const <br>
-T &, const T * > </td><td class="memItemRight" valign="bottom"><b>const_reverse_iterator</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w14" doxytag="tbb::concurrent_vector::range_type"></a>
-typedef generic_range_type<<br>
- <a class="el" href="a00274.html">iterator</a> > </td><td class="memItemRight" valign="bottom"><b>range_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w15" doxytag="tbb::concurrent_vector::const_range_type"></a>
-typedef generic_range_type<<br>
- <a class="el" href="a00274.html">const_iterator</a> > </td><td class="memItemRight" valign="bottom"><b>const_range_type</b></td></tr>
-
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::concurrent_vector::concurrent_vector"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a0">concurrent_vector</a> (const allocator_type &a=allocator_type())</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct empty vector. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::concurrent_vector::concurrent_vector"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a1">concurrent_vector</a> (const <a class="el" href="a00209.html">concurrent_vector</a> &vector, const allocator_type &a=allocator_type())</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copying constructor. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a2" doxytag="tbb::concurrent_vector::concurrent_vector"></a>
-template<class M> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00209.html#a2">concurrent_vector</a> (const <a class="el" href="a00209.html">concurrent_vector</a>< T, M > &vector, const allocator_type &a=allocator_type())</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copying constructor for vector with different allocator type. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::concurrent_vector::concurrent_vector"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a3">concurrent_vector</a> (size_type n)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construction with initial size specified by argument n. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::concurrent_vector::concurrent_vector"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a4">concurrent_vector</a> (size_type n, const_reference t, const allocator_type &a=allocator_type())</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construction with initial size specified by argument n, initialization by copying of t, and given allocator instance. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a5" doxytag="tbb::concurrent_vector::concurrent_vector"></a>
-template<class I> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00209.html#a5">concurrent_vector</a> (I first, I last, const allocator_type &a=allocator_type())</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construction with copying iteration range and given allocator instance. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a6" doxytag="tbb::concurrent_vector::operator="></a>
-<a class="el" href="a00209.html">concurrent_vector</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a6">operator=</a> (const <a class="el" href="a00209.html">concurrent_vector</a> &vector)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Assignment. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a7" doxytag="tbb::concurrent_vector::operator="></a>
-template<class M> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"><a class="el" href="a00209.html">concurrent_vector</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00209.html#a7">operator=</a> (const <a class="el" href="a00209.html">concurrent_vector</a>< T, M > &vector)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Assignment for vector with different allocator type. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a8">grow_by</a> (size_type delta)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Grow by "delta" elements.  <a href="#a8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a9">grow_by</a> (size_type delta, const_reference t)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Grow by "delta" elements using copying constuctor.  <a href="#a9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a10" doxytag="tbb::concurrent_vector::grow_to_at_least"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a10">grow_to_at_least</a> (size_type n)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Grow array until it has at least n elements. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a11" doxytag="tbb::concurrent_vector::push_back"></a>
-size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a11">push_back</a> (const_reference item)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Push item. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a12">operator[]</a> (size_type index)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get reference to element at given index.  <a href="#a12"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a13" doxytag="tbb::concurrent_vector::operator[]"></a>
-const_reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a13">operator[]</a> (size_type index) const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get const reference to element at given index. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a14" doxytag="tbb::concurrent_vector::at"></a>
-reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a14">at</a> (size_type index)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get reference to element at given index. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a15" doxytag="tbb::concurrent_vector::at"></a>
-const_reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a15">at</a> (size_type index) const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get const reference to element at given index. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a16" doxytag="tbb::concurrent_vector::range"></a>
-range_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a16">range</a> (size_t grainsize=1)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get range for iterating with parallel algorithms. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a17" doxytag="tbb::concurrent_vector::range"></a>
-const_range_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a17">range</a> (size_t grainsize=1) const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get const range for iterating with parallel algorithms. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a18" doxytag="tbb::concurrent_vector::size"></a>
-size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a18">size</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return size of vector. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a19" doxytag="tbb::concurrent_vector::empty"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a19">empty</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return size of vector. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a20" doxytag="tbb::concurrent_vector::capacity"></a>
-size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a20">capacity</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Maximum size to which array can grow without allocating more memory. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a21">reserve</a> (size_type n)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allocate enough space to grow to size n without having to allocate more memory later.  <a href="#a21"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a22" doxytag="tbb::concurrent_vector::compact"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a22">compact</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Optimize memory usage and fragmentation. Returns true if optimization occurred. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a23" doxytag="tbb::concurrent_vector::max_size"></a>
-size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a23">max_size</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Upper bound on argument to reserve. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a24" doxytag="tbb::concurrent_vector::begin"></a>
-<a class="el" href="a00274.html">iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a24">begin</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">start iterator <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a25" doxytag="tbb::concurrent_vector::end"></a>
-<a class="el" href="a00274.html">iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a25">end</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">end iterator <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a26" doxytag="tbb::concurrent_vector::begin"></a>
-<a class="el" href="a00274.html">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a26">begin</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">start const iterator <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a27" doxytag="tbb::concurrent_vector::end"></a>
-<a class="el" href="a00274.html">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a27">end</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">end const iterator <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a28" doxytag="tbb::concurrent_vector::rbegin"></a>
-reverse_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a28">rbegin</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">reverse start iterator <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a29" doxytag="tbb::concurrent_vector::rend"></a>
-reverse_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a29">rend</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">reverse end iterator <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a30" doxytag="tbb::concurrent_vector::rbegin"></a>
-const_reverse_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a30">rbegin</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">reverse start const iterator <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a31" doxytag="tbb::concurrent_vector::rend"></a>
-const_reverse_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a31">rend</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">reverse end const iterator <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a32" doxytag="tbb::concurrent_vector::front"></a>
-reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a32">front</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">the first item <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a33" doxytag="tbb::concurrent_vector::front"></a>
-const_reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a33">front</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">the first item const <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a34" doxytag="tbb::concurrent_vector::back"></a>
-reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a34">back</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">the last item <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a35" doxytag="tbb::concurrent_vector::back"></a>
-const_reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a35">back</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">the last item const <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a36" doxytag="tbb::concurrent_vector::get_allocator"></a>
-allocator_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a36">get_allocator</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">return allocator object <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a37" doxytag="tbb::concurrent_vector::assign"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a37">assign</a> (size_type n, const_reference t)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">assign n items by copying t item <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a38" doxytag="tbb::concurrent_vector::assign"></a>
-template<class I> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00209.html#a38">assign</a> (I first, I last)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">assign range [first, last) <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a39" doxytag="tbb::concurrent_vector::swap"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a39">swap</a> (<a class="el" href="a00209.html">concurrent_vector</a> &vector)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">swap two instances <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a40">clear</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Clear container while keeping memory allocated.  <a href="#a40"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a41" doxytag="tbb::concurrent_vector::~concurrent_vector"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html#a41">~concurrent_vector</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Clear and destroy vector. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a42" doxytag="tbb::concurrent_vector::internal_vector_base"></a>
-const <a class="el" href="a00210.html">internal::concurrent_vector_base_v3</a> & </td><td class="memItemRight" valign="bottom"><b>internal_vector_base</b> () const </td></tr>
-
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::concurrent_vector::internal::vector_iterator"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::vector_iterator</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename T, class A><br>
- class tbb::concurrent_vector< T, A ></h3>
-
-Concurrent vector container 
-<p>
-<a class="el" href="a00209.html">concurrent_vector</a> is a container having the following main properties:<ul>
-<li>It provides random indexed access to its elements. The index of the first element is 0.</li><li>It ensures safe concurrent growing its size (different threads can safely append new elements).</li><li>Adding new elements does not invalidate existing iterators and does not change indices of existing items.</li></ul>
-<p>
-<dl compact><dt><b>Compatibility</b></dt><dd>The class meets all Container Requirements and Reversible Container Requirements from C++ Standard (See ISO/IEC 14882:2003(E), clause 23.1). But it doesn't meet Sequence Requirements due to absence of insert() and erase() methods.</dd></dl>
-<dl compact><dt><b>Exception Safety</b></dt><dd>Methods working with memory allocation and/or new elements construction can throw an exception if allocator fails to allocate memory or element's default constructor throws one. Concurrent vector's element of type T must conform to the following requirements:<ul>
-<li>Throwing an exception is forbidden for destructor of T.</li><li>Default constructor of T must not throw an exception OR its non-virtual destructor must safely work when its object memory is zero-initialized.</li></ul>
-Otherwise, the program's behavior is undefined. </dd></dl>
-<dl compact><dt><b></b></dt><dd>If an exception happens inside growth or assignment operation, an instance of the vector becomes invalid unless it is stated otherwise in the method documentation. Invalid state means:<ul>
-<li>There are no guaranties that all items were initialized by a constructor. The rest of items is zero-filled, including item where exception happens.</li><li>An invalid vector instance cannot be repaired; it is unable to grow anymore.</li><li>Size and capacity reported by the vector are incorrect, and calculated as if the failed operation were successful.</li><li>Attempt to access not allocated elements using operator[] or iterators results in access violation or segmentation fault exc [...]
-If a concurrent grow operation successfully completes, all the elements it has added to the vector will remain valid and accessible even if one of subsequent grow operations fails.</dd></dl>
-<dl compact><dt><b>Fragmentation</b></dt><dd>Unlike an STL vector, a <a class="el" href="a00209.html">concurrent_vector</a> does not move existing elements if it needs to allocate more memory. The container is divided into a series of contiguous arrays of elements. The first reservation, growth, or assignment operation determines the size of the first array. Using small number of elements as initial size incurs fragmentation that may increase element access time. Internal layout can be o [...]
-<dl compact><dt><b>Changes since TBB 2.0</b></dt><dd><ul>
-<li>Implemented exception-safety guaranties</li><li>Added template argument for allocator</li><li>Added allocator argument in constructors</li><li>Faster index calculation</li><li>First growth call specifies a number of segments to be merged in the first allocation.</li><li>Fixed memory blow up for swarm of vector's instances of small size</li><li>Added <a class="el" href="a00209.html#a9">grow_by(size_type n, const_reference t)</a> growth using copying constructor to init new items.</li> [...]
-</dd></dl>
-
-<p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="a40" doxytag="tbb::concurrent_vector::clear"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename T, class A> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">void <a class="el" href="a00209.html">tbb::concurrent_vector</a>< T, A >::clear           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Clear container while keeping memory allocated. 
-<p>
-To free up the memory, use in conjunction with method <a class="el" href="a00209.html#a22">compact()</a>. Not thread safe *     </td>
-  </tr>
-</table>
-<a class="anchor" name="a9" doxytag="tbb::concurrent_vector::grow_by"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename T, class A> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">size_type <a class="el" href="a00209.html">tbb::concurrent_vector</a>< T, A >::grow_by           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">size_type </td>
-          <td class="mdname" nowrap> <em>delta</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>const_reference </td>
-          <td class="mdname" nowrap> <em>t</em></td>
-        </tr>
-        <tr>
-          <td class="md"></td>
-          <td class="md">) </td>
-          <td class="md" colspan="2"><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Grow by "delta" elements using copying constuctor. 
-<p>
-Returns old size.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a8" doxytag="tbb::concurrent_vector::grow_by"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename T, class A> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">size_type <a class="el" href="a00209.html">tbb::concurrent_vector</a>< T, A >::grow_by           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">size_type </td>
-          <td class="mdname1" valign="top" nowrap> <em>delta</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Grow by "delta" elements. 
-<p>
-Returns old size.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a12" doxytag="tbb::concurrent_vector::operator[]"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename T, class A> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">reference <a class="el" href="a00209.html">tbb::concurrent_vector</a>< T, A >::operator[]           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">size_type </td>
-          <td class="mdname1" valign="top" nowrap> <em>index</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Get reference to element at given index. 
-<p>
-This method is thread-safe for concurrent reads, and also while growing the vector, as long as the calling thread has checked that index<<a class="el" href="a00209.html#a18">size()</a>.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a21" doxytag="tbb::concurrent_vector::reserve"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename T, class A> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">void <a class="el" href="a00209.html">tbb::concurrent_vector</a>< T, A >::reserve           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">size_type </td>
-          <td class="mdname1" valign="top" nowrap> <em>n</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Allocate enough space to grow to size n without having to allocate more memory later. 
-<p>
-Like most of the methods provided for STL compatibility, this method is *not* thread safe. The capacity afterwards may be bigger than the requested reservation.     </td>
-  </tr>
-</table>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00331.html">concurrent_vector.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00210.html b/doc/html/a00210.html
deleted file mode 100644
index 99b8a76..0000000
--- a/doc/html/a00210.html
+++ /dev/null
@@ -1,156 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::concurrent_vector_base_v3 Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::concurrent_vector_base_v3 Class Reference</h1>Base class of concurrent vector implementation.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00331.html">concurrent_vector.h</a>></code>
-<p>
-Inherited by <a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a><code> [private]</code>.
-<p>
-Inheritance diagram for tbb::internal::concurrent_vector_base_v3:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00039.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Protected Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="x0" doxytag="tbb::internal::concurrent_vector_base_v3::segment_index_t"></a>
-typedef size_t </td><td class="memItemRight" valign="bottom"><b>segment_index_t</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="x1" doxytag="tbb::internal::concurrent_vector_base_v3::size_type"></a>
-typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="x2" doxytag="tbb::internal::concurrent_vector_base_v3::internal_array_op1"></a>
-typedef void(__TBB_EXPORTED_FUNC * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00210.html#x2">internal_array_op1</a> )(void *begin, size_type n)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">An operation on an n-element array starting at begin. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="x3" doxytag="tbb::internal::concurrent_vector_base_v3::internal_array_op2"></a>
-typedef void(__TBB_EXPORTED_FUNC * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00210.html#x3">internal_array_op2</a> )(void *dst, const void *src, size_type n)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">An operation on n-element destination array and n-element source array. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <b>default_initial_segments</b> =  1, 
-<a class="el" href="a00210.html#x7x5">pointers_per_short_table</a> =  3, 
-<b>pointers_per_long_table</b> =  sizeof(segment_index_t) * 8
- }</td></tr>
-
-<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b2" doxytag="tbb::internal::concurrent_vector_base_v3::internal_reserve"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>internal_reserve</b> (size_type n, size_type element_size, size_type max_size)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b3" doxytag="tbb::internal::concurrent_vector_base_v3::internal_capacity"></a>
-size_type __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>internal_capacity</b> () const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b4" doxytag="tbb::internal::concurrent_vector_base_v3::internal_grow_to_at_least"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>internal_grow_to_at_least</b> (size_type new_size, size_type element_size, <a class="el" href="a00210.html#x3">internal_array_op2</a> init, const void *src)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b5" doxytag="tbb::internal::concurrent_vector_base_v3::internal_grow"></a>
-void </td><td class="memItemRight" valign="bottom"><b>internal_grow</b> (size_type start, size_type finish, size_type element_size, <a class="el" href="a00210.html#x3">internal_array_op2</a> init, const void *src)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b6" doxytag="tbb::internal::concurrent_vector_base_v3::internal_grow_by"></a>
-size_type __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>internal_grow_by</b> (size_type delta, size_type element_size, <a class="el" href="a00210.html#x3">internal_array_op2</a> init, const void *src)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b7" doxytag="tbb::internal::concurrent_vector_base_v3::internal_push_back"></a>
-void *__TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>internal_push_back</b> (size_type element_size, size_type &index)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b8" doxytag="tbb::internal::concurrent_vector_base_v3::internal_clear"></a>
-segment_index_t __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>internal_clear</b> (<a class="el" href="a00210.html#x2">internal_array_op1</a> destroy)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b9" doxytag="tbb::internal::concurrent_vector_base_v3::internal_compact"></a>
-void *__TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>internal_compact</b> (size_type element_size, void *table, <a class="el" href="a00210.html#x2">internal_array_op1</a> destroy, <a class="el" href="a00210.html#x3">internal_array_op2</a> copy)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b10" doxytag="tbb::internal::concurrent_vector_base_v3::internal_copy"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>internal_copy</b> (const <a class="el" href="a00210.html">concurrent_vector_base_v3</a> &src, size_type element_size, <a class="el" href="a00210.html#x3">internal_array_op2</a> copy)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b11" doxytag="tbb::internal::concurrent_vector_base_v3::internal_assign"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>internal_assign</b> (const <a class="el" href="a00210.html">concurrent_vector_base_v3</a> &src, size_type element_size, <a class="el" href="a00210.html#x2">internal_array_op1</a> destroy, <a class="el" href="a00210.html#x3">internal_array_op2</a> assign, <a class="el" href="a00210.html#x3">internal_array_op2</a> copy)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b12" doxytag="tbb::internal::concurrent_vector_base_v3::internal_throw_exception"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>internal_throw_exception</b> (size_type) const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b13" doxytag="tbb::internal::concurrent_vector_base_v3::internal_swap"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>internal_swap</b> (<a class="el" href="a00210.html">concurrent_vector_base_v3</a> &v)</td></tr>
-
-<tr><td colspan="2"><br><h2>Static Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f0" doxytag="tbb::internal::concurrent_vector_base_v3::segment_index_of"></a>
-segment_index_t </td><td class="memItemRight" valign="bottom"><b>segment_index_of</b> (size_type index)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f1" doxytag="tbb::internal::concurrent_vector_base_v3::segment_base"></a>
-segment_index_t </td><td class="memItemRight" valign="bottom"><b>segment_base</b> (segment_index_t k)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f2" doxytag="tbb::internal::concurrent_vector_base_v3::segment_base_index_of"></a>
-segment_index_t </td><td class="memItemRight" valign="bottom"><b>segment_base_index_of</b> (segment_index_t &index)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f3" doxytag="tbb::internal::concurrent_vector_base_v3::segment_size"></a>
-size_type </td><td class="memItemRight" valign="bottom"><b>segment_size</b> (segment_index_t k)</td></tr>
-
-<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="p0" doxytag="tbb::internal::concurrent_vector_base_v3::vector_allocator_ptr"></a>
-void *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="a00210.html#p0">vector_allocator_ptr</a> )(<a class="el" href="a00210.html">concurrent_vector_base_v3</a> &, size_t)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">allocator function pointer <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="p1" doxytag="tbb::internal::concurrent_vector_base_v3::my_first_block"></a>
-<a class="el" href="a00191.html">atomic</a>< size_type > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00210.html#p1">my_first_block</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">count of segments in the first block <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="p2" doxytag="tbb::internal::concurrent_vector_base_v3::my_early_size"></a>
-<a class="el" href="a00191.html">atomic</a>< size_type > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00210.html#p2">my_early_size</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Requested size of vector. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="p3" doxytag="tbb::internal::concurrent_vector_base_v3::my_segment"></a>
-<a class="el" href="a00191.html">atomic</a>< segment_t * > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00210.html#p3">my_segment</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Pointer to the segments table. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="p4" doxytag="tbb::internal::concurrent_vector_base_v3::my_storage"></a>
-segment_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00210.html#p4">my_storage</a> [pointers_per_short_table]</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">embedded storage of segment pointers <br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::internal::concurrent_vector_base_v3::helper"></a>
-class </td><td class="memItemRight" valign="bottom"><b>helper</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Base class of concurrent vector implementation. 
-<p>
-<hr><h2>Member Enumeration Documentation</h2>
-<a class="anchor" name="x7" doxytag="tbb::internal::concurrent_vector_base_v3::@0"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">anonymous enum<code> [protected]</code>          </td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-<dl compact><dt><b>Enumeration values: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="x7x5" doxytag="pointers_per_short_table"></a>pointers_per_short_table</em> </td><td>
-Number of slots for segment's pointers inside the class. </td></tr>
-</table>
-</dl>
-    </td>
-  </tr>
-</table>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00331.html">concurrent_vector.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00211.html b/doc/html/a00211.html
deleted file mode 100644
index f07f2ad..0000000
--- a/doc/html/a00211.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::concurrent_vector_base_v3::internal_segments_table Struct Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::concurrent_vector_base_v3::internal_segments_table Struct Reference</h1>Internal structure for compact().  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00331.html">concurrent_vector.h</a>></code>
-<p>
-<a href="a00041.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="o0" doxytag="tbb::internal::concurrent_vector_base_v3::internal_segments_table::first_block"></a>
-segment_index_t </td><td class="memItemRight" valign="bottom"><b>first_block</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="o1" doxytag="tbb::internal::concurrent_vector_base_v3::internal_segments_table::table"></a>
-void * </td><td class="memItemRight" valign="bottom"><b>table</b> [pointers_per_long_table]</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Internal structure for compact(). 
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="a00331.html">concurrent_vector.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00212.html b/doc/html/a00212.html
deleted file mode 100644
index edcf1d0..0000000
--- a/doc/html/a00212.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::do_group_task_forward< Iterator, Body, Item > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::do_group_task_forward< Iterator, Body, Item > Class Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>For internal use only.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00335.html">parallel_do.h</a>></code>
-<p>
-Inherits <a class="el" href="a00261.html">tbb::task</a>.
-<p>
-Inheritance diagram for tbb::internal::do_group_task_forward< Iterator, Body, Item >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00066.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::internal::do_group_task_forward::do_task_iter"></a>
-class </td><td class="memItemRight" valign="bottom"><b>do_task_iter</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Iterator, typename Body, typename Item><br>
- class tbb::internal::do_group_task_forward< Iterator, Body, Item ></h3>
-
-For internal use only. 
-<p>
-Unpacks a block of iterations. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00335.html">parallel_do.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00213.html b/doc/html/a00213.html
index 0e93338..3477716 100644
--- a/doc/html/a00213.html
+++ b/doc/html/a00213.html
@@ -1,38 +1,358 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::do_iteration_task< Body, Item > Class Template Reference</title>
+<title>concurrent_queue.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::do_iteration_task< Body, Item > Class Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>For internal use only.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00335.html">parallel_do.h</a>></code>
-<p>
-Inherits <a class="el" href="a00261.html">tbb::task</a>.
-<p>
-Inheritance diagram for tbb::internal::do_iteration_task< Body, Item >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00063.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::internal::do_iteration_task::parallel_do_feeder_impl"></a>
-class </td><td class="memItemRight" valign="bottom"><b>parallel_do_feeder_impl</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Body, typename Item><br>
- class tbb::internal::do_iteration_task< Body, Item ></h3>
-
-For internal use only. 
-<p>
-Executes one iteration of a do. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00335.html">parallel_do.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>concurrent_queue.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_concurrent_queue_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_concurrent_queue_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "tbb_stddef.h"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "cache_aligned_allocator.h"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include <iterator></span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include <new></span>
+<a name="l00028"></a>00028 
+<a name="l00029"></a>00029 <span class="keyword">namespace </span>tbb {
+<a name="l00030"></a>00030 
+<a name="l00031"></a>00031 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A = cache_aligned_allocator<T> > 
+<a name="l00032"></a>00032 <span class="keyword">class </span>concurrent_queue;
+<a name="l00033"></a>00033 
+<a name="l00035"></a>00035 <span class="keyword">namespace </span>internal {
+<a name="l00036"></a>00036 
+<a name="l00037"></a>00037 <span class="keyword">class </span>concurrent_queue_rep;
+<a name="l00038"></a>00038 <span class="keyword">class </span>concurrent_queue_iterator_rep;
+<a name="l00039"></a>00039 <span class="keyword">class </span>concurrent_queue_iterator_base_v3;
+<a name="l00040"></a>00040 <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> Value> <span class="keyword">class </span>concurrent_queue_iterator;
+<a name="l00041"></a>00041 
+<a name="l00043"></a>00043 
+<a name="l00045"></a>00045 <span class="keyword">class </span>concurrent_queue_base_v3: no_copy {
+<a name="l00047"></a>00047     concurrent_queue_rep* my_rep;
+<a name="l00048"></a>00048 
+<a name="l00049"></a>00049     <span class="keyword">friend</span> <span class="keyword">class </span>concurrent_queue_rep;
+<a name="l00050"></a>00050     <span class="keyword">friend</span> <span class="keyword">struct </span>micro_queue;
+<a name="l00051"></a>00051     <span class="keyword">friend</span> <span class="keyword">class </span>micro_queue_pop_finalizer;
+<a name="l00052"></a>00052     <span class="keyword">friend</span> <span class="keyword">class </span>concurrent_queue_iterator_rep;
+<a name="l00053"></a>00053     <span class="keyword">friend</span> <span class="keyword">class </span>concurrent_queue_iterator_base_v3;
+<a name="l00054"></a>00054 <span class="keyword">protected</span>:
+<a name="l00056"></a>00056     <span class="keyword">struct </span>page {
+<a name="l00057"></a>00057         page* next;
+<a name="l00058"></a>00058         uintptr mask; 
+<a name="l00059"></a>00059     };
+<a name="l00060"></a>00060 
+<a name="l00062"></a>00062     ptrdiff_t my_capacity;
+<a name="l00063"></a>00063    
+<a name="l00065"></a>00065     size_t items_per_page;
+<a name="l00066"></a>00066 
+<a name="l00068"></a>00068     size_t item_size;
+<a name="l00069"></a>00069 
+<a name="l00070"></a>00070 <span class="keyword">private</span>:
+<a name="l00071"></a>00071     <span class="keyword">virtual</span> <span class="keywordtype">void</span> copy_item( page& dst, size_t index, <span class="keyword">const</span> <span class="keywordtype">void</span>* src ) = 0;
+<a name="l00072"></a>00072     <span class="keyword">virtual</span> <span class="keywordtype">void</span> assign_and_destroy_item( <span class="keywordtype">void</span>* dst, page& src, size_t index ) = 0;
+<a name="l00073"></a>00073 <span class="keyword">protected</span>:
+<a name="l00074"></a>00074     __TBB_EXPORTED_METHOD concurrent_queue_base_v3( size_t item_size );
+<a name="l00075"></a>00075     <span class="keyword">virtual</span> __TBB_EXPORTED_METHOD ~concurrent_queue_base_v3();
+<a name="l00076"></a>00076 
+<a name="l00078"></a>00078     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_push( <span class="keyword">const</span> <span class="keywordtype">void</span>* src );
+<a name="l00079"></a>00079 
+<a name="l00081"></a>00081     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_pop( <span class="keywordtype">void</span>* dst );
+<a name="l00082"></a>00082 
+<a name="l00084"></a>00084     <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD internal_push_if_not_full( <span class="keyword">const</span> <span class="keywordtype">void</span>* src );
+<a name="l00085"></a>00085 
+<a name="l00087"></a>00087 
+<a name="l00088"></a>00088     <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD internal_pop_if_present( <span class="keywordtype">void</span>* dst );
+<a name="l00089"></a>00089 
+<a name="l00091"></a>00091     ptrdiff_t __TBB_EXPORTED_METHOD internal_size() <span class="keyword">const</span>;
+<a name="l00092"></a>00092 
+<a name="l00094"></a>00094     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_set_capacity( ptrdiff_t capacity, size_t element_size );
+<a name="l00095"></a>00095 
+<a name="l00097"></a>00097     <span class="keyword">virtual</span> page *allocate_page() = 0;
+<a name="l00098"></a>00098 
+<a name="l00100"></a>00100     <span class="keyword">virtual</span> <span class="keywordtype">void</span> deallocate_page( page *p ) = 0;
+<a name="l00101"></a>00101 
+<a name="l00103"></a>00103     <span class="comment">/* note that the name may be misleading, but it remains so due to a historical accident. */</span>
+<a name="l00104"></a>00104     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_finish_clear() ;
+<a name="l00105"></a>00105 
+<a name="l00107"></a>00107     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_throw_exception() <span class="keyword">const</span>;
+<a name="l00108"></a>00108 
+<a name="l00110"></a>00110     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD assign( <span class="keyword">const</span> concurrent_queue_base_v3& src ) ;
+<a name="l00111"></a>00111 
+<a name="l00112"></a>00112 <span class="keyword">private</span>:
+<a name="l00113"></a>00113     <span class="keyword">virtual</span> <span class="keywordtype">void</span> copy_page_item( page& dst, size_t dindex, <span class="keyword">const</span> page& src, size_t sindex ) = 0;
+<a name="l00114"></a>00114 };
+<a name="l00115"></a>00115 
+<a name="l00116"></a>00116 <span class="keyword">typedef</span> concurrent_queue_base_v3 concurrent_queue_base ;
+<a name="l00117"></a>00117 
+<a name="l00119"></a>00119 
+<a name="l00120"></a>00120 <span class="keyword">class </span>concurrent_queue_iterator_base_v3 {
+<a name="l00122"></a>00122 
+<a name="l00123"></a>00123     concurrent_queue_iterator_rep* my_rep;
+<a name="l00124"></a>00124 
+<a name="l00125"></a>00125     <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00126"></a>00126     <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator==( <span class="keyword">const</span> concurrent_queue_iterator<C,T>& i, <span class="keyword">const</span> concurrent_queue_iterator<C,U>& j );
+<a name="l00127"></a>00127 
+<a name="l00128"></a>00128     <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00129"></a>00129     <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator!=( <span class="keyword">const</span> concurrent_queue_iterator<C,T>& i, <span class="keyword">const</span> concurrent_queue_iterator<C,U>& j );
+<a name="l00130"></a>00130 <span class="keyword">protected</span>:
+<a name="l00132"></a>00132     <span class="keyword">mutable</span> <span class="keywordtype">void</span>* my_item;
+<a name="l00133"></a>00133 
+<a name="l00135"></a>00135     concurrent_queue_iterator_base_v3() : my_rep(NULL), my_item(NULL) {}
+<a name="l00136"></a>00136 
+<a name="l00138"></a>00138     concurrent_queue_iterator_base_v3( <span class="keyword">const</span> concurrent_queue_iterator_base_v3& i ) : my_rep(NULL), my_item(NULL) {
+<a name="l00139"></a>00139         assign(i);
+<a name="l00140"></a>00140     }
+<a name="l00141"></a>00141 
+<a name="l00143"></a>00143     __TBB_EXPORTED_METHOD concurrent_queue_iterator_base_v3( <span class="keyword">const</span> concurrent_queue_base& queue );
+<a name="l00144"></a>00144 
+<a name="l00146"></a>00146     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD assign( <span class="keyword">const</span> concurrent_queue_iterator_base_v3& i );
+<a name="l00147"></a>00147 
+<a name="l00149"></a>00149     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD advance();
+<a name="l00150"></a>00150 
+<a name="l00152"></a>00152     __TBB_EXPORTED_METHOD ~concurrent_queue_iterator_base_v3();
+<a name="l00153"></a>00153 };
+<a name="l00154"></a>00154 
+<a name="l00155"></a>00155 <span class="keyword">typedef</span> concurrent_queue_iterator_base_v3 concurrent_queue_iterator_base;
+<a name="l00156"></a>00156 
+<a name="l00158"></a>00158 
+<a name="l00160"></a>00160 <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> Value>
+<a name="l00161"></a>00161 <span class="keyword">class </span>concurrent_queue_iterator: <span class="keyword">public</span> concurrent_queue_iterator_base,
+<a name="l00162"></a>00162         <span class="keyword">public</span> std::iterator<std::forward_iterator_tag,Value> {
+<a name="l00163"></a>00163 <span class="preprocessor">#if !defined(_MSC_VER) || defined(__INTEL_COMPILER)</span>
+<a name="l00164"></a>00164 <span class="preprocessor"></span>    <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
+<a name="l00165"></a>00165     <span class="keyword">friend</span> class ::tbb::concurrent_queue;
+<a name="l00166"></a>00166 <span class="preprocessor">#else</span>
+<a name="l00167"></a>00167 <span class="preprocessor"></span><span class="keyword">public</span>: <span class="comment">// workaround for MSVC</span>
+<a name="l00168"></a>00168 <span class="preprocessor">#endif </span>
+<a name="l00170"></a>00170 <span class="preprocessor">    concurrent_queue_iterator( const concurrent_queue_base& queue ) :</span>
+<a name="l00171"></a>00171 <span class="preprocessor"></span>        concurrent_queue_iterator_base_v3(queue)
+<a name="l00172"></a>00172     {
+<a name="l00173"></a>00173     }
+<a name="l00174"></a>00174 <span class="keyword">public</span>:
+<a name="l00175"></a>00175     concurrent_queue_iterator() {}
+<a name="l00176"></a>00176 
+<a name="l00179"></a>00179     concurrent_queue_iterator( <span class="keyword">const</span> concurrent_queue_iterator<Container,typename Container::value_type>& other ) :
+<a name="l00180"></a>00180         concurrent_queue_iterator_base_v3(other)
+<a name="l00181"></a>00181     {}
+<a name="l00182"></a>00182 
+<a name="l00184"></a>00184     concurrent_queue_iterator& operator=( <span class="keyword">const</span> concurrent_queue_iterator& other ) {
+<a name="l00185"></a>00185         assign(other);
+<a name="l00186"></a>00186         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00187"></a>00187     }
+<a name="l00188"></a>00188 
+<a name="l00190"></a>00190     Value& operator*()<span class="keyword"> const </span>{
+<a name="l00191"></a>00191         <span class="keywordflow">return</span> *static_cast<Value*>(my_item);
+<a name="l00192"></a>00192     }
+<a name="l00193"></a>00193 
+<a name="l00194"></a>00194     Value* operator->()<span class="keyword"> const </span>{<span class="keywordflow">return</span> &operator*();}
+<a name="l00195"></a>00195 
+<a name="l00197"></a>00197     concurrent_queue_iterator& operator++() {
+<a name="l00198"></a>00198         advance();
+<a name="l00199"></a>00199         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00200"></a>00200     }
+<a name="l00201"></a>00201 
+<a name="l00203"></a>00203     Value* operator++(<span class="keywordtype">int</span>) {
+<a name="l00204"></a>00204         Value* result = &operator*();
+<a name="l00205"></a>00205         operator++();
+<a name="l00206"></a>00206         <span class="keywordflow">return</span> result;
+<a name="l00207"></a>00207     }
+<a name="l00208"></a>00208 }; <span class="comment">// concurrent_queue_iterator</span>
+<a name="l00209"></a>00209 
+<a name="l00210"></a>00210 
+<a name="l00211"></a>00211 <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00212"></a>00212 <span class="keywordtype">bool</span> operator==( <span class="keyword">const</span> concurrent_queue_iterator<C,T>& i, <span class="keyword">const</span> concurrent_queue_iterator<C,U>& j ) {
+<a name="l00213"></a>00213     <span class="keywordflow">return</span> i.my_item==j.my_item;
+<a name="l00214"></a>00214 }
+<a name="l00215"></a>00215 
+<a name="l00216"></a>00216 <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00217"></a>00217 <span class="keywordtype">bool</span> operator!=( <span class="keyword">const</span> concurrent_queue_iterator<C,T>& i, <span class="keyword">const</span> concurrent_queue_iterator<C,U>& j ) {
+<a name="l00218"></a>00218     <span class="keywordflow">return</span> i.my_item!=j.my_item;
+<a name="l00219"></a>00219 }
+<a name="l00220"></a>00220 
+<a name="l00221"></a>00221 } <span class="comment">// namespace internal;</span>
+<a name="l00222"></a>00222 
+<a name="l00224"></a>00224 
+<a name="l00226"></a>00226 
+<a name="l00229"></a>00229 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
+<a name="l00230"></a><a class="code" href="a00106.html">00230</a> <span class="keyword">class </span><a class="code" href="a00106.html">concurrent_queue</a>: <span class="keyword">public</span> internal::concurrent_queue_base_v3 {
+<a name="l00231"></a>00231     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> Value> <span class="keyword">friend</span> <span class="keyword">class </span>internal::concurrent_queue_iterator;
+<a name="l00232"></a>00232 
+<a name="l00234"></a>00234     <span class="keyword">typedef</span> <span class="keyword">typename</span> A::template rebind<char>::other page_allocator_type;
+<a name="l00235"></a>00235     page_allocator_type my_allocator;
+<a name="l00236"></a>00236 
+<a name="l00238"></a>00238     <span class="keyword">class </span>destroyer: internal::no_copy {
+<a name="l00239"></a>00239         T& my_value;
+<a name="l00240"></a>00240     <span class="keyword">public</span>:
+<a name="l00241"></a>00241         destroyer( T& value ) : my_value(value) {}
+<a name="l00242"></a>00242         ~destroyer() {my_value.~T();}          
+<a name="l00243"></a>00243     };
+<a name="l00244"></a>00244 
+<a name="l00245"></a>00245     T& get_ref( page& page, size_t index ) {
+<a name="l00246"></a>00246         __TBB_ASSERT( index<items_per_page, NULL );
+<a name="l00247"></a>00247         <span class="keywordflow">return</span> static_cast<T*>(static_cast<void*>(&page+1))[index];
+<a name="l00248"></a>00248     }
+<a name="l00249"></a>00249 
+<a name="l00250"></a>00250     <span class="comment">/*override*/</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> copy_item( page& dst, size_t index, <span class="keyword">const</span> <span class="keywordtype">void</span>* src ) {
+<a name="l00251"></a>00251         <span class="keyword">new</span>( &get_ref(dst,index) ) T(*static_cast<const T*>(src)); 
+<a name="l00252"></a>00252     }
+<a name="l00253"></a>00253 
+<a name="l00254"></a>00254     <span class="comment">/*override*/</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> copy_page_item( page& dst, size_t dindex, <span class="keyword">const</span> page& src, size_t sindex ) {
+<a name="l00255"></a>00255         <span class="keyword">new</span>( &get_ref(dst,dindex) ) T( static_cast<const T*>(static_cast<const void*>(&src+1))[sindex] );
+<a name="l00256"></a>00256     }
+<a name="l00257"></a>00257 
+<a name="l00258"></a>00258     <span class="comment">/*override*/</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> assign_and_destroy_item( <span class="keywordtype">void</span>* dst, page& src, size_t index ) {
+<a name="l00259"></a>00259         T& from = get_ref(src,index);
+<a name="l00260"></a>00260         destroyer d(from);
+<a name="l00261"></a>00261         *static_cast<T*>(dst) = from;
+<a name="l00262"></a>00262     }
+<a name="l00263"></a>00263 
+<a name="l00264"></a>00264     <span class="comment">/*overide*/</span> <span class="keyword">virtual</span> page *allocate_page() {
+<a name="l00265"></a>00265         size_t n = <span class="keyword">sizeof</span>(page) + items_per_page*item_size;
+<a name="l00266"></a>00266         page *p = reinterpret_cast<page*>(my_allocator.allocate( n ));
+<a name="l00267"></a>00267         <span class="keywordflow">if</span>( !p ) internal_throw_exception(); 
+<a name="l00268"></a>00268         <span class="keywordflow">return</span> p;
+<a name="l00269"></a>00269     }
+<a name="l00270"></a>00270 
+<a name="l00271"></a>00271     <span class="comment">/*override*/</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> deallocate_page( page *p ) {
+<a name="l00272"></a>00272         size_t n = <span class="keyword">sizeof</span>(page) + items_per_page*item_size;
+<a name="l00273"></a>00273         my_allocator.deallocate( reinterpret_cast<char*>(p), n );
+<a name="l00274"></a>00274     }
+<a name="l00275"></a>00275 
+<a name="l00276"></a>00276 <span class="keyword">public</span>:
+<a name="l00278"></a><a class="code" href="a00106.html#ec587adbe0da968d828c0178b2d863b0">00278</a>     <span class="keyword">typedef</span> T <a class="code" href="a00106.html#ec587adbe0da968d828c0178b2d863b0">value_type</a>;
+<a name="l00279"></a>00279 
+<a name="l00281"></a><a class="code" href="a00106.html#94ef8d1e9a05c53e3b637ea5eb553a6d">00281</a>     <span class="keyword">typedef</span> A <a class="code" href="a00106.html#94ef8d1e9a05c53e3b637ea5eb553a6d">allocator_type</a>;
+<a name="l00282"></a>00282 
+<a name="l00284"></a><a class="code" href="a00106.html#ea0fab9094080138fef0802125160739">00284</a>     <span class="keyword">typedef</span> T& <a class="code" href="a00106.html#ea0fab9094080138fef0802125160739">reference</a>;
+<a name="l00285"></a>00285 
+<a name="l00287"></a><a class="code" href="a00106.html#981c7c13a4aef3d03f35797ebe214d59">00287</a>     <span class="keyword">typedef</span> <span class="keyword">const</span> T& <a class="code" href="a00106.html#981c7c13a4aef3d03f35797ebe214d59">const_reference</a>;
+<a name="l00288"></a>00288 
+<a name="l00290"></a>00290 
+<a name="l00292"></a><a class="code" href="a00106.html#75868c28b0e431caa3ac36404adff4cf">00292</a>     <span class="keyword">typedef</span> std::ptrdiff_t <a class="code" href="a00106.html#75868c28b0e431caa3ac36404adff4cf">size_type</a>;
+<a name="l00293"></a>00293 
+<a name="l00295"></a><a class="code" href="a00106.html#3c0b5f19b820719ab4f69eeb9bf75afc">00295</a>     <span class="keyword">typedef</span> std::ptrdiff_t <a class="code" href="a00106.html#3c0b5f19b820719ab4f69eeb9bf75afc">difference_type</a>;
+<a name="l00296"></a>00296 
+<a name="l00298"></a><a class="code" href="a00106.html#6a4f9b451ceb08ae82709eef4c8a1a6b">00298</a>     <span class="keyword">explicit</span> <a class="code" href="a00106.html#6a4f9b451ceb08ae82709eef4c8a1a6b">concurrent_queue</a>(<span class="keyword">const</span> <a class="code" href="a00106.html#94ef8d1e9a05c53e3b637ea5eb553a6d">allocator_type</a>  &a = <a class="code" href="a00106.html#94ef8d1e9a05c53e3b637ea5eb553a6d">allocator_type</a>()) : 
+<a name="l00299"></a>00299         concurrent_queue_base_v3( sizeof(T) ), my_allocator( a )
+<a name="l00300"></a>00300     {
+<a name="l00301"></a>00301     }
+<a name="l00302"></a>00302 
+<a name="l00304"></a>00304     <a class="code" href="a00106.html#43480ba7f4ba2401d1213ee23248e4cd">~concurrent_queue</a>();
+<a name="l00305"></a>00305 
+<a name="l00307"></a><a class="code" href="a00106.html#28259b68d5ba6cc77abf72b8d7d22e69">00307</a>     <span class="keywordtype">void</span> <a class="code" href="a00106.html#28259b68d5ba6cc77abf72b8d7d22e69">push</a>( <span class="keyword">const</span> T& source ) {
+<a name="l00308"></a>00308         internal_push( &source );
+<a name="l00309"></a>00309     }
+<a name="l00310"></a>00310 
+<a name="l00312"></a>00312 
+<a name="l00313"></a><a class="code" href="a00106.html#170ab4b57a20f0ff00fb8642d4f55e5c">00313</a>     <span class="keywordtype">void</span> <a class="code" href="a00106.html#170ab4b57a20f0ff00fb8642d4f55e5c">pop</a>( T& destination ) {
+<a name="l00314"></a>00314         internal_pop( &destination );
+<a name="l00315"></a>00315     }
+<a name="l00316"></a>00316 
+<a name="l00318"></a>00318 
+<a name="l00320"></a><a class="code" href="a00106.html#0a91166177c0ceb5a1ddd22827509345">00320</a>     <span class="keywordtype">bool</span> <a class="code" href="a00106.html#0a91166177c0ceb5a1ddd22827509345">push_if_not_full</a>( <span class="keyword">const</span> T& source ) {
+<a name="l00321"></a>00321         <span class="keywordflow">return</span> internal_push_if_not_full( &source );
+<a name="l00322"></a>00322     }
+<a name="l00323"></a>00323 
+<a name="l00325"></a>00325 
+<a name="l00327"></a><a class="code" href="a00106.html#7088b06d6c226c44a07a310c12176a0c">00327</a>     <span class="keywordtype">bool</span> <a class="code" href="a00106.html#7088b06d6c226c44a07a310c12176a0c">pop_if_present</a>( T& destination ) {
+<a name="l00328"></a>00328         <span class="keywordflow">return</span> internal_pop_if_present( &destination );
+<a name="l00329"></a>00329     }
+<a name="l00330"></a>00330 
+<a name="l00332"></a>00332 
+<a name="l00335"></a><a class="code" href="a00106.html#94499bca8d540a1927f9368b386dabea">00335</a>     <a class="code" href="a00106.html#75868c28b0e431caa3ac36404adff4cf">size_type</a> <a class="code" href="a00106.html#94499bca8d540a1927f9368b386dabea">size</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> internal_size();}
+<a name="l00336"></a>00336 
+<a name="l00338"></a><a class="code" href="a00106.html#313c369998b69de6e039b9afb9ca3237">00338</a>     <span class="keywordtype">bool</span> <a class="code" href="a00106.html#313c369998b69de6e039b9afb9ca3237">empty</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="a00106.html#94499bca8d540a1927f9368b386dabea">size</a>()<=0;}
+<a name="l00339"></a>00339 
+<a name="l00341"></a><a class="code" href="a00106.html#95796a6ad29ea6fe102ac1663a776d07">00341</a>     <a class="code" href="a00106.html#75868c28b0e431caa3ac36404adff4cf">size_type</a> <a class="code" href="a00106.html#95796a6ad29ea6fe102ac1663a776d07">capacity</a>()<span class="keyword"> const </span>{
+<a name="l00342"></a>00342         <span class="keywordflow">return</span> my_capacity;
+<a name="l00343"></a>00343     }
+<a name="l00344"></a>00344 
+<a name="l00346"></a>00346 
+<a name="l00348"></a><a class="code" href="a00106.html#92977e1eb9af259f3aef69f0181476c1">00348</a>     <span class="keywordtype">void</span> <a class="code" href="a00106.html#92977e1eb9af259f3aef69f0181476c1">set_capacity</a>( <a class="code" href="a00106.html#75868c28b0e431caa3ac36404adff4cf">size_type</a> <a class="code" href="a00106.html#95796a6ad29ea6fe102ac1663a776d07">capacity</a> ) {
+<a name="l00349"></a>00349         internal_set_capacity( capacity, <span class="keyword">sizeof</span>(T) );
+<a name="l00350"></a>00350     }
+<a name="l00351"></a>00351 
+<a name="l00353"></a><a class="code" href="a00106.html#11a088eee45cc1cb0c0b32adadbff92e">00353</a>     <a class="code" href="a00106.html#94ef8d1e9a05c53e3b637ea5eb553a6d">allocator_type</a> <a class="code" href="a00106.html#11a088eee45cc1cb0c0b32adadbff92e">get_allocator</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this->my_allocator; }
+<a name="l00354"></a>00354 
+<a name="l00356"></a>00356     <span class="keywordtype">void</span> <a class="code" href="a00106.html#8a6a8a7a8d977d86ae8bd254b9794af1">clear</a>() ;
+<a name="l00357"></a>00357 
+<a name="l00358"></a>00358     <span class="keyword">typedef</span> internal::concurrent_queue_iterator<concurrent_queue,T> iterator;
+<a name="l00359"></a>00359     <span class="keyword">typedef</span> internal::concurrent_queue_iterator<concurrent_queue,const T> const_iterator;
+<a name="l00360"></a>00360 
+<a name="l00361"></a>00361     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00362"></a>00362     <span class="comment">// The iterators are intended only for debugging.  They are slow and not thread safe.</span>
+<a name="l00363"></a>00363     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00364"></a>00364     iterator begin() {<span class="keywordflow">return</span> iterator(*<span class="keyword">this</span>);}
+<a name="l00365"></a>00365     iterator end() {<span class="keywordflow">return</span> iterator();}
+<a name="l00366"></a>00366     const_iterator begin()<span class="keyword"> const </span>{<span class="keywordflow">return</span> const_iterator(*<span class="keyword">this</span>);}
+<a name="l00367"></a>00367     const_iterator end()<span class="keyword"> const </span>{<span class="keywordflow">return</span> const_iterator();}
+<a name="l00368"></a>00368     
+<a name="l00370"></a><a class="code" href="a00106.html#a919fd9a3d593dc4c8205a4636a8062e">00370</a>     <a class="code" href="a00106.html#6a4f9b451ceb08ae82709eef4c8a1a6b">concurrent_queue</a>( <span class="keyword">const</span> <a class="code" href="a00106.html">concurrent_queue</a>& src, <span class="keyword">const</span> <a class="code" href="a00106.html#94ef8d1e9a05c53e3b637ea5eb553a6d">allocator_type</a> &a = <a class="code" href="a00106.html#94ef8d1e9a05c53e3b637ea5eb553a6d" [...]
+<a name="l00371"></a>00371         concurrent_queue_base_v3( sizeof(T) ), my_allocator( a )
+<a name="l00372"></a>00372     {
+<a name="l00373"></a>00373         assign( src );
+<a name="l00374"></a>00374     }
+<a name="l00375"></a>00375 
+<a name="l00377"></a>00377     <span class="keyword">template</span><<span class="keyword">typename</span> InputIterator>
+<a name="l00378"></a><a class="code" href="a00106.html#d3ec1af9c793007ec2ecbdcf637f8ec5">00378</a>     <a class="code" href="a00106.html#6a4f9b451ceb08ae82709eef4c8a1a6b">concurrent_queue</a>( InputIterator begin, InputIterator end, <span class="keyword">const</span> <a class="code" href="a00106.html#94ef8d1e9a05c53e3b637ea5eb553a6d">allocator_type</a> &a = <a class="code" href="a00106.html#94ef8d1e9a05c53e3b637ea5eb553a6d">allocator_type</a>()) :
+<a name="l00379"></a>00379         concurrent_queue_base_v3( sizeof(T) ), my_allocator( a )
+<a name="l00380"></a>00380     {
+<a name="l00381"></a>00381         <span class="keywordflow">for</span>( ; begin != end; ++begin )
+<a name="l00382"></a>00382             internal_push_if_not_full(&*begin);
+<a name="l00383"></a>00383     }
+<a name="l00384"></a>00384 }; 
+<a name="l00385"></a>00385 
+<a name="l00386"></a>00386 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
+<a name="l00387"></a><a class="code" href="a00106.html#43480ba7f4ba2401d1213ee23248e4cd">00387</a> <a class="code" href="a00106.html">concurrent_queue<T,A>::~concurrent_queue</a>() {
+<a name="l00388"></a>00388     <a class="code" href="a00106.html#8a6a8a7a8d977d86ae8bd254b9794af1">clear</a>();
+<a name="l00389"></a>00389     internal_finish_clear();
+<a name="l00390"></a>00390 }
+<a name="l00391"></a>00391 
+<a name="l00392"></a>00392 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
+<a name="l00393"></a><a class="code" href="a00106.html#8a6a8a7a8d977d86ae8bd254b9794af1">00393</a> <span class="keywordtype">void</span> <a class="code" href="a00106.html">concurrent_queue<T,A>::clear</a>() {
+<a name="l00394"></a>00394     <span class="keywordflow">while</span>( !<a class="code" href="a00106.html#313c369998b69de6e039b9afb9ca3237">empty</a>() ) {
+<a name="l00395"></a>00395         T value;
+<a name="l00396"></a>00396         internal_pop_if_present(&value);
+<a name="l00397"></a>00397     }
+<a name="l00398"></a>00398 }
+<a name="l00399"></a>00399 
+<a name="l00400"></a>00400 } <span class="comment">// namespace tbb</span>
+<a name="l00401"></a>00401 
+<a name="l00402"></a>00402 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_concurrent_queue_H */</span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00214.html b/doc/html/a00214.html
deleted file mode 100644
index 15baa32..0000000
--- a/doc/html/a00214.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::do_task_iter< Iterator, Body, Item > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::do_task_iter< Iterator, Body, Item > Class Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>For internal use only.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00335.html">parallel_do.h</a>></code>
-<p>
-Inherits <a class="el" href="a00261.html">tbb::task</a>.
-<p>
-Inheritance diagram for tbb::internal::do_task_iter< Iterator, Body, Item >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00068.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::internal::do_task_iter::do_task_iter"></a>
- </td><td class="memItemRight" valign="bottom"><b>do_task_iter</b> (Iterator first, Iterator last, <a class="el" href="a00232.html">feeder_type</a> &feeder)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Iterator, typename Body, typename Item><br>
- class tbb::internal::do_task_iter< Iterator, Body, Item ></h3>
-
-For internal use only. 
-<p>
-Gets block of iterations and packages them into a do_group_task. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00335.html">parallel_do.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00215.html b/doc/html/a00215.html
deleted file mode 100644
index 70efba9..0000000
--- a/doc/html/a00215.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::empty_task Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::empty_task Class Reference</h1>task that does nothing. Useful for synchronization.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00349.html">task.h</a>></code>
-<p>
-Inherits <a class="el" href="a00261.html">tbb::task</a>.
-<p>
-Inheritance diagram for tbb::empty_task:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00123.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-task that does nothing. Useful for synchronization. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00349.html">task.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00216.html b/doc/html/a00216.html
deleted file mode 100644
index 1b1c954..0000000
--- a/doc/html/a00216.html
+++ /dev/null
@@ -1,200 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::filter Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::filter Class Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>A stage in a pipeline.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00342.html">pipeline.h</a>></code>
-<p>
-Inherits <a class="el" href="a00230.html">tbb::internal::no_copy</a>.
-<p>
-Inheritance diagram for tbb::filter:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00096.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00216.html#w4">mode</a> { <a class="el" href="a00216.html#w4w0">parallel</a> =  current_version | filter_is_out_of_order, 
-<a class="el" href="a00216.html#w4w1">serial_in_order</a> =  current_version | filter_is_serial, 
-<a class="el" href="a00216.html#w4w2">serial_out_of_order</a> =  current_version | filter_is_serial | filter_is_out_of_order, 
-<a class="el" href="a00216.html#w4w3">serial</a> =  serial_in_order
- }</td></tr>
-
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::filter::is_serial"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00216.html#a0">is_serial</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">True if filter is serial. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::filter::is_ordered"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>is_ordered</b> () const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00216.html#a2">operator()</a> (void *item)=0</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operate on an item from the input stream, and return item for output stream.  <a href="#a2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00216.html#a3">~filter</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroy filter.  <a href="#a3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00216.html#a4">finalize</a> (void *)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroys item if pipeline is cancelled.  <a href="#a4"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b0" doxytag="tbb::filter::filter"></a>
- </td><td class="memItemRight" valign="bottom"><b>filter</b> (bool is_serial_)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b1" doxytag="tbb::filter::filter"></a>
- </td><td class="memItemRight" valign="bottom"><b>filter</b> (<a class="el" href="a00216.html#w4">mode</a> filter_mode)</td></tr>
-
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::filter::internal::stage_task"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::stage_task</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n1" doxytag="tbb::filter::pipeline"></a>
-class </td><td class="memItemRight" valign="bottom"><b>pipeline</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-A stage in a pipeline. 
-<p>
-<hr><h2>Member Enumeration Documentation</h2>
-<a class="anchor" name="w4" doxytag="tbb::filter::mode"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">enum <a class="el" href="a00216.html#w4">tbb::filter::mode</a>          </td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-<dl compact><dt><b>Enumeration values: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="w4w0" doxytag="parallel"></a>parallel</em> </td><td>
-processes multiple items in parallel and in no particular order </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="w4w1" doxytag="serial_in_order"></a>serial_in_order</em> </td><td>
-processes items one at a time; all such filters process items in the same order </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="w4w2" doxytag="serial_out_of_order"></a>serial_out_of_order</em> </td><td>
-processes items one at a time and in no particular order </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="w4w3" doxytag="serial"></a>serial</em> </td><td>
-<dl compact><dt><b><a class="el" href="deprecated.html#_deprecated000001">Deprecated:</a></b></dt><dd>use serial_in_order instead</dd></dl>
-</td></tr>
-</table>
-</dl>
-    </td>
-  </tr>
-</table>
-<hr><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" name="a3" doxytag="tbb::filter::~filter"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">virtual __TBB_EXPORTED_METHOD tbb::filter::~<a class="el" href="a00216.html">filter</a>           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [virtual]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Destroy filter. 
-<p>
-If the filter was added to a pipeline, the pipeline must be destroyed first.     </td>
-  </tr>
-</table>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="a4" doxytag="tbb::filter::finalize"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">virtual void tbb::filter::finalize           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">void * </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline, virtual]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Destroys item if pipeline is cancelled. 
-<p>
-Required to prevent memory leaks Note it can be called concurrently even for serial filters.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a2" doxytag="tbb::filter::operator()"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">virtual void* tbb::filter::operator()           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">void * </td>
-          <td class="mdname1" valign="top" nowrap> <em>item</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [pure virtual]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Operate on an item from the input stream, and return item for output stream. 
-<p>
-Returns NULL if filter is a sink.     </td>
-  </tr>
-</table>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00342.html">pipeline.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00217.html b/doc/html/a00217.html
deleted file mode 100644
index ca770cd..0000000
--- a/doc/html/a00217.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::final_scan_tag Struct Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::final_scan_tag Struct Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>Used to indicate that the final scan is being performed.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00338.html">parallel_scan.h</a>></code>
-<p>
-<a href="a00076.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e0" doxytag="tbb::final_scan_tag::is_final_scan"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>is_final_scan</b> ()</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Used to indicate that the final scan is being performed. 
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="a00338.html">parallel_scan.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00218.html b/doc/html/a00218.html
deleted file mode 100644
index 67f9671..0000000
--- a/doc/html/a00218.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::final_sum< Range, Body > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::final_sum< Range, Body > Class Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>Performs final scan for a leaf.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00338.html">parallel_scan.h</a>></code>
-<p>
-Inherits <a class="el" href="a00261.html">tbb::task</a>.
-<p>
-Inheritance diagram for tbb::internal::final_sum< Range, Body >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00077.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::internal::final_sum::final_sum"></a>
- </td><td class="memItemRight" valign="bottom"><b>final_sum</b> (Body &body_)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::internal::final_sum::finish_construction"></a>
-void </td><td class="memItemRight" valign="bottom"><b>finish_construction</b> (const Range &range_, Body *stuff_last_)</td></tr>
-
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="o0" doxytag="tbb::internal::final_sum::body"></a>
-Body </td><td class="memItemRight" valign="bottom"><b>body</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Range, typename Body><br>
- class tbb::internal::final_sum< Range, Body ></h3>
-
-Performs final scan for a leaf. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00338.html">parallel_scan.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00219.html b/doc/html/a00219.html
index f44e543..a36c4d3 100644
--- a/doc/html/a00219.html
+++ b/doc/html/a00219.html
@@ -1,36 +1,824 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::finish_reduce< Body > Class Template Reference</title>
+<title>concurrent_vector.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::finish_reduce< Body > Class Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>Task type use to combine the partial results of parallel_reduce.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00337.html">parallel_reduce.h</a>></code>
-<p>
-Inherits <a class="el" href="a00261.html">tbb::task</a>.
-<p>
-Inheritance diagram for tbb::internal::finish_reduce< Body >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00070.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::internal::finish_reduce::start_reduce"></a>
-class </td><td class="memItemRight" valign="bottom"><b>start_reduce</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Body><br>
- class tbb::internal::finish_reduce< Body ></h3>
-
-Task type use to combine the partial results of parallel_reduce. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00337.html">parallel_reduce.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>concurrent_vector.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_concurrent_vector_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_concurrent_vector_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "tbb_stddef.h"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include <algorithm></span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include <iterator></span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include <memory></span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include <limits></span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include <new></span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include <cstring></span>
+<a name="l00031"></a>00031 <span class="preprocessor">#include "atomic.h"</span>
+<a name="l00032"></a>00032 <span class="preprocessor">#include "cache_aligned_allocator.h"</span>
+<a name="l00033"></a>00033 <span class="preprocessor">#include "blocked_range.h"</span>
+<a name="l00034"></a>00034 
+<a name="l00035"></a>00035 <span class="preprocessor">#include "tbb_machine.h"</span>
+<a name="l00036"></a>00036 
+<a name="l00037"></a>00037 <span class="preprocessor">#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && defined(_Wp64)</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span>    <span class="comment">// Workaround for overzealous compiler warnings in /Wp64 mode</span>
+<a name="l00039"></a>00039 <span class="preprocessor">    #pragma warning (push)</span>
+<a name="l00040"></a>00040 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (disable: 4267)</span>
+<a name="l00041"></a>00041 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00042"></a>00042 <span class="preprocessor"></span>
+<a name="l00043"></a>00043 <span class="keyword">namespace </span>tbb {
+<a name="l00044"></a>00044 
+<a name="l00045"></a>00045 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A = cache_aligned_allocator<T> >
+<a name="l00046"></a>00046 <span class="keyword">class </span>concurrent_vector;
+<a name="l00047"></a>00047 
+<a name="l00049"></a>00049 <span class="preprocessor">#define __TBB_BAD_ALLOC reinterpret_cast<void*>(size_t(63))</span>
+<a name="l00050"></a>00050 <span class="preprocessor"></span>
+<a name="l00052"></a>00052 <span class="keyword">namespace </span>internal {
+<a name="l00053"></a>00053 
+<a name="l00055"></a>00055     <span class="keywordtype">void</span>* __TBB_EXPORTED_FUNC itt_load_pointer_v3( <span class="keyword">const</span> <span class="keywordtype">void</span>* src );
+<a name="l00056"></a>00056 
+<a name="l00058"></a>00058 
+<a name="l00059"></a>00059     <span class="keyword">class </span>concurrent_vector_base_v3 {
+<a name="l00060"></a>00060     <span class="keyword">protected</span>:
+<a name="l00061"></a>00061 
+<a name="l00062"></a>00062         <span class="comment">// Basic types declarations</span>
+<a name="l00063"></a>00063         <span class="keyword">typedef</span> size_t segment_index_t;
+<a name="l00064"></a>00064         <span class="keyword">typedef</span> size_t size_type;
+<a name="l00065"></a>00065 
+<a name="l00066"></a>00066         <span class="comment">// Using enumerations due to Mac linking problems of static const variables</span>
+<a name="l00067"></a>00067         <span class="keyword">enum</span> {
+<a name="l00068"></a>00068             <span class="comment">// Size constants</span>
+<a name="l00069"></a>00069             default_initial_segments = 1, <span class="comment">// 2 initial items</span>
+<a name="l00071"></a>00071 <span class="comment"></span>            pointers_per_short_table = 3, <span class="comment">// to fit into 8 words of entire structure</span>
+<a name="l00072"></a>00072             pointers_per_long_table = <span class="keyword">sizeof</span>(segment_index_t) * 8 <span class="comment">// one segment per bit</span>
+<a name="l00073"></a>00073         };
+<a name="l00074"></a>00074 
+<a name="l00075"></a>00075         <span class="comment">// Segment pointer. Can be zero-initialized</span>
+<a name="l00076"></a>00076         <span class="keyword">struct </span>segment_t {
+<a name="l00077"></a>00077             <span class="keywordtype">void</span>* array;
+<a name="l00078"></a>00078 <span class="preprocessor">#if TBB_USE_ASSERT</span>
+<a name="l00079"></a>00079 <span class="preprocessor"></span>            ~segment_t() {
+<a name="l00080"></a>00080                 __TBB_ASSERT( array <= __TBB_BAD_ALLOC, <span class="stringliteral">"should have been freed by clear"</span> );
+<a name="l00081"></a>00081             }
+<a name="l00082"></a>00082 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
+<a name="l00083"></a>00083         };
+<a name="l00084"></a>00084  
+<a name="l00085"></a>00085         <span class="comment">// Data fields</span>
+<a name="l00086"></a>00086 
+<a name="l00088"></a>00088         <span class="keywordtype">void</span>* (*vector_allocator_ptr)(concurrent_vector_base_v3 &, size_t);
+<a name="l00089"></a>00089 
+<a name="l00091"></a>00091         atomic<size_type> my_first_block;
+<a name="l00092"></a>00092 
+<a name="l00094"></a>00094         atomic<size_type> my_early_size;
+<a name="l00095"></a>00095 
+<a name="l00097"></a>00097         atomic<segment_t*> my_segment;
+<a name="l00098"></a>00098 
+<a name="l00100"></a>00100         segment_t my_storage[pointers_per_short_table];
+<a name="l00101"></a>00101 
+<a name="l00102"></a>00102         <span class="comment">// Methods</span>
+<a name="l00103"></a>00103 
+<a name="l00104"></a>00104         concurrent_vector_base_v3() {
+<a name="l00105"></a>00105             my_early_size = 0;
+<a name="l00106"></a>00106             my_first_block = 0; <span class="comment">// here is not default_initial_segments</span>
+<a name="l00107"></a>00107             <span class="keywordflow">for</span>( segment_index_t i = 0; i < pointers_per_short_table; i++)
+<a name="l00108"></a>00108                 my_storage[i].array = NULL;
+<a name="l00109"></a>00109             my_segment = my_storage;
+<a name="l00110"></a>00110         }
+<a name="l00111"></a>00111         __TBB_EXPORTED_METHOD ~concurrent_vector_base_v3();
+<a name="l00112"></a>00112 
+<a name="l00113"></a>00113         <span class="keyword">static</span> segment_index_t segment_index_of( size_type index ) {
+<a name="l00114"></a>00114             <span class="keywordflow">return</span> segment_index_t( __TBB_Log2( index|1 ) );
+<a name="l00115"></a>00115         }
+<a name="l00116"></a>00116 
+<a name="l00117"></a>00117         <span class="keyword">static</span> segment_index_t segment_base( segment_index_t k ) {
+<a name="l00118"></a>00118             <span class="keywordflow">return</span> (segment_index_t(1)<<k & ~segment_index_t(1));
+<a name="l00119"></a>00119         }
+<a name="l00120"></a>00120 
+<a name="l00121"></a>00121         <span class="keyword">static</span> <span class="keyword">inline</span> segment_index_t segment_base_index_of( segment_index_t &index ) {
+<a name="l00122"></a>00122             segment_index_t k = segment_index_of( index );
+<a name="l00123"></a>00123             index -= segment_base(k);
+<a name="l00124"></a>00124             <span class="keywordflow">return</span> k;
+<a name="l00125"></a>00125         }
+<a name="l00126"></a>00126 
+<a name="l00127"></a>00127         <span class="keyword">static</span> size_type segment_size( segment_index_t k ) {
+<a name="l00128"></a>00128             <span class="keywordflow">return</span> segment_index_t(1)<<k; <span class="comment">// fake value for k==0</span>
+<a name="l00129"></a>00129         }
+<a name="l00130"></a>00130 
+<a name="l00132"></a>00132         <span class="keyword">typedef</span> void (__TBB_EXPORTED_FUNC *internal_array_op1)(<span class="keywordtype">void</span>* begin, size_type n );
+<a name="l00133"></a>00133 
+<a name="l00135"></a>00135         <span class="keyword">typedef</span> void (__TBB_EXPORTED_FUNC *internal_array_op2)(<span class="keywordtype">void</span>* dst, <span class="keyword">const</span> <span class="keywordtype">void</span>* src, size_type n );
+<a name="l00136"></a>00136 
+<a name="l00138"></a>00138         <span class="keyword">struct </span>internal_segments_table {
+<a name="l00139"></a>00139             segment_index_t first_block;
+<a name="l00140"></a>00140             <span class="keywordtype">void</span>* table[pointers_per_long_table];
+<a name="l00141"></a>00141         };
+<a name="l00142"></a>00142 
+<a name="l00143"></a>00143         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_reserve( size_type n, size_type element_size, size_type max_size );
+<a name="l00144"></a>00144         size_type __TBB_EXPORTED_METHOD internal_capacity() <span class="keyword">const</span>;
+<a name="l00145"></a>00145         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_grow_to_at_least( size_type new_size, size_type element_size, internal_array_op2 init, <span class="keyword">const</span> <span class="keywordtype">void</span> *src );
+<a name="l00146"></a>00146         <span class="keywordtype">void</span> internal_grow( size_type start, size_type finish, size_type element_size, internal_array_op2 init, <span class="keyword">const</span> <span class="keywordtype">void</span> *src );
+<a name="l00147"></a>00147         size_type __TBB_EXPORTED_METHOD internal_grow_by( size_type delta, size_type element_size, internal_array_op2 init, <span class="keyword">const</span> <span class="keywordtype">void</span> *src );
+<a name="l00148"></a>00148         <span class="keywordtype">void</span>* __TBB_EXPORTED_METHOD internal_push_back( size_type element_size, size_type& index );
+<a name="l00149"></a>00149         segment_index_t __TBB_EXPORTED_METHOD internal_clear( internal_array_op1 destroy );
+<a name="l00150"></a>00150         <span class="keywordtype">void</span>* __TBB_EXPORTED_METHOD internal_compact( size_type element_size, <span class="keywordtype">void</span> *table, internal_array_op1 destroy, internal_array_op2 copy );
+<a name="l00151"></a>00151         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_copy( <span class="keyword">const</span> concurrent_vector_base_v3& src, size_type element_size, internal_array_op2 copy );
+<a name="l00152"></a>00152         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_assign( <span class="keyword">const</span> concurrent_vector_base_v3& src, size_type element_size,
+<a name="l00153"></a>00153                               internal_array_op1 destroy, internal_array_op2 assign, internal_array_op2 copy );
+<a name="l00154"></a>00154         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_throw_exception(size_type) <span class="keyword">const</span>;
+<a name="l00155"></a>00155         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_swap(concurrent_vector_base_v3& v);
+<a name="l00156"></a>00156 
+<a name="l00157"></a>00157 <span class="keyword">private</span>:
+<a name="l00159"></a>00159         <span class="keyword">class </span>helper;
+<a name="l00160"></a>00160         <span class="keyword">friend</span> <span class="keyword">class </span>helper;
+<a name="l00161"></a>00161     };
+<a name="l00162"></a>00162     
+<a name="l00163"></a>00163     <span class="keyword">typedef</span> concurrent_vector_base_v3 concurrent_vector_base;
+<a name="l00164"></a>00164 
+<a name="l00166"></a>00166 
+<a name="l00168"></a>00168     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> Value>
+<a name="l00169"></a>00169     <span class="keyword">class </span>vector_iterator 
+<a name="l00170"></a>00170     {
+<a name="l00172"></a>00172         Container* my_vector;
+<a name="l00173"></a>00173 
+<a name="l00175"></a>00175         size_t my_index;
+<a name="l00176"></a>00176 
+<a name="l00178"></a>00178 
+<a name="l00179"></a>00179         <span class="keyword">mutable</span> Value* my_item;
+<a name="l00180"></a>00180 
+<a name="l00181"></a>00181         <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> T>
+<a name="l00182"></a>00182         <span class="keyword">friend</span> vector_iterator<C,T> operator+( ptrdiff_t offset, <span class="keyword">const</span> vector_iterator<C,T>& v );
+<a name="l00183"></a>00183 
+<a name="l00184"></a>00184         <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00185"></a>00185         <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator==( <span class="keyword">const</span> vector_iterator<C,T>& i, <span class="keyword">const</span> vector_iterator<C,U>& j );
+<a name="l00186"></a>00186 
+<a name="l00187"></a>00187         <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00188"></a>00188         <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator<( const vector_iterator<C,T>& i, <span class="keyword">const</span> vector_iterator<C,U>& j );
+<a name="l00189"></a>00189 
+<a name="l00190"></a>00190         <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00191"></a>00191         <span class="keyword">friend</span> ptrdiff_t operator-( <span class="keyword">const</span> vector_iterator<C,T>& i, <span class="keyword">const</span> vector_iterator<C,U>& j );
+<a name="l00192"></a>00192     
+<a name="l00193"></a>00193         <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> U>
+<a name="l00194"></a>00194         <span class="keyword">friend</span> <span class="keyword">class </span>internal::vector_iterator;
+<a name="l00195"></a>00195 
+<a name="l00196"></a>00196 <span class="preprocessor">#if !defined(_MSC_VER) || defined(__INTEL_COMPILER)</span>
+<a name="l00197"></a>00197 <span class="preprocessor"></span>        <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
+<a name="l00198"></a>00198         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00107.html">tbb::concurrent_vector</a>;
+<a name="l00199"></a>00199 <span class="preprocessor">#else</span>
+<a name="l00200"></a>00200 <span class="preprocessor"></span><span class="keyword">public</span>: <span class="comment">// workaround for MSVC</span>
+<a name="l00201"></a>00201 <span class="preprocessor">#endif </span>
+<a name="l00202"></a>00202 <span class="preprocessor"></span>
+<a name="l00203"></a>00203         vector_iterator( <span class="keyword">const</span> Container& vector, size_t index ) : 
+<a name="l00204"></a>00204             my_vector(const_cast<Container*>(&vector)), 
+<a name="l00205"></a>00205             my_index(index), 
+<a name="l00206"></a>00206             my_item(NULL)
+<a name="l00207"></a>00207         {}
+<a name="l00208"></a>00208 
+<a name="l00209"></a>00209     <span class="keyword">public</span>:
+<a name="l00211"></a>00211         vector_iterator() : my_vector(NULL), my_index(~size_t(0)), my_item(NULL) {}
+<a name="l00212"></a>00212 
+<a name="l00213"></a>00213         vector_iterator( <span class="keyword">const</span> vector_iterator<Container,typename Container::value_type>& other ) :
+<a name="l00214"></a>00214             my_vector(other.my_vector),
+<a name="l00215"></a>00215             my_index(other.my_index),
+<a name="l00216"></a>00216             my_item(other.my_item)
+<a name="l00217"></a>00217         {}
+<a name="l00218"></a>00218 
+<a name="l00219"></a>00219         vector_iterator operator+( ptrdiff_t offset )<span class="keyword"> const </span>{
+<a name="l00220"></a>00220             <span class="keywordflow">return</span> vector_iterator( *my_vector, my_index+offset );
+<a name="l00221"></a>00221         }
+<a name="l00222"></a>00222         vector_iterator &operator+=( ptrdiff_t offset ) {
+<a name="l00223"></a>00223             my_index+=offset;
+<a name="l00224"></a>00224             my_item = NULL;
+<a name="l00225"></a>00225             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00226"></a>00226         }
+<a name="l00227"></a>00227         vector_iterator operator-( ptrdiff_t offset )<span class="keyword"> const </span>{
+<a name="l00228"></a>00228             <span class="keywordflow">return</span> vector_iterator( *my_vector, my_index-offset );
+<a name="l00229"></a>00229         }
+<a name="l00230"></a>00230         vector_iterator &operator-=( ptrdiff_t offset ) {
+<a name="l00231"></a>00231             my_index-=offset;
+<a name="l00232"></a>00232             my_item = NULL;
+<a name="l00233"></a>00233             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00234"></a>00234         }
+<a name="l00235"></a>00235         Value& operator*()<span class="keyword"> const </span>{
+<a name="l00236"></a>00236             Value* item = my_item;
+<a name="l00237"></a>00237             <span class="keywordflow">if</span>( !item ) {
+<a name="l00238"></a>00238                 item = my_item = &my_vector->internal_subscript(my_index);
+<a name="l00239"></a>00239             }
+<a name="l00240"></a>00240             __TBB_ASSERT( item==&my_vector->internal_subscript(my_index), <span class="stringliteral">"corrupt cache"</span> );
+<a name="l00241"></a>00241             <span class="keywordflow">return</span> *item;
+<a name="l00242"></a>00242         }
+<a name="l00243"></a>00243         Value& <a class="code" href="a00107.html#4c52f2950bb1832886bd4458eb09d7eb">operator[]</a>( ptrdiff_t k )<span class="keyword"> const </span>{
+<a name="l00244"></a>00244             <span class="keywordflow">return</span> my_vector->internal_subscript(my_index+k);
+<a name="l00245"></a>00245         }
+<a name="l00246"></a>00246         Value* operator->()<span class="keyword"> const </span>{<span class="keywordflow">return</span> &operator*();}
+<a name="l00247"></a>00247 
+<a name="l00249"></a>00249         vector_iterator& operator++() {
+<a name="l00250"></a>00250             size_t k = ++my_index;
+<a name="l00251"></a>00251             <span class="keywordflow">if</span>( my_item ) {
+<a name="l00252"></a>00252                 <span class="comment">// Following test uses 2's-complement wizardry</span>
+<a name="l00253"></a>00253                 <span class="keywordflow">if</span>( (k& (k-2))==0 ) {
+<a name="l00254"></a>00254                     <span class="comment">// k is a power of two that is at least k-2</span>
+<a name="l00255"></a>00255                     my_item= NULL;
+<a name="l00256"></a>00256                 } <span class="keywordflow">else</span> {
+<a name="l00257"></a>00257                     ++my_item;
+<a name="l00258"></a>00258                 }
+<a name="l00259"></a>00259             }
+<a name="l00260"></a>00260             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00261"></a>00261         }
+<a name="l00262"></a>00262 
+<a name="l00264"></a>00264         vector_iterator& operator--() {
+<a name="l00265"></a>00265             __TBB_ASSERT( my_index>0, <span class="stringliteral">"operator--() applied to iterator already at beginning of concurrent_vector"</span> ); 
+<a name="l00266"></a>00266             size_t k = my_index--;
+<a name="l00267"></a>00267             <span class="keywordflow">if</span>( my_item ) {
+<a name="l00268"></a>00268                 <span class="comment">// Following test uses 2's-complement wizardry</span>
+<a name="l00269"></a>00269                 <span class="keywordflow">if</span>( (k& (k-2))==0 ) {
+<a name="l00270"></a>00270                     <span class="comment">// k is a power of two that is at least k-2  </span>
+<a name="l00271"></a>00271                     my_item= NULL;
+<a name="l00272"></a>00272                 } <span class="keywordflow">else</span> {
+<a name="l00273"></a>00273                     --my_item;
+<a name="l00274"></a>00274                 }
+<a name="l00275"></a>00275             }
+<a name="l00276"></a>00276             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00277"></a>00277         }
+<a name="l00278"></a>00278 
+<a name="l00280"></a>00280         vector_iterator operator++(<span class="keywordtype">int</span>) {
+<a name="l00281"></a>00281             vector_iterator result = *<span class="keyword">this</span>;
+<a name="l00282"></a>00282             operator++();
+<a name="l00283"></a>00283             <span class="keywordflow">return</span> result;
+<a name="l00284"></a>00284         }
+<a name="l00285"></a>00285 
+<a name="l00287"></a>00287         vector_iterator operator--(<span class="keywordtype">int</span>) {
+<a name="l00288"></a>00288             vector_iterator result = *<span class="keyword">this</span>;
+<a name="l00289"></a>00289             operator--();
+<a name="l00290"></a>00290             <span class="keywordflow">return</span> result;
+<a name="l00291"></a>00291         }
+<a name="l00292"></a>00292 
+<a name="l00293"></a>00293         <span class="comment">// STL support</span>
+<a name="l00294"></a>00294 
+<a name="l00295"></a>00295         <span class="keyword">typedef</span> ptrdiff_t difference_type;
+<a name="l00296"></a>00296         <span class="keyword">typedef</span> Value value_type;
+<a name="l00297"></a>00297         <span class="keyword">typedef</span> Value* pointer;
+<a name="l00298"></a>00298         <span class="keyword">typedef</span> Value& reference;
+<a name="l00299"></a>00299         <span class="keyword">typedef</span> std::random_access_iterator_tag iterator_category;
+<a name="l00300"></a>00300     };
+<a name="l00301"></a>00301 
+<a name="l00302"></a>00302     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> T>
+<a name="l00303"></a>00303     vector_iterator<Container,T> operator+( ptrdiff_t offset, <span class="keyword">const</span> vector_iterator<Container,T>& v ) {
+<a name="l00304"></a>00304         <span class="keywordflow">return</span> vector_iterator<Container,T>( *v.my_vector, v.my_index+offset );
+<a name="l00305"></a>00305     }
+<a name="l00306"></a>00306 
+<a name="l00307"></a>00307     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00308"></a>00308     <span class="keywordtype">bool</span> operator==( <span class="keyword">const</span> vector_iterator<Container,T>& i, <span class="keyword">const</span> vector_iterator<Container,U>& j ) {
+<a name="l00309"></a>00309         <span class="keywordflow">return</span> i.my_index==j.my_index && i.my_vector == j.my_vector;
+<a name="l00310"></a>00310     }
+<a name="l00311"></a>00311 
+<a name="l00312"></a>00312     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00313"></a>00313     <span class="keywordtype">bool</span> operator!=( <span class="keyword">const</span> vector_iterator<Container,T>& i, <span class="keyword">const</span> vector_iterator<Container,U>& j ) {
+<a name="l00314"></a>00314         <span class="keywordflow">return</span> !(i==j);
+<a name="l00315"></a>00315     }
+<a name="l00316"></a>00316 
+<a name="l00317"></a>00317     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00318"></a>00318     <span class="keywordtype">bool</span> operator<( const vector_iterator<Container,T>& i, <span class="keyword">const</span> vector_iterator<Container,U>& j ) {
+<a name="l00319"></a>00319         <span class="keywordflow">return</span> i.my_index<j.my_index;
+<a name="l00320"></a>00320     }
+<a name="l00321"></a>00321 
+<a name="l00322"></a>00322     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00323"></a>00323     <span class="keywordtype">bool</span> operator>( <span class="keyword">const</span> vector_iterator<Container,T>& i, <span class="keyword">const</span> vector_iterator<Container,U>& j ) {
+<a name="l00324"></a>00324         <span class="keywordflow">return</span> j<i;
+<a name="l00325"></a>00325     }
+<a name="l00326"></a>00326 
+<a name="l00327"></a>00327     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00328"></a>00328     <span class="keywordtype">bool</span> operator>=( <span class="keyword">const</span> vector_iterator<Container,T>& i, <span class="keyword">const</span> vector_iterator<Container,U>& j ) {
+<a name="l00329"></a>00329         <span class="keywordflow">return</span> !(i<j);
+<a name="l00330"></a>00330     }
+<a name="l00331"></a>00331 
+<a name="l00332"></a>00332     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00333"></a>00333     <span class="keywordtype">bool</span> operator<=( const vector_iterator<Container,T>& i, <span class="keyword">const</span> vector_iterator<Container,U>& j ) {
+<a name="l00334"></a>00334         <span class="keywordflow">return</span> !(j<i);
+<a name="l00335"></a>00335     }
+<a name="l00336"></a>00336 
+<a name="l00337"></a>00337     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00338"></a>00338     ptrdiff_t operator-( <span class="keyword">const</span> vector_iterator<Container,T>& i, <span class="keyword">const</span> vector_iterator<Container,U>& j ) {
+<a name="l00339"></a>00339         <span class="keywordflow">return</span> ptrdiff_t(i.my_index)-ptrdiff_t(j.my_index);
+<a name="l00340"></a>00340     }
+<a name="l00341"></a>00341 
+<a name="l00342"></a>00342     <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
+<a name="l00343"></a>00343     <span class="keyword">class </span>allocator_base {
+<a name="l00344"></a>00344     <span class="keyword">public</span>:
+<a name="l00345"></a>00345         <span class="keyword">typedef</span> <span class="keyword">typename</span> A::template
+<a name="l00346"></a>00346             rebind<T>::other allocator_type;
+<a name="l00347"></a>00347         allocator_type my_allocator;
+<a name="l00348"></a>00348 
+<a name="l00349"></a>00349         allocator_base(<span class="keyword">const</span> allocator_type &a = allocator_type() ) : my_allocator(a) {}
+<a name="l00350"></a>00350     };
+<a name="l00351"></a>00351 
+<a name="l00352"></a>00352 } <span class="comment">// namespace internal</span>
+<a name="l00354"></a>00354 <span class="comment"></span>
+<a name="l00356"></a>00356 
+<a name="l00410"></a>00410 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
+<a name="l00411"></a><a class="code" href="a00107.html">00411</a> <span class="keyword">class </span><a class="code" href="a00107.html">concurrent_vector</a>: <span class="keyword">protected</span> internal::allocator_base<T, A>,
+<a name="l00412"></a>00412                          <span class="keyword">private</span> internal::concurrent_vector_base_v3 {
+<a name="l00413"></a>00413 <span class="keyword">private</span>:
+<a name="l00414"></a>00414     <span class="keyword">template</span><<span class="keyword">typename</span> I>
+<a name="l00415"></a>00415     <span class="keyword">class </span>generic_range_type: <span class="keyword">public</span> <a class="code" href="a00097.html">blocked_range</a><I> {
+<a name="l00416"></a>00416     <span class="keyword">public</span>:
+<a name="l00417"></a>00417         <span class="keyword">typedef</span> T value_type;
+<a name="l00418"></a>00418         <span class="keyword">typedef</span> T& reference;
+<a name="l00419"></a>00419         <span class="keyword">typedef</span> <span class="keyword">const</span> T& const_reference;
+<a name="l00420"></a>00420         <span class="keyword">typedef</span> I iterator;
+<a name="l00421"></a>00421         <span class="keyword">typedef</span> ptrdiff_t difference_type;
+<a name="l00422"></a>00422         generic_range_type( I begin_, I end_, size_t grainsize = 1) : <a class="code" href="a00097.html">blocked_range<I></a>(begin_,end_,grainsize) {} 
+<a name="l00423"></a>00423         template<typename U>
+<a name="l00424"></a>00424         generic_range_type( <span class="keyword">const</span> generic_range_type<U>& r) : <a class="code" href="a00097.html">blocked_range<I></a>(r.begin(),r.end(),r.grainsize()) {} 
+<a name="l00425"></a>00425         generic_range_type( generic_range_type& r, <a class="code" href="a00131.html">split</a> ) : <a class="code" href="a00097.html">blocked_range<I></a>(r,<a class="code" href="a00131.html">split</a>()) {}
+<a name="l00426"></a>00426     };
+<a name="l00427"></a>00427 
+<a name="l00428"></a>00428     <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> U>
+<a name="l00429"></a>00429     <span class="keyword">friend</span> <span class="keyword">class </span>internal::vector_iterator;
+<a name="l00430"></a>00430 <span class="keyword">public</span>:
+<a name="l00431"></a>00431     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00432"></a>00432     <span class="comment">// STL compatible types</span>
+<a name="l00433"></a>00433     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00434"></a>00434     <span class="keyword">typedef</span> internal::concurrent_vector_base_v3::size_type size_type;
+<a name="l00435"></a>00435     <span class="keyword">typedef</span> <span class="keyword">typename</span> internal::allocator_base<T, A>::allocator_type allocator_type;
+<a name="l00436"></a>00436 
+<a name="l00437"></a>00437     <span class="keyword">typedef</span> T value_type;
+<a name="l00438"></a>00438     <span class="keyword">typedef</span> ptrdiff_t difference_type;
+<a name="l00439"></a>00439     <span class="keyword">typedef</span> T& reference;
+<a name="l00440"></a>00440     <span class="keyword">typedef</span> <span class="keyword">const</span> T& const_reference;
+<a name="l00441"></a>00441     <span class="keyword">typedef</span> T *pointer;
+<a name="l00442"></a>00442     <span class="keyword">typedef</span> <span class="keyword">const</span> T *const_pointer;
+<a name="l00443"></a>00443 
+<a name="l00444"></a>00444     <span class="keyword">typedef</span> internal::vector_iterator<concurrent_vector,T> iterator;
+<a name="l00445"></a>00445     <span class="keyword">typedef</span> internal::vector_iterator<concurrent_vector,const T> const_iterator;
+<a name="l00446"></a>00446 
+<a name="l00447"></a>00447 <span class="preprocessor">#if !defined(_MSC_VER) || _CPPLIB_VER>=300 </span>
+<a name="l00448"></a>00448 <span class="preprocessor"></span>    <span class="comment">// Assume ISO standard definition of std::reverse_iterator</span>
+<a name="l00449"></a>00449     <span class="keyword">typedef</span> std::reverse_iterator<iterator> reverse_iterator;
+<a name="l00450"></a>00450     <span class="keyword">typedef</span> std::reverse_iterator<const_iterator> const_reverse_iterator;
+<a name="l00451"></a>00451 <span class="preprocessor">#else</span>
+<a name="l00452"></a>00452 <span class="preprocessor"></span>    <span class="comment">// Use non-standard std::reverse_iterator</span>
+<a name="l00453"></a>00453     <span class="keyword">typedef</span> std::reverse_iterator<iterator,T,T&,T*> reverse_iterator;
+<a name="l00454"></a>00454     <span class="keyword">typedef</span> std::reverse_iterator<const_iterator,T,const T&,const T*> const_reverse_iterator;
+<a name="l00455"></a>00455 <span class="preprocessor">#endif </span><span class="comment">/* defined(_MSC_VER) && (_MSC_VER<1300) */</span>
+<a name="l00456"></a>00456 
+<a name="l00457"></a>00457     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00458"></a>00458     <span class="comment">// Parallel algorithm support</span>
+<a name="l00459"></a>00459     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00460"></a>00460     <span class="keyword">typedef</span> generic_range_type<iterator> range_type;
+<a name="l00461"></a>00461     <span class="keyword">typedef</span> generic_range_type<const_iterator> const_range_type;
+<a name="l00462"></a>00462 
+<a name="l00463"></a>00463     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00464"></a>00464     <span class="comment">// STL compatible constructors & destructors</span>
+<a name="l00465"></a>00465     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00466"></a>00466 
+<a name="l00468"></a><a class="code" href="a00107.html#2c8ca9cabfcd30ad5943324c853664b5">00468</a>     <span class="keyword">explicit</span> <a class="code" href="a00107.html">concurrent_vector</a>(<span class="keyword">const</span> allocator_type &a = allocator_type())
+<a name="l00469"></a>00469         : internal::allocator_base<T, A>(a)
+<a name="l00470"></a>00470     {
+<a name="l00471"></a>00471         vector_allocator_ptr = &internal_allocator;
+<a name="l00472"></a>00472     }
+<a name="l00473"></a>00473 
+<a name="l00475"></a><a class="code" href="a00107.html#dd8a200b99a8088435a37934b58fe335">00475</a>     <a class="code" href="a00107.html">concurrent_vector</a>( <span class="keyword">const</span> <a class="code" href="a00107.html">concurrent_vector</a>& vector, <span class="keyword">const</span> allocator_type& a = allocator_type() )
+<a name="l00476"></a>00476         : internal::allocator_base<T, A>(a)
+<a name="l00477"></a>00477     {
+<a name="l00478"></a>00478         vector_allocator_ptr = &internal_allocator;
+<a name="l00479"></a>00479         internal_copy(vector, <span class="keyword">sizeof</span>(T), &copy_array);
+<a name="l00480"></a>00480     }
+<a name="l00481"></a>00481 
+<a name="l00483"></a>00483     <span class="keyword">template</span><<span class="keyword">class</span> M>
+<a name="l00484"></a><a class="code" href="a00107.html#64432f13f7b29bfe4acfb5568f34f3a8">00484</a>     <a class="code" href="a00107.html">concurrent_vector</a>( <span class="keyword">const</span> <a class="code" href="a00107.html">concurrent_vector<T, M></a>& vector, <span class="keyword">const</span> allocator_type& a = allocator_type() )
+<a name="l00485"></a>00485         : internal::allocator_base<T, A>(a)
+<a name="l00486"></a>00486     {
+<a name="l00487"></a>00487         vector_allocator_ptr = &internal_allocator;
+<a name="l00488"></a>00488         internal_copy(vector.<a class="code" href="a00107.html#bb5ae659871478f1f5c68039e1273e12">internal_vector_base</a>(), <span class="keyword">sizeof</span>(T), &copy_array);
+<a name="l00489"></a>00489     }
+<a name="l00490"></a>00490 
+<a name="l00492"></a><a class="code" href="a00107.html#2a2e261dfe1cab3f73f7b1a94137cfca">00492</a>     <span class="keyword">explicit</span> <a class="code" href="a00107.html">concurrent_vector</a>(size_type n)
+<a name="l00493"></a>00493     {
+<a name="l00494"></a>00494         vector_allocator_ptr = &internal_allocator;
+<a name="l00495"></a>00495         <span class="keywordflow">if</span> ( !n ) <span class="keywordflow">return</span>;
+<a name="l00496"></a>00496         internal_reserve(n, <span class="keyword">sizeof</span>(T), max_size()); my_early_size = n;
+<a name="l00497"></a>00497         __TBB_ASSERT( my_first_block == segment_index_of(n-1)+1, NULL );
+<a name="l00498"></a>00498         initialize_array(static_cast<T*>(my_segment[0].array), NULL, n);
+<a name="l00499"></a>00499     }
+<a name="l00500"></a>00500 
+<a name="l00502"></a><a class="code" href="a00107.html#3883a8a908b44e249a57f454de3f55d8">00502</a>     <a class="code" href="a00107.html">concurrent_vector</a>(size_type n, const_reference t, <span class="keyword">const</span> allocator_type& a = allocator_type())
+<a name="l00503"></a>00503         : internal::allocator_base<T, A>(a)
+<a name="l00504"></a>00504     {
+<a name="l00505"></a>00505         vector_allocator_ptr = &internal_allocator;
+<a name="l00506"></a>00506         internal_assign( n, t );
+<a name="l00507"></a>00507     }
+<a name="l00508"></a>00508 
+<a name="l00510"></a>00510     <span class="keyword">template</span><<span class="keyword">class</span> I>
+<a name="l00511"></a><a class="code" href="a00107.html#4450de83c5862ea4bcd9443fd7e67419">00511</a>     <a class="code" href="a00107.html">concurrent_vector</a>(I first, I last, <span class="keyword">const</span> allocator_type &a = allocator_type())
+<a name="l00512"></a>00512         : internal::allocator_base<T, A>(a)
+<a name="l00513"></a>00513     {
+<a name="l00514"></a>00514         vector_allocator_ptr = &internal_allocator;
+<a name="l00515"></a>00515         internal_assign(first, last, <span class="keyword">static_cast</span><is_integer_tag<std::numeric_limits<I>::is_integer> *>(0) );
+<a name="l00516"></a>00516     }
+<a name="l00517"></a>00517 
+<a name="l00519"></a><a class="code" href="a00107.html#691f0f3cda3e489c37a657016e375eaf">00519</a>     <a class="code" href="a00107.html">concurrent_vector</a>& operator=( <span class="keyword">const</span> <a class="code" href="a00107.html">concurrent_vector</a>& vector ) {
+<a name="l00520"></a>00520         <span class="keywordflow">if</span>( <span class="keyword">this</span> != &vector )
+<a name="l00521"></a>00521             concurrent_vector_base_v3::internal_assign(vector, <span class="keyword">sizeof</span>(T), &destroy_array, &assign_array, &copy_array);
+<a name="l00522"></a>00522         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00523"></a>00523     }
+<a name="l00524"></a>00524 
+<a name="l00526"></a>00526     <span class="keyword">template</span><<span class="keyword">class</span> M>
+<a name="l00527"></a><a class="code" href="a00107.html#19f4ab88a01b0fd056af3bba463e7bd6">00527</a>     <a class="code" href="a00107.html">concurrent_vector</a>& operator=( <span class="keyword">const</span> <a class="code" href="a00107.html">concurrent_vector<T, M></a>& vector ) {
+<a name="l00528"></a>00528         <span class="keywordflow">if</span>( static_cast<void*>( <span class="keyword">this</span> ) != static_cast<const void*>( &vector ) )
+<a name="l00529"></a>00529             concurrent_vector_base_v3::internal_assign(vector.internal_vector_base(),
+<a name="l00530"></a>00530                 <span class="keyword">sizeof</span>(T), &destroy_array, &assign_array, &copy_array);
+<a name="l00531"></a>00531         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00532"></a>00532     }
+<a name="l00533"></a>00533 
+<a name="l00534"></a>00534     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00535"></a>00535     <span class="comment">// Concurrent operations</span>
+<a name="l00536"></a>00536     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00538"></a>00538 <span class="comment"></span>
+<a name="l00539"></a><a class="code" href="a00107.html#30484e3959892fd5392fa93c873c31f0">00539</a>     size_type grow_by( size_type delta ) {
+<a name="l00540"></a>00540         <span class="keywordflow">return</span> delta ? internal_grow_by( delta, <span class="keyword">sizeof</span>(T), &initialize_array, NULL ) : my_early_size;
+<a name="l00541"></a>00541     }
+<a name="l00542"></a>00542 
+<a name="l00544"></a>00544 
+<a name="l00545"></a><a class="code" href="a00107.html#38274ab3f772ecba600c7daca7690102">00545</a>     size_type grow_by( size_type delta, const_reference t ) {
+<a name="l00546"></a>00546         <span class="keywordflow">return</span> delta ? internal_grow_by( delta, <span class="keyword">sizeof</span>(T), &initialize_array_by, static_cast<const void*>(&t) ) : my_early_size;
+<a name="l00547"></a>00547     }
+<a name="l00548"></a>00548 
+<a name="l00550"></a><a class="code" href="a00107.html#47fe588214dd5fa06ab6e8ab78d83874">00550</a>     <span class="keywordtype">void</span> grow_to_at_least( size_type n ) {
+<a name="l00551"></a>00551         <span class="keywordflow">if</span>( my_early_size<n )
+<a name="l00552"></a>00552             internal_grow_to_at_least( n, <span class="keyword">sizeof</span>(T), &initialize_array, NULL );
+<a name="l00553"></a>00553     };
+<a name="l00554"></a>00554 
+<a name="l00556"></a><a class="code" href="a00107.html#e0087c0f58b49e43b6322ff1ec0bc98d">00556</a>     size_type push_back( const_reference item ) {
+<a name="l00557"></a>00557         size_type k;
+<a name="l00558"></a>00558         internal_loop_guide loop(1, internal_push_back(<span class="keyword">sizeof</span>(T),k));
+<a name="l00559"></a>00559         loop.init(&item);
+<a name="l00560"></a>00560         <span class="keywordflow">return</span> k;
+<a name="l00561"></a>00561     }
+<a name="l00562"></a>00562 
+<a name="l00564"></a>00564 
+<a name="l00566"></a><a class="code" href="a00107.html#4c52f2950bb1832886bd4458eb09d7eb">00566</a>     reference operator[]( size_type index ) {
+<a name="l00567"></a>00567         <span class="keywordflow">return</span> internal_subscript(index);
+<a name="l00568"></a>00568     }
+<a name="l00569"></a>00569 
+<a name="l00571"></a><a class="code" href="a00107.html#c6fade5c732cc95274d1d8277ea619d1">00571</a>     const_reference operator[]( size_type index )<span class="keyword"> const </span>{
+<a name="l00572"></a>00572         <span class="keywordflow">return</span> internal_subscript(index);
+<a name="l00573"></a>00573     }
+<a name="l00574"></a>00574 
+<a name="l00576"></a><a class="code" href="a00107.html#0c073ca43e787c7cbf7b0e26d2221748">00576</a>     reference at( size_type index ) {
+<a name="l00577"></a>00577         <span class="keywordflow">return</span> internal_subscript_with_exceptions(index);
+<a name="l00578"></a>00578     }
+<a name="l00579"></a>00579 
+<a name="l00581"></a><a class="code" href="a00107.html#23e14a38af748edff96a7adc3a0f1c58">00581</a>     const_reference at( size_type index )<span class="keyword"> const </span>{
+<a name="l00582"></a>00582         <span class="keywordflow">return</span> internal_subscript_with_exceptions(index);
+<a name="l00583"></a>00583     }
+<a name="l00584"></a>00584 
+<a name="l00586"></a><a class="code" href="a00107.html#a4c6ffff3bf08b92939aa2fc516edfba">00586</a>     range_type range( size_t grainsize = 1) {
+<a name="l00587"></a>00587         <span class="keywordflow">return</span> range_type( begin(), end(), grainsize );
+<a name="l00588"></a>00588     }
+<a name="l00589"></a>00589 
+<a name="l00591"></a><a class="code" href="a00107.html#3d09ccfb581b879ae64203741035e193">00591</a>     const_range_type range( size_t grainsize = 1 )<span class="keyword"> const </span>{
+<a name="l00592"></a>00592         <span class="keywordflow">return</span> const_range_type( begin(), end(), grainsize );
+<a name="l00593"></a>00593     }
+<a name="l00594"></a>00594     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00595"></a>00595     <span class="comment">// Capacity</span>
+<a name="l00596"></a>00596     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00598"></a><a class="code" href="a00107.html#715fe313c4a9c22731cc404dd80c9ec9">00598</a> <span class="comment"></span>    size_type size()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_early_size;}
+<a name="l00599"></a>00599 
+<a name="l00601"></a><a class="code" href="a00107.html#c6426cb93cf20d3af40f3c90f1f0481a">00601</a>     <span class="keywordtype">bool</span> empty()<span class="keyword"> const </span>{<span class="keywordflow">return</span> !my_early_size;}
+<a name="l00602"></a>00602 
+<a name="l00604"></a><a class="code" href="a00107.html#3ed6b9ae7217af5103d974045b6f5cd5">00604</a>     size_type capacity()<span class="keyword"> const </span>{<span class="keywordflow">return</span> internal_capacity();}
+<a name="l00605"></a>00605 
+<a name="l00607"></a>00607 
+<a name="l00609"></a><a class="code" href="a00107.html#5a0ce05026994b010018f72cfdeb72c1">00609</a>     <span class="keywordtype">void</span> reserve( size_type n ) {
+<a name="l00610"></a>00610         <span class="keywordflow">if</span>( n )
+<a name="l00611"></a>00611             internal_reserve(n, <span class="keyword">sizeof</span>(T), max_size());
+<a name="l00612"></a>00612     }
+<a name="l00613"></a>00613 
+<a name="l00615"></a>00615     <span class="keywordtype">void</span> compact();
+<a name="l00616"></a>00616 
+<a name="l00618"></a><a class="code" href="a00107.html#2c248a017f0576df3e7cd99627836fd6">00618</a>     size_type max_size()<span class="keyword"> const </span>{<span class="keywordflow">return</span> (~size_type(0))/<span class="keyword">sizeof</span>(T);}
+<a name="l00619"></a>00619 
+<a name="l00620"></a>00620     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00621"></a>00621     <span class="comment">// STL support</span>
+<a name="l00622"></a>00622     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00623"></a>00623 
+<a name="l00625"></a><a class="code" href="a00107.html#730b23a251ecb6d37f692fb22f38e029">00625</a>     iterator begin() {<span class="keywordflow">return</span> iterator(*<span class="keyword">this</span>,0);}
+<a name="l00627"></a><a class="code" href="a00107.html#c0b51160e5a764982ec97a455f94f2c6">00627</a>     iterator end() {<span class="keywordflow">return</span> iterator(*<span class="keyword">this</span>,size());}
+<a name="l00629"></a><a class="code" href="a00107.html#78a06182276ff758788d4c0623ae0d71">00629</a>     const_iterator begin()<span class="keyword"> const </span>{<span class="keywordflow">return</span> const_iterator(*<span class="keyword">this</span>,0);}
+<a name="l00631"></a><a class="code" href="a00107.html#1e6aa764ce5a1cbd24526f68bc0a2f6b">00631</a>     const_iterator end()<span class="keyword"> const </span>{<span class="keywordflow">return</span> const_iterator(*<span class="keyword">this</span>,size());}
+<a name="l00633"></a><a class="code" href="a00107.html#5e220926d09236d98f04fe0721e5f9a1">00633</a>     reverse_iterator rbegin() {<span class="keywordflow">return</span> reverse_iterator(end());}
+<a name="l00635"></a><a class="code" href="a00107.html#290119a4eb43cd6a9e98fa17016ba3c2">00635</a>     reverse_iterator rend() {<span class="keywordflow">return</span> reverse_iterator(begin());}
+<a name="l00637"></a><a class="code" href="a00107.html#9f9c103e18d5f212703805354074ad44">00637</a>     const_reverse_iterator rbegin()<span class="keyword"> const </span>{<span class="keywordflow">return</span> const_reverse_iterator(end());}
+<a name="l00639"></a><a class="code" href="a00107.html#d438b9b32ea3a8ffb703015b6dce055b">00639</a>     const_reverse_iterator rend()<span class="keyword"> const </span>{<span class="keywordflow">return</span> const_reverse_iterator(begin());}
+<a name="l00641"></a><a class="code" href="a00107.html#15181759c0bfa2ddce5d10c7550e0002">00641</a>     reference front() {
+<a name="l00642"></a>00642         __TBB_ASSERT( size()>0, NULL);
+<a name="l00643"></a>00643         <span class="keywordflow">return</span> static_cast<T*>(my_segment[0].array)[0];
+<a name="l00644"></a>00644     }
+<a name="l00646"></a><a class="code" href="a00107.html#502615a858eb9fa0390ee59169065e90">00646</a>     const_reference front()<span class="keyword"> const </span>{
+<a name="l00647"></a>00647         __TBB_ASSERT( size()>0, NULL);
+<a name="l00648"></a>00648         <span class="keywordflow">return</span> static_cast<const T*>(my_segment[0].array)[0];
+<a name="l00649"></a>00649     }
+<a name="l00651"></a><a class="code" href="a00107.html#41ce48d6015a1a2812d41cf620ec3476">00651</a>     reference back() {
+<a name="l00652"></a>00652         __TBB_ASSERT( size()>0, NULL);
+<a name="l00653"></a>00653         <span class="keywordflow">return</span> internal_subscript( my_early_size-1 );
+<a name="l00654"></a>00654     }
+<a name="l00656"></a><a class="code" href="a00107.html#bd518e204107d07fd08d0ec5bdfd383d">00656</a>     const_reference back()<span class="keyword"> const </span>{
+<a name="l00657"></a>00657         __TBB_ASSERT( size()>0, NULL);
+<a name="l00658"></a>00658         <span class="keywordflow">return</span> internal_subscript( my_early_size-1 );
+<a name="l00659"></a>00659     }
+<a name="l00661"></a><a class="code" href="a00107.html#2fdba8e90de6a4d2300222236d46758e">00661</a>     allocator_type get_allocator()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this->my_allocator; }
+<a name="l00662"></a>00662 
+<a name="l00664"></a><a class="code" href="a00107.html#423e5aa15e0e3309ad86d026fd85f6f6">00664</a>     <span class="keywordtype">void</span> assign(size_type n, const_reference t) { clear(); internal_assign( n, t ); }
+<a name="l00665"></a>00665 
+<a name="l00667"></a>00667     <span class="keyword">template</span><<span class="keyword">class</span> I>
+<a name="l00668"></a><a class="code" href="a00107.html#93a06b3112cb804f42f40efb5e7387b4">00668</a>     <span class="keywordtype">void</span> assign(I first, I last) {
+<a name="l00669"></a>00669         clear(); internal_assign( first, last, <span class="keyword">static_cast</span><is_integer_tag<std::numeric_limits<I>::is_integer> *>(0) );
+<a name="l00670"></a>00670     }
+<a name="l00671"></a>00671 
+<a name="l00673"></a><a class="code" href="a00107.html#96c9c4bd968ed3edb8dd276854d2dae0">00673</a>     <span class="keywordtype">void</span> swap(<a class="code" href="a00107.html">concurrent_vector</a> &vector) {
+<a name="l00674"></a>00674         <span class="keywordflow">if</span>( <span class="keyword">this</span> != &vector ) {
+<a name="l00675"></a>00675             concurrent_vector_base_v3::internal_swap(static_cast<concurrent_vector_base_v3&>(vector));
+<a name="l00676"></a>00676             std::swap(this->my_allocator, vector.my_allocator);
+<a name="l00677"></a>00677         }
+<a name="l00678"></a>00678     }
+<a name="l00679"></a>00679 
+<a name="l00681"></a>00681 
+<a name="l00682"></a><a class="code" href="a00107.html#26f937a359a66b6aae904c3cd9a3c444">00682</a>     <span class="keywordtype">void</span> clear() {
+<a name="l00683"></a>00683         internal_clear(&destroy_array);
+<a name="l00684"></a>00684     }
+<a name="l00685"></a>00685 
+<a name="l00687"></a><a class="code" href="a00107.html#da2444b28bb840d38f60d0030333a5fc">00687</a>     ~<a class="code" href="a00107.html">concurrent_vector</a>() {
+<a name="l00688"></a>00688         segment_t *table = my_segment;
+<a name="l00689"></a>00689         internal_free_segments( reinterpret_cast<void**>(table), internal_clear(&destroy_array), my_first_block );
+<a name="l00690"></a>00690         <span class="comment">// base class destructor call should be then</span>
+<a name="l00691"></a>00691     }
+<a name="l00692"></a>00692 
+<a name="l00693"></a>00693     <span class="keyword">const</span> internal::concurrent_vector_base_v3 &internal_vector_base()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00694"></a>00694 <span class="keyword">private</span>:
+<a name="l00696"></a>00696     <span class="keyword">static</span> <span class="keywordtype">void</span> *internal_allocator(internal::concurrent_vector_base_v3 &vb, size_t k) {
+<a name="l00697"></a>00697         <span class="keywordflow">return</span> static_cast<concurrent_vector<T, A>&>(vb).my_allocator.allocate(k);
+<a name="l00698"></a>00698     }
+<a name="l00700"></a>00700     <span class="keywordtype">void</span> internal_free_segments(<span class="keywordtype">void</span> *table[], segment_index_t k, segment_index_t first_block);
+<a name="l00701"></a>00701 
+<a name="l00703"></a>00703     T& internal_subscript( size_type index ) <span class="keyword">const</span>;
+<a name="l00704"></a>00704 
+<a name="l00706"></a>00706     T& internal_subscript_with_exceptions( size_type index ) <span class="keyword">const</span>;
+<a name="l00707"></a>00707 
+<a name="l00709"></a>00709     <span class="keywordtype">void</span> internal_assign(size_type n, const_reference t);
+<a name="l00710"></a>00710 
+<a name="l00712"></a>00712     <span class="keyword">template</span><<span class="keywordtype">bool</span> B> <span class="keyword">class </span>is_integer_tag;
+<a name="l00713"></a>00713 
+<a name="l00715"></a>00715     <span class="keyword">template</span><<span class="keyword">class</span> I>
+<a name="l00716"></a>00716     <span class="keywordtype">void</span> internal_assign(I first, I last, is_integer_tag<true> *) {
+<a name="l00717"></a>00717         internal_assign(static_cast<size_type>(first), static_cast<T>(last));
+<a name="l00718"></a>00718     }
+<a name="l00720"></a>00720     <span class="keyword">template</span><<span class="keyword">class</span> I>
+<a name="l00721"></a>00721     <span class="keywordtype">void</span> internal_assign(I first, I last, is_integer_tag<false> *) {
+<a name="l00722"></a>00722         internal_assign_iterators(first, last);
+<a name="l00723"></a>00723     }
+<a name="l00725"></a>00725     <span class="keyword">template</span><<span class="keyword">class</span> I>
+<a name="l00726"></a>00726     <span class="keywordtype">void</span> internal_assign_iterators(I first, I last);
+<a name="l00727"></a>00727 
+<a name="l00729"></a>00729     <span class="keyword">static</span> <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC initialize_array( <span class="keywordtype">void</span>* begin, <span class="keyword">const</span> <span class="keywordtype">void</span>*, size_type n );
+<a name="l00730"></a>00730 
+<a name="l00732"></a>00732     <span class="keyword">static</span> <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC initialize_array_by( <span class="keywordtype">void</span>* begin, <span class="keyword">const</span> <span class="keywordtype">void</span>* src, size_type n );
+<a name="l00733"></a>00733 
+<a name="l00735"></a>00735     <span class="keyword">static</span> <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC copy_array( <span class="keywordtype">void</span>* dst, <span class="keyword">const</span> <span class="keywordtype">void</span>* src, size_type n );
+<a name="l00736"></a>00736 
+<a name="l00738"></a>00738     <span class="keyword">static</span> <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC assign_array( <span class="keywordtype">void</span>* dst, <span class="keyword">const</span> <span class="keywordtype">void</span>* src, size_type n );
+<a name="l00739"></a>00739 
+<a name="l00741"></a>00741     <span class="keyword">static</span> <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC destroy_array( <span class="keywordtype">void</span>* begin, size_type n );
+<a name="l00742"></a>00742 
+<a name="l00744"></a>00744     <span class="keyword">class </span>internal_loop_guide : internal::no_copy {
+<a name="l00745"></a>00745     <span class="keyword">public</span>:
+<a name="l00746"></a>00746         <span class="keyword">const</span> pointer array;
+<a name="l00747"></a>00747         <span class="keyword">const</span> size_type n;
+<a name="l00748"></a>00748         size_type i;
+<a name="l00749"></a>00749         internal_loop_guide(size_type ntrials, <span class="keywordtype">void</span> *ptr)
+<a name="l00750"></a>00750             : array(static_cast<pointer>(ptr)), n(ntrials), i(0) {}
+<a name="l00751"></a>00751         <span class="keywordtype">void</span> init() {   <span class="keywordflow">for</span>(; i < n; ++i) <span class="keyword">new</span>( &array[i] ) T(); }
+<a name="l00752"></a>00752         <span class="keywordtype">void</span> init(<span class="keyword">const</span> <span class="keywordtype">void</span> *src) { <span class="keywordflow">for</span>(; i < n; ++i) new( &array[i] ) T(*static_cast<const T*>(src)); }
+<a name="l00753"></a>00753         <span class="keywordtype">void</span> copy(<span class="keyword">const</span> <span class="keywordtype">void</span> *src) { <span class="keywordflow">for</span>(; i < n; ++i) new( &array[i] ) T(static_cast<const T*>(src)[i]); }
+<a name="l00754"></a>00754         <span class="keywordtype">void</span> assign(<span class="keyword">const</span> <span class="keywordtype">void</span> *src) { <span class="keywordflow">for</span>(; i < n; ++i) array[i] = static_cast<const T*>(src)[i]; }
+<a name="l00755"></a>00755         <span class="keyword">template</span><<span class="keyword">class</span> I> <span class="keywordtype">void</span> iterate(I &src) { <span class="keywordflow">for</span>(; i < n; ++i, ++src) <span class="keyword">new</span>( &array[i] ) T( *src ); }
+<a name="l00756"></a>00756         ~internal_loop_guide() {
+<a name="l00757"></a>00757             <span class="keywordflow">if</span>(i < n) <span class="comment">// if exception raised, do zerroing on the rest of items</span>
+<a name="l00758"></a>00758                 std::memset(array+i, 0, (n-i)*<span class="keyword">sizeof</span>(value_type));
+<a name="l00759"></a>00759         }
+<a name="l00760"></a>00760     };
+<a name="l00761"></a>00761 };
+<a name="l00762"></a>00762 
+<a name="l00763"></a>00763 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
+<a name="l00764"></a><a class="code" href="a00107.html#1693d1da41b1a8235871be9c6633be35">00764</a> <span class="keywordtype">void</span> <a class="code" href="a00107.html">concurrent_vector<T, A>::compact</a>() {
+<a name="l00765"></a>00765     internal_segments_table old;
+<a name="l00766"></a>00766     <span class="keywordflow">try</span> {
+<a name="l00767"></a>00767         <span class="keywordflow">if</span>( internal_compact( <span class="keyword">sizeof</span>(T), &old, &destroy_array, &copy_array ) )
+<a name="l00768"></a>00768             internal_free_segments( old.table, pointers_per_long_table, old.first_block ); <span class="comment">// free joined and unnecessary segments</span>
+<a name="l00769"></a>00769     } <span class="keywordflow">catch</span>(...) {
+<a name="l00770"></a>00770         <span class="keywordflow">if</span>( old.first_block ) <span class="comment">// free segment allocated for compacting. Only for support of exceptions in ctor of user T[ype]</span>
+<a name="l00771"></a>00771             internal_free_segments( old.table, 1, old.first_block );
+<a name="l00772"></a>00772         <span class="keywordflow">throw</span>;
+<a name="l00773"></a>00773     }
+<a name="l00774"></a>00774 }
+<a name="l00775"></a>00775 
+<a name="l00776"></a>00776 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
+<a name="l00777"></a>00777 <span class="keywordtype">void</span> <a class="code" href="a00107.html">concurrent_vector<T, A>::internal_free_segments</a>(<span class="keywordtype">void</span> *table[], segment_index_t k, segment_index_t first_block) {
+<a name="l00778"></a>00778     <span class="comment">// Free the arrays</span>
+<a name="l00779"></a>00779     <span class="keywordflow">while</span>( k > first_block ) {
+<a name="l00780"></a>00780         --k;
+<a name="l00781"></a>00781         T* array = static_cast<T*>(table[k]);
+<a name="l00782"></a>00782         table[k] = NULL;
+<a name="l00783"></a>00783         <span class="keywordflow">if</span>( array > __TBB_BAD_ALLOC ) <span class="comment">// check for correct segment pointer</span>
+<a name="l00784"></a>00784             this->my_allocator.deallocate( array, segment_size(k) );
+<a name="l00785"></a>00785     }
+<a name="l00786"></a>00786     T* array = static_cast<T*>(table[0]);
+<a name="l00787"></a>00787     <span class="keywordflow">if</span>( array > __TBB_BAD_ALLOC ) {
+<a name="l00788"></a>00788         __TBB_ASSERT( first_block > 0, NULL );
+<a name="l00789"></a>00789         <span class="keywordflow">while</span>(k > 0) table[--k] = NULL;
+<a name="l00790"></a>00790         this->my_allocator.deallocate( array, segment_size(first_block) );
+<a name="l00791"></a>00791     }
+<a name="l00792"></a>00792 }
+<a name="l00793"></a>00793 
+<a name="l00794"></a>00794 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
+<a name="l00795"></a>00795 T& concurrent_vector<T, A>::internal_subscript( size_type index )<span class="keyword"> const </span>{
+<a name="l00796"></a>00796     __TBB_ASSERT( index<<a class="code" href="a00107.html#715fe313c4a9c22731cc404dd80c9ec9">size</a>(), <span class="stringliteral">"index out of bounds"</span> );
+<a name="l00797"></a>00797     size_type j = index;
+<a name="l00798"></a>00798     segment_index_t k = segment_base_index_of( j );
+<a name="l00799"></a>00799     <span class="comment">// no need in __TBB_load_with_acquire since thread works in own space or gets </span>
+<a name="l00800"></a>00800 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS</span>
+<a name="l00801"></a>00801 <span class="preprocessor"></span>    <span class="keywordflow">return</span> static_cast<T*>( tbb::internal::itt_load_pointer_v3(&my_segment[k].array))[j];
+<a name="l00802"></a>00802 <span class="preprocessor">#else</span>
+<a name="l00803"></a>00803 <span class="preprocessor"></span>    <span class="keywordflow">return</span> static_cast<T*>(my_segment[k].array)[j];
+<a name="l00804"></a>00804 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS */</span>
+<a name="l00805"></a>00805 }
+<a name="l00806"></a>00806 
+<a name="l00807"></a>00807 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
+<a name="l00808"></a>00808 T& concurrent_vector<T, A>::internal_subscript_with_exceptions( size_type index )<span class="keyword"> const </span>{
+<a name="l00809"></a>00809     <span class="keywordflow">if</span>( index >= <a class="code" href="a00107.html#715fe313c4a9c22731cc404dd80c9ec9">size</a>() )
+<a name="l00810"></a>00810         internal_throw_exception(0); <span class="comment">// throw std::out_of_range</span>
+<a name="l00811"></a>00811     size_type j = index;
+<a name="l00812"></a>00812     segment_index_t k = segment_base_index_of( j );
+<a name="l00813"></a>00813     <span class="keywordflow">if</span>( my_segment == (segment_t*)my_storage && k >= pointers_per_short_table )
+<a name="l00814"></a>00814         internal_throw_exception(1); <span class="comment">// throw std::out_of_range</span>
+<a name="l00815"></a>00815     <span class="keywordtype">void</span> *array = my_segment[k].array; <span class="comment">// no need in __TBB_load_with_acquire</span>
+<a name="l00816"></a>00816     <span class="keywordflow">if</span>( array <= __TBB_BAD_ALLOC ) <span class="comment">// check for correct segment pointer</span>
+<a name="l00817"></a>00817         internal_throw_exception(2); <span class="comment">// throw std::range_error</span>
+<a name="l00818"></a>00818     <span class="keywordflow">return</span> static_cast<T*>(array)[j];
+<a name="l00819"></a>00819 }
+<a name="l00820"></a>00820 
+<a name="l00821"></a>00821 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
+<a name="l00822"></a>00822 <span class="keywordtype">void</span> concurrent_vector<T, A>::internal_assign(size_type n, const_reference t)
+<a name="l00823"></a>00823 {
+<a name="l00824"></a>00824     __TBB_ASSERT(my_early_size == 0, NULL);
+<a name="l00825"></a>00825     <span class="keywordflow">if</span>( !n ) <span class="keywordflow">return</span>;
+<a name="l00826"></a>00826     internal_reserve(n, <span class="keyword">sizeof</span>(T), <a class="code" href="a00107.html#2c248a017f0576df3e7cd99627836fd6">max_size</a>());
+<a name="l00827"></a>00827     my_early_size = n;
+<a name="l00828"></a>00828     segment_index_t k = 0;
+<a name="l00829"></a>00829     size_type sz = segment_size( my_first_block );
+<a name="l00830"></a>00830     <span class="keywordflow">while</span>( sz < n ) {
+<a name="l00831"></a>00831         initialize_array_by(static_cast<T*>(my_segment[k].array), static_cast<const void*>(&t), sz);
+<a name="l00832"></a>00832         n -= sz;
+<a name="l00833"></a>00833         <span class="keywordflow">if</span>( !k ) k = my_first_block;
+<a name="l00834"></a>00834         <span class="keywordflow">else</span> { ++k; sz <<= 1; }
+<a name="l00835"></a>00835     }
+<a name="l00836"></a>00836     initialize_array_by(static_cast<T*>(my_segment[k].array), static_cast<const void*>(&t), n);
+<a name="l00837"></a>00837 }
+<a name="l00838"></a>00838 
+<a name="l00839"></a>00839 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A> <span class="keyword">template</span><<span class="keyword">class</span> I>
+<a name="l00840"></a>00840 <span class="keywordtype">void</span> concurrent_vector<T, A>::internal_assign_iterators(I first, I last) {
+<a name="l00841"></a>00841     __TBB_ASSERT(my_early_size == 0, NULL);
+<a name="l00842"></a>00842     size_type n = std::distance(first, last);
+<a name="l00843"></a>00843     <span class="keywordflow">if</span>( !n ) <span class="keywordflow">return</span>;
+<a name="l00844"></a>00844     internal_reserve(n, <span class="keyword">sizeof</span>(T), <a class="code" href="a00107.html#2c248a017f0576df3e7cd99627836fd6">max_size</a>());
+<a name="l00845"></a>00845     my_early_size = n;
+<a name="l00846"></a>00846     segment_index_t k = 0;
+<a name="l00847"></a>00847     size_type sz = segment_size( my_first_block );
+<a name="l00848"></a>00848     <span class="keywordflow">while</span>( sz < n ) {
+<a name="l00849"></a>00849         internal_loop_guide loop(sz, my_segment[k].array);
+<a name="l00850"></a>00850         loop.iterate(first);
+<a name="l00851"></a>00851         n -= sz;
+<a name="l00852"></a>00852         <span class="keywordflow">if</span>( !k ) k = my_first_block;
+<a name="l00853"></a>00853         <span class="keywordflow">else</span> { ++k; sz <<= 1; }
+<a name="l00854"></a>00854     }
+<a name="l00855"></a>00855     internal_loop_guide loop(n, my_segment[k].array);
+<a name="l00856"></a>00856     loop.iterate(first);
+<a name="l00857"></a>00857 }
+<a name="l00858"></a>00858 
+<a name="l00859"></a>00859 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
+<a name="l00860"></a>00860 <span class="keywordtype">void</span> concurrent_vector<T, A>::initialize_array( <span class="keywordtype">void</span>* begin, <span class="keyword">const</span> <span class="keywordtype">void</span> *, size_type n ) {
+<a name="l00861"></a>00861     internal_loop_guide loop(n, begin); loop.init();
+<a name="l00862"></a>00862 }
+<a name="l00863"></a>00863 
+<a name="l00864"></a>00864 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
+<a name="l00865"></a>00865 <span class="keywordtype">void</span> concurrent_vector<T, A>::initialize_array_by( <span class="keywordtype">void</span>* begin, <span class="keyword">const</span> <span class="keywordtype">void</span> *src, size_type n ) {
+<a name="l00866"></a>00866     internal_loop_guide loop(n, begin); loop.init(src);
+<a name="l00867"></a>00867 }
+<a name="l00868"></a>00868 
+<a name="l00869"></a>00869 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
+<a name="l00870"></a>00870 <span class="keywordtype">void</span> concurrent_vector<T, A>::copy_array( <span class="keywordtype">void</span>* dst, <span class="keyword">const</span> <span class="keywordtype">void</span>* src, size_type n ) {
+<a name="l00871"></a>00871     internal_loop_guide loop(n, dst); loop.copy(src);
+<a name="l00872"></a>00872 }
+<a name="l00873"></a>00873 
+<a name="l00874"></a>00874 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
+<a name="l00875"></a>00875 <span class="keywordtype">void</span> concurrent_vector<T, A>::assign_array( <span class="keywordtype">void</span>* dst, <span class="keyword">const</span> <span class="keywordtype">void</span>* src, size_type n ) {
+<a name="l00876"></a>00876     internal_loop_guide loop(n, dst); loop.assign(src);
+<a name="l00877"></a>00877 }
+<a name="l00878"></a>00878 
+<a name="l00879"></a>00879 <span class="preprocessor">#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) </span>
+<a name="l00880"></a>00880 <span class="preprocessor"></span>    <span class="comment">// Workaround for overzealous compiler warning</span>
+<a name="l00881"></a>00881 <span class="preprocessor">    #pragma warning (push)</span>
+<a name="l00882"></a>00882 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (disable: 4189)</span>
+<a name="l00883"></a>00883 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00884"></a>00884 <span class="preprocessor"></span><span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
+<a name="l00885"></a>00885 <span class="keywordtype">void</span> concurrent_vector<T, A>::destroy_array( <span class="keywordtype">void</span>* begin, size_type n ) {
+<a name="l00886"></a>00886     T* array = static_cast<T*>(begin);
+<a name="l00887"></a>00887     <span class="keywordflow">for</span>( size_type j=n; j>0; --j )
+<a name="l00888"></a>00888         array[j-1].~T(); <span class="comment">// destructors are supposed to not throw any exceptions</span>
+<a name="l00889"></a>00889 }
+<a name="l00890"></a>00890 <span class="preprocessor">#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) </span>
+<a name="l00891"></a>00891 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (pop)</span>
+<a name="l00892"></a>00892 <span class="preprocessor"></span><span class="preprocessor">#endif // warning 4189 is back </span>
+<a name="l00893"></a>00893 <span class="preprocessor"></span>
+<a name="l00894"></a>00894 <span class="comment">// concurrent_vector's template functions</span>
+<a name="l00895"></a>00895 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A1, <span class="keyword">class</span> A2>
+<a name="l00896"></a>00896 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> concurrent_vector<T, A1> &a, <span class="keyword">const</span> concurrent_vector<T, A2> &b) {
+<a name="l00897"></a>00897     <span class="comment">//TODO[?]: deal with _Range_checked_iterator_tag of MSVC.</span>
+<a name="l00898"></a>00898     <span class="comment">// Simply:    return a.size() == b.size() && std::equal(a.begin(), a.end(), b.begin());</span>
+<a name="l00899"></a>00899     <span class="keywordflow">if</span>(a.size() != b.size()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00900"></a>00900     <span class="keyword">typename</span> concurrent_vector<T, A1>::const_iterator i(a.begin());
+<a name="l00901"></a>00901     <span class="keyword">typename</span> concurrent_vector<T, A2>::const_iterator j(b.begin());
+<a name="l00902"></a>00902     <span class="keywordflow">for</span>(; i != a.end(); ++i, ++j)
+<a name="l00903"></a>00903         <span class="keywordflow">if</span>( !(*i == *j) ) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00904"></a>00904     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00905"></a>00905 }
+<a name="l00906"></a>00906 
+<a name="l00907"></a>00907 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A1, <span class="keyword">class</span> A2>
+<a name="l00908"></a>00908 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> concurrent_vector<T, A1> &a, <span class="keyword">const</span> concurrent_vector<T, A2> &b)
+<a name="l00909"></a>00909 {    <span class="keywordflow">return</span> !(a == b); }
+<a name="l00910"></a>00910 
+<a name="l00911"></a>00911 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A1, <span class="keyword">class</span> A2>
+<a name="l00912"></a>00912 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator<(const concurrent_vector<T, A1> &a, <span class="keyword">const</span> concurrent_vector<T, A2> &b)
+<a name="l00913"></a>00913 {    <span class="keywordflow">return</span> (std::lexicographical_compare(a.begin(), a.end(), b.begin(), b.end())); }
+<a name="l00914"></a>00914 
+<a name="l00915"></a>00915 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A1, <span class="keyword">class</span> A2>
+<a name="l00916"></a>00916 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator>(<span class="keyword">const</span> concurrent_vector<T, A1> &a, <span class="keyword">const</span> concurrent_vector<T, A2> &b)
+<a name="l00917"></a>00917 {    <span class="keywordflow">return</span> b < a; }
+<a name="l00918"></a>00918 
+<a name="l00919"></a>00919 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A1, <span class="keyword">class</span> A2>
+<a name="l00920"></a>00920 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator<=(const concurrent_vector<T, A1> &a, <span class="keyword">const</span> concurrent_vector<T, A2> &b)
+<a name="l00921"></a>00921 {    <span class="keywordflow">return</span> !(b < a); }
+<a name="l00922"></a>00922 
+<a name="l00923"></a>00923 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A1, <span class="keyword">class</span> A2>
+<a name="l00924"></a>00924 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator>=(<span class="keyword">const</span> concurrent_vector<T, A1> &a, <span class="keyword">const</span> concurrent_vector<T, A2> &b)
+<a name="l00925"></a>00925 {    <span class="keywordflow">return</span> !(a < b); }
+<a name="l00926"></a>00926 
+<a name="l00927"></a>00927 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
+<a name="l00928"></a>00928 <span class="keyword">inline</span> <span class="keywordtype">void</span> swap(concurrent_vector<T, A> &a, concurrent_vector<T, A> &b)
+<a name="l00929"></a>00929 {    a.swap( b ); }
+<a name="l00930"></a>00930 
+<a name="l00931"></a>00931 } <span class="comment">// namespace tbb</span>
+<a name="l00932"></a>00932 
+<a name="l00933"></a>00933 <span class="preprocessor">#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && defined(_Wp64)</span>
+<a name="l00934"></a>00934 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (pop)</span>
+<a name="l00935"></a>00935 <span class="preprocessor"></span><span class="preprocessor">#endif // warning 4267 is back</span>
+<a name="l00936"></a>00936 <span class="preprocessor"></span>
+<a name="l00937"></a>00937 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_concurrent_vector_H */</span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00220.html b/doc/html/a00220.html
deleted file mode 100644
index 689c0d2..0000000
--- a/doc/html/a00220.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::finish_reduce_with_affinity< Body > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::finish_reduce_with_affinity< Body > Class Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>Task type use to combine the partial results of parallel_reduce with <a class="el" href="a00188.html">affinity_partitioner</a>.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00337.html">parallel_reduce.h</a>></code>
-<p>
-Inherits <a class="el" href="a00261.html">tbb::task</a>.
-<p>
-Inheritance diagram for tbb::internal::finish_reduce_with_affinity< Body >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00072.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::internal::finish_reduce_with_affinity::start_reduce_with_affinity"></a>
-class </td><td class="memItemRight" valign="bottom"><b>start_reduce_with_affinity</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Body><br>
- class tbb::internal::finish_reduce_with_affinity< Body ></h3>
-
-Task type use to combine the partial results of parallel_reduce with <a class="el" href="a00188.html">affinity_partitioner</a>. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00337.html">parallel_reduce.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00221.html b/doc/html/a00221.html
deleted file mode 100644
index ce86ab3..0000000
--- a/doc/html/a00221.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::finish_scan< Range, Body > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::finish_scan< Range, Body > Class Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>Combine partial results.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00338.html">parallel_scan.h</a>></code>
-<p>
-Inherits <a class="el" href="a00261.html">tbb::task</a>.
-<p>
-Inheritance diagram for tbb::internal::finish_scan< Range, Body >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00079.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::internal::finish_scan::execute"></a>
-<a class="el" href="a00261.html">task</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00221.html#a0">execute</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Should be overridden by derived classes. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::internal::finish_scan::finish_scan"></a>
- </td><td class="memItemRight" valign="bottom"><b>finish_scan</b> (<a class="el" href="a00260.html">sum_node_type</a> *&return_slot_, <a class="el" href="a00218.html">final_sum_type</a> **sum_, <a class="el" href="a00260.html">sum_node_type</a> &result_)</td></tr>
-
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="o0" doxytag="tbb::internal::finish_scan::right_zombie"></a>
-<a class="el" href="a00218.html">final_sum_type</a> * </td><td class="memItemRight" valign="bottom"><b>right_zombie</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="o1" doxytag="tbb::internal::finish_scan::result"></a>
-<a class="el" href="a00260.html">sum_node_type</a> & </td><td class="memItemRight" valign="bottom"><b>result</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Range, typename Body><br>
- class tbb::internal::finish_scan< Range, Body ></h3>
-
-Combine partial results. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00338.html">parallel_scan.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00222.html b/doc/html/a00222.html
deleted file mode 100644
index 05457f2..0000000
--- a/doc/html/a00222.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::hash_map_base Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::hash_map_base Class Reference</h1>base class of <a class="el" href="a00201.html">concurrent_hash_map</a>  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00329.html">concurrent_hash_map.h</a>></code>
-<p>
-Inherited by <a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><code> [protected]</code>.
-<p>
-Inheritance diagram for tbb::internal::hash_map_base:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00022.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w0" doxytag="tbb::internal::hash_map_base::node_mutex_t"></a>
-typedef <a class="el" href="a00252.html">spin_rw_mutex</a> </td><td class="memItemRight" valign="bottom"><b>node_mutex_t</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w1" doxytag="tbb::internal::hash_map_base::chain_mutex_t"></a>
-typedef <a class="el" href="a00252.html">spin_rw_mutex</a> </td><td class="memItemRight" valign="bottom"><b>chain_mutex_t</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w2" doxytag="tbb::internal::hash_map_base::segment_mutex_t"></a>
-typedef <a class="el" href="a00252.html">spin_rw_mutex</a> </td><td class="memItemRight" valign="bottom"><b>segment_mutex_t</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w3" doxytag="tbb::internal::hash_map_base::hashcode_t"></a>
-typedef <a class="el" href="a00319.html#a2">internal::hashcode_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00222.html#w3">hashcode_t</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Type of a hash code. <br></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s0" doxytag="tbb::internal::hash_map_base::n_segment_bits"></a>
-const size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00222.html#s0">n_segment_bits</a> = 6</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Log2 of n_segment. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s1" doxytag="tbb::internal::hash_map_base::n_segment"></a>
-const size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00222.html#s1">n_segment</a> = size_t(1)<<<a class="el" href="a00222.html#s0">n_segment_bits</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Number of segments. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s2" doxytag="tbb::internal::hash_map_base::max_physical_size"></a>
-const size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00222.html#s2">max_physical_size</a> = size_t(1)<<(8*sizeof(<a class="el" href="a00222.html#w3">hashcode_t</a>)-<a class="el" href="a00222.html#s0">n_segment_bits</a>)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Maximum size of array of chains. <br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-base class of <a class="el" href="a00201.html">concurrent_hash_map</a> 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00329.html">concurrent_hash_map.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00223.html b/doc/html/a00223.html
deleted file mode 100644
index 52a7be9..0000000
--- a/doc/html/a00223.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::hash_map_iterator< Container, Value > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::hash_map_iterator< Container, Value > Class Template Reference</h1>Meets requirements of a forward iterator for STL */.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00329.html">concurrent_hash_map.h</a>></code>
-<p>
-<a href="a00024.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::internal::hash_map_iterator::hash_map_iterator"></a>
- </td><td class="memItemRight" valign="bottom"><b>hash_map_iterator</b> (const Container &table, size_t segment_index, size_t array_index=0, node *b=NULL)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::internal::hash_map_iterator::hash_map_iterator"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00223.html#a1">hash_map_iterator</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct undefined iterator. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::internal::hash_map_iterator::hash_map_iterator"></a>
- </td><td class="memItemRight" valign="bottom"><b>hash_map_iterator</b> (const <a class="el" href="a00223.html">hash_map_iterator</a>< Container, typename Container::value_type > &other)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::internal::hash_map_iterator::operator *"></a>
-Value & </td><td class="memItemRight" valign="bottom"><b>operator *</b> () const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::internal::hash_map_iterator::operator->"></a>
-Value * </td><td class="memItemRight" valign="bottom"><b>operator-></b> () const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::internal::hash_map_iterator::operator++"></a>
-<a class="el" href="a00223.html">hash_map_iterator</a> & </td><td class="memItemRight" valign="bottom"><b>operator++</b> ()</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a6" doxytag="tbb::internal::hash_map_iterator::operator++"></a>
-Value * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00223.html#a6">operator++</a> (int)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Post increment. <br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::internal::hash_map_iterator::internal::hash_map_iterator"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::hash_map_iterator</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n1" doxytag="tbb::internal::hash_map_iterator::internal::hash_map_range"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::hash_map_range</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n2" doxytag="tbb::internal::hash_map_iterator::tbb::concurrent_hash_map"></a>
-class </td><td class="memItemRight" valign="bottom"><a class="el" href="a00223.html#n2">tbb::concurrent_hash_map</a></td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="n3" doxytag="tbb::internal::hash_map_iterator::operator=="></a>
-template<typename C, typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00223.html">hash_map_iterator</a>< C, T > &i, const <a class="el" href="a00223.html">hash_map_iterator</a>< C, U > &j)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="n4" doxytag="tbb::internal::hash_map_iterator::operator!="></a>
-template<typename C, typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00223.html">hash_map_iterator</a>< C, T > &i, const <a class="el" href="a00223.html">hash_map_iterator</a>< C, U > &j)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="n5" doxytag="tbb::internal::hash_map_iterator::operator-"></a>
-template<typename C, typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">ptrdiff_t </td><td class="memTemplItemRight" valign="bottom"><b>operator-</b> (const <a class="el" href="a00223.html">hash_map_iterator</a>< C, T > &i, const <a class="el" href="a00223.html">hash_map_iterator</a>< C, U > &j)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Container, typename Value><br>
- class tbb::internal::hash_map_iterator< Container, Value ></h3>
-
-Meets requirements of a forward iterator for STL */. 
-<p>
-Value is either the T or const T type of the container. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00329.html">concurrent_hash_map.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00224.html b/doc/html/a00224.html
deleted file mode 100644
index ea4f86e..0000000
--- a/doc/html/a00224.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::hash_map_range< Iterator > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::hash_map_range< Iterator > Class Template Reference</h1>Range class used with <a class="el" href="a00201.html">concurrent_hash_map</a>.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00329.html">concurrent_hash_map.h</a>></code>
-<p>
-<a href="a00025.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w0" doxytag="tbb::internal::hash_map_range::size_type"></a>
-typedef std::size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00224.html#w0">size_type</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Type for size of a range. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w1" doxytag="tbb::internal::hash_map_range::value_type"></a>
-typedef Iterator::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w2" doxytag="tbb::internal::hash_map_range::reference"></a>
-typedef Iterator::reference </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w3" doxytag="tbb::internal::hash_map_range::difference_type"></a>
-typedef Iterator::difference_type </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w4" doxytag="tbb::internal::hash_map_range::iterator"></a>
-typedef Iterator </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
-
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::internal::hash_map_range::empty"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00224.html#a0">empty</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">True if range is empty. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::internal::hash_map_range::is_divisible"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00224.html#a1">is_divisible</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">True if range can be partitioned into two subranges. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::internal::hash_map_range::hash_map_range"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00224.html#a2">hash_map_range</a> (<a class="el" href="a00224.html">hash_map_range</a> &r, <a class="el" href="a00254.html">split</a>)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Split range. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a3" doxytag="tbb::internal::hash_map_range::hash_map_range"></a>
-template<typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00224.html#a3">hash_map_range</a> (<a class="el" href="a00224.html">hash_map_range</a>< U > &r)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">type conversion <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::internal::hash_map_range::hash_map_range"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00224.html#a4">hash_map_range</a> (const Iterator &begin_, const Iterator &end_, <a class="el" href="a00224.html#w0">size_type</a> grainsize=1)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Init range with iterators and grainsize specified. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::internal::hash_map_range::begin"></a>
-const Iterator & </td><td class="memItemRight" valign="bottom"><b>begin</b> () const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a6" doxytag="tbb::internal::hash_map_range::end"></a>
-const Iterator & </td><td class="memItemRight" valign="bottom"><b>end</b> () const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a7" doxytag="tbb::internal::hash_map_range::grainsize"></a>
-<a class="el" href="a00224.html#w0">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00224.html#a7">grainsize</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The grain size for this range. <br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::internal::hash_map_range::hash_map_range"></a>
-class </td><td class="memItemRight" valign="bottom"><b>hash_map_range</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Iterator><br>
- class tbb::internal::hash_map_range< Iterator ></h3>
-
-Range class used with <a class="el" href="a00201.html">concurrent_hash_map</a>. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00329.html">concurrent_hash_map.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00225.html b/doc/html/a00225.html
deleted file mode 100644
index be106d2..0000000
--- a/doc/html/a00225.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction > Class Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>Auxiliary class for parallel_reduce; for internal use only.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00337.html">parallel_reduce.h</a>></code>
-<p>
-<a href="a00074.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::internal::lambda_reduce_body::lambda_reduce_body"></a>
- </td><td class="memItemRight" valign="bottom"><b>lambda_reduce_body</b> (const Value &identity, const RealBody &body, const Reduction &reduction)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::internal::lambda_reduce_body::lambda_reduce_body"></a>
- </td><td class="memItemRight" valign="bottom"><b>lambda_reduce_body</b> (const <a class="el" href="a00225.html">lambda_reduce_body</a> &other)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::internal::lambda_reduce_body::lambda_reduce_body"></a>
- </td><td class="memItemRight" valign="bottom"><b>lambda_reduce_body</b> (<a class="el" href="a00225.html">lambda_reduce_body</a> &other, <a class="el" href="a00254.html">tbb::split</a>)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::internal::lambda_reduce_body::operator()"></a>
-void </td><td class="memItemRight" valign="bottom"><b>operator()</b> (Range &range)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::internal::lambda_reduce_body::join"></a>
-void </td><td class="memItemRight" valign="bottom"><b>join</b> (<a class="el" href="a00225.html">lambda_reduce_body</a> &rhs)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::internal::lambda_reduce_body::result"></a>
-Value </td><td class="memItemRight" valign="bottom"><b>result</b> () const </td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Range, typename Value, typename RealBody, typename Reduction><br>
- class tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction ></h3>
-
-Auxiliary class for parallel_reduce; for internal use only. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00337.html">parallel_reduce.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00226.html b/doc/html/a00226.html
deleted file mode 100644
index 6d94371..0000000
--- a/doc/html/a00226.html
+++ /dev/null
@@ -1,181 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::movable_exception< ExceptionData > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::movable_exception< ExceptionData > Class Template Reference</h1>Template that can be used to implement exception that transfers arbitrary ExceptionData to the root thread.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00353.html">tbb_exception.h</a>></code>
-<p>
-Inherits <a class="el" href="a00268.html">tbb::tbb_exception</a>.
-<p>
-Inheritance diagram for tbb::movable_exception< ExceptionData >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00134.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::movable_exception::movable_exception"></a>
- </td><td class="memItemRight" valign="bottom"><b>movable_exception</b> (const ExceptionData &data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::movable_exception::movable_exception"></a>
- </td><td class="memItemRight" valign="bottom"><b>movable_exception</b> (const <a class="el" href="a00226.html">movable_exception</a> &src)  throw ()</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::movable_exception::operator="></a>
-const <a class="el" href="a00226.html">movable_exception</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00226.html">movable_exception</a> &src)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::movable_exception::data"></a>
-ExceptionData & </td><td class="memItemRight" valign="bottom"><b>data</b> ()  throw ()</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::movable_exception::data"></a>
-const ExceptionData & </td><td class="memItemRight" valign="bottom"><b>data</b> () const   throw ()</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a6" doxytag="tbb::movable_exception::name"></a>
-const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00226.html#a6">name</a> () const   throw ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns RTTI name of the originally intercepted exception. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a7" doxytag="tbb::movable_exception::what"></a>
-const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00226.html#a7">what</a> () const   throw ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the result of originally intercepted exception's <a class="el" href="a00226.html#a7">what()</a> method. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00226.html">movable_exception</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00226.html#a8">move</a> ()  throw ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates and returns pointer to the deep copy of this exception object.  <a href="#a8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00226.html#a9">destroy</a> ()  throw ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroys objects created by the <a class="el" href="a00226.html#a8">move()</a> method.  <a href="#a9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00226.html#a10">throw_self</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Throws this exception object.  <a href="#a10"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="p0" doxytag="tbb::movable_exception::my_exception_data"></a>
-ExceptionData </td><td class="memItemRight" valign="bottom"><a class="el" href="a00226.html#p0">my_exception_data</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">User data. <br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename ExceptionData><br>
- class tbb::movable_exception< ExceptionData ></h3>
-
-Template that can be used to implement exception that transfers arbitrary ExceptionData to the root thread. 
-<p>
-Code using TBB can instantiate this template with an arbitrary ExceptionData type and throw this exception object. Such exceptions are intercepted by the TBB scheduler and delivered to the root thread (). <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00268.html">tbb::tbb_exception</a> * </dd></dl>
-
-<p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="a9" doxytag="tbb::movable_exception::destroy"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename ExceptionData> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">void <a class="el" href="a00226.html">tbb::movable_exception</a>< ExceptionData >::destroy           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap>  throw ()<code> [inline, virtual]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Destroys objects created by the <a class="el" href="a00226.html#a8">move()</a> method. 
-<p>
-Frees memory and calls destructor for this exception object. Can and must be used only on objects created by the move method. * 
-<p>
-Implements <a class="el" href="a00268.html#a1">tbb::tbb_exception</a>.    </td>
-  </tr>
-</table>
-<a class="anchor" name="a8" doxytag="tbb::movable_exception::move"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename ExceptionData> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top"><a class="el" href="a00226.html">movable_exception</a>* <a class="el" href="a00226.html">tbb::movable_exception</a>< ExceptionData >::move           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap>  throw ()<code> [inline, virtual]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Creates and returns pointer to the deep copy of this exception object. 
-<p>
-Move semantics is allowed. * 
-<p>
-Implements <a class="el" href="a00268.html#a0">tbb::tbb_exception</a>.    </td>
-  </tr>
-</table>
-<a class="anchor" name="a10" doxytag="tbb::movable_exception::throw_self"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename ExceptionData> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">void <a class="el" href="a00226.html">tbb::movable_exception</a>< ExceptionData >::throw_self           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline, virtual]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Throws this exception object. 
-<p>
-Make sure that if you have several levels of derivation from this interface you implement or override this method on the most derived level. The implementation is as simple as "throw *this;". Failure to do this will result in exception of a base class type being thrown. * 
-<p>
-Implements <a class="el" href="a00268.html#a2">tbb::tbb_exception</a>.    </td>
-  </tr>
-</table>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00353.html">tbb_exception.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00227.html b/doc/html/a00227.html
deleted file mode 100644
index b9c9bd7..0000000
--- a/doc/html/a00227.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::mutex Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::mutex Class Reference</h1>Wrapper around the platform's native reader-writer lock.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00332.html">mutex.h</a>></code>
-<p>
-<a href="a00047.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::mutex::mutex"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00227.html#a0">mutex</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct unacquired mutex. <br></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s0" doxytag="tbb::mutex::is_rw_mutex"></a>
-const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = false</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s1" doxytag="tbb::mutex::is_recursive_mutex"></a>
-const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = false</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s2" doxytag="tbb::mutex::is_fair_mutex"></a>
-const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = false</td></tr>
-
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::mutex::scoped_lock"></a>
-class </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wrapper around the platform's native reader-writer lock. 
-<p>
-For testing purposes only. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00332.html">mutex.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00228.html b/doc/html/a00228.html
index bcb6582..cebf878 100644
--- a/doc/html/a00228.html
+++ b/doc/html/a00228.html
@@ -1,83 +1,196 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::mutex::scoped_lock Class Reference</title>
+<title>mutex.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::mutex::scoped_lock Class Reference</h1>The scoped locking pattern.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00332.html">mutex.h</a>></code>
-<p>
-Inherits <a class="el" href="a00230.html">tbb::internal::no_copy</a>.
-<p>
-Inheritance diagram for tbb::mutex::scoped_lock:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00048.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::mutex::scoped_lock::scoped_lock"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00228.html#a0">scoped_lock</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct lock that has not acquired a mutex. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00228.html#a1">scoped_lock</a> (<a class="el" href="a00227.html">mutex</a> &<a class="el" href="a00227.html">mutex</a>)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex.  <a href="#a1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::mutex::scoped_lock::~scoped_lock"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00228.html#a2">~scoped_lock</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Release lock (if lock is held). <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::mutex::scoped_lock::acquire"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00228.html#a3">acquire</a> (<a class="el" href="a00227.html">mutex</a> &<a class="el" href="a00227.html">mutex</a>)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::mutex::scoped_lock::try_acquire"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00228.html#a4">try_acquire</a> (<a class="el" href="a00227.html">mutex</a> &<a class="el" href="a00227.html">mutex</a>)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Try acquire lock on given mutex. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::mutex::scoped_lock::release"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00228.html#a5">release</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-The scoped locking pattern. 
-<p>
-It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks. 
-<p>
-<hr><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" name="a1" doxytag="tbb::mutex::scoped_lock::scoped_lock"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">tbb::mutex::scoped_lock::scoped_lock           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top"><a class="el" href="a00227.html">mutex</a> & </td>
-          <td class="mdname1" valign="top" nowrap> <em>mutex</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Acquire lock on given mutex. 
-<p>
-Upon entry, *this should not be in the "have acquired a mutex" state.     </td>
-  </tr>
-</table>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00332.html">mutex.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>mutex.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_mutex_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_mutex_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#if _WIN32||_WIN64</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#include <windows.h></span>
+<a name="l00026"></a>00026 <span class="preprocessor">#if !defined(_WIN32_WINNT)</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="comment">// The following Windows API function is declared explicitly;</span>
+<a name="l00028"></a>00028 <span class="comment">// otherwise any user would have to specify /D_WIN32_WINNT=0x0400</span>
+<a name="l00029"></a>00029 <span class="keyword">extern</span> <span class="stringliteral">"C"</span> BOOL WINAPI TryEnterCriticalSection( LPCRITICAL_SECTION );
+<a name="l00030"></a>00030 <span class="preprocessor">#endif</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span>
+<a name="l00032"></a>00032 <span class="preprocessor">#else </span><span class="comment">/* if not _WIN32||_WIN64 */</span>
+<a name="l00033"></a>00033 <span class="preprocessor">#include <pthread.h></span>
+<a name="l00034"></a>00034 <span class="keyword">namespace </span>tbb { <span class="keyword">namespace </span>internal {
+<a name="l00035"></a>00035 <span class="comment">// Use this internal TBB function to throw an exception</span>
+<a name="l00036"></a>00036 <span class="keyword">extern</span> <span class="keywordtype">void</span> handle_perror( <span class="keywordtype">int</span> error_code, <span class="keyword">const</span> <span class="keywordtype">char</span>* what );
+<a name="l00037"></a>00037 } } <span class="comment">//namespaces</span>
+<a name="l00038"></a>00038 <span class="preprocessor">#endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
+<a name="l00039"></a>00039 
+<a name="l00040"></a>00040 <span class="preprocessor">#include "tbb_stddef.h"</span>
+<a name="l00041"></a>00041 <span class="preprocessor">#include "tbb_profiling.h"</span>
+<a name="l00042"></a>00042 
+<a name="l00043"></a>00043 <span class="keyword">namespace </span>tbb {
+<a name="l00044"></a>00044 
+<a name="l00046"></a>00046 
+<a name="l00048"></a><a class="code" href="a00112.html">00048</a> <span class="keyword">class </span><a class="code" href="a00112.html">mutex</a> {
+<a name="l00049"></a>00049 <span class="keyword">public</span>:
+<a name="l00051"></a><a class="code" href="a00112.html#05313cb77d4f85213103d4dab74ed454">00051</a>     <a class="code" href="a00112.html#05313cb77d4f85213103d4dab74ed454">mutex</a>() {
+<a name="l00052"></a>00052 <span class="preprocessor">#if TBB_USE_ASSERT || TBB_USE_THREADING_TOOLS</span>
+<a name="l00053"></a>00053 <span class="preprocessor"></span>    internal_construct();
+<a name="l00054"></a>00054 <span class="preprocessor">#else</span>
+<a name="l00055"></a>00055 <span class="preprocessor"></span><span class="preprocessor">  #if _WIN32||_WIN64</span>
+<a name="l00056"></a>00056 <span class="preprocessor"></span>        InitializeCriticalSection(&impl);
+<a name="l00057"></a>00057 <span class="preprocessor">  #else</span>
+<a name="l00058"></a>00058 <span class="preprocessor"></span>        <span class="keywordtype">int</span> error_code = pthread_mutex_init(&impl,NULL);
+<a name="l00059"></a>00059         <span class="keywordflow">if</span>( error_code )
+<a name="l00060"></a>00060             tbb::internal::handle_perror(error_code,<span class="stringliteral">"mutex: pthread_mutex_init failed"</span>);
+<a name="l00061"></a>00061 <span class="preprocessor">  #endif </span><span class="comment">/* _WIN32||_WIN64*/</span>
+<a name="l00062"></a>00062 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
+<a name="l00063"></a>00063     };
+<a name="l00064"></a>00064 
+<a name="l00065"></a>00065     ~<a class="code" href="a00112.html">mutex</a>() {
+<a name="l00066"></a>00066 <span class="preprocessor">#if TBB_USE_ASSERT</span>
+<a name="l00067"></a>00067 <span class="preprocessor"></span>        internal_destroy();
+<a name="l00068"></a>00068 <span class="preprocessor">#else</span>
+<a name="l00069"></a>00069 <span class="preprocessor"></span><span class="preprocessor">  #if _WIN32||_WIN64</span>
+<a name="l00070"></a>00070 <span class="preprocessor"></span>        DeleteCriticalSection(&impl);
+<a name="l00071"></a>00071 <span class="preprocessor">  #else</span>
+<a name="l00072"></a>00072 <span class="preprocessor"></span>        pthread_mutex_destroy(&impl); 
+<a name="l00073"></a>00073 
+<a name="l00074"></a>00074 <span class="preprocessor">  #endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
+<a name="l00075"></a>00075 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
+<a name="l00076"></a>00076     };
+<a name="l00077"></a>00077 
+<a name="l00078"></a>00078     <span class="keyword">class </span>scoped_lock;
+<a name="l00079"></a>00079     <span class="keyword">friend</span> <span class="keyword">class </span>scoped_lock;
+<a name="l00080"></a>00080 
+<a name="l00082"></a>00082 
+<a name="l00084"></a><a class="code" href="a00113.html">00084</a>     <span class="keyword">class </span><a class="code" href="a00113.html">scoped_lock</a> : internal::no_copy {
+<a name="l00085"></a>00085     <span class="keyword">public</span>:
+<a name="l00087"></a><a class="code" href="a00113.html#1d403ae51b484df5d86d85ae38f11e6e">00087</a>         <a class="code" href="a00113.html#1d403ae51b484df5d86d85ae38f11e6e">scoped_lock</a>() : my_mutex(NULL) {};
+<a name="l00088"></a>00088 
+<a name="l00090"></a>00090 
+<a name="l00091"></a><a class="code" href="a00113.html#605a6b9af0f8cdabdf81825e0de99600">00091</a>         <a class="code" href="a00113.html#1d403ae51b484df5d86d85ae38f11e6e">scoped_lock</a>( <a class="code" href="a00112.html">mutex</a>& <a class="code" href="a00112.html">mutex</a> ) {
+<a name="l00092"></a>00092             <a class="code" href="a00113.html#862e022841cdc522e4296a5533b22efd">acquire</a>( <a class="code" href="a00112.html#05313cb77d4f85213103d4dab74ed454">mutex</a> );
+<a name="l00093"></a>00093         }
+<a name="l00094"></a>00094 
+<a name="l00096"></a><a class="code" href="a00113.html#0ebbbecaf4311e9df7362cb76ceaa368">00096</a>         <a class="code" href="a00113.html#0ebbbecaf4311e9df7362cb76ceaa368">~scoped_lock</a>() {
+<a name="l00097"></a>00097             <span class="keywordflow">if</span>( my_mutex ) 
+<a name="l00098"></a>00098                 <a class="code" href="a00113.html#0d51d18cd99df3b2e93bf07378d0992c">release</a>();
+<a name="l00099"></a>00099         }
+<a name="l00100"></a>00100 
+<a name="l00102"></a><a class="code" href="a00113.html#862e022841cdc522e4296a5533b22efd">00102</a>         <span class="keywordtype">void</span> <a class="code" href="a00113.html#862e022841cdc522e4296a5533b22efd">acquire</a>( <a class="code" href="a00112.html">mutex</a>& <a class="code" href="a00112.html">mutex</a> ) {
+<a name="l00103"></a>00103 <span class="preprocessor">#if TBB_USE_ASSERT</span>
+<a name="l00104"></a>00104 <span class="preprocessor"></span>            internal_acquire(<a class="code" href="a00112.html#05313cb77d4f85213103d4dab74ed454">mutex</a>);
+<a name="l00105"></a>00105 <span class="preprocessor">#else</span>
+<a name="l00106"></a>00106 <span class="preprocessor"></span>            my_mutex = &<a class="code" href="a00112.html#05313cb77d4f85213103d4dab74ed454">mutex</a>;
+<a name="l00107"></a>00107 <span class="preprocessor">  #if _WIN32||_WIN64</span>
+<a name="l00108"></a>00108 <span class="preprocessor"></span>            EnterCriticalSection(&<a class="code" href="a00112.html#05313cb77d4f85213103d4dab74ed454">mutex</a>.impl);
+<a name="l00109"></a>00109 <span class="preprocessor">  #else</span>
+<a name="l00110"></a>00110 <span class="preprocessor"></span>            pthread_mutex_lock(&<a class="code" href="a00112.html#05313cb77d4f85213103d4dab74ed454">mutex</a>.impl);
+<a name="l00111"></a>00111 <span class="preprocessor">  #endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
+<a name="l00112"></a>00112 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
+<a name="l00113"></a>00113         }
+<a name="l00114"></a>00114 
+<a name="l00116"></a><a class="code" href="a00113.html#591e0c49b82bcedffcbe0923f1b915ec">00116</a>         <span class="keywordtype">bool</span> <a class="code" href="a00113.html#591e0c49b82bcedffcbe0923f1b915ec">try_acquire</a>( <a class="code" href="a00112.html">mutex</a>& <a class="code" href="a00112.html">mutex</a> ) {
+<a name="l00117"></a>00117 <span class="preprocessor">#if TBB_USE_ASSERT</span>
+<a name="l00118"></a>00118 <span class="preprocessor"></span>            <span class="keywordflow">return</span> internal_try_acquire (<a class="code" href="a00112.html#05313cb77d4f85213103d4dab74ed454">mutex</a>);
+<a name="l00119"></a>00119 <span class="preprocessor">#else</span>
+<a name="l00120"></a>00120 <span class="preprocessor"></span>            <span class="keywordtype">bool</span> result;
+<a name="l00121"></a>00121 <span class="preprocessor">  #if _WIN32||_WIN64</span>
+<a name="l00122"></a>00122 <span class="preprocessor"></span>            result = TryEnterCriticalSection(&<a class="code" href="a00112.html#05313cb77d4f85213103d4dab74ed454">mutex</a>.impl)!=0;
+<a name="l00123"></a>00123 <span class="preprocessor">  #else</span>
+<a name="l00124"></a>00124 <span class="preprocessor"></span>            result = pthread_mutex_trylock(&<a class="code" href="a00112.html#05313cb77d4f85213103d4dab74ed454">mutex</a>.impl)==0;
+<a name="l00125"></a>00125 <span class="preprocessor">  #endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
+<a name="l00126"></a>00126             <span class="keywordflow">if</span>( result )
+<a name="l00127"></a>00127                 my_mutex = &<a class="code" href="a00112.html#05313cb77d4f85213103d4dab74ed454">mutex</a>;
+<a name="l00128"></a>00128             <span class="keywordflow">return</span> result;
+<a name="l00129"></a>00129 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
+<a name="l00130"></a>00130         }
+<a name="l00131"></a>00131 
+<a name="l00133"></a><a class="code" href="a00113.html#0d51d18cd99df3b2e93bf07378d0992c">00133</a>         <span class="keywordtype">void</span> <a class="code" href="a00113.html#0d51d18cd99df3b2e93bf07378d0992c">release</a>() {
+<a name="l00134"></a>00134 <span class="preprocessor">#if TBB_USE_ASSERT</span>
+<a name="l00135"></a>00135 <span class="preprocessor"></span>            internal_release ();
+<a name="l00136"></a>00136 <span class="preprocessor">#else</span>
+<a name="l00137"></a>00137 <span class="preprocessor"></span><span class="preprocessor">  #if _WIN32||_WIN64</span>
+<a name="l00138"></a>00138 <span class="preprocessor"></span>            LeaveCriticalSection(&my_mutex-><a class="code" href="a00112.html#81ef45404275dd92c10ace5b1cfefed7">impl</a>);
+<a name="l00139"></a>00139 <span class="preprocessor">  #else</span>
+<a name="l00140"></a>00140 <span class="preprocessor"></span>            pthread_mutex_unlock(&my_mutex-><a class="code" href="a00112.html#81ef45404275dd92c10ace5b1cfefed7">impl</a>);
+<a name="l00141"></a>00141 <span class="preprocessor">  #endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
+<a name="l00142"></a>00142             my_mutex = NULL;
+<a name="l00143"></a>00143 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
+<a name="l00144"></a>00144         }
+<a name="l00145"></a>00145 
+<a name="l00146"></a>00146     <span class="keyword">private</span>:
+<a name="l00148"></a>00148         <a class="code" href="a00112.html">mutex</a>* my_mutex;
+<a name="l00149"></a>00149 
+<a name="l00151"></a>00151         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_acquire( <a class="code" href="a00112.html">mutex</a>& m );
+<a name="l00152"></a>00152 
+<a name="l00154"></a>00154         <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD internal_try_acquire( <a class="code" href="a00112.html">mutex</a>& m );
+<a name="l00155"></a>00155 
+<a name="l00157"></a>00157         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_release();
+<a name="l00158"></a>00158     };
+<a name="l00159"></a>00159 
+<a name="l00160"></a>00160     <span class="comment">// Mutex traits</span>
+<a name="l00161"></a>00161     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_rw_mutex = <span class="keyword">false</span>;
+<a name="l00162"></a>00162     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_recursive_mutex = <span class="keyword">false</span>;
+<a name="l00163"></a>00163     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_fair_mutex = <span class="keyword">false</span>;
+<a name="l00164"></a>00164 
+<a name="l00165"></a>00165 <span class="keyword">private</span>:
+<a name="l00166"></a>00166 <span class="preprocessor">#if _WIN32||_WIN64</span>
+<a name="l00167"></a>00167 <span class="preprocessor"></span>    CRITICAL_SECTION impl;    
+<a name="l00168"></a>00168     <span class="keyword">enum</span> state_t {
+<a name="l00169"></a>00169         INITIALIZED=0x1234,
+<a name="l00170"></a>00170         DESTROYED=0x789A,
+<a name="l00171"></a>00171         HELD=0x56CD
+<a name="l00172"></a>00172     } state;
+<a name="l00173"></a>00173 <span class="preprocessor">#else</span>
+<a name="l00174"></a>00174 <span class="preprocessor"></span>    pthread_mutex_t impl;
+<a name="l00175"></a>00175 <span class="preprocessor">#endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
+<a name="l00176"></a>00176 
+<a name="l00178"></a>00178     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_construct();
+<a name="l00179"></a>00179 
+<a name="l00181"></a>00181     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_destroy();
+<a name="l00182"></a>00182 };
+<a name="l00183"></a>00183 
+<a name="l00184"></a>00184 __TBB_DEFINE_PROFILING_SET_NAME(mutex)
+<a name="l00185"></a>00185 
+<a name="l00186"></a>00186 } <span class="comment">// namespace tbb </span>
+<a name="l00187"></a>00187 
+<a name="l00188"></a>00188 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_mutex_H */</span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00229.html b/doc/html/a00229.html
index ce0dfd8..046da71 100644
--- a/doc/html/a00229.html
+++ b/doc/html/a00229.html
@@ -1,31 +1,75 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::no_assign Class Reference</title>
+<title>null_mutex.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::no_assign Class Reference</h1>Base class for types that should not be assigned.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00356.html">tbb_stddef.h</a>></code>
-<p>
-Inherited by tbb::internal::allocate_additional_child_of_proxy<code> [private]</code>, tbb::internal::allocate_child_proxy<code> [private]</code>, tbb::internal::allocate_continuation_proxy<code> [private]</code>, tbb::internal::allocate_root_proxy<code> [private]</code>, tbb::internal::allocate_root_with_context_proxy<code> [private]</code>, <a class="el" href="a00230.html">tbb::internal::no_copy</a><code> [private]</code>, <a class="el" href="a00243.html">tbb::internal::quick_sort_pret [...]
-<p>
-Inheritance diagram for tbb::internal::no_assign:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00144.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::internal::no_assign::no_assign"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00229.html#a0">no_assign</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Explicitly define default construction, because otherwise gcc issues gratuitous warning. <br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Base class for types that should not be assigned. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00356.html">tbb_stddef.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>null_mutex.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_null_mutex_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_null_mutex_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="keyword">namespace </span>tbb {
+<a name="l00025"></a>00025     
+<a name="l00026"></a>00026 <span class="keyword">class </span>null_mutex {   
+<a name="l00028"></a>00028     null_mutex( <span class="keyword">const</span> null_mutex& );   
+<a name="l00029"></a>00029     <span class="keywordtype">void</span> operator=( <span class="keyword">const</span> null_mutex& );   
+<a name="l00030"></a>00030 <span class="keyword">public</span>:   
+<a name="l00031"></a>00031     <span class="keyword">class </span>scoped_lock {   
+<a name="l00032"></a>00032     <span class="keyword">public</span>:   
+<a name="l00033"></a>00033         scoped_lock() {}
+<a name="l00034"></a>00034         scoped_lock( null_mutex& ) {}   
+<a name="l00035"></a>00035         ~scoped_lock() {}
+<a name="l00036"></a>00036         <span class="keywordtype">void</span> <a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fef5f1fafe8d229d348ff91d937f64e79c7">acquire</a>( null_mutex& ) {}
+<a name="l00037"></a>00037         <span class="keywordtype">bool</span> try_acquire( null_mutex& ) { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
+<a name="l00038"></a>00038         <span class="keywordtype">void</span> <a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fefaa1fa107db0245c41fb109d976ae8d70">release</a>() {}
+<a name="l00039"></a>00039     };
+<a name="l00040"></a>00040   
+<a name="l00041"></a>00041     null_mutex() {}
+<a name="l00042"></a>00042     
+<a name="l00043"></a>00043     <span class="comment">// Mutex traits   </span>
+<a name="l00044"></a>00044     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_rw_mutex = <span class="keyword">false</span>;   
+<a name="l00045"></a>00045     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_recursive_mutex = <span class="keyword">true</span>;
+<a name="l00046"></a>00046     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_fair_mutex = <span class="keyword">true</span>;
+<a name="l00047"></a>00047 };  
+<a name="l00048"></a>00048 
+<a name="l00049"></a>00049 }
+<a name="l00050"></a>00050 
+<a name="l00051"></a>00051 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_null_mutex_H */</span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00230.html b/doc/html/a00230.html
deleted file mode 100644
index 6faf4f4..0000000
--- a/doc/html/a00230.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::no_copy Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::no_copy Class Reference</h1>Base class for types that should not be copied or assigned.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00356.html">tbb_stddef.h</a>></code>
-<p>
-Inherits <a class="el" href="a00229.html">tbb::internal::no_assign</a>.
-<p>
-Inherited by tbb::concurrent_hash_map< Key, T, HashCompare, A >::node, tbb::concurrent_queue< T, A >::destroyer<code> [private]</code>, tbb::concurrent_vector< T, A >::internal_loop_guide<code> [private]</code>, <a class="el" href="a00216.html">tbb::filter</a><code> [private]</code>, tbb::internal::affinity_partition_type, <a class="el" href="a00189.html">tbb::internal::affinity_partitioner_base_v3</a><code> [private]</code>, <a class="el" href="a00205.html">tbb::intern [...]
-<p>
-Inheritance diagram for tbb::internal::no_copy:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00145.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::internal::no_copy::no_copy"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00230.html#a0">no_copy</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allow default construction. <br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Base class for types that should not be copied or assigned. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00356.html">tbb_stddef.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00231.html b/doc/html/a00231.html
deleted file mode 100644
index a6a1d75..0000000
--- a/doc/html/a00231.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::parallel_do_feeder< Item > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::parallel_do_feeder< Item > Class Template Reference</h1>Class the user supplied algorithm body uses to add new tasks  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00335.html">parallel_do.h</a>></code>
-<p>
-Inherits <a class="el" href="a00230.html">tbb::internal::no_copy</a>.
-<p>
-Inherited by <a class="el" href="a00232.html">tbb::internal::parallel_do_feeder_impl< Body, Item ></a>.
-<p>
-Inheritance diagram for tbb::parallel_do_feeder< Item >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00061.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::parallel_do_feeder::add"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00231.html#a0">add</a> (const Item &item)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Add a work item to a running parallel_do. <br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::parallel_do_feeder::internal::parallel_do_feeder_impl"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::parallel_do_feeder_impl</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Item><br>
- class tbb::parallel_do_feeder< Item ></h3>
-
-Class the user supplied algorithm body uses to add new tasks 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>Item</em> </td><td>Work item type * </td></tr>
-  </table>
-</dl>
-
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00335.html">parallel_do.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00232.html b/doc/html/a00232.html
index 95eb2bb..90aa2c0 100644
--- a/doc/html/a00232.html
+++ b/doc/html/a00232.html
@@ -1,45 +1,77 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::parallel_do_feeder_impl< Body, Item > Class Template Reference</title>
+<title>null_rw_mutex.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::parallel_do_feeder_impl< Body, Item > Class Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>For internal use only.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00335.html">parallel_do.h</a>></code>
-<p>
-Inherits <a class="el" href="a00231.html">tbb::parallel_do_feeder< Item >< Item ></a>.
-<p>
-Inheritance diagram for tbb::internal::parallel_do_feeder_impl< Body, Item >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00065.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::internal::parallel_do_feeder_impl::parallel_do_feeder_impl"></a>
- </td><td class="memItemRight" valign="bottom"><b>parallel_do_feeder_impl</b> (<a class="el" href="a00262.html">tbb::task_group_context</a> &context)</td></tr>
-
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="o0" doxytag="tbb::internal::parallel_do_feeder_impl::my_body"></a>
-const Body * </td><td class="memItemRight" valign="bottom"><b>my_body</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="o1" doxytag="tbb::internal::parallel_do_feeder_impl::my_barrier"></a>
-<a class="el" href="a00215.html">empty_task</a> * </td><td class="memItemRight" valign="bottom"><b>my_barrier</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<class Body, typename Item><br>
- class tbb::internal::parallel_do_feeder_impl< Body, Item ></h3>
-
-For internal use only. 
-<p>
-Implements new task adding procedure. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00335.html">parallel_do.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>null_rw_mutex.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_null_rw_mutex_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_null_rw_mutex_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="keyword">namespace </span>tbb {
+<a name="l00025"></a>00025     
+<a name="l00026"></a>00026 <span class="keyword">class </span>null_rw_mutex {
+<a name="l00028"></a>00028     null_rw_mutex( <span class="keyword">const</span> null_rw_mutex& );   
+<a name="l00029"></a>00029     <span class="keywordtype">void</span> operator=( <span class="keyword">const</span> null_rw_mutex& );   
+<a name="l00030"></a>00030 <span class="keyword">public</span>:   
+<a name="l00031"></a>00031     <span class="keyword">class </span>scoped_lock {   
+<a name="l00032"></a>00032     <span class="keyword">public</span>:   
+<a name="l00033"></a>00033         scoped_lock() {}
+<a name="l00034"></a>00034         scoped_lock( null_rw_mutex& , <span class="keywordtype">bool</span> = <span class="keyword">true</span> ) {}
+<a name="l00035"></a>00035         ~scoped_lock() {}
+<a name="l00036"></a>00036         <span class="keywordtype">void</span> <a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fef5f1fafe8d229d348ff91d937f64e79c7">acquire</a>( null_rw_mutex& , <span class="keywordtype">bool</span> = <span class="keyword">true</span> ) {}
+<a name="l00037"></a>00037         <span class="keywordtype">bool</span> upgrade_to_writer() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
+<a name="l00038"></a>00038         <span class="keywordtype">bool</span> downgrade_to_reader() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
+<a name="l00039"></a>00039         <span class="keywordtype">bool</span> try_acquire( null_rw_mutex& , <span class="keywordtype">bool</span> = <span class="keyword">true</span> ) { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
+<a name="l00040"></a>00040         <span class="keywordtype">void</span> <a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fefaa1fa107db0245c41fb109d976ae8d70">release</a>() {}
+<a name="l00041"></a>00041     };
+<a name="l00042"></a>00042   
+<a name="l00043"></a>00043     null_rw_mutex() {}
+<a name="l00044"></a>00044     
+<a name="l00045"></a>00045     <span class="comment">// Mutex traits   </span>
+<a name="l00046"></a>00046     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_rw_mutex = <span class="keyword">true</span>;   
+<a name="l00047"></a>00047     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_recursive_mutex = <span class="keyword">true</span>;
+<a name="l00048"></a>00048     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_fair_mutex = <span class="keyword">true</span>;
+<a name="l00049"></a>00049 };  
+<a name="l00050"></a>00050 
+<a name="l00051"></a>00051 }
+<a name="l00052"></a>00052 
+<a name="l00053"></a>00053 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_null_rw_mutex_H */</span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00233.html b/doc/html/a00233.html
deleted file mode 100644
index 14a68a7..0000000
--- a/doc/html/a00233.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::parallel_do_operator_selector< Body, Item > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::parallel_do_operator_selector< Body, Item > Class Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>For internal use only.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00335.html">parallel_do.h</a>></code>
-<p>
-<a href="a00062.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="e0" doxytag="tbb::internal::parallel_do_operator_selector::call"></a>
-template<typename A1, typename A2> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>call</b> (const Body &obj, A1 &arg1, A2 &arg2)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<class Body, typename Item><br>
- class tbb::internal::parallel_do_operator_selector< Body, Item ></h3>
-
-For internal use only. 
-<p>
-Selects one of the two possible forms of function call member operator. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00335.html">parallel_do.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00234.html b/doc/html/a00234.html
index 1770e43..75f354d 100644
--- a/doc/html/a00234.html
+++ b/doc/html/a00234.html
@@ -1,142 +1,475 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::parallel_while< Body > Class Template Reference</title>
+<title>parallel_do.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::parallel_while< Body > Class Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>Parallel iteration over a stream, with optional addition of more work.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00340.html">parallel_while.h</a>></code>
-<p>
-Inherits <a class="el" href="a00230.html">tbb::internal::no_copy</a>.
-<p>
-Inheritance diagram for tbb::parallel_while< Body >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00087.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w0" doxytag="tbb::parallel_while::value_type"></a>
-typedef Body::argument_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00234.html#w0">value_type</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Type of items. <br></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::parallel_while::parallel_while"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00234.html#a0">parallel_while</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct empty non-running parallel while. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::parallel_while::~parallel_while"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00234.html#a1">~parallel_while</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Destructor cleans up data members before returning. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template<typename Stream> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#a2">run</a> (Stream &stream, const Body &body)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Apply body.apply to each item in the stream.  <a href="#a2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00234.html#a3">add</a> (const <a class="el" href="a00234.html#w0">value_type</a> &item)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Add a work item while running.  <a href="#a3"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Body><br>
- class tbb::parallel_while< Body ></h3>
-
-Parallel iteration over a stream, with optional addition of more work. 
-<p>
-The Body b has the requirement: <br>
- "b(v)" <br>
- "b.argument_type" <br>
- where v is an argument_type 
-<p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="a3" doxytag="tbb::parallel_while::add"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename Body> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">void <a class="el" href="a00234.html">tbb::parallel_while</a>< Body >::add           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">const <a class="el" href="a00234.html#w0">value_type</a> & </td>
-          <td class="mdname1" valign="top" nowrap> <em>item</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Add a work item while running. 
-<p>
-Should be executed only by body.apply or a thread spawned therefrom.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a2" doxytag="tbb::parallel_while::run"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename Body> </td>
-        </tr>
-        <tr>
-          <td class="md" colspan="4">
-template<typename Stream> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">void <a class="el" href="a00234.html">tbb::parallel_while</a>< Body >::run           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">Stream & </td>
-          <td class="mdname" nowrap> <em>stream</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>const Body & </td>
-          <td class="mdname" nowrap> <em>body</em></td>
-        </tr>
-        <tr>
-          <td class="md"></td>
-          <td class="md">) </td>
-          <td class="md" colspan="2"></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Apply body.apply to each item in the stream. 
-<p>
-A Stream s has the requirements <br>
- "S::value_type" <br>
- "s.pop_if_present(value) is convertible to bool     </td>
-  </tr>
-</table>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00340.html">parallel_while.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>parallel_do.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_parallel_do_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_parallel_do_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "task.h"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "aligned_space.h"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include <iterator></span>
+<a name="l00027"></a>00027 
+<a name="l00028"></a>00028 <span class="keyword">namespace </span>tbb {
+<a name="l00029"></a>00029 
+<a name="l00031"></a>00031 <span class="keyword">namespace </span>internal {
+<a name="l00032"></a>00032     <span class="keyword">template</span><<span class="keyword">typename</span> Body, <span class="keyword">typename</span> Item> <span class="keyword">class </span>parallel_do_feeder_impl;
+<a name="l00033"></a>00033     <span class="keyword">template</span><<span class="keyword">typename</span> Body> <span class="keyword">class </span>do_group_task;
+<a name="l00034"></a>00034 
+<a name="l00036"></a>00036     <span class="keyword">template</span><<span class="keyword">typename</span> T>
+<a name="l00037"></a>00037     <span class="keyword">struct </span>strip { <span class="keyword">typedef</span> T type; };
+<a name="l00038"></a>00038     <span class="keyword">template</span><<span class="keyword">typename</span> T>
+<a name="l00039"></a>00039     <span class="keyword">struct </span>strip<T&> { <span class="keyword">typedef</span> T type; };
+<a name="l00040"></a>00040     <span class="keyword">template</span><<span class="keyword">typename</span> T>
+<a name="l00041"></a>00041     <span class="keyword">struct </span>strip<const T&> { <span class="keyword">typedef</span> T type; };
+<a name="l00042"></a>00042     <span class="keyword">template</span><<span class="keyword">typename</span> T>
+<a name="l00043"></a>00043     <span class="keyword">struct </span>strip<volatile T&> { <span class="keyword">typedef</span> T type; };
+<a name="l00044"></a>00044     <span class="keyword">template</span><<span class="keyword">typename</span> T>
+<a name="l00045"></a>00045     <span class="keyword">struct </span>strip<const volatile T&> { <span class="keyword">typedef</span> T type; };
+<a name="l00046"></a>00046     <span class="comment">// Most of the compilers remove cv-qualifiers from non-reference function argument types. </span>
+<a name="l00047"></a>00047     <span class="comment">// But unfortunately there are those that don't.</span>
+<a name="l00048"></a>00048     <span class="keyword">template</span><<span class="keyword">typename</span> T>
+<a name="l00049"></a>00049     <span class="keyword">struct </span>strip<const T> { <span class="keyword">typedef</span> T type; };
+<a name="l00050"></a>00050     <span class="keyword">template</span><<span class="keyword">typename</span> T>
+<a name="l00051"></a>00051     <span class="keyword">struct </span>strip<volatile T> { <span class="keyword">typedef</span> T type; };
+<a name="l00052"></a>00052     <span class="keyword">template</span><<span class="keyword">typename</span> T>
+<a name="l00053"></a>00053     <span class="keyword">struct </span>strip<const volatile T> { <span class="keyword">typedef</span> T type; };
+<a name="l00054"></a>00054 } <span class="comment">// namespace internal</span>
+<a name="l00056"></a>00056 <span class="comment"></span>
+<a name="l00058"></a>00058 
+<a name="l00059"></a>00059 <span class="keyword">template</span><<span class="keyword">typename</span> Item>
+<a name="l00060"></a><a class="code" href="a00114.html">00060</a> <span class="keyword">class </span><a class="code" href="a00114.html">parallel_do_feeder</a>: internal::no_copy
+<a name="l00061"></a>00061 {
+<a name="l00062"></a>00062     <a class="code" href="a00114.html">parallel_do_feeder</a>() {}
+<a name="l00063"></a>00063     <span class="keyword">virtual</span> ~<a class="code" href="a00114.html">parallel_do_feeder</a> () {}
+<a name="l00064"></a>00064     <span class="keyword">virtual</span> <span class="keywordtype">void</span> internal_add( <span class="keyword">const</span> Item& item ) = 0;
+<a name="l00065"></a>00065     <span class="keyword">template</span><<span class="keyword">typename</span> Body_, <span class="keyword">typename</span> Item_> <span class="keyword">friend</span> <span class="keyword">class </span>internal::parallel_do_feeder_impl;
+<a name="l00066"></a>00066 <span class="keyword">public</span>:
+<a name="l00068"></a><a class="code" href="a00114.html#40baaf0f6856f4491dd0adf896c93516">00068</a>     <span class="keywordtype">void</span> <a class="code" href="a00114.html#40baaf0f6856f4491dd0adf896c93516">add</a>( <span class="keyword">const</span> Item& item ) {internal_add(item);}
+<a name="l00069"></a>00069 };
+<a name="l00070"></a>00070 
+<a name="l00072"></a>00072 <span class="keyword">namespace </span>internal {
+<a name="l00074"></a>00074 
+<a name="l00076"></a>00076     <span class="keyword">template</span><<span class="keyword">class</span> Body, <span class="keyword">typename</span> Item>
+<a name="l00077"></a>00077     <span class="keyword">class </span>parallel_do_operator_selector
+<a name="l00078"></a>00078     {
+<a name="l00079"></a>00079         <span class="keyword">typedef</span> parallel_do_feeder<Item> Feeder;
+<a name="l00080"></a>00080         <span class="keyword">template</span><<span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2, <span class="keyword">typename</span> CvItem >
+<a name="l00081"></a>00081         <span class="keyword">static</span> <span class="keywordtype">void</span> internal_call( <span class="keyword">const</span> Body& obj, A1& arg1, A2&, <span class="keywordtype">void</span> (Body::*)(CvItem) <span class="keyword">const</span> ) {
+<a name="l00082"></a>00082             obj(arg1);
+<a name="l00083"></a>00083         }
+<a name="l00084"></a>00084         <span class="keyword">template</span><<span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2, <span class="keyword">typename</span> CvItem >
+<a name="l00085"></a>00085         <span class="keyword">static</span> <span class="keywordtype">void</span> internal_call( <span class="keyword">const</span> Body& obj, A1& arg1, A2& arg2, <span class="keywordtype">void</span> (Body::*)(CvItem, parallel_do_feeder<Item>&) <span class="keyword">const</span> ) {
+<a name="l00086"></a>00086             obj(arg1, arg2);
+<a name="l00087"></a>00087         }
+<a name="l00088"></a>00088 
+<a name="l00089"></a>00089     <span class="keyword">public</span>:
+<a name="l00090"></a>00090         <span class="keyword">template</span><<span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2 >
+<a name="l00091"></a>00091         <span class="keyword">static</span> <span class="keywordtype">void</span> call( <span class="keyword">const</span> Body& obj, A1& arg1, A2& arg2 )
+<a name="l00092"></a>00092         {
+<a name="l00093"></a>00093             internal_call( obj, arg1, arg2, &Body::operator() );
+<a name="l00094"></a>00094         }
+<a name="l00095"></a>00095     };
+<a name="l00096"></a>00096 
+<a name="l00098"></a>00098 
+<a name="l00100"></a>00100     <span class="keyword">template</span><<span class="keyword">typename</span> Body, <span class="keyword">typename</span> Item>
+<a name="l00101"></a>00101     <span class="keyword">class </span>do_iteration_task: <span class="keyword">public</span> task
+<a name="l00102"></a>00102     {
+<a name="l00103"></a>00103         <span class="keyword">typedef</span> parallel_do_feeder_impl<Body, Item> feeder_type;
+<a name="l00104"></a>00104 
+<a name="l00105"></a>00105         Item my_value;
+<a name="l00106"></a>00106         feeder_type& my_feeder;
+<a name="l00107"></a>00107 
+<a name="l00108"></a>00108         do_iteration_task( <span class="keyword">const</span> Item& value, feeder_type& feeder ) : 
+<a name="l00109"></a>00109             my_value(value), my_feeder(feeder)
+<a name="l00110"></a>00110         {}
+<a name="l00111"></a>00111 
+<a name="l00112"></a>00112         <span class="comment">/*override*/</span> 
+<a name="l00113"></a>00113         task* execute()
+<a name="l00114"></a>00114         {
+<a name="l00115"></a>00115             parallel_do_operator_selector<Body, Item>::call(*my_feeder.my_body, my_value, my_feeder);
+<a name="l00116"></a>00116             <span class="keywordflow">return</span> NULL;
+<a name="l00117"></a>00117         }
+<a name="l00118"></a>00118 
+<a name="l00119"></a>00119         <span class="keyword">template</span><<span class="keyword">typename</span> Body_, <span class="keyword">typename</span> Item_> <span class="keyword">friend</span> <span class="keyword">class </span>parallel_do_feeder_impl;
+<a name="l00120"></a>00120     }; <span class="comment">// class do_iteration_task</span>
+<a name="l00121"></a>00121 
+<a name="l00122"></a>00122     <span class="keyword">template</span><<span class="keyword">typename</span> Iterator, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Item>
+<a name="l00123"></a>00123     <span class="keyword">class </span>do_iteration_task_iter: <span class="keyword">public</span> task
+<a name="l00124"></a>00124     {
+<a name="l00125"></a>00125         <span class="keyword">typedef</span> parallel_do_feeder_impl<Body, Item> feeder_type;
+<a name="l00126"></a>00126 
+<a name="l00127"></a>00127         Iterator my_iter;
+<a name="l00128"></a>00128         feeder_type& my_feeder;
+<a name="l00129"></a>00129 
+<a name="l00130"></a>00130         do_iteration_task_iter( <span class="keyword">const</span> Iterator& iter, feeder_type& feeder ) : 
+<a name="l00131"></a>00131             my_iter(iter), my_feeder(feeder)
+<a name="l00132"></a>00132         {}
+<a name="l00133"></a>00133 
+<a name="l00134"></a>00134         <span class="comment">/*override*/</span> 
+<a name="l00135"></a>00135         task* execute()
+<a name="l00136"></a>00136         {
+<a name="l00137"></a>00137             parallel_do_operator_selector<Body, Item>::call(*my_feeder.my_body, *my_iter, my_feeder);
+<a name="l00138"></a>00138             <span class="keywordflow">return</span> NULL;
+<a name="l00139"></a>00139         }
+<a name="l00140"></a>00140 
+<a name="l00141"></a>00141         <span class="keyword">template</span><<span class="keyword">typename</span> Iterator_, <span class="keyword">typename</span> Body_, <span class="keyword">typename</span> Item_> <span class="keyword">friend</span> <span class="keyword">class </span>do_group_task_forward;    
+<a name="l00142"></a>00142         <span class="keyword">template</span><<span class="keyword">typename</span> Body_, <span class="keyword">typename</span> Item_> <span class="keyword">friend</span> <span class="keyword">class </span>do_group_task_input;    
+<a name="l00143"></a>00143         <span class="keyword">template</span><<span class="keyword">typename</span> Iterator_, <span class="keyword">typename</span> Body_, <span class="keyword">typename</span> Item_> <span class="keyword">friend</span> <span class="keyword">class </span>do_task_iter;    
+<a name="l00144"></a>00144     }; <span class="comment">// class do_iteration_task_iter</span>
+<a name="l00145"></a>00145 
+<a name="l00147"></a>00147 
+<a name="l00149"></a>00149     <span class="keyword">template</span><<span class="keyword">class</span> Body, <span class="keyword">typename</span> Item>
+<a name="l00150"></a>00150     <span class="keyword">class </span>parallel_do_feeder_impl : <span class="keyword">public</span> parallel_do_feeder<Item>
+<a name="l00151"></a>00151     {
+<a name="l00152"></a>00152         <span class="comment">/*override*/</span> 
+<a name="l00153"></a>00153         <span class="keywordtype">void</span> internal_add( <span class="keyword">const</span> Item& item )
+<a name="l00154"></a>00154         {
+<a name="l00155"></a>00155             <span class="keyword">typedef</span> do_iteration_task<Body, Item> iteration_type;
+<a name="l00156"></a>00156 
+<a name="l00157"></a>00157             iteration_type& t = *<span class="keyword">new</span> (<a class="code" href="a00132.html#bd43e8d6249738efafd12d6a4c72c5e3">task::self</a>().allocate_additional_child_of(*my_barrier)) iteration_type(item, *<span class="keyword">this</span>);
+<a name="l00158"></a>00158 
+<a name="l00159"></a>00159             t.spawn( t );
+<a name="l00160"></a>00160         }
+<a name="l00161"></a>00161     <span class="keyword">public</span>:
+<a name="l00162"></a>00162         <span class="keyword">const</span> Body* my_body;
+<a name="l00163"></a>00163         empty_task* my_barrier;
+<a name="l00164"></a>00164 
+<a name="l00165"></a>00165         parallel_do_feeder_impl()
+<a name="l00166"></a>00166         {
+<a name="l00167"></a>00167             my_barrier = <span class="keyword">new</span>( <a class="code" href="a00132.html#23acb0da0afd690da797f9f882027d34">task::allocate_root</a>() ) empty_task();
+<a name="l00168"></a>00168             __TBB_ASSERT(my_barrier, <span class="stringliteral">"root task allocation failed"</span>);
+<a name="l00169"></a>00169         }
+<a name="l00170"></a>00170 
+<a name="l00171"></a>00171 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00172"></a>00172 <span class="preprocessor"></span>        parallel_do_feeder_impl(<a class="code" href="a00133.html">tbb::task_group_context</a> &context)
+<a name="l00173"></a>00173         {
+<a name="l00174"></a>00174             my_barrier = <span class="keyword">new</span>( <a class="code" href="a00132.html#23acb0da0afd690da797f9f882027d34">task::allocate_root</a>(context) ) empty_task();
+<a name="l00175"></a>00175             __TBB_ASSERT(my_barrier, <span class="stringliteral">"root task allocation failed"</span>);
+<a name="l00176"></a>00176         }
+<a name="l00177"></a>00177 <span class="preprocessor">#endif</span>
+<a name="l00178"></a>00178 <span class="preprocessor"></span>
+<a name="l00179"></a>00179         ~parallel_do_feeder_impl()
+<a name="l00180"></a>00180         {
+<a name="l00181"></a>00181             my_barrier->destroy(*my_barrier);
+<a name="l00182"></a>00182         }
+<a name="l00183"></a>00183     }; <span class="comment">// class parallel_do_feeder_impl</span>
+<a name="l00184"></a>00184 
+<a name="l00185"></a>00185 
+<a name="l00187"></a>00187 
+<a name="l00190"></a>00190     <span class="keyword">template</span><<span class="keyword">typename</span> Iterator, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Item>
+<a name="l00191"></a>00191     <span class="keyword">class </span>do_group_task_forward: <span class="keyword">public</span> task
+<a name="l00192"></a>00192     {
+<a name="l00193"></a>00193         <span class="keyword">static</span> <span class="keyword">const</span> size_t max_arg_size = 4;         
+<a name="l00194"></a>00194 
+<a name="l00195"></a>00195         <span class="keyword">typedef</span> parallel_do_feeder_impl<Body, Item> feeder_type;
+<a name="l00196"></a>00196 
+<a name="l00197"></a>00197         feeder_type& my_feeder;
+<a name="l00198"></a>00198         Iterator my_first;
+<a name="l00199"></a>00199         size_t my_size;
+<a name="l00200"></a>00200         
+<a name="l00201"></a>00201         do_group_task_forward( Iterator first, size_t size, feeder_type& feeder ) 
+<a name="l00202"></a>00202             : my_feeder(feeder), my_first(first), my_size(size)
+<a name="l00203"></a>00203         {}
+<a name="l00204"></a>00204 
+<a name="l00205"></a>00205         <span class="comment">/*override*/</span> task* execute()
+<a name="l00206"></a>00206         {
+<a name="l00207"></a>00207             <span class="keyword">typedef</span> do_iteration_task_iter<Iterator, Body, Item> iteration_type;
+<a name="l00208"></a>00208             __TBB_ASSERT( my_size>0, NULL );
+<a name="l00209"></a>00209             task_list list;
+<a name="l00210"></a>00210             task* t; 
+<a name="l00211"></a>00211             size_t k=0; 
+<a name="l00212"></a>00212             <span class="keywordflow">for</span>(;;) {
+<a name="l00213"></a>00213                 t = <span class="keyword">new</span>( allocate_child() ) iteration_type( my_first, my_feeder );
+<a name="l00214"></a>00214                 ++my_first;
+<a name="l00215"></a>00215                 <span class="keywordflow">if</span>( ++k==my_size ) <span class="keywordflow">break</span>;
+<a name="l00216"></a>00216                 list.push_back(*t);
+<a name="l00217"></a>00217             }
+<a name="l00218"></a>00218             set_ref_count(<span class="keywordtype">int</span>(k+1));
+<a name="l00219"></a>00219             spawn(list);
+<a name="l00220"></a>00220             spawn_and_wait_for_all(*t);
+<a name="l00221"></a>00221             <span class="keywordflow">return</span> NULL;
+<a name="l00222"></a>00222         }
+<a name="l00223"></a>00223 
+<a name="l00224"></a>00224         <span class="keyword">template</span><<span class="keyword">typename</span> Iterator_, <span class="keyword">typename</span> Body_, <span class="keyword">typename</span> _Item> <span class="keyword">friend</span> <span class="keyword">class </span>do_task_iter;
+<a name="l00225"></a>00225     }; <span class="comment">// class do_group_task_forward</span>
+<a name="l00226"></a>00226 
+<a name="l00227"></a>00227     <span class="keyword">template</span><<span class="keyword">typename</span> Body, <span class="keyword">typename</span> Item>
+<a name="l00228"></a>00228     <span class="keyword">class </span>do_group_task_input: <span class="keyword">public</span> task
+<a name="l00229"></a>00229     {
+<a name="l00230"></a>00230         <span class="keyword">static</span> <span class="keyword">const</span> size_t max_arg_size = 4;         
+<a name="l00231"></a>00231         
+<a name="l00232"></a>00232         <span class="keyword">typedef</span> parallel_do_feeder_impl<Body, Item> feeder_type;
+<a name="l00233"></a>00233 
+<a name="l00234"></a>00234         feeder_type& my_feeder;
+<a name="l00235"></a>00235         size_t my_size;
+<a name="l00236"></a>00236         aligned_space<Item, max_arg_size> my_arg;
+<a name="l00237"></a>00237 
+<a name="l00238"></a>00238         do_group_task_input( feeder_type& feeder ) 
+<a name="l00239"></a>00239             : my_feeder(feeder), my_size(0)
+<a name="l00240"></a>00240         {}
+<a name="l00241"></a>00241 
+<a name="l00242"></a>00242         <span class="comment">/*override*/</span> task* execute()
+<a name="l00243"></a>00243         {
+<a name="l00244"></a>00244             <span class="keyword">typedef</span> do_iteration_task_iter<Item*, Body, Item> iteration_type;
+<a name="l00245"></a>00245             __TBB_ASSERT( my_size>0, NULL );
+<a name="l00246"></a>00246             task_list list;
+<a name="l00247"></a>00247             task* t; 
+<a name="l00248"></a>00248             size_t k=0; 
+<a name="l00249"></a>00249             <span class="keywordflow">for</span>(;;) {
+<a name="l00250"></a>00250                 t = <span class="keyword">new</span>( allocate_child() ) iteration_type( my_arg.begin() + k, my_feeder );
+<a name="l00251"></a>00251                 <span class="keywordflow">if</span>( ++k==my_size ) <span class="keywordflow">break</span>;
+<a name="l00252"></a>00252                 list.push_back(*t);
+<a name="l00253"></a>00253             }
+<a name="l00254"></a>00254             set_ref_count(<span class="keywordtype">int</span>(k+1));
+<a name="l00255"></a>00255             spawn(list);
+<a name="l00256"></a>00256             spawn_and_wait_for_all(*t);
+<a name="l00257"></a>00257             <span class="keywordflow">return</span> NULL;
+<a name="l00258"></a>00258         }
+<a name="l00259"></a>00259 
+<a name="l00260"></a>00260         ~do_group_task_input(){
+<a name="l00261"></a>00261             <span class="keywordflow">for</span>( size_t k=0; k<my_size; ++k)
+<a name="l00262"></a>00262                 (my_arg.begin() + k)->~Item();
+<a name="l00263"></a>00263         }
+<a name="l00264"></a>00264 
+<a name="l00265"></a>00265         <span class="keyword">template</span><<span class="keyword">typename</span> Iterator_, <span class="keyword">typename</span> Body_, <span class="keyword">typename</span> Item_> <span class="keyword">friend</span> <span class="keyword">class </span>do_task_iter;
+<a name="l00266"></a>00266     }; <span class="comment">// class do_group_task_input</span>
+<a name="l00267"></a>00267     
+<a name="l00269"></a>00269 
+<a name="l00271"></a>00271     <span class="keyword">template</span><<span class="keyword">typename</span> Iterator, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Item>
+<a name="l00272"></a>00272     <span class="keyword">class </span>do_task_iter: <span class="keyword">public</span> task
+<a name="l00273"></a>00273     {
+<a name="l00274"></a>00274         <span class="keyword">typedef</span> parallel_do_feeder_impl<Body, Item> feeder_type;
+<a name="l00275"></a>00275 
+<a name="l00276"></a>00276     <span class="keyword">public</span>:
+<a name="l00277"></a>00277         do_task_iter( Iterator first, Iterator last , feeder_type& feeder ) : 
+<a name="l00278"></a>00278             my_first(first), my_last(last), my_feeder(feeder)
+<a name="l00279"></a>00279         {}
+<a name="l00280"></a>00280 
+<a name="l00281"></a>00281     <span class="keyword">private</span>:
+<a name="l00282"></a>00282         Iterator my_first;
+<a name="l00283"></a>00283         Iterator my_last;
+<a name="l00284"></a>00284         feeder_type& my_feeder;
+<a name="l00285"></a>00285 
+<a name="l00286"></a>00286         <span class="comment">/* Do not merge run(xxx) and run_xxx() methods. They are separated in order</span>
+<a name="l00287"></a>00287 <span class="comment">            to make sure that compilers will eliminate unused argument of type xxx</span>
+<a name="l00288"></a>00288 <span class="comment">            (that is will not put it on stack). The sole purpose of this argument </span>
+<a name="l00289"></a>00289 <span class="comment">            is overload resolution.</span>
+<a name="l00290"></a>00290 <span class="comment">            </span>
+<a name="l00291"></a>00291 <span class="comment">            An alternative could be using template functions, but explicit specialization </span>
+<a name="l00292"></a>00292 <span class="comment">            of member function templates is not supported for non specialized class </span>
+<a name="l00293"></a>00293 <span class="comment">            templates. Besides template functions would always fall back to the least </span>
+<a name="l00294"></a>00294 <span class="comment">            efficient variant (the one for input iterators) in case of iterators having </span>
+<a name="l00295"></a>00295 <span class="comment">            custom tags derived from basic ones. */</span>
+<a name="l00296"></a>00296         <span class="comment">/*override*/</span> task* execute()
+<a name="l00297"></a>00297         {
+<a name="l00298"></a>00298             <span class="keyword">typedef</span> <span class="keyword">typename</span> std::iterator_traits<Iterator>::iterator_category iterator_tag;
+<a name="l00299"></a>00299             <span class="keywordflow">return</span> run( (iterator_tag*)NULL );
+<a name="l00300"></a>00300         }
+<a name="l00301"></a>00301 
+<a name="l00304"></a>00304         <span class="keyword">inline</span> task* run( <span class="keywordtype">void</span>* ) { <span class="keywordflow">return</span> run_for_input_iterator(); }
+<a name="l00305"></a>00305         
+<a name="l00306"></a>00306         task* run_for_input_iterator() {
+<a name="l00307"></a>00307             <span class="keyword">typedef</span> do_group_task_input<Body, Item> block_type;
+<a name="l00308"></a>00308 
+<a name="l00309"></a>00309             block_type& t = *<span class="keyword">new</span>( allocate_additional_child_of(*my_feeder.my_barrier) ) block_type(my_feeder);
+<a name="l00310"></a>00310             size_t k=0; 
+<a name="l00311"></a>00311             <span class="keywordflow">while</span>( !(my_first == my_last) ) {
+<a name="l00312"></a>00312                 <span class="keyword">new</span> (t.my_arg.begin() + k) Item(*my_first);
+<a name="l00313"></a>00313                 ++my_first;
+<a name="l00314"></a>00314                 <span class="keywordflow">if</span>( ++k==block_type::max_arg_size ) {
+<a name="l00315"></a>00315                     <span class="keywordflow">if</span> ( !(my_first == my_last) )
+<a name="l00316"></a>00316                         recycle_to_reexecute();
+<a name="l00317"></a>00317                     <span class="keywordflow">break</span>;
+<a name="l00318"></a>00318                 }
+<a name="l00319"></a>00319             }
+<a name="l00320"></a>00320             <span class="keywordflow">if</span>( k==0 ) {
+<a name="l00321"></a>00321                 destroy(t);
+<a name="l00322"></a>00322                 <span class="keywordflow">return</span> NULL;
+<a name="l00323"></a>00323             } <span class="keywordflow">else</span> {
+<a name="l00324"></a>00324                 t.my_size = k;
+<a name="l00325"></a>00325                 <span class="keywordflow">return</span> &t;
+<a name="l00326"></a>00326             }
+<a name="l00327"></a>00327         }
+<a name="l00328"></a>00328 
+<a name="l00329"></a>00329         <span class="keyword">inline</span> task* run( std::forward_iterator_tag* ) { <span class="keywordflow">return</span> run_for_forward_iterator(); }
+<a name="l00330"></a>00330 
+<a name="l00331"></a>00331         task* run_for_forward_iterator() {
+<a name="l00332"></a>00332             <span class="keyword">typedef</span> do_group_task_forward<Iterator, Body, Item> block_type;
+<a name="l00333"></a>00333 
+<a name="l00334"></a>00334             Iterator first = my_first;
+<a name="l00335"></a>00335             size_t k=0; 
+<a name="l00336"></a>00336             <span class="keywordflow">while</span>( !(my_first==my_last) ) {
+<a name="l00337"></a>00337                 ++my_first;
+<a name="l00338"></a>00338                 <span class="keywordflow">if</span>( ++k==block_type::max_arg_size ) {
+<a name="l00339"></a>00339                     <span class="keywordflow">if</span> ( !(my_first==my_last) )
+<a name="l00340"></a>00340                         recycle_to_reexecute();
+<a name="l00341"></a>00341                     <span class="keywordflow">break</span>;
+<a name="l00342"></a>00342                 }
+<a name="l00343"></a>00343             }
+<a name="l00344"></a>00344             <span class="keywordflow">return</span> k==0 ? NULL : <span class="keyword">new</span>( allocate_additional_child_of(*my_feeder.my_barrier) ) block_type(first, k, my_feeder);
+<a name="l00345"></a>00345         }
+<a name="l00346"></a>00346         
+<a name="l00347"></a>00347         <span class="keyword">inline</span> task* run( std::random_access_iterator_tag* ) { <span class="keywordflow">return</span> run_for_random_access_iterator(); }
+<a name="l00348"></a>00348 
+<a name="l00349"></a>00349         task* run_for_random_access_iterator() {
+<a name="l00350"></a>00350             <span class="keyword">typedef</span> do_group_task_forward<Iterator, Body, Item> block_type;
+<a name="l00351"></a>00351             <span class="keyword">typedef</span> do_iteration_task_iter<Iterator, Body, Item> iteration_type;
+<a name="l00352"></a>00352             
+<a name="l00353"></a>00353             size_t k = static_cast<size_t>(my_last-my_first); 
+<a name="l00354"></a>00354             <span class="keywordflow">if</span>( k > block_type::max_arg_size ) {
+<a name="l00355"></a>00355                 Iterator middle = my_first + k/2;
+<a name="l00356"></a>00356 
+<a name="l00357"></a>00357                 empty_task& c = *<span class="keyword">new</span>( allocate_continuation() ) empty_task;
+<a name="l00358"></a>00358                 do_task_iter& b = *<span class="keyword">new</span>( c.allocate_child() ) do_task_iter(middle, my_last, my_feeder);
+<a name="l00359"></a>00359                 recycle_as_child_of(c);
+<a name="l00360"></a>00360 
+<a name="l00361"></a>00361                 my_last = middle;
+<a name="l00362"></a>00362                 c.set_ref_count(2);
+<a name="l00363"></a>00363                 c.spawn(b);
+<a name="l00364"></a>00364                 <span class="keywordflow">return</span> <span class="keyword">this</span>;
+<a name="l00365"></a>00365             }<span class="keywordflow">else</span> <span class="keywordflow">if</span>( k != 0 ) {
+<a name="l00366"></a>00366                 task_list list;
+<a name="l00367"></a>00367                 task* t; 
+<a name="l00368"></a>00368                 size_t k1=0; 
+<a name="l00369"></a>00369                 <span class="keywordflow">for</span>(;;) {
+<a name="l00370"></a>00370                     t = <span class="keyword">new</span>( allocate_child() ) iteration_type(my_first, my_feeder);
+<a name="l00371"></a>00371                     ++my_first;
+<a name="l00372"></a>00372                     <span class="keywordflow">if</span>( ++k1==k ) <span class="keywordflow">break</span>;
+<a name="l00373"></a>00373                     list.push_back(*t);
+<a name="l00374"></a>00374                 }
+<a name="l00375"></a>00375                 set_ref_count(<span class="keywordtype">int</span>(k+1));
+<a name="l00376"></a>00376                 spawn(list);
+<a name="l00377"></a>00377                 spawn_and_wait_for_all(*t);
+<a name="l00378"></a>00378             }
+<a name="l00379"></a>00379             <span class="keywordflow">return</span> NULL;
+<a name="l00380"></a>00380         }
+<a name="l00381"></a>00381     }; <span class="comment">// class do_task_iter</span>
+<a name="l00382"></a>00382 
+<a name="l00384"></a>00384 
+<a name="l00386"></a>00386     <span class="keyword">template</span><<span class="keyword">typename</span> Iterator, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Item> 
+<a name="l00387"></a>00387     <span class="keywordtype">void</span> run_parallel_do( Iterator first, Iterator last, <span class="keyword">const</span> Body& body
+<a name="l00388"></a>00388 #<span class="keywordflow">if</span> __TBB_EXCEPTIONS
+<a name="l00389"></a>00389         , task_group_context& context
+<a name="l00390"></a>00390 #endif
+<a name="l00391"></a>00391         )
+<a name="l00392"></a>00392     {
+<a name="l00393"></a>00393         <span class="keyword">typedef</span> do_task_iter<Iterator, Body, Item> root_iteration_task;
+<a name="l00394"></a>00394 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00395"></a>00395 <span class="preprocessor"></span>        parallel_do_feeder_impl<Body, Item> feeder(context);
+<a name="l00396"></a>00396 <span class="preprocessor">#else</span>
+<a name="l00397"></a>00397 <span class="preprocessor"></span>        parallel_do_feeder_impl<Body, Item> feeder;
+<a name="l00398"></a>00398 <span class="preprocessor">#endif</span>
+<a name="l00399"></a>00399 <span class="preprocessor"></span>        feeder.my_body = &body;
+<a name="l00400"></a>00400 
+<a name="l00401"></a>00401         root_iteration_task &t = *<span class="keyword">new</span>( feeder.my_barrier->allocate_child() ) root_iteration_task(first, last, feeder);
+<a name="l00402"></a>00402 
+<a name="l00403"></a>00403         feeder.my_barrier->set_ref_count(2);
+<a name="l00404"></a>00404         feeder.my_barrier->spawn_and_wait_for_all(t);
+<a name="l00405"></a>00405     }
+<a name="l00406"></a>00406 
+<a name="l00408"></a>00408 
+<a name="l00410"></a>00410     <span class="keyword">template</span><<span class="keyword">typename</span> Iterator, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Item> 
+<a name="l00411"></a>00411     <span class="keywordtype">void</span> select_parallel_do( Iterator first, Iterator last, <span class="keyword">const</span> Body& body, <span class="keywordtype">void</span> (Body::*)(Item) <span class="keyword">const</span>
+<a name="l00412"></a>00412 #<span class="keywordflow">if</span> __TBB_EXCEPTIONS
+<a name="l00413"></a>00413         , task_group_context& context 
+<a name="l00414"></a>00414 #endif <span class="comment">// __TBB_EXCEPTIONS </span>
+<a name="l00415"></a>00415         )
+<a name="l00416"></a>00416     {
+<a name="l00417"></a>00417         run_parallel_do<Iterator, Body, typename strip<Item>::type>( first, last, body
+<a name="l00418"></a>00418 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00419"></a>00419 <span class="preprocessor"></span>            , context
+<a name="l00420"></a>00420 <span class="preprocessor">#endif // __TBB_EXCEPTIONS </span>
+<a name="l00421"></a>00421 <span class="preprocessor"></span>            );
+<a name="l00422"></a>00422     }
+<a name="l00423"></a>00423 
+<a name="l00425"></a>00425 
+<a name="l00427"></a>00427     <span class="keyword">template</span><<span class="keyword">typename</span> Iterator, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Item, <span class="keyword">typename</span> _Item> 
+<a name="l00428"></a>00428     <span class="keywordtype">void</span> select_parallel_do( Iterator first, Iterator last, <span class="keyword">const</span> Body& body, <span class="keywordtype">void</span> (Body::*)(Item, parallel_do_feeder<_Item>&) <span class="keyword">const</span>
+<a name="l00429"></a>00429 #<span class="keywordflow">if</span> __TBB_EXCEPTIONS
+<a name="l00430"></a>00430         , task_group_context& context 
+<a name="l00431"></a>00431 #endif <span class="comment">// __TBB_EXCEPTIONS</span>
+<a name="l00432"></a>00432         )
+<a name="l00433"></a>00433     {
+<a name="l00434"></a>00434         run_parallel_do<Iterator, Body, typename strip<Item>::type>( first, last, body
+<a name="l00435"></a>00435 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00436"></a>00436 <span class="preprocessor"></span>            , context
+<a name="l00437"></a>00437 <span class="preprocessor">#endif // __TBB_EXCEPTIONS</span>
+<a name="l00438"></a>00438 <span class="preprocessor"></span>            );
+<a name="l00439"></a>00439     }
+<a name="l00440"></a>00440 
+<a name="l00441"></a>00441 } <span class="comment">// namespace internal</span>
+<a name="l00443"></a>00443 <span class="comment"></span>
+<a name="l00444"></a>00444 
+<a name="l00467"></a>00467 
+<a name="l00468"></a>00468 
+<a name="l00469"></a>00469 <span class="keyword">template</span><<span class="keyword">typename</span> Iterator, <span class="keyword">typename</span> Body> 
+<a name="l00470"></a><a class="code" href="a00183.html#g3383e2703977012b6f384d673410f1f7">00470</a> <span class="keywordtype">void</span> <a class="code" href="a00183.html#g3383e2703977012b6f384d673410f1f7">parallel_do</a>( Iterator first, Iterator last, <span class="keyword">const</span> Body& body )
+<a name="l00471"></a>00471 {
+<a name="l00472"></a>00472     <span class="keywordflow">if</span> ( first == last )
+<a name="l00473"></a>00473         <span class="keywordflow">return</span>;
+<a name="l00474"></a>00474 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00475"></a>00475 <span class="preprocessor"></span>    <a class="code" href="a00133.html">task_group_context</a> context;
+<a name="l00476"></a>00476 <span class="preprocessor">#endif // __TBB_EXCEPTIONS</span>
+<a name="l00477"></a>00477 <span class="preprocessor"></span>    internal::select_parallel_do( first, last, body, &Body::operator()
+<a name="l00478"></a>00478 #<span class="keywordflow">if</span> __TBB_EXCEPTIONS
+<a name="l00479"></a>00479         , context
+<a name="l00480"></a>00480 #endif <span class="comment">// __TBB_EXCEPTIONS</span>
+<a name="l00481"></a>00481         );
+<a name="l00482"></a>00482 }
+<a name="l00483"></a>00483 
+<a name="l00484"></a>00484 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00486"></a>00486 <span class="preprocessor"></span>
+<a name="l00487"></a>00487 <span class="preprocessor">template<typename Iterator, typename Body> </span>
+<a name="l00488"></a><a class="code" href="a00183.html#g2617dc9b88b3285a7212599d49f74228">00488</a> <span class="preprocessor"></span><span class="keywordtype">void</span> <a class="code" href="a00183.html#g3383e2703977012b6f384d673410f1f7">parallel_do</a>( Iterator first, Iterator last, <span class="keyword">const</span> Body& body, <a class="code" href="a00133.html">task_group_context</a>& context  )
+<a name="l00489"></a>00489 {
+<a name="l00490"></a>00490     <span class="keywordflow">if</span> ( first == last )
+<a name="l00491"></a>00491         <span class="keywordflow">return</span>;
+<a name="l00492"></a>00492     internal::select_parallel_do( first, last, body, &Body::operator(), context );
+<a name="l00493"></a>00493 }
+<a name="l00494"></a>00494 <span class="preprocessor">#endif // __TBB_EXCEPTIONS</span>
+<a name="l00495"></a>00495 <span class="preprocessor"></span>
+<a name="l00497"></a>00497 
+<a name="l00498"></a>00498 } <span class="comment">// namespace </span>
+<a name="l00499"></a>00499 
+<a name="l00500"></a>00500 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_parallel_do_H */</span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00235.html b/doc/html/a00235.html
deleted file mode 100644
index c4fbd7e..0000000
--- a/doc/html/a00235.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::partition_type_base Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::partition_type_base Class Reference</h1>Provides default methods for partition objects without affinity.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00341.html">partitioner.h</a>></code>
-<p>
-Inherited by tbb::auto_partitioner::partition_type, and tbb::simple_partitioner::partition_type.
-<p>
-Inheritance diagram for tbb::internal::partition_type_base:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00089.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::internal::partition_type_base::set_affinity"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_affinity</b> (<a class="el" href="a00261.html">task</a> &)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::internal::partition_type_base::note_affinity"></a>
-void </td><td class="memItemRight" valign="bottom"><b>note_affinity</b> (<a class="el" href="a00261.html#w1">task::affinity_id</a>)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::internal::partition_type_base::continue_after_execute_range"></a>
-<a class="el" href="a00261.html">task</a> * </td><td class="memItemRight" valign="bottom"><b>continue_after_execute_range</b> (<a class="el" href="a00261.html">task</a> &)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::internal::partition_type_base::decide_whether_to_delay"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>decide_whether_to_delay</b> ()</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::internal::partition_type_base::spawn_or_delay"></a>
-void </td><td class="memItemRight" valign="bottom"><b>spawn_or_delay</b> (bool, <a class="el" href="a00261.html">task</a> &a, <a class="el" href="a00261.html">task</a> &b)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Provides default methods for partition objects without affinity. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00341.html">partitioner.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00236.html b/doc/html/a00236.html
deleted file mode 100644
index 2954bf4..0000000
--- a/doc/html/a00236.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::pipeline Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::pipeline Class Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>A processing pipeling that applies filters to items.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00342.html">pipeline.h</a>></code>
-<p>
-<a href="a00097.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::pipeline::pipeline"></a>
-__TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#a0">pipeline</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct empty pipeline. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#a1">~pipeline</a> ()</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::pipeline::add_filter"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#a2">add_filter</a> (<a class="el" href="a00216.html">filter</a> &filter_)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Add filter to end of pipeline. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::pipeline::run"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#a3">run</a> (size_t max_number_of_live_tokens)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Run the pipeline to completion. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::pipeline::run"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#a4">run</a> (size_t max_number_of_live_tokens, <a class="el" href="a00262.html">tbb::task_group_context</a> &context)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Run the pipeline to completion with user-supplied context. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::pipeline::clear"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#a5">clear</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Remove all filters from the pipeline. <br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::pipeline::internal::stage_task"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::stage_task</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n1" doxytag="tbb::pipeline::filter"></a>
-class </td><td class="memItemRight" valign="bottom"><b>filter</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-A processing pipeling that applies filters to items. 
-<p>
-<hr><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" name="a1" doxytag="tbb::pipeline::~pipeline"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">virtual __TBB_EXPORTED_METHOD tbb::pipeline::~<a class="el" href="a00236.html">pipeline</a>           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [virtual]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Though the current implementation declares the destructor virtual, do not rely on this detail. The virtualness is deprecated and may disappear in future versions of TBB.     </td>
-  </tr>
-</table>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00342.html">pipeline.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00237.html b/doc/html/a00237.html
deleted file mode 100644
index e0935f1..0000000
--- a/doc/html/a00237.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::pre_scan_tag Struct Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::pre_scan_tag Struct Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>Used to indicate that the initial scan is being performed.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00338.html">parallel_scan.h</a>></code>
-<p>
-<a href="a00075.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e0" doxytag="tbb::pre_scan_tag::is_final_scan"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>is_final_scan</b> ()</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Used to indicate that the initial scan is being performed. 
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="a00338.html">parallel_scan.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00238.html b/doc/html/a00238.html
deleted file mode 100644
index bb412b7..0000000
--- a/doc/html/a00238.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::queuing_mutex Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::queuing_mutex Class Reference</h1>Queuing lock with local-only spinning.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00343.html">queuing_mutex.h</a>></code>
-<p>
-<a href="a00098.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::queuing_mutex::queuing_mutex"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00238.html#a0">queuing_mutex</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct unacquired mutex. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::queuing_mutex::internal_construct"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>internal_construct</b> ()</td></tr>
-
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s0" doxytag="tbb::queuing_mutex::is_rw_mutex"></a>
-const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = false</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s1" doxytag="tbb::queuing_mutex::is_recursive_mutex"></a>
-const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = false</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s2" doxytag="tbb::queuing_mutex::is_fair_mutex"></a>
-const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = true</td></tr>
-
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::queuing_mutex::scoped_lock"></a>
-class </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Queuing lock with local-only spinning. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00343.html">queuing_mutex.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00239.html b/doc/html/a00239.html
deleted file mode 100644
index 565207c..0000000
--- a/doc/html/a00239.html
+++ /dev/null
@@ -1,116 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::queuing_mutex::scoped_lock Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::queuing_mutex::scoped_lock Class Reference</h1>The scoped locking pattern.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00343.html">queuing_mutex.h</a>></code>
-<p>
-Inherits <a class="el" href="a00230.html">tbb::internal::no_copy</a>.
-<p>
-Inheritance diagram for tbb::queuing_mutex::scoped_lock:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00099.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00239.html#a0">scoped_lock</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct lock that has not acquired a mutex.  <a href="#a0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00239.html#a1">scoped_lock</a> (<a class="el" href="a00238.html">queuing_mutex</a> &m)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex.  <a href="#a1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::queuing_mutex::scoped_lock::~scoped_lock"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00239.html#a2">~scoped_lock</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Release lock (if lock is held). <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::queuing_mutex::scoped_lock::acquire"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00239.html#a3">acquire</a> (<a class="el" href="a00238.html">queuing_mutex</a> &m)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::queuing_mutex::scoped_lock::try_acquire"></a>
-bool __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00239.html#a4">try_acquire</a> (<a class="el" href="a00238.html">queuing_mutex</a> &m)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex if free (i.e. non-blocking). <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::queuing_mutex::scoped_lock::release"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00239.html#a5">release</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-The scoped locking pattern. 
-<p>
-It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks. 
-<p>
-<hr><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" name="a0" doxytag="tbb::queuing_mutex::scoped_lock::scoped_lock"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">tbb::queuing_mutex::scoped_lock::scoped_lock           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Construct lock that has not acquired a mutex. 
-<p>
-Equivalent to zero-initialization of *this.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a1" doxytag="tbb::queuing_mutex::scoped_lock::scoped_lock"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">tbb::queuing_mutex::scoped_lock::scoped_lock           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top"><a class="el" href="a00238.html">queuing_mutex</a> & </td>
-          <td class="mdname1" valign="top" nowrap> <em>m</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Acquire lock on given mutex. 
-<p>
-Upon entry, *this should not be in the "have acquired a mutex" state.     </td>
-  </tr>
-</table>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00343.html">queuing_mutex.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00240.html b/doc/html/a00240.html
deleted file mode 100644
index fd8d445..0000000
--- a/doc/html/a00240.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::queuing_rw_mutex Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::queuing_rw_mutex Class Reference</h1>Reader-writer lock with local-only spinning.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00344.html">queuing_rw_mutex.h</a>></code>
-<p>
-<a href="a00100.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::queuing_rw_mutex::queuing_rw_mutex"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a0">queuing_rw_mutex</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct unacquired mutex. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::queuing_rw_mutex::~queuing_rw_mutex"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a1">~queuing_rw_mutex</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Destructor asserts if the mutex is acquired, i.e. q_tail is non-NULL. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::queuing_rw_mutex::internal_construct"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>internal_construct</b> ()</td></tr>
-
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s0" doxytag="tbb::queuing_rw_mutex::is_rw_mutex"></a>
-const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = true</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s1" doxytag="tbb::queuing_rw_mutex::is_recursive_mutex"></a>
-const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = false</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s2" doxytag="tbb::queuing_rw_mutex::is_fair_mutex"></a>
-const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = true</td></tr>
-
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::queuing_rw_mutex::scoped_lock"></a>
-class </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Reader-writer lock with local-only spinning. 
-<p>
-Adapted from Krieger, Stumm, et al. pseudocode at <a href="http://www.eecg.toronto.edu/parallel/pubs_abs.html#Krieger_etal_ICPP93">http://www.eecg.toronto.edu/parallel/pubs_abs.html#Krieger_etal_ICPP93</a> 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00344.html">queuing_rw_mutex.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00241.html b/doc/html/a00241.html
deleted file mode 100644
index fdb2b3d..0000000
--- a/doc/html/a00241.html
+++ /dev/null
@@ -1,162 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::queuing_rw_mutex::scoped_lock Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::queuing_rw_mutex::scoped_lock Class Reference</h1>The scoped locking pattern.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00344.html">queuing_rw_mutex.h</a>></code>
-<p>
-Inherits <a class="el" href="a00230.html">tbb::internal::no_copy</a>.
-<p>
-Inheritance diagram for tbb::queuing_rw_mutex::scoped_lock:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00101.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00241.html#a0">scoped_lock</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct lock that has not acquired a mutex.  <a href="#a0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00241.html#a1">scoped_lock</a> (<a class="el" href="a00240.html">queuing_rw_mutex</a> &m, bool write=true)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex.  <a href="#a1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::queuing_rw_mutex::scoped_lock::~scoped_lock"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00241.html#a2">~scoped_lock</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Release lock (if lock is held). <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::queuing_rw_mutex::scoped_lock::acquire"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00241.html#a3">acquire</a> (<a class="el" href="a00240.html">queuing_rw_mutex</a> &m, bool write=true)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::queuing_rw_mutex::scoped_lock::try_acquire"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00241.html#a4">try_acquire</a> (<a class="el" href="a00240.html">queuing_rw_mutex</a> &m, bool write=true)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Try acquire lock on given mutex. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::queuing_rw_mutex::scoped_lock::release"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00241.html#a5">release</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00241.html#a6">upgrade_to_writer</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Upgrade reader to become a writer.  <a href="#a6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a7" doxytag="tbb::queuing_rw_mutex::scoped_lock::downgrade_to_reader"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00241.html#a7">downgrade_to_reader</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Downgrade writer to become a reader. <br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-The scoped locking pattern. 
-<p>
-It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks. 
-<p>
-<hr><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" name="a0" doxytag="tbb::queuing_rw_mutex::scoped_lock::scoped_lock"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">tbb::queuing_rw_mutex::scoped_lock::scoped_lock           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Construct lock that has not acquired a mutex. 
-<p>
-Equivalent to zero-initialization of *this.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a1" doxytag="tbb::queuing_rw_mutex::scoped_lock::scoped_lock"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">tbb::queuing_rw_mutex::scoped_lock::scoped_lock           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top"><a class="el" href="a00240.html">queuing_rw_mutex</a> & </td>
-          <td class="mdname" nowrap> <em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>bool </td>
-          <td class="mdname" nowrap> <em>write</em> = <code>true</code></td>
-        </tr>
-        <tr>
-          <td class="md"></td>
-          <td class="md">) </td>
-          <td class="md" colspan="2"><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Acquire lock on given mutex. 
-<p>
-Upon entry, *this should not be in the "have acquired a mutex" state.     </td>
-  </tr>
-</table>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="a6" doxytag="tbb::queuing_rw_mutex::scoped_lock::upgrade_to_writer"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">bool tbb::queuing_rw_mutex::scoped_lock::upgrade_to_writer           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Upgrade reader to become a writer. 
-<p>
-Returns true if the upgrade happened without re-acquiring the lock and false if opposite     </td>
-  </tr>
-</table>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00344.html">queuing_rw_mutex.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00242.html b/doc/html/a00242.html
deleted file mode 100644
index f18731b..0000000
--- a/doc/html/a00242.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::quick_sort_body< RandomAccessIterator, Compare > Struct Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::quick_sort_body< RandomAccessIterator, Compare > Struct Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>Body class used to sort elements in a range that is smaller than the grainsize.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00339.html">parallel_sort.h</a>></code>
-<p>
-<a href="a00083.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::internal::quick_sort_body::operator()"></a>
-void </td><td class="memItemRight" valign="bottom"><b>operator()</b> (const <a class="el" href="a00244.html">quick_sort_range</a>< RandomAccessIterator, Compare > &range) const </td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename RandomAccessIterator, typename Compare><br>
- struct tbb::internal::quick_sort_body< RandomAccessIterator, Compare ></h3>
-
-Body class used to sort elements in a range that is smaller than the grainsize. 
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="a00339.html">parallel_sort.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00243.html b/doc/html/a00243.html
index 6e9150b..6050c22 100644
--- a/doc/html/a00243.html
+++ b/doc/html/a00243.html
@@ -1,39 +1,169 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::quick_sort_pretest_body< RandomAccessIterator, Compare > Class Template Reference</title>
+<title>parallel_for.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::quick_sort_pretest_body< RandomAccessIterator, Compare > Class Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>Body class used to test if elements in a range are presorted.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00339.html">parallel_sort.h</a>></code>
-<p>
-Inherits <a class="el" href="a00229.html">tbb::internal::no_assign</a>.
-<p>
-Inheritance diagram for tbb::internal::quick_sort_pretest_body< RandomAccessIterator, Compare >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00082.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::internal::quick_sort_pretest_body::quick_sort_pretest_body"></a>
- </td><td class="memItemRight" valign="bottom"><b>quick_sort_pretest_body</b> (const Compare &_comp)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::internal::quick_sort_pretest_body::operator()"></a>
-void </td><td class="memItemRight" valign="bottom"><b>operator()</b> (const <a class="el" href="a00195.html">blocked_range</a>< RandomAccessIterator > &range) const </td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename RandomAccessIterator, typename Compare><br>
- class tbb::internal::quick_sort_pretest_body< RandomAccessIterator, Compare ></h3>
-
-Body class used to test if elements in a range are presorted. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00339.html">parallel_sort.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>parallel_for.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_parallel_for_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_parallel_for_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "task.h"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "partitioner.h"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include <new></span>
+<a name="l00027"></a>00027 
+<a name="l00028"></a>00028 <span class="keyword">namespace </span>tbb {
+<a name="l00029"></a>00029 
+<a name="l00031"></a>00031 <span class="keyword">namespace </span>internal {
+<a name="l00032"></a>00032 
+<a name="l00034"></a>00034 
+<a name="l00035"></a>00035     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner>
+<a name="l00036"></a>00036     <span class="keyword">class </span>start_for: <span class="keyword">public</span> task {
+<a name="l00037"></a>00037         Range my_range;
+<a name="l00038"></a>00038         <span class="keyword">const</span> Body my_body;
+<a name="l00039"></a>00039         <span class="keyword">typename</span> Partitioner::partition_type my_partition;
+<a name="l00040"></a>00040         <span class="comment">/*override*/</span> task* execute();
+<a name="l00041"></a>00041 
+<a name="l00043"></a>00043         start_for( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Body& body, Partitioner& partitioner ) :
+<a name="l00044"></a>00044             my_range(range),    
+<a name="l00045"></a>00045             my_body(body),
+<a name="l00046"></a>00046             my_partition(partitioner)
+<a name="l00047"></a>00047         {
+<a name="l00048"></a>00048         }
+<a name="l00050"></a>00050 
+<a name="l00051"></a>00051         start_for( start_for& parent, split ) :
+<a name="l00052"></a>00052             my_range(parent.my_range,split()),    
+<a name="l00053"></a>00053             my_body(parent.my_body),
+<a name="l00054"></a>00054             my_partition(parent.my_partition,split())
+<a name="l00055"></a>00055         {
+<a name="l00056"></a>00056             my_partition.set_affinity(*<span class="keyword">this</span>);
+<a name="l00057"></a>00057         }
+<a name="l00059"></a>00059         <span class="comment">/*override*/</span> <span class="keywordtype">void</span> note_affinity( affinity_id <span class="keywordtype">id</span> ) {
+<a name="l00060"></a>00060             my_partition.note_affinity( <span class="keywordtype">id</span> );
+<a name="l00061"></a>00061         }
+<a name="l00062"></a>00062     <span class="keyword">public</span>:
+<a name="l00063"></a>00063         <span class="keyword">static</span> <span class="keywordtype">void</span> run(  <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Body& body, <span class="keyword">const</span> Partitioner& partitioner ) {
+<a name="l00064"></a>00064             <span class="keywordflow">if</span>( !range.empty() ) {
+<a name="l00065"></a>00065 #<span class="keywordflow">if</span> !__TBB_EXCEPTIONS || TBB_JOIN_OUTER_TASK_GROUP
+<a name="l00066"></a>00066                 start_for& a = *<span class="keyword">new</span>(<a class="code" href="a00132.html#23acb0da0afd690da797f9f882027d34">task::allocate_root</a>()) start_for(range,body,const_cast<Partitioner&>(partitioner));
+<a name="l00067"></a>00067 <span class="preprocessor">#else</span>
+<a name="l00068"></a>00068 <span class="preprocessor"></span>                <span class="comment">// Bound context prevents exceptions from body to affect nesting or sibling algorithms,</span>
+<a name="l00069"></a>00069                 <span class="comment">// and allows users to handle exceptions safely by wrapping parallel_for in the try-block.</span>
+<a name="l00070"></a>00070                 task_group_context context;
+<a name="l00071"></a>00071                 start_for& a = *<span class="keyword">new</span>(task::allocate_root(context)) start_for(range,body,const_cast<Partitioner&>(partitioner));
+<a name="l00072"></a>00072 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS && !TBB_JOIN_OUTER_TASK_GROUP */</span>
+<a name="l00073"></a>00073                 <a class="code" href="a00132.html#ce8ce689c26a4ddf343829bc3c73290a">task::spawn_root_and_wait</a>(a);
+<a name="l00074"></a>00074             }
+<a name="l00075"></a>00075         }
+<a name="l00076"></a>00076 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00077"></a>00077 <span class="preprocessor"></span>        <span class="keyword">static</span> <span class="keywordtype">void</span> run(  <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Body& body, <span class="keyword">const</span> Partitioner& partitioner, task_group_context& context ) {
+<a name="l00078"></a>00078             <span class="keywordflow">if</span>( !range.empty() ) {
+<a name="l00079"></a>00079                 start_for& a = *<span class="keyword">new</span>(task::allocate_root(context)) start_for(range,body,const_cast<Partitioner&>(partitioner));
+<a name="l00080"></a>00080                 <a class="code" href="a00132.html#ce8ce689c26a4ddf343829bc3c73290a">task::spawn_root_and_wait</a>(a);
+<a name="l00081"></a>00081             }
+<a name="l00082"></a>00082         }
+<a name="l00083"></a>00083 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
+<a name="l00084"></a>00084     };
+<a name="l00085"></a>00085 
+<a name="l00086"></a>00086     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner>
+<a name="l00087"></a>00087     task* start_for<Range,Body,Partitioner>::execute() {
+<a name="l00088"></a>00088         <span class="keywordflow">if</span>( !my_range.is_divisible() || my_partition.should_execute_range(*<span class="keyword">this</span>) ) {
+<a name="l00089"></a>00089             my_body( my_range );
+<a name="l00090"></a>00090             <span class="keywordflow">return</span> my_partition.continue_after_execute_range(*<span class="keyword">this</span>); 
+<a name="l00091"></a>00091         } <span class="keywordflow">else</span> {
+<a name="l00092"></a>00092             empty_task& c = *<span class="keyword">new</span>( this->allocate_continuation() ) empty_task;
+<a name="l00093"></a>00093             recycle_as_child_of(c);
+<a name="l00094"></a>00094             c.set_ref_count(2);
+<a name="l00095"></a>00095             <span class="keywordtype">bool</span> delay = my_partition.decide_whether_to_delay();
+<a name="l00096"></a>00096             start_for& b = *<span class="keyword">new</span>( c.allocate_child() ) start_for(*<span class="keyword">this</span>,split());
+<a name="l00097"></a>00097             my_partition.spawn_or_delay(delay,*<span class="keyword">this</span>,b);
+<a name="l00098"></a>00098             <span class="keywordflow">return</span> <span class="keyword">this</span>;
+<a name="l00099"></a>00099         }
+<a name="l00100"></a>00100     } 
+<a name="l00101"></a>00101 } <span class="comment">// namespace internal</span>
+<a name="l00103"></a>00103 <span class="comment"></span>
+<a name="l00104"></a>00104 
+<a name="l00105"></a>00105 <span class="comment">// Requirements on Range concept are documented in blocked_range.h</span>
+<a name="l00106"></a>00106 
+<a name="l00117"></a>00117 
+<a name="l00119"></a>00119 
+<a name="l00120"></a>00120 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
+<a name="l00121"></a><a class="code" href="a00183.html#g2e90dde1b5dfe6cb03e64c7d7cd0d778">00121</a> <span class="keywordtype">void</span> <a class="code" href="a00183.html#g2e90dde1b5dfe6cb03e64c7d7cd0d778">parallel_for</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Body& body, <span class="keyword">const</span> <a class="code" href="a00126.html">simple_partitioner</a>& partitioner=<a class="code" href="a00126.html">simple_partitioner [...]
+<a name="l00122"></a>00122     internal::start_for<Range,Body,simple_partitioner>::run(range,body,partitioner);
+<a name="l00123"></a>00123 }
+<a name="l00124"></a>00124 
+<a name="l00126"></a>00126 
+<a name="l00127"></a>00127 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
+<a name="l00128"></a><a class="code" href="a00183.html#ga7ac75d532389b55b9247f3fdb0b00d1">00128</a> <span class="keywordtype">void</span> <a class="code" href="a00183.html#g2e90dde1b5dfe6cb03e64c7d7cd0d778">parallel_for</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Body& body, <span class="keyword">const</span> <a class="code" href="a00095.html">auto_partitioner</a>& partitioner ) {
+<a name="l00129"></a>00129     internal::start_for<Range,Body,auto_partitioner>::run(range,body,partitioner);
+<a name="l00130"></a>00130 }
+<a name="l00131"></a>00131 
+<a name="l00133"></a>00133 
+<a name="l00134"></a>00134 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
+<a name="l00135"></a><a class="code" href="a00183.html#g9cd1b210ceb1c040f30e390b4a21bde8">00135</a> <span class="keywordtype">void</span> <a class="code" href="a00183.html#g2e90dde1b5dfe6cb03e64c7d7cd0d778">parallel_for</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Body& body, <a class="code" href="a00091.html">affinity_partitioner</a>& partitioner ) {
+<a name="l00136"></a>00136     internal::start_for<Range,Body,affinity_partitioner>::run(range,body,partitioner);
+<a name="l00137"></a>00137 }
+<a name="l00138"></a>00138 
+<a name="l00139"></a>00139 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00141"></a>00141 <span class="preprocessor"></span>
+<a name="l00142"></a>00142 <span class="preprocessor">template<typename Range, typename Body></span>
+<a name="l00143"></a><a class="code" href="a00183.html#g2d317a5e0078cd193125439fed60dfdc">00143</a> <span class="preprocessor"></span><span class="keywordtype">void</span> <a class="code" href="a00183.html#g2e90dde1b5dfe6cb03e64c7d7cd0d778">parallel_for</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Body& body, <span class="keyword">const</span> <a class="code" href="a00126.html">simple_partitioner</a>& partitioner, <a class="code" hr [...]
+<a name="l00144"></a>00144     internal::start_for<Range,Body,simple_partitioner>::run(range, body, partitioner, context);
+<a name="l00145"></a>00145 }
+<a name="l00146"></a>00146 
+<a name="l00148"></a>00148 
+<a name="l00149"></a>00149 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
+<a name="l00150"></a><a class="code" href="a00183.html#g1c0700e3f85e83a788ff3ede88ebb7e9">00150</a> <span class="keywordtype">void</span> <a class="code" href="a00183.html#g2e90dde1b5dfe6cb03e64c7d7cd0d778">parallel_for</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Body& body, <span class="keyword">const</span> <a class="code" href="a00095.html">auto_partitioner</a>& partitioner, <a class="code" href="a00133.html">task_group_context< [...]
+<a name="l00151"></a>00151     internal::start_for<Range,Body,auto_partitioner>::run(range, body, partitioner, context);
+<a name="l00152"></a>00152 }
+<a name="l00153"></a>00153 
+<a name="l00155"></a>00155 
+<a name="l00156"></a>00156 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
+<a name="l00157"></a><a class="code" href="a00183.html#g04b4696b67370c01353ff5974c8f1196">00157</a> <span class="keywordtype">void</span> <a class="code" href="a00183.html#g2e90dde1b5dfe6cb03e64c7d7cd0d778">parallel_for</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Body& body, <a class="code" href="a00091.html">affinity_partitioner</a>& partitioner, <a class="code" href="a00133.html">task_group_context</a>& context ) {
+<a name="l00158"></a>00158     internal::start_for<Range,Body,affinity_partitioner>::run(range,body,partitioner, context);
+<a name="l00159"></a>00159 }
+<a name="l00160"></a>00160 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
+<a name="l00161"></a>00161 
+<a name="l00162"></a>00162 
+<a name="l00163"></a>00163 } <span class="comment">// namespace tbb</span>
+<a name="l00164"></a>00164 
+<a name="l00165"></a>00165 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_parallel_for_H */</span>
+<a name="l00166"></a>00166 
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00244.html b/doc/html/a00244.html
deleted file mode 100644
index 421e21c..0000000
--- a/doc/html/a00244.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::quick_sort_range< RandomAccessIterator, Compare > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::quick_sort_range< RandomAccessIterator, Compare > Class Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>Range used in quicksort to split elements into subranges based on a value.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00339.html">parallel_sort.h</a>></code>
-<p>
-Inherits <a class="el" href="a00229.html">tbb::internal::no_assign</a>.
-<p>
-Inheritance diagram for tbb::internal::quick_sort_range< RandomAccessIterator, Compare >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00081.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::internal::quick_sort_range::quick_sort_range"></a>
- </td><td class="memItemRight" valign="bottom"><b>quick_sort_range</b> (RandomAccessIterator begin_, size_t size_, const Compare &comp_)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::internal::quick_sort_range::empty"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>empty</b> () const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::internal::quick_sort_range::is_divisible"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>is_divisible</b> () const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::internal::quick_sort_range::quick_sort_range"></a>
- </td><td class="memItemRight" valign="bottom"><b>quick_sort_range</b> (<a class="el" href="a00244.html">quick_sort_range</a> &range, <a class="el" href="a00254.html">split</a>)</td></tr>
-
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="o0" doxytag="tbb::internal::quick_sort_range::comp"></a>
-const Compare & </td><td class="memItemRight" valign="bottom"><b>comp</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="o1" doxytag="tbb::internal::quick_sort_range::begin"></a>
-RandomAccessIterator </td><td class="memItemRight" valign="bottom"><b>begin</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="o2" doxytag="tbb::internal::quick_sort_range::size"></a>
-size_t </td><td class="memItemRight" valign="bottom"><b>size</b></td></tr>
-
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s0" doxytag="tbb::internal::quick_sort_range::grainsize"></a>
-const size_t </td><td class="memItemRight" valign="bottom"><b>grainsize</b> = 500</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename RandomAccessIterator, typename Compare><br>
- class tbb::internal::quick_sort_range< RandomAccessIterator, Compare ></h3>
-
-Range used in quicksort to split elements into subranges based on a value. 
-<p>
-The split operation selects a splitter and places all elements less than or equal to the value in the first range and the remaining elements in the second range. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00339.html">parallel_sort.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00245.html b/doc/html/a00245.html
index 19087a4..75bc3f2 100644
--- a/doc/html/a00245.html
+++ b/doc/html/a00245.html
@@ -1,45 +1,431 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::recursive_mutex Class Reference</title>
+<title>parallel_reduce.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::recursive_mutex Class Reference</h1>Mutex that allows recursive mutex acquisition.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00345.html">recursive_mutex.h</a>></code>
-<p>
-<a href="a00102.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::recursive_mutex::recursive_mutex"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00245.html#a0">recursive_mutex</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct unacquired <a class="el" href="a00245.html">recursive_mutex</a>. <br></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s0" doxytag="tbb::recursive_mutex::is_rw_mutex"></a>
-const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = false</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s1" doxytag="tbb::recursive_mutex::is_recursive_mutex"></a>
-const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = true</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s2" doxytag="tbb::recursive_mutex::is_fair_mutex"></a>
-const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = false</td></tr>
-
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::recursive_mutex::scoped_lock"></a>
-class </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Mutex that allows recursive mutex acquisition. 
-<p>
-Mutex that allows recursive mutex acquisition. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00345.html">recursive_mutex.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>parallel_reduce.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_parallel_reduce_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_parallel_reduce_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "task.h"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "aligned_space.h"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include "partitioner.h"</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include <new></span>
+<a name="l00028"></a>00028 
+<a name="l00029"></a>00029 <span class="keyword">namespace </span>tbb {
+<a name="l00030"></a>00030 
+<a name="l00032"></a>00032 <span class="keyword">namespace </span>internal {
+<a name="l00033"></a>00033 
+<a name="l00035"></a>00035     <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC itt_store_pointer_with_release_v3( <span class="keywordtype">void</span>* dst, <span class="keywordtype">void</span>* src );
+<a name="l00036"></a>00036 
+<a name="l00038"></a>00038     <span class="keywordtype">void</span>* __TBB_EXPORTED_FUNC itt_load_pointer_with_acquire_v3( <span class="keyword">const</span> <span class="keywordtype">void</span>* src );
+<a name="l00039"></a>00039 
+<a name="l00040"></a>00040     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">inline</span> <span class="keywordtype">void</span> parallel_reduce_store_body( T*& dst, T* src ) {
+<a name="l00041"></a>00041 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS</span>
+<a name="l00042"></a>00042 <span class="preprocessor"></span>        itt_store_pointer_with_release_v3(&dst,src);
+<a name="l00043"></a>00043 <span class="preprocessor">#else</span>
+<a name="l00044"></a>00044 <span class="preprocessor"></span>        __TBB_store_with_release(dst,src);
+<a name="l00045"></a>00045 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS */</span>
+<a name="l00046"></a>00046     }
+<a name="l00047"></a>00047 
+<a name="l00048"></a>00048     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">inline</span> T* parallel_reduce_load_body( T*& src ) {
+<a name="l00049"></a>00049 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS</span>
+<a name="l00050"></a>00050 <span class="preprocessor"></span>        <span class="keywordflow">return</span> static_cast<T*>(itt_load_pointer_with_acquire_v3(&src));
+<a name="l00051"></a>00051 <span class="preprocessor">#else</span>
+<a name="l00052"></a>00052 <span class="preprocessor"></span>        <span class="keywordflow">return</span> __TBB_load_with_acquire(src);
+<a name="l00053"></a>00053 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS */</span>
+<a name="l00054"></a>00054     }
+<a name="l00055"></a>00055 
+<a name="l00057"></a>00057 
+<a name="l00058"></a>00058     <span class="keyword">template</span><<span class="keyword">typename</span> Body>
+<a name="l00059"></a>00059     <span class="keyword">class </span>finish_reduce: <span class="keyword">public</span> task {
+<a name="l00060"></a>00060         Body* <span class="keyword">const</span> my_body;
+<a name="l00061"></a>00061         <span class="keywordtype">bool</span> has_right_zombie;
+<a name="l00062"></a>00062         aligned_space<Body,1> zombie_space;
+<a name="l00063"></a>00063         finish_reduce( Body* body ) : 
+<a name="l00064"></a>00064             my_body(body),
+<a name="l00065"></a>00065             has_right_zombie(false)
+<a name="l00066"></a>00066         {
+<a name="l00067"></a>00067         }
+<a name="l00068"></a>00068         task* execute() {
+<a name="l00069"></a>00069             <span class="keywordflow">if</span>( has_right_zombie ) {
+<a name="l00070"></a>00070                 <span class="comment">// Right child was stolen.</span>
+<a name="l00071"></a>00071                 Body* s = zombie_space.begin();
+<a name="l00072"></a>00072                 my_body->join( *s );
+<a name="l00073"></a>00073                 s->~Body();
+<a name="l00074"></a>00074             }
+<a name="l00075"></a>00075             <span class="keywordflow">return</span> NULL;
+<a name="l00076"></a>00076         }       
+<a name="l00077"></a>00077         <span class="keyword">template</span><<span class="keyword">typename</span> Range,<span class="keyword">typename</span> Body_, <span class="keyword">typename</span> Partitioner>
+<a name="l00078"></a>00078         <span class="keyword">friend</span> <span class="keyword">class </span>start_reduce;
+<a name="l00079"></a>00079     };
+<a name="l00080"></a>00080 
+<a name="l00082"></a>00082 
+<a name="l00083"></a>00083     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner>
+<a name="l00084"></a>00084     <span class="keyword">class </span>start_reduce: <span class="keyword">public</span> task {
+<a name="l00085"></a>00085         <span class="keyword">typedef</span> finish_reduce<Body> finish_type;
+<a name="l00086"></a>00086         Body* my_body;
+<a name="l00087"></a>00087         Range my_range;
+<a name="l00088"></a>00088         <span class="keyword">typename</span> Partitioner::partition_type my_partition;
+<a name="l00089"></a>00089         <span class="comment">/*override*/</span> task* execute();
+<a name="l00090"></a>00090         <span class="keyword">template</span><<span class="keyword">typename</span> Body_>
+<a name="l00091"></a>00091         <span class="keyword">friend</span> <span class="keyword">class </span>finish_reduce;
+<a name="l00092"></a>00092     
+<a name="l00094"></a>00094         start_reduce( <span class="keyword">const</span> Range& range, Body* body, <span class="keyword">const</span> Partitioner &partitioner ) :
+<a name="l00095"></a>00095             my_body(body),
+<a name="l00096"></a>00096             my_range(range),
+<a name="l00097"></a>00097             my_partition(partitioner)
+<a name="l00098"></a>00098         {
+<a name="l00099"></a>00099         }
+<a name="l00101"></a>00101 
+<a name="l00102"></a>00102         start_reduce( start_reduce& parent, split ) :
+<a name="l00103"></a>00103             my_body(parent.my_body),
+<a name="l00104"></a>00104             my_range(parent.my_range,split()),
+<a name="l00105"></a>00105             my_partition(parent.my_partition,split())
+<a name="l00106"></a>00106         {
+<a name="l00107"></a>00107         }
+<a name="l00109"></a>00109 
+<a name="l00110"></a>00110         <span class="comment">/*override*/</span> <span class="keywordtype">void</span> note_affinity( affinity_id <span class="comment">/*id*/</span> ) {
+<a name="l00111"></a>00111             finish_type* p = static_cast<finish_type*>(parent() );
+<a name="l00112"></a>00112             Body* body = <span class="keyword">new</span>( p->zombie_space.begin() ) Body(*my_body,split());
+<a name="l00113"></a>00113             p->has_right_zombie = <span class="keyword">true</span>;
+<a name="l00114"></a>00114             my_body = body;
+<a name="l00115"></a>00115         }
+<a name="l00116"></a>00116     <span class="keyword">public</span>:
+<a name="l00117"></a>00117 <span class="preprocessor">#if !__TBB_EXCEPTIONS</span>
+<a name="l00118"></a>00118 <span class="preprocessor"></span>        <span class="keyword">static</span> <span class="keywordtype">void</span> run( <span class="keyword">const</span> Range& range, Body& body, <span class="keyword">const</span> Partitioner &partitioner ) {
+<a name="l00119"></a>00119             <span class="keywordflow">if</span>( !range.empty() ) 
+<a name="l00120"></a>00120                 <a class="code" href="a00132.html#ce8ce689c26a4ddf343829bc3c73290a">task::spawn_root_and_wait</a>( *<span class="keyword">new</span>(<a class="code" href="a00132.html#23acb0da0afd690da797f9f882027d34">task::allocate_root</a>()) start_reduce(range,&body,partitioner) );
+<a name="l00121"></a>00121         }
+<a name="l00122"></a>00122 <span class="preprocessor">#else </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
+<a name="l00123"></a>00123         <span class="keyword">static</span> <span class="keywordtype">void</span> run( <span class="keyword">const</span> Range& range, Body& body, <span class="keyword">const</span> Partitioner &partitioner ) {
+<a name="l00124"></a>00124             <span class="comment">// Bound context prevents exceptions from body to affect nesting or sibling algorithms,</span>
+<a name="l00125"></a>00125             <span class="comment">// and allows users to handle exceptions safely by wrapping parallel_for in the try-block.</span>
+<a name="l00126"></a>00126             <span class="keywordflow">if</span>( !range.empty() )  {
+<a name="l00127"></a>00127                 task_group_context context;
+<a name="l00128"></a>00128                 <a class="code" href="a00132.html#ce8ce689c26a4ddf343829bc3c73290a">task::spawn_root_and_wait</a>( *<span class="keyword">new</span>(task::allocate_root(context)) start_reduce(range,&body,partitioner) );
+<a name="l00129"></a>00129             }
+<a name="l00130"></a>00130         }
+<a name="l00131"></a>00131         <span class="keyword">static</span> <span class="keywordtype">void</span> run( <span class="keyword">const</span> Range& range, Body& body, <span class="keyword">const</span> Partitioner &partitioner, task_group_context& context ) {
+<a name="l00132"></a>00132             <span class="keywordflow">if</span>( !range.empty() ) 
+<a name="l00133"></a>00133                 <a class="code" href="a00132.html#ce8ce689c26a4ddf343829bc3c73290a">task::spawn_root_and_wait</a>( *<span class="keyword">new</span>(task::allocate_root(context)) start_reduce(range,&body,partitioner) );
+<a name="l00134"></a>00134         }
+<a name="l00135"></a>00135 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
+<a name="l00136"></a>00136     };
+<a name="l00137"></a>00137 
+<a name="l00138"></a>00138     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner>
+<a name="l00139"></a>00139     task* start_reduce<Range,Body,Partitioner>::execute() {
+<a name="l00140"></a>00140         <span class="keywordflow">if</span>( !my_range.is_divisible() || my_partition.should_execute_range(*<span class="keyword">this</span>) ) {
+<a name="l00141"></a>00141             (*my_body)( my_range );
+<a name="l00142"></a>00142             <span class="keywordflow">return</span> NULL;
+<a name="l00143"></a>00143         } <span class="keywordflow">else</span> {
+<a name="l00144"></a>00144             finish_type& c = *<span class="keyword">new</span>( allocate_continuation()) finish_type(my_body);
+<a name="l00145"></a>00145             recycle_as_child_of(c);
+<a name="l00146"></a>00146             c.set_ref_count(2);    
+<a name="l00147"></a>00147             start_reduce& b = *<span class="keyword">new</span>( c.allocate_child() ) start_reduce(*<span class="keyword">this</span>,split());
+<a name="l00148"></a>00148             spawn(b);
+<a name="l00149"></a>00149             <span class="keywordflow">return</span> <span class="keyword">this</span>;
+<a name="l00150"></a>00150         }
+<a name="l00151"></a>00151     }
+<a name="l00152"></a>00152  
+<a name="l00154"></a>00154 
+<a name="l00155"></a>00155     <span class="keyword">typedef</span> <span class="keywordtype">char</span> reduction_context;
+<a name="l00156"></a>00156 
+<a name="l00158"></a>00158 
+<a name="l00159"></a>00159     <span class="keyword">template</span><<span class="keyword">typename</span> Body>
+<a name="l00160"></a>00160     <span class="keyword">class </span>finish_reduce_with_affinity: <span class="keyword">public</span> task {
+<a name="l00162"></a>00162         Body* my_body;
+<a name="l00163"></a>00163         <span class="keywordtype">bool</span> has_right_zombie;
+<a name="l00164"></a>00164         <span class="keyword">const</span> reduction_context my_context;
+<a name="l00165"></a>00165         aligned_space<Body,1> zombie_space;
+<a name="l00166"></a>00166         finish_reduce_with_affinity( <span class="keywordtype">char</span> context ) : 
+<a name="l00167"></a>00167             my_body(NULL),
+<a name="l00168"></a>00168             has_right_zombie(false),
+<a name="l00169"></a>00169             my_context(context)
+<a name="l00170"></a>00170         {
+<a name="l00171"></a>00171         }
+<a name="l00172"></a>00172         task* execute() {
+<a name="l00173"></a>00173             <span class="keywordflow">if</span>( has_right_zombie ) {
+<a name="l00174"></a>00174                 <span class="comment">// Right child was stolen.</span>
+<a name="l00175"></a>00175                 Body* s = zombie_space.begin();
+<a name="l00176"></a>00176                 my_body->join( *s );
+<a name="l00177"></a>00177                 s->~Body();
+<a name="l00178"></a>00178             }
+<a name="l00179"></a>00179             <span class="keywordflow">if</span>( my_context==1 ) 
+<a name="l00180"></a>00180                 parallel_reduce_store_body( static_cast<finish_reduce_with_affinity*>(parent())->my_body, my_body );
+<a name="l00181"></a>00181             <span class="keywordflow">return</span> NULL;
+<a name="l00182"></a>00182         }       
+<a name="l00183"></a>00183         <span class="keyword">template</span><<span class="keyword">typename</span> Range,<span class="keyword">typename</span> Body_>
+<a name="l00184"></a>00184         <span class="keyword">friend</span> <span class="keyword">class </span>start_reduce_with_affinity;
+<a name="l00185"></a>00185     };
+<a name="l00186"></a>00186 
+<a name="l00188"></a>00188 
+<a name="l00189"></a>00189     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
+<a name="l00190"></a>00190     <span class="keyword">class </span>start_reduce_with_affinity: <span class="keyword">public</span> task {
+<a name="l00191"></a>00191         <span class="keyword">typedef</span> finish_reduce_with_affinity<Body> finish_type;
+<a name="l00192"></a>00192         Body* my_body;
+<a name="l00193"></a>00193         Range my_range;
+<a name="l00194"></a>00194         <span class="keyword">typename</span> affinity_partitioner::partition_type my_partition;
+<a name="l00195"></a>00195         reduction_context my_context;
+<a name="l00196"></a>00196         <span class="comment">/*override*/</span> task* execute();
+<a name="l00197"></a>00197         <span class="keyword">template</span><<span class="keyword">typename</span> Body_>
+<a name="l00198"></a>00198         <span class="keyword">friend</span> <span class="keyword">class </span>finish_reduce_with_affinity;
+<a name="l00199"></a>00199     
+<a name="l00201"></a>00201         start_reduce_with_affinity( <span class="keyword">const</span> Range& range, Body* body, affinity_partitioner& partitioner ) :
+<a name="l00202"></a>00202             my_body(body),
+<a name="l00203"></a>00203             my_range(range),
+<a name="l00204"></a>00204             my_partition(partitioner),
+<a name="l00205"></a>00205             my_context(0)
+<a name="l00206"></a>00206         {
+<a name="l00207"></a>00207         }
+<a name="l00209"></a>00209 
+<a name="l00210"></a>00210         start_reduce_with_affinity( start_reduce_with_affinity& parent, split ) :
+<a name="l00211"></a>00211             my_body(parent.my_body),
+<a name="l00212"></a>00212             my_range(parent.my_range,split()),
+<a name="l00213"></a>00213             my_partition(parent.my_partition,split()),
+<a name="l00214"></a>00214             my_context(2)
+<a name="l00215"></a>00215         {
+<a name="l00216"></a>00216             my_partition.set_affinity(*<span class="keyword">this</span>);
+<a name="l00217"></a>00217             parent.my_context = 1;
+<a name="l00218"></a>00218         }
+<a name="l00220"></a>00220         <span class="comment">/*override*/</span> <span class="keywordtype">void</span> note_affinity( affinity_id <span class="keywordtype">id</span> ) {
+<a name="l00221"></a>00221             my_partition.note_affinity( <span class="keywordtype">id</span> );
+<a name="l00222"></a>00222         }
+<a name="l00223"></a>00223 
+<a name="l00224"></a>00224 <span class="keyword">public</span>:
+<a name="l00225"></a>00225         <span class="keyword">static</span> <span class="keywordtype">void</span> run( <span class="keyword">const</span> Range& range, Body& body, affinity_partitioner& partitioner ) {
+<a name="l00226"></a>00226             <span class="keywordflow">if</span>( !range.empty() ) {
+<a name="l00227"></a>00227 #<span class="keywordflow">if</span> !__TBB_EXCEPTIONS || TBB_JOIN_OUTER_TASK_GROUP
+<a name="l00228"></a>00228                 task::spawn_root_and_wait( *<span class="keyword">new</span>(task::allocate_root()) start_reduce_with_affinity(range,&body,partitioner) );
+<a name="l00229"></a>00229 <span class="preprocessor">#else</span>
+<a name="l00230"></a>00230 <span class="preprocessor"></span>                <span class="comment">// Bound context prevents exceptions from body to affect nesting or sibling algorithms,</span>
+<a name="l00231"></a>00231                 <span class="comment">// and allows users to handle exceptions safely by wrapping parallel_for in the try-block.</span>
+<a name="l00232"></a>00232                 task_group_context context;
+<a name="l00233"></a>00233                 task::spawn_root_and_wait( *<span class="keyword">new</span>(task::allocate_root(context)) start_reduce_with_affinity(range,&body,partitioner) );
+<a name="l00234"></a>00234 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS && !TBB_JOIN_OUTER_TASK_GROUP */</span>
+<a name="l00235"></a>00235             }
+<a name="l00236"></a>00236         }
+<a name="l00237"></a>00237 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00238"></a>00238 <span class="preprocessor"></span>        <span class="keyword">static</span> <span class="keywordtype">void</span> run( <span class="keyword">const</span> Range& range, Body& body, affinity_partitioner& partitioner, task_group_context& context ) {
+<a name="l00239"></a>00239             <span class="keywordflow">if</span>( !range.empty() ) 
+<a name="l00240"></a>00240                 task::spawn_root_and_wait( *<span class="keyword">new</span>(task::allocate_root(context)) start_reduce_with_affinity(range,&body,partitioner) );
+<a name="l00241"></a>00241         }
+<a name="l00242"></a>00242 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
+<a name="l00243"></a>00243     };
+<a name="l00244"></a>00244 
+<a name="l00245"></a>00245     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
+<a name="l00246"></a>00246     task* start_reduce_with_affinity<Range,Body>::execute() {
+<a name="l00247"></a>00247         <span class="keywordflow">if</span>( my_context==2 ) {
+<a name="l00248"></a>00248             finish_type* p = static_cast<finish_type*>(parent() );
+<a name="l00249"></a>00249             <span class="keywordflow">if</span>( !parallel_reduce_load_body(p->my_body) ) {
+<a name="l00250"></a>00250                 my_body = <span class="keyword">new</span>( p->zombie_space.begin() ) Body(*my_body,split());
+<a name="l00251"></a>00251                 p->has_right_zombie = <span class="keyword">true</span>;
+<a name="l00252"></a>00252             } 
+<a name="l00253"></a>00253         }
+<a name="l00254"></a>00254         <span class="keywordflow">if</span>( !my_range.is_divisible() || my_partition.should_execute_range(*<span class="keyword">this</span>) ) {
+<a name="l00255"></a>00255             (*my_body)( my_range );
+<a name="l00256"></a>00256             <span class="keywordflow">if</span>( my_context==1 ) 
+<a name="l00257"></a>00257                 parallel_reduce_store_body(static_cast<finish_type*>(parent())->my_body, my_body );
+<a name="l00258"></a>00258             <span class="keywordflow">return</span> my_partition.continue_after_execute_range(*<span class="keyword">this</span>);
+<a name="l00259"></a>00259         } <span class="keywordflow">else</span> {
+<a name="l00260"></a>00260             finish_type& c = *<span class="keyword">new</span>( allocate_continuation()) finish_type(my_context);
+<a name="l00261"></a>00261             recycle_as_child_of(c);
+<a name="l00262"></a>00262             c.set_ref_count(2);    
+<a name="l00263"></a>00263             <span class="keywordtype">bool</span> delay = my_partition.decide_whether_to_delay();
+<a name="l00264"></a>00264             start_reduce_with_affinity& b = *<span class="keyword">new</span>( c.allocate_child() ) start_reduce_with_affinity(*<span class="keyword">this</span>,split());
+<a name="l00265"></a>00265             my_partition.spawn_or_delay(delay,*<span class="keyword">this</span>,b);
+<a name="l00266"></a>00266             <span class="keywordflow">return</span> <span class="keyword">this</span>;
+<a name="l00267"></a>00267         }
+<a name="l00268"></a>00268     } 
+<a name="l00269"></a>00269 
+<a name="l00271"></a>00271 
+<a name="l00275"></a>00275     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Value, <span class="keyword">typename</span> RealBody, <span class="keyword">typename</span> Reduction>
+<a name="l00276"></a>00276     <span class="keyword">class </span>lambda_reduce_body {
+<a name="l00277"></a>00277 
+<a name="l00278"></a>00278 <span class="comment">//FIXME: decide if my_real_body, my_reduction, and identity_element should be copied or referenced</span>
+<a name="l00279"></a>00279 <span class="comment">//       (might require some performance measurements)</span>
+<a name="l00280"></a>00280 
+<a name="l00281"></a>00281         <span class="keyword">const</span> Value&     identity_element;
+<a name="l00282"></a>00282         <span class="keyword">const</span> RealBody&  my_real_body;
+<a name="l00283"></a>00283         <span class="keyword">const</span> Reduction& my_reduction;
+<a name="l00284"></a>00284         Value            my_value;
+<a name="l00285"></a>00285     <span class="keyword">public</span>:
+<a name="l00286"></a>00286         lambda_reduce_body( <span class="keyword">const</span> Value& identity, <span class="keyword">const</span> RealBody& body, <span class="keyword">const</span> Reduction& reduction )
+<a name="l00287"></a>00287             : identity_element(identity)
+<a name="l00288"></a>00288             , my_real_body(body)
+<a name="l00289"></a>00289             , my_reduction(reduction)
+<a name="l00290"></a>00290             , my_value(identity)
+<a name="l00291"></a>00291         { }
+<a name="l00292"></a>00292         lambda_reduce_body( <span class="keyword">const</span> lambda_reduce_body& other )
+<a name="l00293"></a>00293             : identity_element(other.identity_element)
+<a name="l00294"></a>00294             , my_real_body(other.my_real_body)
+<a name="l00295"></a>00295             , my_reduction(other.my_reduction)
+<a name="l00296"></a>00296             , my_value(other.my_value)
+<a name="l00297"></a>00297         { }
+<a name="l00298"></a>00298         lambda_reduce_body( lambda_reduce_body& other, <a class="code" href="a00131.html">tbb::split</a> )
+<a name="l00299"></a>00299             : identity_element(other.identity_element)
+<a name="l00300"></a>00300             , my_real_body(other.my_real_body)
+<a name="l00301"></a>00301             , my_reduction(other.my_reduction)
+<a name="l00302"></a>00302             , my_value(other.identity_element)
+<a name="l00303"></a>00303         { }
+<a name="l00304"></a>00304         <span class="keywordtype">void</span> operator()(Range& range) {
+<a name="l00305"></a>00305             my_value = my_real_body(range, const_cast<const Value&>(my_value));
+<a name="l00306"></a>00306         }
+<a name="l00307"></a>00307         <span class="keywordtype">void</span> join( lambda_reduce_body& rhs ) {
+<a name="l00308"></a>00308             my_value = my_reduction(const_cast<const Value&>(my_value), const_cast<const Value&>(rhs.my_value));
+<a name="l00309"></a>00309         }
+<a name="l00310"></a>00310         Value result()<span class="keyword"> const </span>{
+<a name="l00311"></a>00311             <span class="keywordflow">return</span> my_value;
+<a name="l00312"></a>00312         }
+<a name="l00313"></a>00313     };
+<a name="l00314"></a>00314 
+<a name="l00315"></a>00315 } <span class="comment">// namespace internal</span>
+<a name="l00317"></a>00317 <span class="comment"></span>
+<a name="l00318"></a>00318 <span class="comment">// Requirements on Range concept are documented in blocked_range.h</span>
+<a name="l00319"></a>00319 
+<a name="l00338"></a>00338 
+<a name="l00340"></a>00340 
+<a name="l00341"></a>00341 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
+<a name="l00342"></a><a class="code" href="a00183.html#gaf32af4ef8fe4261b10e9f6086ce54dc">00342</a> <span class="keywordtype">void</span> <a class="code" href="a00183.html#gaf32af4ef8fe4261b10e9f6086ce54dc">parallel_reduce</a>( <span class="keyword">const</span> Range& range, Body& body, <span class="keyword">const</span> <a class="code" href="a00126.html">simple_partitioner</a>& partitioner = <a class="code" href="a00126.html">simple_partitioner</a>() ) {
+<a name="l00343"></a>00343     internal::start_reduce<Range,Body,simple_partitioner>::run( range, body, partitioner );
+<a name="l00344"></a>00344 }
+<a name="l00345"></a>00345 
+<a name="l00347"></a>00347 
+<a name="l00348"></a>00348 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
+<a name="l00349"></a><a class="code" href="a00183.html#g18a19157e6245992fc00ca0adeb7dd37">00349</a> <span class="keywordtype">void</span> <a class="code" href="a00183.html#gaf32af4ef8fe4261b10e9f6086ce54dc">parallel_reduce</a>( <span class="keyword">const</span> Range& range, Body& body, <span class="keyword">const</span> <a class="code" href="a00095.html">auto_partitioner</a>& partitioner ) {
+<a name="l00350"></a>00350     internal::start_reduce<Range,Body,auto_partitioner>::run( range, body, partitioner );
+<a name="l00351"></a>00351 }
+<a name="l00352"></a>00352 
+<a name="l00354"></a>00354 
+<a name="l00355"></a>00355 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
+<a name="l00356"></a><a class="code" href="a00183.html#gc61e73fcc36c92d79a217fc355ff4a6b">00356</a> <span class="keywordtype">void</span> <a class="code" href="a00183.html#gaf32af4ef8fe4261b10e9f6086ce54dc">parallel_reduce</a>( <span class="keyword">const</span> Range& range, Body& body, <a class="code" href="a00091.html">affinity_partitioner</a>& partitioner ) {
+<a name="l00357"></a>00357     internal::start_reduce_with_affinity<Range,Body>::run( range, body, partitioner );
+<a name="l00358"></a>00358 }
+<a name="l00359"></a>00359 
+<a name="l00360"></a>00360 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00362"></a>00362 <span class="preprocessor"></span>
+<a name="l00363"></a>00363 <span class="preprocessor">template<typename Range, typename Body></span>
+<a name="l00364"></a><a class="code" href="a00183.html#g45cb00c42a18e334bbde8b7535afe460">00364</a> <span class="preprocessor"></span><span class="keywordtype">void</span> <a class="code" href="a00183.html#gaf32af4ef8fe4261b10e9f6086ce54dc">parallel_reduce</a>( <span class="keyword">const</span> Range& range, Body& body, <span class="keyword">const</span> <a class="code" href="a00126.html">simple_partitioner</a>& partitioner, <a class="code" href="a00133.html">task_group_cont [...]
+<a name="l00365"></a>00365     internal::start_reduce<Range,Body,simple_partitioner>::run( range, body, partitioner, context );
+<a name="l00366"></a>00366 }
+<a name="l00367"></a>00367 
+<a name="l00369"></a>00369 
+<a name="l00370"></a>00370 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
+<a name="l00371"></a><a class="code" href="a00183.html#g1c1ea1d7c61b3c225e92c70d669a53a5">00371</a> <span class="keywordtype">void</span> <a class="code" href="a00183.html#gaf32af4ef8fe4261b10e9f6086ce54dc">parallel_reduce</a>( <span class="keyword">const</span> Range& range, Body& body, <span class="keyword">const</span> <a class="code" href="a00095.html">auto_partitioner</a>& partitioner, <a class="code" href="a00133.html">task_group_context</a>& context ) {
+<a name="l00372"></a>00372     internal::start_reduce<Range,Body,auto_partitioner>::run( range, body, partitioner, context );
+<a name="l00373"></a>00373 }
+<a name="l00374"></a>00374 
+<a name="l00376"></a>00376 
+<a name="l00377"></a>00377 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
+<a name="l00378"></a><a class="code" href="a00183.html#gd9ac3a3811060314695f33b703c6e11b">00378</a> <span class="keywordtype">void</span> <a class="code" href="a00183.html#gaf32af4ef8fe4261b10e9f6086ce54dc">parallel_reduce</a>( <span class="keyword">const</span> Range& range, Body& body, <a class="code" href="a00091.html">affinity_partitioner</a>& partitioner, <a class="code" href="a00133.html">task_group_context</a>& context ) {
+<a name="l00379"></a>00379     internal::start_reduce_with_affinity<Range,Body>::run( range, body, partitioner, context );
+<a name="l00380"></a>00380 }
+<a name="l00381"></a>00381 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
+<a name="l00382"></a>00382 
+<a name="l00386"></a>00386 
+<a name="l00387"></a>00387 
+<a name="l00388"></a>00388 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Value, <span class="keyword">typename</span> RealBody, <span class="keyword">typename</span> Reduction>
+<a name="l00389"></a><a class="code" href="a00183.html#gdddb4cb5d9de2f3d6bad3ffa6b64db07">00389</a> Value <a class="code" href="a00183.html#gaf32af4ef8fe4261b10e9f6086ce54dc">parallel_reduce</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Value& identity, <span class="keyword">const</span> RealBody& real_body, <span class="keyword">const</span> Reduction& reduction,
+<a name="l00390"></a>00390                        <span class="keyword">const</span> <a class="code" href="a00126.html">simple_partitioner</a>& partitioner = <a class="code" href="a00126.html">simple_partitioner</a>() ) {
+<a name="l00391"></a>00391     internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
+<a name="l00392"></a>00392     internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,<a class="code" href="a00126.html">simple_partitioner</a>>
+<a name="l00393"></a>00393                           ::run(range, body, partitioner );
+<a name="l00394"></a>00394     <span class="keywordflow">return</span> body.result();
+<a name="l00395"></a>00395 }
+<a name="l00396"></a>00396 
+<a name="l00398"></a>00398 
+<a name="l00399"></a>00399 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Value, <span class="keyword">typename</span> RealBody, <span class="keyword">typename</span> Reduction>
+<a name="l00400"></a><a class="code" href="a00183.html#gb175401f0729e40dd2c5860a17c14385">00400</a> Value <a class="code" href="a00183.html#gaf32af4ef8fe4261b10e9f6086ce54dc">parallel_reduce</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Value& identity, <span class="keyword">const</span> RealBody& real_body, <span class="keyword">const</span> Reduction& reduction,
+<a name="l00401"></a>00401                        <span class="keyword">const</span> <a class="code" href="a00095.html">auto_partitioner</a>& partitioner ) {
+<a name="l00402"></a>00402     internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
+<a name="l00403"></a>00403     internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,<a class="code" href="a00095.html">auto_partitioner</a>>
+<a name="l00404"></a>00404                           ::run( range, body, partitioner );
+<a name="l00405"></a>00405     <span class="keywordflow">return</span> body.result();
+<a name="l00406"></a>00406 }
+<a name="l00407"></a>00407 
+<a name="l00409"></a>00409 
+<a name="l00410"></a>00410 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Value, <span class="keyword">typename</span> RealBody, <span class="keyword">typename</span> Reduction>
+<a name="l00411"></a><a class="code" href="a00183.html#gb7f1f1828ae2b330ce05b8513a495154">00411</a> Value <a class="code" href="a00183.html#gaf32af4ef8fe4261b10e9f6086ce54dc">parallel_reduce</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Value& identity, <span class="keyword">const</span> RealBody& real_body, <span class="keyword">const</span> Reduction& reduction,
+<a name="l00412"></a>00412                        <a class="code" href="a00091.html">affinity_partitioner</a>& partitioner ) {
+<a name="l00413"></a>00413     internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
+<a name="l00414"></a>00414     internal::start_reduce_with_affinity<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction> >
+<a name="l00415"></a>00415                                         ::run( range, body, partitioner );
+<a name="l00416"></a>00416     <span class="keywordflow">return</span> body.result();
+<a name="l00417"></a>00417 }
+<a name="l00418"></a>00418 
+<a name="l00419"></a>00419 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00421"></a>00421 <span class="preprocessor"></span>
+<a name="l00422"></a>00422 <span class="preprocessor">template<typename Range, typename Value, typename RealBody, typename Reduction></span>
+<a name="l00423"></a><a class="code" href="a00183.html#gfbc0cc2026d87f11a96bcd62788f5bb5">00423</a> <span class="preprocessor"></span>Value <a class="code" href="a00183.html#gaf32af4ef8fe4261b10e9f6086ce54dc">parallel_reduce</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Value& identity, <span class="keyword">const</span> RealBody& real_body, <span class="keyword">const</span> Reduction& reduction,
+<a name="l00424"></a>00424                        <span class="keyword">const</span> <a class="code" href="a00126.html">simple_partitioner</a>& partitioner, <a class="code" href="a00133.html">task_group_context</a>& context ) {
+<a name="l00425"></a>00425     internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
+<a name="l00426"></a>00426     internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,<a class="code" href="a00126.html">simple_partitioner</a>>
+<a name="l00427"></a>00427                           ::run( range, body, partitioner, context );
+<a name="l00428"></a>00428     <span class="keywordflow">return</span> body.result();
+<a name="l00429"></a>00429 }
+<a name="l00430"></a>00430 
+<a name="l00432"></a>00432 
+<a name="l00433"></a>00433 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Value, <span class="keyword">typename</span> RealBody, <span class="keyword">typename</span> Reduction>
+<a name="l00434"></a><a class="code" href="a00183.html#g630c90a399937d9d4ae70ff883186dfd">00434</a> Value <a class="code" href="a00183.html#gaf32af4ef8fe4261b10e9f6086ce54dc">parallel_reduce</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Value& identity, <span class="keyword">const</span> RealBody& real_body, <span class="keyword">const</span> Reduction& reduction,
+<a name="l00435"></a>00435                        <span class="keyword">const</span> <a class="code" href="a00095.html">auto_partitioner</a>& partitioner, <a class="code" href="a00133.html">task_group_context</a>& context ) {
+<a name="l00436"></a>00436     internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
+<a name="l00437"></a>00437     internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,<a class="code" href="a00095.html">auto_partitioner</a>>
+<a name="l00438"></a>00438                           ::run( range, body, partitioner, context );
+<a name="l00439"></a>00439     <span class="keywordflow">return</span> body.result();
+<a name="l00440"></a>00440 }
+<a name="l00441"></a>00441 
+<a name="l00443"></a>00443 
+<a name="l00444"></a>00444 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Value, <span class="keyword">typename</span> RealBody, <span class="keyword">typename</span> Reduction>
+<a name="l00445"></a><a class="code" href="a00183.html#g496bd7eadb3b97495ccb5655ef90319e">00445</a> Value <a class="code" href="a00183.html#gaf32af4ef8fe4261b10e9f6086ce54dc">parallel_reduce</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Value& identity, <span class="keyword">const</span> RealBody& real_body, <span class="keyword">const</span> Reduction& reduction,
+<a name="l00446"></a>00446                        <a class="code" href="a00091.html">affinity_partitioner</a>& partitioner, <a class="code" href="a00133.html">task_group_context</a>& context ) {
+<a name="l00447"></a>00447     internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
+<a name="l00448"></a>00448     internal::start_reduce_with_affinity<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction> >
+<a name="l00449"></a>00449                                         ::run( range, body, partitioner, context );
+<a name="l00450"></a>00450     <span class="keywordflow">return</span> body.result();
+<a name="l00451"></a>00451 }
+<a name="l00452"></a>00452 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
+<a name="l00453"></a>00453 
+<a name="l00454"></a>00454 
+<a name="l00455"></a>00455 } <span class="comment">// namespace tbb</span>
+<a name="l00456"></a>00456 
+<a name="l00457"></a>00457 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_parallel_reduce_H */</span>
+<a name="l00458"></a>00458 
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00246.html b/doc/html/a00246.html
deleted file mode 100644
index 35e8178..0000000
--- a/doc/html/a00246.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::recursive_mutex::scoped_lock Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::recursive_mutex::scoped_lock Class Reference</h1>The scoped locking pattern.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00345.html">recursive_mutex.h</a>></code>
-<p>
-Inherits <a class="el" href="a00230.html">tbb::internal::no_copy</a>.
-<p>
-Inheritance diagram for tbb::recursive_mutex::scoped_lock:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00103.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::recursive_mutex::scoped_lock::scoped_lock"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00246.html#a0">scoped_lock</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct lock that has not acquired a <a class="el" href="a00245.html">recursive_mutex</a>. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00246.html#a1">scoped_lock</a> (<a class="el" href="a00245.html">recursive_mutex</a> &<a class="el" href="a00227.html">mutex</a>)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex.  <a href="#a1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::recursive_mutex::scoped_lock::~scoped_lock"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00246.html#a2">~scoped_lock</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Release lock (if lock is held). <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::recursive_mutex::scoped_lock::acquire"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00246.html#a3">acquire</a> (<a class="el" href="a00245.html">recursive_mutex</a> &<a class="el" href="a00227.html">mutex</a>)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::recursive_mutex::scoped_lock::try_acquire"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00246.html#a4">try_acquire</a> (<a class="el" href="a00245.html">recursive_mutex</a> &<a class="el" href="a00227.html">mutex</a>)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Try acquire lock on given <a class="el" href="a00245.html">recursive_mutex</a>. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::recursive_mutex::scoped_lock::release"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00246.html#a5">release</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-The scoped locking pattern. 
-<p>
-It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks. 
-<p>
-<hr><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" name="a1" doxytag="tbb::recursive_mutex::scoped_lock::scoped_lock"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">tbb::recursive_mutex::scoped_lock::scoped_lock           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top"><a class="el" href="a00245.html">recursive_mutex</a> & </td>
-          <td class="mdname1" valign="top" nowrap> <em>mutex</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Acquire lock on given mutex. 
-<p>
-Upon entry, *this should not be in the "have acquired a mutex" state.     </td>
-  </tr>
-</table>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00345.html">recursive_mutex.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00247.html b/doc/html/a00247.html
deleted file mode 100644
index 8ed6761..0000000
--- a/doc/html/a00247.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::scalable_allocator< T > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::scalable_allocator< T > Class Template Reference</h1>Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00346.html">scalable_allocator.h</a>></code>
-<p>
-<a href="a00104.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w0" doxytag="tbb::scalable_allocator::pointer"></a>
-typedef T * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w1" doxytag="tbb::scalable_allocator::const_pointer"></a>
-typedef const T * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w2" doxytag="tbb::scalable_allocator::reference"></a>
-typedef T & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w3" doxytag="tbb::scalable_allocator::const_reference"></a>
-typedef const T & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w4" doxytag="tbb::scalable_allocator::value_type"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w5" doxytag="tbb::scalable_allocator::size_type"></a>
-typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w6" doxytag="tbb::scalable_allocator::difference_type"></a>
-typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
-
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::scalable_allocator::scalable_allocator"></a>
- </td><td class="memItemRight" valign="bottom"><b>scalable_allocator</b> (const <a class="el" href="a00247.html">scalable_allocator</a> &)  throw ()</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a2" doxytag="tbb::scalable_allocator::scalable_allocator"></a>
-template<typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>scalable_allocator</b> (const <a class="el" href="a00247.html">scalable_allocator</a>< U > &)  throw ()</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::scalable_allocator::address"></a>
-pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (reference x) const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::scalable_allocator::address"></a>
-const_pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (const_reference x) const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::scalable_allocator::allocate"></a>
-pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00247.html#a5">allocate</a> (size_type n, const void *=0)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allocate space for n objects. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a6" doxytag="tbb::scalable_allocator::deallocate"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00247.html#a6">deallocate</a> (pointer p, size_type)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Free previously allocated block of memory. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a7" doxytag="tbb::scalable_allocator::max_size"></a>
-size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00247.html#a7">max_size</a> () const   throw ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Largest value for which method allocate might succeed. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a8" doxytag="tbb::scalable_allocator::construct"></a>
-void </td><td class="memItemRight" valign="bottom"><b>construct</b> (pointer p, const T &val)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a9" doxytag="tbb::scalable_allocator::destroy"></a>
-void </td><td class="memItemRight" valign="bottom"><b>destroy</b> (pointer p)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename T><br>
- class tbb::scalable_allocator< T ></h3>
-
-Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. 
-<p>
-The members are ordered the same way they are in section 20.4.1 of the ISO C++ standard. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00346.html">scalable_allocator.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00248.html b/doc/html/a00248.html
deleted file mode 100644
index 4717b5d..0000000
--- a/doc/html/a00248.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::scalable_allocator< void > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::scalable_allocator< void > Class Template Reference</h1>Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00346.html">scalable_allocator.h</a>></code>
-<p>
-<a href="a00106.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w0" doxytag="tbb::scalable_allocator< void >::pointer"></a>
-typedef void * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w1" doxytag="tbb::scalable_allocator< void >::const_pointer"></a>
-typedef const void * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w2" doxytag="tbb::scalable_allocator< void >::value_type"></a>
-typedef void </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<><br>
- class tbb::scalable_allocator< void ></h3>
-
-Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00346.html">scalable_allocator.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00249.html b/doc/html/a00249.html
deleted file mode 100644
index 6a0c7f1..0000000
--- a/doc/html/a00249.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::simple_partitioner Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::simple_partitioner Class Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>A simple partitioner  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00341.html">partitioner.h</a>></code>
-<p>
-<a href="a00090.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::simple_partitioner::internal::start_for"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::start_for</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n1" doxytag="tbb::simple_partitioner::internal::start_reduce"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::start_reduce</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n2" doxytag="tbb::simple_partitioner::internal::start_scan"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::start_scan</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-A simple partitioner 
-<p>
-Divides the range until the range is not divisible. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00341.html">partitioner.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00250.html b/doc/html/a00250.html
deleted file mode 100644
index b8d0888..0000000
--- a/doc/html/a00250.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::spin_mutex Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::spin_mutex Class Reference</h1>A lock that occupies a single byte.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00347.html">spin_mutex.h</a>></code>
-<p>
-<a href="a00108.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00250.html#a0">spin_mutex</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct unacquired lock.  <a href="#a0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::spin_mutex::internal_construct"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>internal_construct</b> ()</td></tr>
-
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s0" doxytag="tbb::spin_mutex::is_rw_mutex"></a>
-const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = false</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s1" doxytag="tbb::spin_mutex::is_recursive_mutex"></a>
-const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = false</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s2" doxytag="tbb::spin_mutex::is_fair_mutex"></a>
-const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = false</td></tr>
-
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::spin_mutex::scoped_lock"></a>
-class </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-A lock that occupies a single byte. 
-<p>
-A <a class="el" href="a00250.html">spin_mutex</a> is a spin mutex that fits in a single byte. It should be used only for locking short critical sections (typically <20 instructions) when fairness is not an issue. If zero-initialized, the mutex is considered unheld. 
-<p>
-<hr><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" name="a0" doxytag="tbb::spin_mutex::spin_mutex"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">tbb::spin_mutex::spin_mutex           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Construct unacquired lock. 
-<p>
-Equivalent to zero-initialization of *this.     </td>
-  </tr>
-</table>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00347.html">spin_mutex.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00251.html b/doc/html/a00251.html
index cb67505..2fcce3a 100644
--- a/doc/html/a00251.html
+++ b/doc/html/a00251.html
@@ -1,51 +1,330 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::spin_mutex::scoped_lock Class Reference</title>
+<title>parallel_scan.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::spin_mutex::scoped_lock Class Reference</h1>Represents acquisition of a mutex.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00347.html">spin_mutex.h</a>></code>
-<p>
-Inherits <a class="el" href="a00230.html">tbb::internal::no_copy</a>.
-<p>
-Inheritance diagram for tbb::spin_mutex::scoped_lock:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00109.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::spin_mutex::scoped_lock::scoped_lock"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00251.html#a0">scoped_lock</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct without acquiring a mutex. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::spin_mutex::scoped_lock::scoped_lock"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00251.html#a1">scoped_lock</a> (<a class="el" href="a00250.html">spin_mutex</a> &m)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct and acquire lock on a mutex. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::spin_mutex::scoped_lock::acquire"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00251.html#a2">acquire</a> (<a class="el" href="a00250.html">spin_mutex</a> &m)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::spin_mutex::scoped_lock::try_acquire"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00251.html#a3">try_acquire</a> (<a class="el" href="a00250.html">spin_mutex</a> &m)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Try acquiring lock (non-blocking). <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::spin_mutex::scoped_lock::release"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00251.html#a4">release</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::spin_mutex::scoped_lock::~scoped_lock"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00251.html#a5">~scoped_lock</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroy lock. If holding a lock, releases the lock first. <br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Represents acquisition of a mutex. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00347.html">spin_mutex.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>parallel_scan.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_parallel_scan_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_parallel_scan_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "task.h"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "aligned_space.h"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include <new></span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include "partitioner.h"</span>
+<a name="l00028"></a>00028 
+<a name="l00029"></a>00029 <span class="keyword">namespace </span>tbb {
+<a name="l00030"></a>00030 
+<a name="l00032"></a>00032 
+<a name="l00033"></a><a class="code" href="a00117.html">00033</a> <span class="keyword">struct </span><a class="code" href="a00117.html">pre_scan_tag</a> {
+<a name="l00034"></a>00034     <span class="keyword">static</span> <span class="keywordtype">bool</span> is_final_scan() {<span class="keywordflow">return</span> <span class="keyword">false</span>;}
+<a name="l00035"></a>00035 };
+<a name="l00036"></a>00036 
+<a name="l00038"></a>00038 
+<a name="l00039"></a><a class="code" href="a00110.html">00039</a> <span class="keyword">struct </span><a class="code" href="a00110.html">final_scan_tag</a> {
+<a name="l00040"></a>00040     <span class="keyword">static</span> <span class="keywordtype">bool</span> is_final_scan() {<span class="keywordflow">return</span> <span class="keyword">true</span>;}
+<a name="l00041"></a>00041 };
+<a name="l00042"></a>00042 
+<a name="l00044"></a>00044 <span class="keyword">namespace </span>internal {
+<a name="l00045"></a>00045 
+<a name="l00047"></a>00047 
+<a name="l00048"></a>00048     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
+<a name="l00049"></a>00049     <span class="keyword">class </span>final_sum: <span class="keyword">public</span> <a class="code" href="a00132.html">task</a> {
+<a name="l00050"></a>00050     <span class="keyword">public</span>:
+<a name="l00051"></a>00051         Body body;
+<a name="l00052"></a>00052     <span class="keyword">private</span>:
+<a name="l00053"></a>00053         <a class="code" href="a00092.html">aligned_space<Range,1></a> range;
+<a name="l00055"></a>00055         Body* stuff_last;
+<a name="l00056"></a>00056     <span class="keyword">public</span>:
+<a name="l00057"></a>00057         final_sum( Body& body_ ) :
+<a name="l00058"></a>00058             body(body_,<a class="code" href="a00131.html">split</a>())
+<a name="l00059"></a>00059         {
+<a name="l00060"></a>00060             poison_pointer(stuff_last);
+<a name="l00061"></a>00061         }
+<a name="l00062"></a>00062         ~final_sum() {
+<a name="l00063"></a>00063             range.begin()->~Range();
+<a name="l00064"></a>00064         }     
+<a name="l00065"></a>00065         <span class="keywordtype">void</span> finish_construction( <span class="keyword">const</span> Range& range_, Body* stuff_last_ ) {
+<a name="l00066"></a>00066             <span class="keyword">new</span>( range.begin() ) Range(range_);
+<a name="l00067"></a>00067             stuff_last = stuff_last_;
+<a name="l00068"></a>00068         }
+<a name="l00069"></a>00069     <span class="keyword">private</span>:
+<a name="l00070"></a>00070         <span class="comment">/*override*/</span> task* execute() {
+<a name="l00071"></a>00071             body( *range.begin(), final_scan_tag() );
+<a name="l00072"></a>00072             <span class="keywordflow">if</span>( stuff_last )
+<a name="l00073"></a>00073                 stuff_last->assign(body);
+<a name="l00074"></a>00074             <span class="keywordflow">return</span> NULL;
+<a name="l00075"></a>00075         }
+<a name="l00076"></a>00076     };       
+<a name="l00077"></a>00077 
+<a name="l00079"></a>00079 
+<a name="l00080"></a>00080     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
+<a name="l00081"></a>00081     <span class="keyword">class </span>sum_node: <span class="keyword">public</span> task {
+<a name="l00082"></a>00082         <span class="keyword">typedef</span> final_sum<Range,Body> final_sum_type;
+<a name="l00083"></a>00083     <span class="keyword">public</span>:
+<a name="l00084"></a>00084         final_sum_type *incoming; 
+<a name="l00085"></a>00085         final_sum_type *body;
+<a name="l00086"></a>00086         Body *stuff_last;
+<a name="l00087"></a>00087     <span class="keyword">private</span>:
+<a name="l00088"></a>00088         final_sum_type *left_sum;
+<a name="l00089"></a>00089         sum_node *left;
+<a name="l00090"></a>00090         sum_node *right;     
+<a name="l00091"></a>00091         <span class="keywordtype">bool</span> left_is_final;
+<a name="l00092"></a>00092         Range range;
+<a name="l00093"></a>00093         sum_node( <span class="keyword">const</span> Range range_, <span class="keywordtype">bool</span> left_is_final_ ) : 
+<a name="l00094"></a>00094             left_sum(NULL), 
+<a name="l00095"></a>00095             left(NULL), 
+<a name="l00096"></a>00096             right(NULL), 
+<a name="l00097"></a>00097             left_is_final(left_is_final_), 
+<a name="l00098"></a>00098             range(range_)
+<a name="l00099"></a>00099         {
+<a name="l00100"></a>00100             <span class="comment">// Poison fields that will be set by second pass.</span>
+<a name="l00101"></a>00101             poison_pointer(body);
+<a name="l00102"></a>00102             poison_pointer(incoming);
+<a name="l00103"></a>00103         }
+<a name="l00104"></a>00104         task* create_child( <span class="keyword">const</span> Range& range, final_sum_type& f, sum_node* n, final_sum_type* incoming, Body* stuff_last ) {
+<a name="l00105"></a>00105             <span class="keywordflow">if</span>( !n ) {
+<a name="l00106"></a>00106                 f.recycle_as_child_of( *<span class="keyword">this</span> );
+<a name="l00107"></a>00107                 f.finish_construction( range, stuff_last );
+<a name="l00108"></a>00108                 <span class="keywordflow">return</span> &f;
+<a name="l00109"></a>00109             } <span class="keywordflow">else</span> {
+<a name="l00110"></a>00110                 n->body = &f;
+<a name="l00111"></a>00111                 n->incoming = incoming;
+<a name="l00112"></a>00112                 n->stuff_last = stuff_last;
+<a name="l00113"></a>00113                 <span class="keywordflow">return</span> n;
+<a name="l00114"></a>00114             }
+<a name="l00115"></a>00115         }
+<a name="l00116"></a>00116         <span class="comment">/*override*/</span> task* execute() {
+<a name="l00117"></a>00117             <span class="keywordflow">if</span>( body ) {
+<a name="l00118"></a>00118                 <span class="keywordflow">if</span>( incoming )
+<a name="l00119"></a>00119                     left_sum->body.reverse_join( incoming->body );
+<a name="l00120"></a>00120                 recycle_as_continuation();
+<a name="l00121"></a>00121                 sum_node& c = *<span class="keyword">this</span>;
+<a name="l00122"></a>00122                 task* b = c.create_child(Range(range,split()),*left_sum,right,left_sum,stuff_last);
+<a name="l00123"></a>00123                 task* a = left_is_final ? NULL : c.create_child(range,*body,left,incoming,NULL);
+<a name="l00124"></a>00124                 set_ref_count( (a!=NULL)+(b!=NULL) );
+<a name="l00125"></a>00125                 body = NULL; 
+<a name="l00126"></a>00126                 <span class="keywordflow">if</span>( a ) spawn(*b);
+<a name="l00127"></a>00127                 <span class="keywordflow">else</span> a = b;
+<a name="l00128"></a>00128                 <span class="keywordflow">return</span> a;
+<a name="l00129"></a>00129             } <span class="keywordflow">else</span> {
+<a name="l00130"></a>00130                 <span class="keywordflow">return</span> NULL;
+<a name="l00131"></a>00131             }
+<a name="l00132"></a>00132         }
+<a name="l00133"></a>00133         <span class="keyword">template</span><<span class="keyword">typename</span> Range_,<span class="keyword">typename</span> Body_,<span class="keyword">typename</span> Partitioner_>
+<a name="l00134"></a>00134         <span class="keyword">friend</span> <span class="keyword">class </span>start_scan;
+<a name="l00135"></a>00135 
+<a name="l00136"></a>00136         <span class="keyword">template</span><<span class="keyword">typename</span> Range_,<span class="keyword">typename</span> Body_>
+<a name="l00137"></a>00137         <span class="keyword">friend</span> <span class="keyword">class </span>finish_scan;
+<a name="l00138"></a>00138     };
+<a name="l00139"></a>00139 
+<a name="l00141"></a>00141 
+<a name="l00142"></a>00142     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
+<a name="l00143"></a>00143     <span class="keyword">class </span>finish_scan: <span class="keyword">public</span> task {
+<a name="l00144"></a>00144         <span class="keyword">typedef</span> sum_node<Range,Body> sum_node_type;
+<a name="l00145"></a>00145         <span class="keyword">typedef</span> final_sum<Range,Body> final_sum_type;
+<a name="l00146"></a>00146         final_sum_type** <span class="keyword">const</span> sum;
+<a name="l00147"></a>00147         sum_node_type*& return_slot;
+<a name="l00148"></a>00148     <span class="keyword">public</span>:
+<a name="l00149"></a>00149         final_sum_type* right_zombie;
+<a name="l00150"></a>00150         sum_node_type& result;
+<a name="l00151"></a>00151 
+<a name="l00152"></a>00152         <span class="comment">/*override*/</span> task* execute() {
+<a name="l00153"></a>00153             __TBB_ASSERT( result.ref_count()==(result.left!=NULL)+(result.right!=NULL), NULL );
+<a name="l00154"></a>00154             <span class="keywordflow">if</span>( result.left )
+<a name="l00155"></a>00155                 result.left_is_final = <span class="keyword">false</span>;
+<a name="l00156"></a>00156             <span class="keywordflow">if</span>( right_zombie && sum ) 
+<a name="l00157"></a>00157                 ((*sum)->body).reverse_join(result.left_sum->body);
+<a name="l00158"></a>00158             __TBB_ASSERT( !return_slot, NULL );
+<a name="l00159"></a>00159             <span class="keywordflow">if</span>( right_zombie || result.right ) {
+<a name="l00160"></a>00160                 return_slot = &result;
+<a name="l00161"></a>00161             } <span class="keywordflow">else</span> {
+<a name="l00162"></a>00162                 destroy( result );
+<a name="l00163"></a>00163             }
+<a name="l00164"></a>00164             <span class="keywordflow">if</span>( right_zombie && !sum && !result.right ) destroy(*right_zombie);
+<a name="l00165"></a>00165             <span class="keywordflow">return</span> NULL;
+<a name="l00166"></a>00166         }
+<a name="l00167"></a>00167 
+<a name="l00168"></a>00168         finish_scan( sum_node_type*& return_slot_, final_sum_type** sum_, sum_node_type& result_ ) : 
+<a name="l00169"></a>00169             sum(sum_),
+<a name="l00170"></a>00170             return_slot(return_slot_), 
+<a name="l00171"></a>00171             right_zombie(NULL),
+<a name="l00172"></a>00172             result(result_)
+<a name="l00173"></a>00173         {
+<a name="l00174"></a>00174             __TBB_ASSERT( !return_slot, NULL );
+<a name="l00175"></a>00175         }
+<a name="l00176"></a>00176     };
+<a name="l00177"></a>00177 
+<a name="l00179"></a>00179 
+<a name="l00180"></a>00180     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner=simple_partitioner>
+<a name="l00181"></a>00181     <span class="keyword">class </span>start_scan: <span class="keyword">public</span> task {
+<a name="l00182"></a>00182         <span class="keyword">typedef</span> sum_node<Range,Body> sum_node_type;
+<a name="l00183"></a>00183         <span class="keyword">typedef</span> final_sum<Range,Body> final_sum_type;
+<a name="l00184"></a>00184         final_sum_type* body;
+<a name="l00186"></a>00186         final_sum_type** sum; 
+<a name="l00187"></a>00187         sum_node_type** return_slot;
+<a name="l00189"></a>00189         sum_node_type* parent_sum;
+<a name="l00190"></a>00190         <span class="keywordtype">bool</span> is_final;
+<a name="l00191"></a>00191         <span class="keywordtype">bool</span> is_right_child;
+<a name="l00192"></a>00192         Range range;
+<a name="l00193"></a>00193         <span class="keyword">typename</span> Partitioner::partition_type partition;
+<a name="l00194"></a>00194         <span class="comment">/*override*/</span> task* execute();
+<a name="l00195"></a>00195     <span class="keyword">public</span>:
+<a name="l00196"></a>00196         start_scan( sum_node_type*& return_slot_, start_scan& parent, sum_node_type* parent_sum_ ) :
+<a name="l00197"></a>00197             body(parent.body),
+<a name="l00198"></a>00198             sum(parent.sum),
+<a name="l00199"></a>00199             return_slot(&return_slot_),
+<a name="l00200"></a>00200             parent_sum(parent_sum_),
+<a name="l00201"></a>00201             is_final(parent.is_final),
+<a name="l00202"></a>00202             is_right_child(false),
+<a name="l00203"></a>00203             range(parent.range,split()),
+<a name="l00204"></a>00204             partition(parent.partition,split())
+<a name="l00205"></a>00205         {
+<a name="l00206"></a>00206             __TBB_ASSERT( !*return_slot, NULL );
+<a name="l00207"></a>00207         }
+<a name="l00208"></a>00208 
+<a name="l00209"></a>00209         start_scan( sum_node_type*& return_slot_, <span class="keyword">const</span> Range& range_, final_sum_type& body_, <span class="keyword">const</span> Partitioner& partitioner_) :
+<a name="l00210"></a>00210             body(&body_),
+<a name="l00211"></a>00211             sum(NULL),
+<a name="l00212"></a>00212             return_slot(&return_slot_),
+<a name="l00213"></a>00213             parent_sum(NULL),
+<a name="l00214"></a>00214             is_final(true),
+<a name="l00215"></a>00215             is_right_child(false),
+<a name="l00216"></a>00216             range(range_),
+<a name="l00217"></a>00217             partition(partitioner_)
+<a name="l00218"></a>00218         {
+<a name="l00219"></a>00219             __TBB_ASSERT( !*return_slot, NULL );
+<a name="l00220"></a>00220         }
+<a name="l00221"></a>00221 
+<a name="l00222"></a>00222         <span class="keyword">static</span> <span class="keywordtype">void</span> run(  <span class="keyword">const</span> Range& range, Body& body, <span class="keyword">const</span> Partitioner& partitioner ) {
+<a name="l00223"></a>00223             <span class="keywordflow">if</span>( !range.empty() ) {
+<a name="l00224"></a>00224                 <span class="keyword">typedef</span> internal::start_scan<Range,Body,Partitioner> start_pass1_type;
+<a name="l00225"></a>00225                 internal::sum_node<Range,Body>* root = NULL;
+<a name="l00226"></a>00226                 <span class="keyword">typedef</span> internal::final_sum<Range,Body> final_sum_type;
+<a name="l00227"></a>00227                 final_sum_type* temp_body = <span class="keyword">new</span>(<a class="code" href="a00132.html#23acb0da0afd690da797f9f882027d34">task::allocate_root</a>()) final_sum_type( body );
+<a name="l00228"></a>00228                 start_pass1_type& pass1 = *<span class="keyword">new</span>(<a class="code" href="a00132.html#23acb0da0afd690da797f9f882027d34">task::allocate_root</a>()) start_pass1_type(
+<a name="l00229"></a>00229                     <span class="comment">/*return_slot=*/</span>root,
+<a name="l00230"></a>00230                     range,
+<a name="l00231"></a>00231                     *temp_body,
+<a name="l00232"></a>00232                     partitioner );
+<a name="l00233"></a>00233                 <a class="code" href="a00132.html#ce8ce689c26a4ddf343829bc3c73290a">task::spawn_root_and_wait</a>( pass1 );
+<a name="l00234"></a>00234                 <span class="keywordflow">if</span>( root ) {
+<a name="l00235"></a>00235                     root->body = temp_body;
+<a name="l00236"></a>00236                     root->incoming = NULL;
+<a name="l00237"></a>00237                     root->stuff_last = &body;
+<a name="l00238"></a>00238                     <a class="code" href="a00132.html#ce8ce689c26a4ddf343829bc3c73290a">task::spawn_root_and_wait</a>( *root );
+<a name="l00239"></a>00239                 } <span class="keywordflow">else</span> {
+<a name="l00240"></a>00240                     body.assign(temp_body->body);
+<a name="l00241"></a>00241                     temp_body->finish_construction( range, NULL );
+<a name="l00242"></a>00242                     temp_body->destroy(*temp_body);
+<a name="l00243"></a>00243                 }
+<a name="l00244"></a>00244             }
+<a name="l00245"></a>00245         }
+<a name="l00246"></a>00246     };
+<a name="l00247"></a>00247 
+<a name="l00248"></a>00248     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner>
+<a name="l00249"></a>00249     task* start_scan<Range,Body,Partitioner>::execute() {
+<a name="l00250"></a>00250         <span class="keyword">typedef</span> internal::finish_scan<Range,Body> finish_pass1_type;
+<a name="l00251"></a>00251         finish_pass1_type* p = parent_sum ? static_cast<finish_pass1_type*>( parent() ) : NULL;
+<a name="l00252"></a>00252         <span class="comment">// Inspecting p->result.left_sum would ordinarily be a race condition.</span>
+<a name="l00253"></a>00253         <span class="comment">// But we inspect it only if we are not a stolen task, in which case we</span>
+<a name="l00254"></a>00254         <span class="comment">// know that task assigning to p->result.left_sum has completed.</span>
+<a name="l00255"></a>00255         <span class="keywordtype">bool</span> treat_as_stolen = is_right_child && (is_stolen_task() || body!=p->result.left_sum);
+<a name="l00256"></a>00256         <span class="keywordflow">if</span>( treat_as_stolen ) {
+<a name="l00257"></a>00257             <span class="comment">// Invocation is for right child that has been really stolen or needs to be virtually stolen</span>
+<a name="l00258"></a>00258             p->right_zombie = body = <span class="keyword">new</span>( allocate_root() ) final_sum_type(body->body);
+<a name="l00259"></a>00259             is_final = <span class="keyword">false</span>;
+<a name="l00260"></a>00260         }
+<a name="l00261"></a>00261         task* next_task = NULL;
+<a name="l00262"></a>00262         <span class="keywordflow">if</span>( (is_right_child && !treat_as_stolen) || !range.is_divisible() || partition.should_execute_range(*<span class="keyword">this</span>) ) {
+<a name="l00263"></a>00263             <span class="keywordflow">if</span>( is_final )
+<a name="l00264"></a>00264                 (body->body)( range, final_scan_tag() );
+<a name="l00265"></a>00265             <span class="keywordflow">else</span> <span class="keywordflow">if</span>( sum )
+<a name="l00266"></a>00266                 (body->body)( range, pre_scan_tag() );
+<a name="l00267"></a>00267             <span class="keywordflow">if</span>( sum ) 
+<a name="l00268"></a>00268                 *sum = body;
+<a name="l00269"></a>00269             __TBB_ASSERT( !*return_slot, NULL );
+<a name="l00270"></a>00270         } <span class="keywordflow">else</span> {
+<a name="l00271"></a>00271             sum_node_type* result;
+<a name="l00272"></a>00272             <span class="keywordflow">if</span>( parent_sum ) 
+<a name="l00273"></a>00273                 result = <span class="keyword">new</span>(allocate_additional_child_of(*parent_sum)) sum_node_type(range,<span class="comment">/*left_is_final=*/</span>is_final);
+<a name="l00274"></a>00274             <span class="keywordflow">else</span>
+<a name="l00275"></a>00275                 result = <span class="keyword">new</span>(<a class="code" href="a00132.html#23acb0da0afd690da797f9f882027d34">task::allocate_root</a>()) sum_node_type(range,<span class="comment">/*left_is_final=*/</span>is_final);
+<a name="l00276"></a>00276             finish_pass1_type& c = *<span class="keyword">new</span>( allocate_continuation()) finish_pass1_type(*return_slot,sum,*result);
+<a name="l00277"></a>00277             <span class="comment">// Split off right child</span>
+<a name="l00278"></a>00278             start_scan& b = *<span class="keyword">new</span>( c.allocate_child() ) start_scan( <span class="comment">/*return_slot=*/</span>result->right, *<span class="keyword">this</span>, result );
+<a name="l00279"></a>00279             b.is_right_child = <span class="keyword">true</span>;    
+<a name="l00280"></a>00280             <span class="comment">// Left child is recycling of *this.  Must recycle this before spawning b, </span>
+<a name="l00281"></a>00281             <span class="comment">// otherwise b might complete and decrement c.ref_count() to zero, which</span>
+<a name="l00282"></a>00282             <span class="comment">// would cause c.execute() to run prematurely.</span>
+<a name="l00283"></a>00283             recycle_as_child_of(c);
+<a name="l00284"></a>00284             c.set_ref_count(2);
+<a name="l00285"></a>00285             c.spawn(b);
+<a name="l00286"></a>00286             sum = &result->left_sum;
+<a name="l00287"></a>00287             return_slot = &result->left;
+<a name="l00288"></a>00288             is_right_child = <span class="keyword">false</span>;
+<a name="l00289"></a>00289             next_task = <span class="keyword">this</span>;
+<a name="l00290"></a>00290             parent_sum = result; 
+<a name="l00291"></a>00291             __TBB_ASSERT( !*return_slot, NULL );
+<a name="l00292"></a>00292         }
+<a name="l00293"></a>00293         <span class="keywordflow">return</span> next_task;
+<a name="l00294"></a>00294     } 
+<a name="l00295"></a>00295 } <span class="comment">// namespace internal</span>
+<a name="l00297"></a>00297 <span class="comment"></span>
+<a name="l00298"></a>00298 <span class="comment">// Requirements on Range concept are documented in blocked_range.h</span>
+<a name="l00299"></a>00299 
+<a name="l00317"></a>00317 
+<a name="l00319"></a>00319 
+<a name="l00320"></a>00320 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
+<a name="l00321"></a><a class="code" href="a00183.html#gdf44892aacffa7360018e96ebdaae2ba">00321</a> <span class="keywordtype">void</span> <a class="code" href="a00183.html#gdf44892aacffa7360018e96ebdaae2ba">parallel_scan</a>( <span class="keyword">const</span> Range& range, Body& body, <span class="keyword">const</span> <a class="code" href="a00126.html">simple_partitioner</a>& partitioner=<a class="code" href="a00126.html">simple_partitioner</a>() ) {
+<a name="l00322"></a>00322     internal::start_scan<Range,Body,simple_partitioner>::run(range,body,partitioner);
+<a name="l00323"></a>00323 }
+<a name="l00324"></a>00324 
+<a name="l00326"></a>00326 
+<a name="l00327"></a>00327 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
+<a name="l00328"></a><a class="code" href="a00183.html#g62fde400a37bbca1a2fddc8e3d22f556">00328</a> <span class="keywordtype">void</span> <a class="code" href="a00183.html#gdf44892aacffa7360018e96ebdaae2ba">parallel_scan</a>( <span class="keyword">const</span> Range& range, Body& body, <span class="keyword">const</span> <a class="code" href="a00095.html">auto_partitioner</a>& partitioner ) {
+<a name="l00329"></a>00329     internal::start_scan<Range,Body,auto_partitioner>::run(range,body,partitioner);
+<a name="l00330"></a>00330 }
+<a name="l00332"></a>00332 
+<a name="l00333"></a>00333 } <span class="comment">// namespace tbb</span>
+<a name="l00334"></a>00334 
+<a name="l00335"></a>00335 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_parallel_scan_H */</span>
+<a name="l00336"></a>00336 
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00252.html b/doc/html/a00252.html
deleted file mode 100644
index a0bb59f..0000000
--- a/doc/html/a00252.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::spin_rw_mutex_v3 Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::spin_rw_mutex_v3 Class Reference</h1>Fast, unfair, spinning reader-writer lock with backoff and writer-preference.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00348.html">spin_rw_mutex.h</a>></code>
-<p>
-<a href="a00110.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::spin_rw_mutex_v3::spin_rw_mutex_v3"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00252.html#a0">spin_rw_mutex_v3</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct unacquired mutex. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::spin_rw_mutex_v3::~spin_rw_mutex_v3"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00252.html#a1">~spin_rw_mutex_v3</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Destructor asserts if the mutex is acquired, i.e. state is zero. <br></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s0" doxytag="tbb::spin_rw_mutex_v3::is_rw_mutex"></a>
-const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = true</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s1" doxytag="tbb::spin_rw_mutex_v3::is_recursive_mutex"></a>
-const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = false</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s2" doxytag="tbb::spin_rw_mutex_v3::is_fair_mutex"></a>
-const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = false</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Fast, unfair, spinning reader-writer lock with backoff and writer-preference. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00348.html">spin_rw_mutex.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00253.html b/doc/html/a00253.html
deleted file mode 100644
index 6737ee7..0000000
--- a/doc/html/a00253.html
+++ /dev/null
@@ -1,162 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::spin_rw_mutex_v3::scoped_lock Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::spin_rw_mutex_v3::scoped_lock Class Reference</h1>The scoped locking pattern.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00348.html">spin_rw_mutex.h</a>></code>
-<p>
-Inherits <a class="el" href="a00230.html">tbb::internal::no_copy</a>.
-<p>
-Inheritance diagram for tbb::spin_rw_mutex_v3::scoped_lock:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00111.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00253.html#a0">scoped_lock</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct lock that has not acquired a mutex.  <a href="#a0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00253.html#a1">scoped_lock</a> (<a class="el" href="a00252.html">spin_rw_mutex</a> &m, bool write=true)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex.  <a href="#a1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::spin_rw_mutex_v3::scoped_lock::~scoped_lock"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00253.html#a2">~scoped_lock</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Release lock (if lock is held). <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::spin_rw_mutex_v3::scoped_lock::acquire"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00253.html#a3">acquire</a> (<a class="el" href="a00252.html">spin_rw_mutex</a> &m, bool write=true)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00253.html#a4">upgrade_to_writer</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Upgrade reader to become a writer.  <a href="#a4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::spin_rw_mutex_v3::scoped_lock::release"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00253.html#a5">release</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a6" doxytag="tbb::spin_rw_mutex_v3::scoped_lock::downgrade_to_reader"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00253.html#a6">downgrade_to_reader</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Downgrade writer to become a reader. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a7" doxytag="tbb::spin_rw_mutex_v3::scoped_lock::try_acquire"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00253.html#a7">try_acquire</a> (<a class="el" href="a00252.html">spin_rw_mutex</a> &m, bool write=true)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Try acquire lock on given mutex. <br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-The scoped locking pattern. 
-<p>
-It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks. 
-<p>
-<hr><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" name="a0" doxytag="tbb::spin_rw_mutex_v3::scoped_lock::scoped_lock"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">tbb::spin_rw_mutex_v3::scoped_lock::scoped_lock           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Construct lock that has not acquired a mutex. 
-<p>
-Equivalent to zero-initialization of *this.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a1" doxytag="tbb::spin_rw_mutex_v3::scoped_lock::scoped_lock"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">tbb::spin_rw_mutex_v3::scoped_lock::scoped_lock           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top"><a class="el" href="a00252.html">spin_rw_mutex</a> & </td>
-          <td class="mdname" nowrap> <em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>bool </td>
-          <td class="mdname" nowrap> <em>write</em> = <code>true</code></td>
-        </tr>
-        <tr>
-          <td class="md"></td>
-          <td class="md">) </td>
-          <td class="md" colspan="2"><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Acquire lock on given mutex. 
-<p>
-Upon entry, *this should not be in the "have acquired a mutex" state.     </td>
-  </tr>
-</table>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="a4" doxytag="tbb::spin_rw_mutex_v3::scoped_lock::upgrade_to_writer"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">bool tbb::spin_rw_mutex_v3::scoped_lock::upgrade_to_writer           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Upgrade reader to become a writer. 
-<p>
-Returns true if the upgrade happened without re-acquiring the lock and false if opposite     </td>
-  </tr>
-</table>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00348.html">spin_rw_mutex.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00254.html b/doc/html/a00254.html
deleted file mode 100644
index 269924a..0000000
--- a/doc/html/a00254.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::split Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::split Class Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>Dummy type that distinguishes splitting constructor from copy constructor.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00356.html">tbb_stddef.h</a>></code>
-<p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Dummy type that distinguishes splitting constructor from copy constructor. 
-<p>
-See description of parallel_for and parallel_reduce for example usages. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00356.html">tbb_stddef.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00255.html b/doc/html/a00255.html
deleted file mode 100644
index 91c5ad1..0000000
--- a/doc/html/a00255.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::start_for< Range, Body, Partitioner > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::start_for< Range, Body, Partitioner > Class Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>Task type used in parallel_for.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00336.html">parallel_for.h</a>></code>
-<p>
-Inherits <a class="el" href="a00261.html">tbb::task</a>.
-<p>
-Inheritance diagram for tbb::internal::start_for< Range, Body, Partitioner >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00069.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e0" doxytag="tbb::internal::start_for::run"></a>
-void </td><td class="memItemRight" valign="bottom"><b>run</b> (const Range &range, const Body &body, const Partitioner &partitioner)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e1" doxytag="tbb::internal::start_for::run"></a>
-void </td><td class="memItemRight" valign="bottom"><b>run</b> (const Range &range, const Body &body, const Partitioner &partitioner, <a class="el" href="a00262.html">task_group_context</a> &context)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Range, typename Body, typename Partitioner><br>
- class tbb::internal::start_for< Range, Body, Partitioner ></h3>
-
-Task type used in parallel_for. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00336.html">parallel_for.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00256.html b/doc/html/a00256.html
index a7b3d57..d3892ff 100644
--- a/doc/html/a00256.html
+++ b/doc/html/a00256.html
@@ -1,46 +1,220 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::start_reduce< Range, Body, Partitioner > Class Template Reference</title>
+<title>parallel_sort.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::start_reduce< Range, Body, Partitioner > Class Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>Task type used to split the work of parallel_reduce.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00337.html">parallel_reduce.h</a>></code>
-<p>
-Inherits <a class="el" href="a00261.html">tbb::task</a>.
-<p>
-Inheritance diagram for tbb::internal::start_reduce< Range, Body, Partitioner >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00071.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e0" doxytag="tbb::internal::start_reduce::run"></a>
-void </td><td class="memItemRight" valign="bottom"><b>run</b> (const Range &range, Body &body, const Partitioner &partitioner)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e1" doxytag="tbb::internal::start_reduce::run"></a>
-void </td><td class="memItemRight" valign="bottom"><b>run</b> (const Range &range, Body &body, const Partitioner &partitioner)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e2" doxytag="tbb::internal::start_reduce::run"></a>
-void </td><td class="memItemRight" valign="bottom"><b>run</b> (const Range &range, Body &body, const Partitioner &partitioner, <a class="el" href="a00262.html">task_group_context</a> &context)</td></tr>
-
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::internal::start_reduce::finish_reduce"></a>
-class </td><td class="memItemRight" valign="bottom"><b>finish_reduce</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Range, typename Body, typename Partitioner><br>
- class tbb::internal::start_reduce< Range, Body, Partitioner ></h3>
-
-Task type used to split the work of parallel_reduce. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00337.html">parallel_reduce.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>parallel_sort.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_parallel_sort_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_parallel_sort_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "parallel_for.h"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "blocked_range.h"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include <algorithm></span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include <iterator></span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include <functional></span>
+<a name="l00029"></a>00029 
+<a name="l00030"></a>00030 <span class="keyword">namespace </span>tbb {
+<a name="l00031"></a>00031 
+<a name="l00033"></a>00033 <span class="keyword">namespace </span>internal {
+<a name="l00034"></a>00034 
+<a name="l00036"></a>00036 
+<a name="l00039"></a>00039 <span class="keyword">template</span><<span class="keyword">typename</span> RandomAccessIterator, <span class="keyword">typename</span> Compare>
+<a name="l00040"></a>00040 <span class="keyword">class </span>quick_sort_range: <span class="keyword">private</span> no_assign {
+<a name="l00041"></a>00041 
+<a name="l00042"></a>00042     <span class="keyword">inline</span> size_t median_of_three(<span class="keyword">const</span> RandomAccessIterator &array, size_t l, size_t m, size_t r)<span class="keyword"> const </span>{
+<a name="l00043"></a>00043         <span class="keywordflow">return</span> comp(array[l], array[m]) ? ( comp(array[m], array[r]) ? m : ( comp( array[l], array[r]) ? r : l ) ) 
+<a name="l00044"></a>00044                                         : ( comp(array[r], array[m]) ? m : ( comp( array[r], array[l] ) ? r : l ) );
+<a name="l00045"></a>00045     }
+<a name="l00046"></a>00046 
+<a name="l00047"></a>00047     <span class="keyword">inline</span> size_t pseudo_median_of_nine( <span class="keyword">const</span> RandomAccessIterator &array, <span class="keyword">const</span> quick_sort_range &range )<span class="keyword"> const </span>{
+<a name="l00048"></a>00048         size_t offset = range.size/8u;
+<a name="l00049"></a>00049         <span class="keywordflow">return</span> median_of_three(array, 
+<a name="l00050"></a>00050                                median_of_three(array, 0, offset, offset*2),
+<a name="l00051"></a>00051                                median_of_three(array, offset*3, offset*4, offset*5),
+<a name="l00052"></a>00052                                median_of_three(array, offset*6, offset*7, range.size - 1) );
+<a name="l00053"></a>00053 
+<a name="l00054"></a>00054     }
+<a name="l00055"></a>00055 
+<a name="l00056"></a>00056 <span class="keyword">public</span>:
+<a name="l00057"></a>00057 
+<a name="l00058"></a>00058     <span class="keyword">static</span> <span class="keyword">const</span> size_t grainsize = 500;
+<a name="l00059"></a>00059     <span class="keyword">const</span> Compare &comp;
+<a name="l00060"></a>00060     RandomAccessIterator begin;
+<a name="l00061"></a>00061     size_t size;
+<a name="l00062"></a>00062 
+<a name="l00063"></a>00063     quick_sort_range( RandomAccessIterator begin_, size_t size_, <span class="keyword">const</span> Compare &comp_ ) :
+<a name="l00064"></a>00064         comp(comp_), begin(begin_), size(size_) {}
+<a name="l00065"></a>00065 
+<a name="l00066"></a>00066     <span class="keywordtype">bool</span> empty()<span class="keyword"> const </span>{<span class="keywordflow">return</span> size==0;}
+<a name="l00067"></a>00067     <span class="keywordtype">bool</span> is_divisible()<span class="keyword"> const </span>{<span class="keywordflow">return</span> size>=grainsize;}
+<a name="l00068"></a>00068 
+<a name="l00069"></a>00069     quick_sort_range( quick_sort_range& range, split ) : comp(range.comp) {
+<a name="l00070"></a>00070         RandomAccessIterator array = range.begin;
+<a name="l00071"></a>00071         RandomAccessIterator key0 = range.begin; 
+<a name="l00072"></a>00072         size_t m = pseudo_median_of_nine(array, range);
+<a name="l00073"></a>00073         <span class="keywordflow">if</span> (m) std::swap ( array[0], array[m] );
+<a name="l00074"></a>00074 
+<a name="l00075"></a>00075         size_t i=0;
+<a name="l00076"></a>00076         size_t j=range.size;
+<a name="l00077"></a>00077         <span class="comment">// Partition interval [i+1,j-1] with key *key0.</span>
+<a name="l00078"></a>00078         <span class="keywordflow">for</span>(;;) {
+<a name="l00079"></a>00079             __TBB_ASSERT( i<j, NULL );
+<a name="l00080"></a>00080             <span class="comment">// Loop must terminate since array[l]==*key0.</span>
+<a name="l00081"></a>00081             <span class="keywordflow">do</span> {
+<a name="l00082"></a>00082                 --j;
+<a name="l00083"></a>00083                 __TBB_ASSERT( i<=j, <span class="stringliteral">"bad ordering relation?"</span> );
+<a name="l00084"></a>00084             } <span class="keywordflow">while</span>( comp( *key0, array[j] ));
+<a name="l00085"></a>00085             <span class="keywordflow">do</span> {
+<a name="l00086"></a>00086                 __TBB_ASSERT( i<=j, NULL );
+<a name="l00087"></a>00087                 <span class="keywordflow">if</span>( i==j ) <span class="keywordflow">goto</span> partition;
+<a name="l00088"></a>00088                 ++i;
+<a name="l00089"></a>00089             } <span class="keywordflow">while</span>( comp( array[i],*key0 ));
+<a name="l00090"></a>00090             <span class="keywordflow">if</span>( i==j ) <span class="keywordflow">goto</span> partition;
+<a name="l00091"></a>00091             std::swap( array[i], array[j] );
+<a name="l00092"></a>00092         }
+<a name="l00093"></a>00093 partition:
+<a name="l00094"></a>00094         <span class="comment">// Put the partition key were it belongs</span>
+<a name="l00095"></a>00095         std::swap( array[j], *key0 );
+<a name="l00096"></a>00096         <span class="comment">// array[l..j) is less or equal to key.</span>
+<a name="l00097"></a>00097         <span class="comment">// array(j..r) is greater or equal to key.</span>
+<a name="l00098"></a>00098         <span class="comment">// array[j] is equal to key</span>
+<a name="l00099"></a>00099         i=j+1;
+<a name="l00100"></a>00100         begin = array+i;
+<a name="l00101"></a>00101         size = range.size-i;
+<a name="l00102"></a>00102         range.size = j;
+<a name="l00103"></a>00103     }
+<a name="l00104"></a>00104 };
+<a name="l00105"></a>00105 
+<a name="l00107"></a>00107 
+<a name="l00108"></a>00108 <span class="keyword">template</span><<span class="keyword">typename</span> RandomAccessIterator, <span class="keyword">typename</span> Compare>
+<a name="l00109"></a>00109 <span class="keyword">class </span>quick_sort_pretest_body : internal::no_assign {
+<a name="l00110"></a>00110     <span class="keyword">const</span> Compare &comp;
+<a name="l00111"></a>00111 
+<a name="l00112"></a>00112 <span class="keyword">public</span>:
+<a name="l00113"></a>00113     quick_sort_pretest_body(<span class="keyword">const</span> Compare &_comp) : comp(_comp) {}
+<a name="l00114"></a>00114 
+<a name="l00115"></a>00115     <span class="keywordtype">void</span> operator()( <span class="keyword">const</span> blocked_range<RandomAccessIterator>& range )<span class="keyword"> const </span>{
+<a name="l00116"></a>00116         task &my_task = <a class="code" href="a00132.html#bd43e8d6249738efafd12d6a4c72c5e3">task::self</a>();
+<a name="l00117"></a>00117         RandomAccessIterator my_end = range.end();
+<a name="l00118"></a>00118 
+<a name="l00119"></a>00119         <span class="keywordtype">int</span> i = 0;
+<a name="l00120"></a>00120         <span class="keywordflow">for</span> (RandomAccessIterator k = range.begin(); k != my_end; ++k, ++i) {
+<a name="l00121"></a>00121             <span class="keywordflow">if</span> ( i%64 == 0 && my_task.is_cancelled() ) <span class="keywordflow">break</span>;
+<a name="l00122"></a>00122           
+<a name="l00123"></a>00123             <span class="comment">// The k-1 is never out-of-range because the first chunk starts at begin+serial_cutoff+1</span>
+<a name="l00124"></a>00124             <span class="keywordflow">if</span> ( comp( *(k), *(k-1) ) ) {
+<a name="l00125"></a>00125                 my_task.cancel_group_execution();
+<a name="l00126"></a>00126                 <span class="keywordflow">break</span>;
+<a name="l00127"></a>00127             }
+<a name="l00128"></a>00128         }
+<a name="l00129"></a>00129     }
+<a name="l00130"></a>00130 
+<a name="l00131"></a>00131 };
+<a name="l00132"></a>00132 
+<a name="l00134"></a>00134 
+<a name="l00135"></a>00135 <span class="keyword">template</span><<span class="keyword">typename</span> RandomAccessIterator, <span class="keyword">typename</span> Compare>
+<a name="l00136"></a>00136 <span class="keyword">struct </span>quick_sort_body {
+<a name="l00137"></a>00137     <span class="keywordtype">void</span> operator()( <span class="keyword">const</span> quick_sort_range<RandomAccessIterator,Compare>& range )<span class="keyword"> const </span>{
+<a name="l00138"></a>00138         <span class="comment">//SerialQuickSort( range.begin, range.size, range.comp );</span>
+<a name="l00139"></a>00139         std::sort( range.begin, range.begin + range.size, range.comp );
+<a name="l00140"></a>00140     }
+<a name="l00141"></a>00141 };
+<a name="l00142"></a>00142 
+<a name="l00144"></a>00144 
+<a name="l00145"></a>00145 <span class="keyword">template</span><<span class="keyword">typename</span> RandomAccessIterator, <span class="keyword">typename</span> Compare>
+<a name="l00146"></a>00146 <span class="keywordtype">void</span> parallel_quick_sort( RandomAccessIterator begin, RandomAccessIterator end, <span class="keyword">const</span> Compare& comp ) {
+<a name="l00147"></a>00147     task_group_context my_context;
+<a name="l00148"></a>00148     <span class="keyword">const</span> <span class="keywordtype">int</span> serial_cutoff = 9;
+<a name="l00149"></a>00149 
+<a name="l00150"></a>00150     __TBB_ASSERT( begin + serial_cutoff < end, <span class="stringliteral">"min_parallel_size is smaller than serial cutoff?"</span> );
+<a name="l00151"></a>00151     RandomAccessIterator k;
+<a name="l00152"></a>00152     <span class="keywordflow">for</span> ( k = begin ; k != begin + serial_cutoff; ++k ) {
+<a name="l00153"></a>00153         <span class="keywordflow">if</span> ( comp( *(k+1), *k ) ) {
+<a name="l00154"></a>00154             <span class="keywordflow">goto</span> do_parallel_quick_sort;
+<a name="l00155"></a>00155         }
+<a name="l00156"></a>00156     }
+<a name="l00157"></a>00157 
+<a name="l00158"></a>00158     <a class="code" href="a00183.html#g2e90dde1b5dfe6cb03e64c7d7cd0d778">parallel_for</a>( blocked_range<RandomAccessIterator>(k+1, end),
+<a name="l00159"></a>00159                   quick_sort_pretest_body<RandomAccessIterator,Compare>(comp),
+<a name="l00160"></a>00160                   auto_partitioner(),
+<a name="l00161"></a>00161                   my_context);
+<a name="l00162"></a>00162 
+<a name="l00163"></a>00163     <span class="keywordflow">if</span> (my_context.is_group_execution_cancelled())
+<a name="l00164"></a>00164 do_parallel_quick_sort:
+<a name="l00165"></a>00165         <a class="code" href="a00183.html#g2e90dde1b5dfe6cb03e64c7d7cd0d778">parallel_for</a>( quick_sort_range<RandomAccessIterator,Compare>(begin, end-begin, comp ), 
+<a name="l00166"></a>00166                       quick_sort_body<RandomAccessIterator,Compare>(),
+<a name="l00167"></a>00167                       auto_partitioner() );
+<a name="l00168"></a>00168 }
+<a name="l00169"></a>00169 
+<a name="l00170"></a>00170 } <span class="comment">// namespace internal</span>
+<a name="l00172"></a>00172 <span class="comment"></span>
+<a name="l00183"></a>00183 
+<a name="l00185"></a>00185 
+<a name="l00188"></a>00188 <span class="keyword">template</span><<span class="keyword">typename</span> RandomAccessIterator, <span class="keyword">typename</span> Compare>
+<a name="l00189"></a><a class="code" href="a00183.html#g49edcf9447cd91a9527a3f8e8512b7aa">00189</a> <span class="keywordtype">void</span> <a class="code" href="a00183.html#g49edcf9447cd91a9527a3f8e8512b7aa">parallel_sort</a>( RandomAccessIterator begin, RandomAccessIterator end, <span class="keyword">const</span> Compare& comp) { 
+<a name="l00190"></a>00190     <span class="keyword">const</span> <span class="keywordtype">int</span> min_parallel_size = 500; 
+<a name="l00191"></a>00191     <span class="keywordflow">if</span>( end > begin ) {
+<a name="l00192"></a>00192         <span class="keywordflow">if</span> (end - begin < min_parallel_size) { 
+<a name="l00193"></a>00193             std::sort(begin, end, comp);
+<a name="l00194"></a>00194         } <span class="keywordflow">else</span> {
+<a name="l00195"></a>00195             internal::parallel_quick_sort(begin, end, comp);
+<a name="l00196"></a>00196         }
+<a name="l00197"></a>00197     }
+<a name="l00198"></a>00198 }
+<a name="l00199"></a>00199 
+<a name="l00201"></a>00201 
+<a name="l00202"></a>00202 <span class="keyword">template</span><<span class="keyword">typename</span> RandomAccessIterator>
+<a name="l00203"></a><a class="code" href="a00183.html#g16c3eb77d0e530834c51ce3857f01012">00203</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="a00183.html#g49edcf9447cd91a9527a3f8e8512b7aa">parallel_sort</a>( RandomAccessIterator begin, RandomAccessIterator end ) { 
+<a name="l00204"></a>00204     <a class="code" href="a00183.html#g49edcf9447cd91a9527a3f8e8512b7aa">parallel_sort</a>( begin, end, std::less< <span class="keyword">typename</span> std::iterator_traits<RandomAccessIterator>::value_type >() );
+<a name="l00205"></a>00205 }
+<a name="l00206"></a>00206 
+<a name="l00208"></a>00208 
+<a name="l00209"></a>00209 <span class="keyword">template</span><<span class="keyword">typename</span> T>
+<a name="l00210"></a><a class="code" href="a00183.html#gc7576f82fdedc8a701a6c17ad9415926">00210</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="a00183.html#g49edcf9447cd91a9527a3f8e8512b7aa">parallel_sort</a>( T * begin, T * end ) {
+<a name="l00211"></a>00211     <a class="code" href="a00183.html#g49edcf9447cd91a9527a3f8e8512b7aa">parallel_sort</a>( begin, end, std::less< T >() );
+<a name="l00212"></a>00212 }   
+<a name="l00214"></a>00214 
+<a name="l00215"></a>00215 
+<a name="l00216"></a>00216 } <span class="comment">// namespace tbb</span>
+<a name="l00217"></a>00217 
+<a name="l00218"></a>00218 <span class="preprocessor">#endif</span>
+<a name="l00219"></a>00219 <span class="preprocessor"></span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00257.html b/doc/html/a00257.html
deleted file mode 100644
index c7b9023..0000000
--- a/doc/html/a00257.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::start_reduce_with_affinity< Range, Body > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::start_reduce_with_affinity< Range, Body > Class Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>Task type used to split the work of parallel_reduce with <a class="el" href="a00188.html">affinity_partitioner</a>.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00337.html">parallel_reduce.h</a>></code>
-<p>
-Inherits <a class="el" href="a00261.html">tbb::task</a>.
-<p>
-Inheritance diagram for tbb::internal::start_reduce_with_affinity< Range, Body >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00073.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e0" doxytag="tbb::internal::start_reduce_with_affinity::run"></a>
-void </td><td class="memItemRight" valign="bottom"><b>run</b> (const Range &range, Body &body, <a class="el" href="a00188.html">affinity_partitioner</a> &partitioner)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e1" doxytag="tbb::internal::start_reduce_with_affinity::run"></a>
-void </td><td class="memItemRight" valign="bottom"><b>run</b> (const Range &range, Body &body, <a class="el" href="a00188.html">affinity_partitioner</a> &partitioner, <a class="el" href="a00262.html">task_group_context</a> &context)</td></tr>
-
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::internal::start_reduce_with_affinity::finish_reduce_with_affinity"></a>
-class </td><td class="memItemRight" valign="bottom"><b>finish_reduce_with_affinity</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Range, typename Body><br>
- class tbb::internal::start_reduce_with_affinity< Range, Body ></h3>
-
-Task type used to split the work of parallel_reduce with <a class="el" href="a00188.html">affinity_partitioner</a>. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00337.html">parallel_reduce.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00258.html b/doc/html/a00258.html
deleted file mode 100644
index aaa28a1..0000000
--- a/doc/html/a00258.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::start_scan< Range, Body, Partitioner > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::start_scan< Range, Body, Partitioner > Class Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>Initial task to split the work.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00338.html">parallel_scan.h</a>></code>
-<p>
-Inherits <a class="el" href="a00261.html">tbb::task</a>.
-<p>
-Inheritance diagram for tbb::internal::start_scan< Range, Body, Partitioner >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00080.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::internal::start_scan::start_scan"></a>
- </td><td class="memItemRight" valign="bottom"><b>start_scan</b> (<a class="el" href="a00260.html">sum_node_type</a> *&return_slot_, <a class="el" href="a00258.html">start_scan</a> &parent, <a class="el" href="a00260.html">sum_node_type</a> *parent_sum_)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::internal::start_scan::start_scan"></a>
- </td><td class="memItemRight" valign="bottom"><b>start_scan</b> (<a class="el" href="a00260.html">sum_node_type</a> *&return_slot_, const Range &range_, <a class="el" href="a00218.html">final_sum_type</a> &body_, const Partitioner &partitioner_)</td></tr>
-
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e0" doxytag="tbb::internal::start_scan::run"></a>
-void </td><td class="memItemRight" valign="bottom"><b>run</b> (const Range &range, Body &body, const Partitioner &partitioner)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Range, typename Body, typename Partitioner = simple_partitioner><br>
- class tbb::internal::start_scan< Range, Body, Partitioner ></h3>
-
-Initial task to split the work. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00338.html">parallel_scan.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00259.html b/doc/html/a00259.html
deleted file mode 100644
index 5db3e96..0000000
--- a/doc/html/a00259.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::strip< T > Struct Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::strip< T > Struct Template Reference</h1>Strips its template type argument from 'cv' and '&' qualifiers.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00335.html">parallel_do.h</a>></code>
-<p>
-<a href="a00053.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w0" doxytag="tbb::internal::strip::type"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>type</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename T><br>
- struct tbb::internal::strip< T ></h3>
-
-Strips its template type argument from 'cv' and '&' qualifiers. 
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="a00335.html">parallel_do.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00260.html b/doc/html/a00260.html
index f30d98b..bac2afd 100644
--- a/doc/html/a00260.html
+++ b/doc/html/a00260.html
@@ -1,49 +1,191 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::sum_node< Range, Body > Class Template Reference</title>
+<title>parallel_while.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::sum_node< Range, Body > Class Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>Split work to be done in the scan.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00338.html">parallel_scan.h</a>></code>
-<p>
-Inherits <a class="el" href="a00261.html">tbb::task</a>.
-<p>
-Inheritance diagram for tbb::internal::sum_node< Range, Body >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00078.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="o0" doxytag="tbb::internal::sum_node::incoming"></a>
-<a class="el" href="a00218.html">final_sum_type</a> * </td><td class="memItemRight" valign="bottom"><b>incoming</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="o1" doxytag="tbb::internal::sum_node::body"></a>
-<a class="el" href="a00218.html">final_sum_type</a> * </td><td class="memItemRight" valign="bottom"><b>body</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="o2" doxytag="tbb::internal::sum_node::stuff_last"></a>
-Body * </td><td class="memItemRight" valign="bottom"><b>stuff_last</b></td></tr>
-
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::internal::sum_node::start_scan"></a>
-class </td><td class="memItemRight" valign="bottom"><b>start_scan</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n1" doxytag="tbb::internal::sum_node::finish_scan"></a>
-class </td><td class="memItemRight" valign="bottom"><b>finish_scan</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Range, typename Body><br>
- class tbb::internal::sum_node< Range, Body ></h3>
-
-Split work to be done in the scan. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00338.html">parallel_scan.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>parallel_while.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_parallel_while</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_parallel_while</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "task.h"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include <new></span>
+<a name="l00026"></a>00026 
+<a name="l00027"></a>00027 <span class="keyword">namespace </span>tbb {
+<a name="l00028"></a>00028 
+<a name="l00029"></a>00029 <span class="keyword">template</span><<span class="keyword">typename</span> Body>
+<a name="l00030"></a>00030 <span class="keyword">class </span>parallel_while;
+<a name="l00031"></a>00031 
+<a name="l00033"></a>00033 <span class="keyword">namespace </span>internal {
+<a name="l00034"></a>00034 
+<a name="l00035"></a>00035     <span class="keyword">template</span><<span class="keyword">typename</span> Stream, <span class="keyword">typename</span> Body> <span class="keyword">class </span>while_task;
+<a name="l00036"></a>00036 
+<a name="l00038"></a>00038 
+<a name="l00040"></a>00040     <span class="keyword">template</span><<span class="keyword">typename</span> Body>
+<a name="l00041"></a>00041     <span class="keyword">class </span>while_iteration_task: <span class="keyword">public</span> task {
+<a name="l00042"></a>00042         <span class="keyword">const</span> Body& my_body;
+<a name="l00043"></a>00043         <span class="keyword">typename</span> Body::argument_type my_value;
+<a name="l00044"></a>00044         <span class="comment">/*override*/</span> task* execute() {
+<a name="l00045"></a>00045             my_body(my_value); 
+<a name="l00046"></a>00046             <span class="keywordflow">return</span> NULL;
+<a name="l00047"></a>00047         }
+<a name="l00048"></a>00048         while_iteration_task( <span class="keyword">const</span> <span class="keyword">typename</span> Body::argument_type& value, <span class="keyword">const</span> Body& body ) : 
+<a name="l00049"></a>00049             my_body(body), my_value(value)
+<a name="l00050"></a>00050         {}
+<a name="l00051"></a>00051         <span class="keyword">template</span><<span class="keyword">typename</span> Body_> <span class="keyword">friend</span> <span class="keyword">class </span>while_group_task;
+<a name="l00052"></a>00052         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00115.html">tbb::parallel_while</a><Body>;
+<a name="l00053"></a>00053     };
+<a name="l00054"></a>00054 
+<a name="l00056"></a>00056 
+<a name="l00058"></a>00058     <span class="keyword">template</span><<span class="keyword">typename</span> Body>
+<a name="l00059"></a>00059     <span class="keyword">class </span>while_group_task: <span class="keyword">public</span> task {
+<a name="l00060"></a>00060         <span class="keyword">static</span> <span class="keyword">const</span> size_t max_arg_size = 4;         
+<a name="l00061"></a>00061         <span class="keyword">const</span> Body& my_body;
+<a name="l00062"></a>00062         size_t size;
+<a name="l00063"></a>00063         <span class="keyword">typename</span> Body::argument_type my_arg[max_arg_size];
+<a name="l00064"></a>00064         while_group_task( <span class="keyword">const</span> Body& body ) : my_body(body), size(0) {} 
+<a name="l00065"></a>00065         <span class="comment">/*override*/</span> task* execute() {
+<a name="l00066"></a>00066             <span class="keyword">typedef</span> while_iteration_task<Body> iteration_type;
+<a name="l00067"></a>00067             __TBB_ASSERT( size>0, NULL );
+<a name="l00068"></a>00068             task_list list;
+<a name="l00069"></a>00069             task* t; 
+<a name="l00070"></a>00070             size_t k=0; 
+<a name="l00071"></a>00071             <span class="keywordflow">for</span>(;;) {
+<a name="l00072"></a>00072                 t = <span class="keyword">new</span>( allocate_child() ) iteration_type(my_arg[k],my_body); 
+<a name="l00073"></a>00073                 <span class="keywordflow">if</span>( ++k==size ) <span class="keywordflow">break</span>;
+<a name="l00074"></a>00074                 list.push_back(*t);
+<a name="l00075"></a>00075             }
+<a name="l00076"></a>00076             set_ref_count(<span class="keywordtype">int</span>(k+1));
+<a name="l00077"></a>00077             spawn(list);
+<a name="l00078"></a>00078             spawn_and_wait_for_all(*t);
+<a name="l00079"></a>00079             <span class="keywordflow">return</span> NULL;
+<a name="l00080"></a>00080         }
+<a name="l00081"></a>00081         <span class="keyword">template</span><<span class="keyword">typename</span> Stream, <span class="keyword">typename</span> Body_> <span class="keyword">friend</span> <span class="keyword">class </span>while_task;
+<a name="l00082"></a>00082     };
+<a name="l00083"></a>00083     
+<a name="l00085"></a>00085 
+<a name="l00087"></a>00087     <span class="keyword">template</span><<span class="keyword">typename</span> Stream, <span class="keyword">typename</span> Body>
+<a name="l00088"></a>00088     <span class="keyword">class </span>while_task: <span class="keyword">public</span> task {
+<a name="l00089"></a>00089         Stream& my_stream;
+<a name="l00090"></a>00090         <span class="keyword">const</span> Body& my_body;
+<a name="l00091"></a>00091         empty_task& my_barrier;
+<a name="l00092"></a>00092         <span class="comment">/*override*/</span> task* execute() {
+<a name="l00093"></a>00093             <span class="keyword">typedef</span> while_group_task<Body> block_type;
+<a name="l00094"></a>00094             block_type& t = *<span class="keyword">new</span>( allocate_additional_child_of(my_barrier) ) block_type(my_body);
+<a name="l00095"></a>00095             size_t k=0; 
+<a name="l00096"></a>00096             <span class="keywordflow">while</span>( my_stream.pop_if_present(t.my_arg[k]) ) {
+<a name="l00097"></a>00097                 <span class="keywordflow">if</span>( ++k==block_type::max_arg_size ) {
+<a name="l00098"></a>00098                     <span class="comment">// There might be more iterations.</span>
+<a name="l00099"></a>00099                     recycle_to_reexecute();
+<a name="l00100"></a>00100                     <span class="keywordflow">break</span>;
+<a name="l00101"></a>00101                 }
+<a name="l00102"></a>00102             }
+<a name="l00103"></a>00103             <span class="keywordflow">if</span>( k==0 ) {
+<a name="l00104"></a>00104                 destroy(t);
+<a name="l00105"></a>00105                 <span class="keywordflow">return</span> NULL;
+<a name="l00106"></a>00106             } <span class="keywordflow">else</span> {
+<a name="l00107"></a>00107                 t.size = k;
+<a name="l00108"></a>00108                 <span class="keywordflow">return</span> &t;
+<a name="l00109"></a>00109             }
+<a name="l00110"></a>00110         }
+<a name="l00111"></a>00111         while_task( Stream& stream, <span class="keyword">const</span> Body& body, empty_task& barrier ) : 
+<a name="l00112"></a>00112             my_stream(stream),
+<a name="l00113"></a>00113             my_body(body),
+<a name="l00114"></a>00114             my_barrier(barrier)
+<a name="l00115"></a>00115         {} 
+<a name="l00116"></a>00116         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00115.html">tbb::parallel_while</a><Body>;
+<a name="l00117"></a>00117     };
+<a name="l00118"></a>00118 
+<a name="l00119"></a>00119 } <span class="comment">// namespace internal</span>
+<a name="l00121"></a>00121 <span class="comment"></span>
+<a name="l00123"></a>00123 
+<a name="l00128"></a>00128 <span class="keyword">template</span><<span class="keyword">typename</span> Body>
+<a name="l00129"></a><a class="code" href="a00115.html">00129</a> <span class="keyword">class </span><a class="code" href="a00115.html">parallel_while</a>: internal::no_copy {
+<a name="l00130"></a>00130 <span class="keyword">public</span>:
+<a name="l00132"></a><a class="code" href="a00115.html#36e26ba3880c7bcf804a97ba0cbe133f">00132</a>     <a class="code" href="a00115.html#36e26ba3880c7bcf804a97ba0cbe133f">parallel_while</a>() : my_body(NULL), my_barrier(NULL) {}
+<a name="l00133"></a>00133 
+<a name="l00135"></a><a class="code" href="a00115.html#6fcfc973cc56b79c6d0fbb8a31be7e84">00135</a>     <a class="code" href="a00115.html#6fcfc973cc56b79c6d0fbb8a31be7e84">~parallel_while</a>() {
+<a name="l00136"></a>00136         <span class="keywordflow">if</span>( my_barrier ) {
+<a name="l00137"></a>00137             my_barrier-><a class="code" href="a00132.html#a57def00c8e9d932dbea0b3ee23991b9">destroy</a>(*my_barrier);    
+<a name="l00138"></a>00138             my_barrier = NULL;
+<a name="l00139"></a>00139         }
+<a name="l00140"></a>00140     }
+<a name="l00141"></a>00141 
+<a name="l00143"></a><a class="code" href="a00115.html#fa297e53d3af2a101e712bc200233e9c">00143</a>     <span class="keyword">typedef</span> <span class="keyword">typename</span> Body::argument_type <a class="code" href="a00115.html#fa297e53d3af2a101e712bc200233e9c">value_type</a>;
+<a name="l00144"></a>00144 
+<a name="l00146"></a>00146 
+<a name="l00149"></a>00149     <span class="keyword">template</span><<span class="keyword">typename</span> Stream>
+<a name="l00150"></a>00150     <span class="keywordtype">void</span> <a class="code" href="a00115.html#b32a0a6e5e09ebb7fad3e6652c19afe5">run</a>( Stream& stream, <span class="keyword">const</span> Body& body );
+<a name="l00151"></a>00151 
+<a name="l00153"></a>00153 
+<a name="l00154"></a>00154     <span class="keywordtype">void</span> <a class="code" href="a00115.html#e131c560057a58229992b61eb8dba4c6">add</a>( <span class="keyword">const</span> <a class="code" href="a00115.html#fa297e53d3af2a101e712bc200233e9c">value_type</a>& item );
+<a name="l00155"></a>00155 
+<a name="l00156"></a>00156 <span class="keyword">private</span>:
+<a name="l00157"></a>00157     <span class="keyword">const</span> Body* my_body;
+<a name="l00158"></a>00158     <a class="code" href="a00108.html">empty_task</a>* my_barrier;
+<a name="l00159"></a>00159 };
+<a name="l00160"></a>00160 
+<a name="l00161"></a>00161 <span class="keyword">template</span><<span class="keyword">typename</span> Body>
+<a name="l00162"></a>00162 <span class="keyword">template</span><<span class="keyword">typename</span> Stream>
+<a name="l00163"></a><a class="code" href="a00115.html#b32a0a6e5e09ebb7fad3e6652c19afe5">00163</a> <span class="keywordtype">void</span> <a class="code" href="a00115.html">parallel_while<Body>::run</a>( Stream& stream, <span class="keyword">const</span> Body& body ) {
+<a name="l00164"></a>00164     <span class="keyword">using namespace </span>internal;
+<a name="l00165"></a>00165     <a class="code" href="a00108.html">empty_task</a>& barrier = *<span class="keyword">new</span>( <a class="code" href="a00132.html#23acb0da0afd690da797f9f882027d34">task::allocate_root</a>() ) <a class="code" href="a00108.html">empty_task</a>();
+<a name="l00166"></a>00166     my_body = &body;
+<a name="l00167"></a>00167     my_barrier = &barrier;
+<a name="l00168"></a>00168     my_barrier-><a class="code" href="a00132.html#06a4206a57e8e12a439b14d6d41cfd92">set_ref_count</a>(2);
+<a name="l00169"></a>00169     while_task<Stream,Body>& w = *<span class="keyword">new</span>( my_barrier-><a class="code" href="a00132.html#1ff794f7053cd9148d5f280fbf07377f">allocate_child</a>() ) while_task<Stream,Body>( stream, body, barrier );
+<a name="l00170"></a>00170     my_barrier-><a class="code" href="a00132.html#3ce28ca9baa771cfc37ecd72e69c4f3c">spawn_and_wait_for_all</a>(w);
+<a name="l00171"></a>00171     my_barrier-><a class="code" href="a00132.html#a57def00c8e9d932dbea0b3ee23991b9">destroy</a>(*my_barrier);
+<a name="l00172"></a>00172     my_barrier = NULL;
+<a name="l00173"></a>00173     my_body = NULL;
+<a name="l00174"></a>00174 }
+<a name="l00175"></a>00175 
+<a name="l00176"></a>00176 <span class="keyword">template</span><<span class="keyword">typename</span> Body>
+<a name="l00177"></a><a class="code" href="a00115.html#e131c560057a58229992b61eb8dba4c6">00177</a> <span class="keywordtype">void</span> <a class="code" href="a00115.html">parallel_while<Body>::add</a>( <span class="keyword">const</span> value_type& item ) {
+<a name="l00178"></a>00178     __TBB_ASSERT(my_barrier,<span class="stringliteral">"attempt to add to parallel_while that is not running"</span>);
+<a name="l00179"></a>00179     <span class="keyword">typedef</span> internal::while_iteration_task<Body> iteration_type;
+<a name="l00180"></a>00180     iteration_type& i = *<span class="keyword">new</span>( <a class="code" href="a00132.html#bd43e8d6249738efafd12d6a4c72c5e3">task::self</a>().<a class="code" href="a00132.html#43bfe64c0e9333c0ca895cc0c375512b">allocate_additional_child_of</a>(*my_barrier) ) iteration_type(item,*my_body);
+<a name="l00181"></a>00181     <a class="code" href="a00132.html#bd43e8d6249738efafd12d6a4c72c5e3">task::self</a>().<a class="code" href="a00132.html#f7737143d458f1ed1c0d7da3971d9e6b">spawn</a>( i );
+<a name="l00182"></a>00182 }
+<a name="l00183"></a>00183 
+<a name="l00184"></a>00184 } <span class="comment">// namespace </span>
+<a name="l00185"></a>00185 
+<a name="l00186"></a>00186 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_parallel_while */</span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00261.html b/doc/html/a00261.html
deleted file mode 100644
index c214332..0000000
--- a/doc/html/a00261.html
+++ /dev/null
@@ -1,743 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::task Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::task Class Reference</h1>Base class for user-defined tasks.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00349.html">task.h</a>></code>
-<p>
-Inherits <a class="el" href="a00230.html">tbb::internal::no_copy</a>.
-<p>
-Inherited by <a class="el" href="a00215.html">tbb::empty_task</a>, <a class="el" href="a00212.html">tbb::internal::do_group_task_forward< Iterator, Body, Item ></a>, tbb::internal::do_group_task_input< Body, Item >, <a class="el" href="a00213.html">tbb::internal::do_iteration_task< Body, Item ></a>, tbb::internal::do_iteration_task_iter< Iterator, Body, Item >, <a class="el" href="a00214.html">tbb::internal::do_task_iter< Iterator, Body, Item ></a>, <a class [...]
-<p>
-Inheritance diagram for tbb::task:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00122.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="a00319.html#a22">internal::intptr</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#w0">depth_type</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A scheduling depth.  <a href="#w0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="a00319.html#a11">internal::affinity_id</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#w1">affinity_id</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">An id as used for specifying affinity.  <a href="#w1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#w8">state_type</a> { <br>
-  <a class="el" href="a00261.html#w8w2">executing</a>, 
-<a class="el" href="a00261.html#w8w3">reexecute</a>, 
-<a class="el" href="a00261.html#w8w4">ready</a>, 
-<a class="el" href="a00261.html#w8w5">allocated</a>, 
-<br>
-  <a class="el" href="a00261.html#w8w6">freed</a>, 
-<a class="el" href="a00261.html#w8w7">recycle</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Enumeration of task states that the scheduler considers.  <a href="#w8">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::task::~task"></a>
-virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a0">~task</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::task::execute"></a>
-virtual <a class="el" href="a00261.html">task</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a1">execute</a> ()=0</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Should be overridden by derived classes. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">internal::allocate_continuation_proxy & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a2">allocate_continuation</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns proxy for overloaded new that allocates a continuation task of *this.  <a href="#a2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::task::allocate_child"></a>
-internal::allocate_child_proxy & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a3">allocate_child</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns proxy for overloaded new that allocates a child task of *this. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">internal::allocate_additional_child_of_proxy </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a4">allocate_additional_child_of</a> (<a class="el" href="a00261.html">task</a> &t)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Like allocate_child, except that task's parent becomes "t", not this.  <a href="#a4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a5">destroy</a> (<a class="el" href="a00261.html">task</a> &victim)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroy a task.  <a href="#a5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a6">recycle_as_continuation</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Change this to be a continuation of its former self.  <a href="#a6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a7">recycle_as_safe_continuation</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Recommended to use, safe variant of recycle_as_continuation.  <a href="#a7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a8" doxytag="tbb::task::recycle_as_child_of"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a8">recycle_as_child_of</a> (<a class="el" href="a00261.html">task</a> &new_parent)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Change this to be a child of new_parent. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a9">recycle_to_reexecute</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Schedule this for reexecution after current <a class="el" href="a00261.html#a1">execute()</a> returns.  <a href="#a9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a10" doxytag="tbb::task::depth"></a>
-<a class="el" href="a00261.html#w0">depth_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a10">depth</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scheduling depth. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a11">set_depth</a> (<a class="el" href="a00261.html#w0">depth_type</a> new_depth)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set scheduling depth to given value.  <a href="#a11"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a12">add_to_depth</a> (int delta)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Change scheduling depth by given amount.  <a href="#a12"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a13" doxytag="tbb::task::set_ref_count"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a13">set_ref_count</a> (int count)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set reference count. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a14">spawn</a> (<a class="el" href="a00261.html">task</a> &child)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Schedule task for execution when a worker becomes available.  <a href="#a14"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a15">spawn</a> (<a class="el" href="a00263.html">task_list</a> &list)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Spawn multiple tasks and clear list.  <a href="#a15"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a16" doxytag="tbb::task::spawn_and_wait_for_all"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a16">spawn_and_wait_for_all</a> (<a class="el" href="a00261.html">task</a> &child)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Similar to spawn followed by wait_for_all, but more efficient. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a17" doxytag="tbb::task::spawn_and_wait_for_all"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a17">spawn_and_wait_for_all</a> (<a class="el" href="a00263.html">task_list</a> &list)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Similar to spawn followed by wait_for_all, but more efficient. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a18">wait_for_all</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Wait for reference count to become one, and set reference count to zero.  <a href="#a18"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a19" doxytag="tbb::task::parent"></a>
-<a class="el" href="a00261.html">task</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a19">parent</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">task on whose behalf this task is working, or NULL if this is a root. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a20" doxytag="tbb::task::is_stolen_task"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a20">is_stolen_task</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">True if task is owned by different thread than thread that owns its parent. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a21" doxytag="tbb::task::state"></a>
-<a class="el" href="a00261.html#w8">state_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a21">state</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Current execution state. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a22" doxytag="tbb::task::ref_count"></a>
-int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a22">ref_count</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The internal reference count. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a23" doxytag="tbb::task::is_owned_by_current_thread"></a>
-bool __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a23">is_owned_by_current_thread</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">True if this task is owned by the calling thread; false otherwise. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a24" doxytag="tbb::task::set_affinity"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a24">set_affinity</a> (<a class="el" href="a00261.html#w1">affinity_id</a> id)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set affinity for this task. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a25" doxytag="tbb::task::affinity"></a>
-<a class="el" href="a00261.html#w1">affinity_id</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a25">affinity</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Current affinity of this task. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a26">note_affinity</a> (<a class="el" href="a00261.html#w1">affinity_id</a> id)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Invoked by scheduler to notify task that it ran on unexpected thread.  <a href="#a26"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a27">cancel_group_execution</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Initiates cancellation of all tasks in this cancellation group and its subordinate groups.  <a href="#a27"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a28" doxytag="tbb::task::is_cancelled"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#a28">is_cancelled</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if the context received cancellation request. <br></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e0" doxytag="tbb::task::allocate_root"></a>
-internal::allocate_root_proxy </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#e0">allocate_root</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns proxy for overloaded new that allocates a root task. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e1" doxytag="tbb::task::allocate_root"></a>
-internal::allocate_root_with_context_proxy </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#e1">allocate_root</a> (<a class="el" href="a00262.html">task_group_context</a> &ctx)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns proxy for overloaded new that allocates a root task associated with user supplied context. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#e2">spawn_root_and_wait</a> (<a class="el" href="a00261.html">task</a> &root)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Spawn task allocated by allocate_root, wait for it to complete, and deallocate it.  <a href="#e2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#e3">spawn_root_and_wait</a> (<a class="el" href="a00263.html">task_list</a> &root_list)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Spawn root tasks on list and wait for all of them to finish.  <a href="#e3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e4" doxytag="tbb::task::self"></a>
-<a class="el" href="a00261.html">task</a> &__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#e4">self</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The innermost task being executed or destroyed by the current thread at the moment. <br></td></tr>
-<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b0" doxytag="tbb::task::task"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html#b0">task</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Default constructor. <br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::task::task_list"></a>
-class </td><td class="memItemRight" valign="bottom"><b>task_list</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n1" doxytag="tbb::task::internal::scheduler"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::scheduler</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n2" doxytag="tbb::task::internal::allocate_root_proxy"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::allocate_root_proxy</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n3" doxytag="tbb::task::internal::allocate_root_with_context_proxy"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::allocate_root_with_context_proxy</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n4" doxytag="tbb::task::internal::allocate_continuation_proxy"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::allocate_continuation_proxy</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n5" doxytag="tbb::task::internal::allocate_child_proxy"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::allocate_child_proxy</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n6" doxytag="tbb::task::internal::allocate_additional_child_of_proxy"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::allocate_additional_child_of_proxy</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Base class for user-defined tasks. 
-<p>
-<hr><h2>Member Typedef Documentation</h2>
-<a class="anchor" name="w1" doxytag="tbb::task::affinity_id"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">typedef <a class="el" href="a00319.html#a11">internal::affinity_id</a> <a class="el" href="a00261.html#w1">tbb::task::affinity_id</a>          </td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-An id as used for specifying affinity. 
-<p>
-Guaranteed to be integral type. Value of 0 means no affinity.     </td>
-  </tr>
-</table>
-<a class="anchor" name="w0" doxytag="tbb::task::depth_type"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">typedef <a class="el" href="a00319.html#a22">internal::intptr</a> <a class="el" href="a00261.html#w0">tbb::task::depth_type</a>          </td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-A scheduling depth. 
-<p>
-Guaranteed to be a signed integral type.     </td>
-  </tr>
-</table>
-<hr><h2>Member Enumeration Documentation</h2>
-<a class="anchor" name="w8" doxytag="tbb::task::state_type"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">enum <a class="el" href="a00261.html#w8">tbb::task::state_type</a>          </td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Enumeration of task states that the scheduler considers. 
-<p>
-<dl compact><dt><b>Enumeration values: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="w8w2" doxytag="executing"></a>executing</em> </td><td>
-task is running, and will be destroyed after method <a class="el" href="a00261.html#a1">execute()</a> completes. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="w8w3" doxytag="reexecute"></a>reexecute</em> </td><td>
-task to be rescheduled. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="w8w4" doxytag="ready"></a>ready</em> </td><td>
-task is in ready pool, or is going to be put there, or was just taken off. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="w8w5" doxytag="allocated"></a>allocated</em> </td><td>
-task object is freshly allocated or recycled. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="w8w6" doxytag="freed"></a>freed</em> </td><td>
-task object is on free list, or is going to be put there, or was just taken off. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="w8w7" doxytag="recycle"></a>recycle</em> </td><td>
-task to be recycled as continuation </td></tr>
-</table>
-</dl>
-    </td>
-  </tr>
-</table>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="a12" doxytag="tbb::task::add_to_depth"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void tbb::task::add_to_depth           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">int </td>
-          <td class="mdname1" valign="top" nowrap> <em>delta</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Change scheduling depth by given amount. 
-<p>
-The resulting depth must be non-negative.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a4" doxytag="tbb::task::allocate_additional_child_of"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">internal::allocate_additional_child_of_proxy tbb::task::allocate_additional_child_of           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top"><a class="el" href="a00261.html">task</a> & </td>
-          <td class="mdname1" valign="top" nowrap> <em>t</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Like allocate_child, except that task's parent becomes "t", not this. 
-<p>
-Typically used in conjunction with schedule_to_reexecute to implement while loops. Atomically increments the reference count of t.parent()     </td>
-  </tr>
-</table>
-<a class="anchor" name="a2" doxytag="tbb::task::allocate_continuation"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">internal::allocate_continuation_proxy& tbb::task::allocate_continuation           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Returns proxy for overloaded new that allocates a continuation task of *this. 
-<p>
-The continuation's parent becomes the parent of *this.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a27" doxytag="tbb::task::cancel_group_execution"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">bool tbb::task::cancel_group_execution           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Initiates cancellation of all tasks in this cancellation group and its subordinate groups. 
-<p>
-<dl compact><dt><b>Returns:</b></dt><dd>false if cancellation has already been requested, true otherwise. * </dd></dl>
-    </td>
-  </tr>
-</table>
-<a class="anchor" name="a5" doxytag="tbb::task::destroy"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void __TBB_EXPORTED_METHOD tbb::task::destroy           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top"><a class="el" href="a00261.html">task</a> & </td>
-          <td class="mdname1" valign="top" nowrap> <em>victim</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Destroy a task. 
-<p>
-Usually, calling this method is unnecessary, because a task is implicitly deleted after its <a class="el" href="a00261.html#a1">execute()</a> method runs. However, sometimes a task needs to be explicitly deallocated, such as when a root task is used as the parent in spawn_and_wait_for_all.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a26" doxytag="tbb::task::note_affinity"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">virtual void __TBB_EXPORTED_METHOD tbb::task::note_affinity           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top"><a class="el" href="a00261.html#w1">affinity_id</a> </td>
-          <td class="mdname1" valign="top" nowrap> <em>id</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [virtual]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Invoked by scheduler to notify task that it ran on unexpected thread. 
-<p>
-Invoked before method <a class="el" href="a00261.html#a1">execute()</a> runs, if task is stolen, or task has affinity but will be executed on another thread.<p>
-The default action does nothing.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a6" doxytag="tbb::task::recycle_as_continuation"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void tbb::task::recycle_as_continuation           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Change this to be a continuation of its former self. 
-<p>
-The caller must guarantee that the task's refcount does not become zero until after the method <a class="el" href="a00261.html#a1">execute()</a> returns. Typically, this is done by having method <a class="el" href="a00261.html#a1">execute()</a> return a pointer to a child of the task. If the guarantee cannot be made, use method recycle_as_safe_continuation instead.<p>
-Because of the hazard, this method may be deprecated in the future.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a7" doxytag="tbb::task::recycle_as_safe_continuation"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void tbb::task::recycle_as_safe_continuation           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Recommended to use, safe variant of recycle_as_continuation. 
-<p>
-For safety, it requires additional increment of ref_count.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a9" doxytag="tbb::task::recycle_to_reexecute"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void tbb::task::recycle_to_reexecute           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Schedule this for reexecution after current <a class="el" href="a00261.html#a1">execute()</a> returns. 
-<p>
-Requires that this.execute() be running.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a11" doxytag="tbb::task::set_depth"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void tbb::task::set_depth           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top"><a class="el" href="a00261.html#w0">depth_type</a> </td>
-          <td class="mdname1" valign="top" nowrap> <em>new_depth</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Set scheduling depth to given value. 
-<p>
-The depth must be non-negative     </td>
-  </tr>
-</table>
-<a class="anchor" name="a15" doxytag="tbb::task::spawn"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void tbb::task::spawn           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top"><a class="el" href="a00263.html">task_list</a> & </td>
-          <td class="mdname1" valign="top" nowrap> <em>list</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Spawn multiple tasks and clear list. 
-<p>
-All of the tasks must be at the same depth.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a14" doxytag="tbb::task::spawn"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void tbb::task::spawn           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top"><a class="el" href="a00261.html">task</a> & </td>
-          <td class="mdname1" valign="top" nowrap> <em>child</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Schedule task for execution when a worker becomes available. 
-<p>
-After all children spawned so far finish their method <a class="el" href="a00261.html#a1">task::execute</a>, their parent's method <a class="el" href="a00261.html#a1">task::execute</a> may start running. Therefore, it is important to ensure that at least one child has not completed until the parent is ready to run.     </td>
-  </tr>
-</table>
-<a class="anchor" name="e3" doxytag="tbb::task::spawn_root_and_wait"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void tbb::task::spawn_root_and_wait           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top"><a class="el" href="a00263.html">task_list</a> & </td>
-          <td class="mdname1" valign="top" nowrap> <em>root_list</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline, static]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Spawn root tasks on list and wait for all of them to finish. 
-<p>
-If there are more tasks than worker threads, the tasks are spawned in order of front to back.     </td>
-  </tr>
-</table>
-<a class="anchor" name="e2" doxytag="tbb::task::spawn_root_and_wait"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void tbb::task::spawn_root_and_wait           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top"><a class="el" href="a00261.html">task</a> & </td>
-          <td class="mdname1" valign="top" nowrap> <em>root</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline, static]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Spawn task allocated by allocate_root, wait for it to complete, and deallocate it. 
-<p>
-The thread that calls spawn_root_and_wait must be the same thread that allocated the task.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a18" doxytag="tbb::task::wait_for_all"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void tbb::task::wait_for_all           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Wait for reference count to become one, and set reference count to zero. 
-<p>
-Works on tasks while waiting.     </td>
-  </tr>
-</table>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00349.html">task.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00262.html b/doc/html/a00262.html
deleted file mode 100644
index 270afe0..0000000
--- a/doc/html/a00262.html
+++ /dev/null
@@ -1,190 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::task_group_context Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::task_group_context Class Reference</h1>Used to form groups of tasks.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00349.html">task.h</a>></code>
-<p>
-Inherits <a class="el" href="a00230.html">tbb::internal::no_copy</a>.
-<p>
-Inheritance diagram for tbb::task_group_context:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00120.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>kind_type</b> { <b>isolated</b>, 
-<b>bound</b>
- }</td></tr>
-
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00262.html#a0">task_group_context</a> (kind_type relation_with_parent=bound)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Default & binding constructor.  <a href="#a0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00262.html#a2">reset</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Forcefully reinitializes context object after an algorithm it was used with finished.  <a href="#a2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00262.html#a3">cancel_group_execution</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Initiates cancellation of all tasks in this cancellation group and its subordinate groups.  <a href="#a3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::task_group_context::is_group_execution_cancelled"></a>
-bool __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00262.html#a4">is_group_execution_cancelled</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if the context received cancellation request. <br></td></tr>
-<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00262.html#b0">init</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Out-of-line part of the constructor.  <a href="#b0"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::task_group_context::task"></a>
-class </td><td class="memItemRight" valign="bottom"><b>task</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n1" doxytag="tbb::task_group_context::internal::allocate_root_with_context_proxy"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::allocate_root_with_context_proxy</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Used to form groups of tasks. 
-<p>
-The context services explicit cancellation requests from user code, and unhandled exceptions intercepted during tasks execution. Intercepting an exception results in generating internal cancellation requests (which is processed in exactly the same way as external ones).<p>
-The context is associated with one or more root tasks and defines the cancellation group that includes all the descendants of the corresponding root task(s). Association is established when a context object is passed as an argument to the <a class="el" href="a00261.html#e0">task::allocate_root()</a> method. See <a class="el" href="a00262.html#a0">task_group_context::task_group_context</a> for more details.<p>
-The context can be bound to another one, and other contexts can be bound to it, forming a tree-like structure: parent -> this -> children. Arrows here designate cancellation propagation direction. If a task in a cancellation group is canceled all the other tasks in this group and groups bound to it (as children) get canceled too. * 
-<p>
-<hr><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" name="a0" doxytag="tbb::task_group_context::task_group_context"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">tbb::task_group_context::task_group_context           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">kind_type </td>
-          <td class="mdname1" valign="top" nowrap> <em>relation_with_parent</em> = <code>bound</code>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [inline]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Default & binding constructor. 
-<p>
-By default a bound context is created. That is this context will be bound (as child) to the context of the task calling task::allocate_root(this_context) method. Cancellation requests passed to the parent context are propagated to all the contexts bound to it.<p>
-If task_group_context::isolated is used as the argument, then the tasks associated with this context will never be affected by events in any other context.<p>
-Creating isolated context is involves much less overhead, but they have limited utility. Normally when an exception occur in an algorithm that has nested algorithms running one would want all the nested ones canceled as well. Such behavior requires nested algorithms to use bound contexts.<p>
-There is one good place where using isolated algorithms is beneficial. It is a master thread. That is if a particular algorithm is invoked directly from the master thread (not from a TBB task), supplying it with explicitly created isolated context will result in a faster algorithm startup.     </td>
-  </tr>
-</table>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="a3" doxytag="tbb::task_group_context::cancel_group_execution"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">bool __TBB_EXPORTED_METHOD tbb::task_group_context::cancel_group_execution           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Initiates cancellation of all tasks in this cancellation group and its subordinate groups. 
-<p>
-<dl compact><dt><b>Returns:</b></dt><dd>false if cancellation has already been requested, true otherwise.</dd></dl>
-Note that canceling never fails. When false is returned, it just means that another thread (or this one) has already sent cancellation request to this context or to one of its ancestors (if this context is bound). It is guaranteed that when this method is called on the same context, true may be returned by at most one invocation. *     </td>
-  </tr>
-</table>
-<a class="anchor" name="b0" doxytag="tbb::task_group_context::init"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void __TBB_EXPORTED_METHOD tbb::task_group_context::init           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [protected]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Out-of-line part of the constructor. 
-<p>
-Separated to facilitate future support for backward binary compatibility. *     </td>
-  </tr>
-</table>
-<a class="anchor" name="a2" doxytag="tbb::task_group_context::reset"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void __TBB_EXPORTED_METHOD tbb::task_group_context::reset           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Forcefully reinitializes context object after an algorithm it was used with finished. 
-<p>
-Because the method assumes that the all the tasks that used to be associated with this context have already finished, you must be extremely careful to not invalidate the context while it is still in use somewhere in the task hierarchy.<p>
-IMPORTANT: It is assumed that this method is not used concurrently!<p>
-The method does not change the context's parent if it is set. *     </td>
-  </tr>
-</table>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00349.html">task.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00263.html b/doc/html/a00263.html
deleted file mode 100644
index fa93735..0000000
--- a/doc/html/a00263.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::task_list Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::task_list Class Reference</h1>A list of children.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00349.html">task.h</a>></code>
-<p>
-Inherits <a class="el" href="a00230.html">tbb::internal::no_copy</a>.
-<p>
-Inheritance diagram for tbb::task_list:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00124.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::task_list::task_list"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#a0">task_list</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct empty list. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::task_list::~task_list"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#a1">~task_list</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroys the list, but does not destroy the task objects. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::task_list::empty"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#a2">empty</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">True if list if empty; false otherwise. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::task_list::push_back"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#a3">push_back</a> (<a class="el" href="a00261.html">task</a> &<a class="el" href="a00261.html">task</a>)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Push task onto back of list. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::task_list::pop_front"></a>
-<a class="el" href="a00261.html">task</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#a4">pop_front</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Pop the front task from the list. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::task_list::clear"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html#a5">clear</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Clear the list. <br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::task_list::task"></a>
-class </td><td class="memItemRight" valign="bottom"><b>task</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-A list of children. 
-<p>
-Used for method task::spawn_children 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00349.html">task.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00264.html b/doc/html/a00264.html
index ef339a4..1a52b0a 100644
--- a/doc/html/a00264.html
+++ b/doc/html/a00264.html
@@ -1,48 +1,226 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::task_prefix Class Reference</title>
+<title>partitioner.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::task_prefix Class Reference</h1>Memory prefix to a task object.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00349.html">task.h</a>></code>
-<p>
-<a href="a00119.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::internal::task_prefix::tbb::task"></a>
-class </td><td class="memItemRight" valign="bottom"><a class="el" href="a00264.html#n0">tbb::task</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n1" doxytag="tbb::internal::task_prefix::tbb::task_list"></a>
-class </td><td class="memItemRight" valign="bottom"><a class="el" href="a00264.html#n1">tbb::task_list</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n2" doxytag="tbb::internal::task_prefix::internal::scheduler"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::scheduler</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n3" doxytag="tbb::internal::task_prefix::internal::allocate_root_proxy"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::allocate_root_proxy</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n4" doxytag="tbb::internal::task_prefix::internal::allocate_child_proxy"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::allocate_child_proxy</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n5" doxytag="tbb::internal::task_prefix::internal::allocate_continuation_proxy"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::allocate_continuation_proxy</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n6" doxytag="tbb::internal::task_prefix::internal::allocate_additional_child_of_proxy"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::allocate_additional_child_of_proxy</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Memory prefix to a task object. 
-<p>
-This class is internal to the library. Do not reference it directly, except within the library itself. Fields are ordered in way that preserves backwards compatibility and yields good packing on typical 32-bit and 64-bit platforms. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00349.html">task.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>partitioner.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_partitioner_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_partitioner_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "task.h"</span>
+<a name="l00025"></a>00025 
+<a name="l00026"></a>00026 <span class="keyword">namespace </span>tbb {
+<a name="l00027"></a>00027 <span class="keyword">class </span>affinity_partitioner;
+<a name="l00028"></a>00028 
+<a name="l00030"></a>00030 <span class="keyword">namespace </span>internal {
+<a name="l00031"></a>00031 size_t __TBB_EXPORTED_FUNC get_initial_auto_partitioner_divisor();
+<a name="l00032"></a>00032 
+<a name="l00034"></a>00034 
+<a name="l00035"></a>00035 <span class="keyword">class </span>affinity_partitioner_base_v3: no_copy {
+<a name="l00036"></a>00036     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00091.html">tbb::affinity_partitioner</a>;
+<a name="l00038"></a>00038 
+<a name="l00039"></a>00039     affinity_id* my_array;
+<a name="l00041"></a>00041     size_t my_size;
+<a name="l00043"></a>00043     affinity_partitioner_base_v3() : my_array(NULL), my_size(0) {}
+<a name="l00045"></a>00045     ~affinity_partitioner_base_v3() {resize(0);}
+<a name="l00047"></a>00047 
+<a name="l00048"></a>00048     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD resize( <span class="keywordtype">unsigned</span> factor );
+<a name="l00049"></a>00049     <span class="keyword">friend</span> <span class="keyword">class </span>affinity_partition_type;
+<a name="l00050"></a>00050 };
+<a name="l00051"></a>00051 
+<a name="l00053"></a>00053 <span class="keyword">class </span>partition_type_base {
+<a name="l00054"></a>00054 <span class="keyword">public</span>:
+<a name="l00055"></a>00055     <span class="keywordtype">void</span> set_affinity( task & ) {}
+<a name="l00056"></a>00056     <span class="keywordtype">void</span> note_affinity( <a class="code" href="a00132.html#d61bb32389d3857bf7511d69beaafb76">task::affinity_id</a> ) {}
+<a name="l00057"></a>00057     task* continue_after_execute_range( task& ) {<span class="keywordflow">return</span> NULL;}
+<a name="l00058"></a>00058     <span class="keywordtype">bool</span> decide_whether_to_delay() {<span class="keywordflow">return</span> <span class="keyword">false</span>;}
+<a name="l00059"></a>00059     <span class="keywordtype">void</span> spawn_or_delay( <span class="keywordtype">bool</span>, task& a, task& b ) {
+<a name="l00060"></a>00060         a.spawn(b);
+<a name="l00061"></a>00061     }
+<a name="l00062"></a>00062 };
+<a name="l00063"></a>00063 
+<a name="l00064"></a>00064 <span class="keyword">class </span>affinity_partition_type;
+<a name="l00065"></a>00065 
+<a name="l00066"></a>00066 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner> <span class="keyword">class </span>start_for;
+<a name="l00067"></a>00067 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner> <span class="keyword">class </span>start_reduce;
+<a name="l00068"></a>00068 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body> <span class="keyword">class </span>start_reduce_with_affinity;
+<a name="l00069"></a>00069 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner> <span class="keyword">class </span>start_scan;
+<a name="l00070"></a>00070 
+<a name="l00071"></a>00071 } <span class="comment">// namespace internal</span>
+<a name="l00073"></a>00073 <span class="comment"></span>
+<a name="l00075"></a>00075 
+<a name="l00077"></a><a class="code" href="a00126.html">00077</a> <span class="keyword">class </span><a class="code" href="a00126.html">simple_partitioner</a> {
+<a name="l00078"></a>00078 <span class="keyword">public</span>:
+<a name="l00079"></a>00079     <a class="code" href="a00126.html">simple_partitioner</a>() {}
+<a name="l00080"></a>00080 <span class="keyword">private</span>:
+<a name="l00081"></a>00081     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner> <span class="keyword">friend</span> <span class="keyword">class </span>internal::start_for;
+<a name="l00082"></a>00082     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner> <span class="keyword">friend</span> <span class="keyword">class </span>internal::start_reduce;
+<a name="l00083"></a>00083     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner> <span class="keyword">friend</span> <span class="keyword">class </span>internal::start_scan;
+<a name="l00084"></a>00084 
+<a name="l00085"></a>00085     <span class="keyword">class </span>partition_type: <span class="keyword">public</span> internal::partition_type_base {
+<a name="l00086"></a>00086     <span class="keyword">public</span>:
+<a name="l00087"></a>00087         <span class="keywordtype">bool</span> should_execute_range(<span class="keyword">const</span> <a class="code" href="a00132.html">task</a>& ) {<span class="keywordflow">return</span> <span class="keyword">false</span>;}
+<a name="l00088"></a>00088         partition_type( <span class="keyword">const</span> <a class="code" href="a00126.html">simple_partitioner</a>& ) {}
+<a name="l00089"></a>00089         partition_type( <span class="keyword">const</span> partition_type&, <a class="code" href="a00131.html">split</a> ) {}
+<a name="l00090"></a>00090     };
+<a name="l00091"></a>00091 };
+<a name="l00092"></a>00092 
+<a name="l00094"></a>00094 
+<a name="l00097"></a><a class="code" href="a00095.html">00097</a> <span class="keyword">class </span><a class="code" href="a00095.html">auto_partitioner</a> {
+<a name="l00098"></a>00098 <span class="keyword">public</span>:
+<a name="l00099"></a>00099     <a class="code" href="a00095.html">auto_partitioner</a>() {}
+<a name="l00100"></a>00100 
+<a name="l00101"></a>00101 <span class="keyword">private</span>:
+<a name="l00102"></a>00102     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner> <span class="keyword">friend</span> <span class="keyword">class </span>internal::start_for;
+<a name="l00103"></a>00103     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner> <span class="keyword">friend</span> <span class="keyword">class </span>internal::start_reduce;
+<a name="l00104"></a>00104     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner> <span class="keyword">friend</span> <span class="keyword">class </span>internal::start_scan;
+<a name="l00105"></a>00105 
+<a name="l00106"></a>00106     <span class="keyword">class </span>partition_type: <span class="keyword">public</span> internal::partition_type_base {
+<a name="l00107"></a>00107         size_t num_chunks;
+<a name="l00108"></a>00108         <span class="keyword">static</span> <span class="keyword">const</span> size_t VICTIM_CHUNKS = 4;
+<a name="l00109"></a>00109 <span class="keyword">public</span>:
+<a name="l00110"></a>00110         <span class="keywordtype">bool</span> should_execute_range(<span class="keyword">const</span> <a class="code" href="a00132.html">task</a> &t) {
+<a name="l00111"></a>00111             <span class="keywordflow">if</span>( num_chunks<VICTIM_CHUNKS && t.<a class="code" href="a00132.html#f9169402702f56bf519448aaf34450aa">is_stolen_task</a>() )
+<a name="l00112"></a>00112                 num_chunks = VICTIM_CHUNKS;
+<a name="l00113"></a>00113             <span class="keywordflow">return</span> num_chunks==1;
+<a name="l00114"></a>00114         }
+<a name="l00115"></a>00115         partition_type( <span class="keyword">const</span> <a class="code" href="a00095.html">auto_partitioner</a>& ) : num_chunks(internal::get_initial_auto_partitioner_divisor()) {}
+<a name="l00116"></a>00116         partition_type( partition_type& pt, <a class="code" href="a00131.html">split</a> ) {
+<a name="l00117"></a>00117             num_chunks = pt.num_chunks /= 2u;
+<a name="l00118"></a>00118         }
+<a name="l00119"></a>00119     };
+<a name="l00120"></a>00120 };
+<a name="l00121"></a>00121 
+<a name="l00123"></a><a class="code" href="a00091.html">00123</a> <span class="keyword">class </span><a class="code" href="a00091.html">affinity_partitioner</a>: internal::affinity_partitioner_base_v3 {
+<a name="l00124"></a>00124 <span class="keyword">public</span>:
+<a name="l00125"></a>00125     <a class="code" href="a00091.html">affinity_partitioner</a>() {}
+<a name="l00126"></a>00126 
+<a name="l00127"></a>00127 <span class="keyword">private</span>:
+<a name="l00128"></a>00128     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner> <span class="keyword">friend</span> <span class="keyword">class </span>internal::start_for;
+<a name="l00129"></a>00129     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body> <span class="keyword">friend</span> <span class="keyword">class </span>internal::start_reduce_with_affinity;
+<a name="l00130"></a>00130     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner> <span class="keyword">friend</span> <span class="keyword">class </span>internal::start_scan;
+<a name="l00131"></a>00131 
+<a name="l00132"></a>00132     <span class="keyword">typedef</span> internal::affinity_partition_type partition_type;
+<a name="l00133"></a>00133     <span class="keyword">friend</span> <span class="keyword">class </span>internal::affinity_partition_type;
+<a name="l00134"></a>00134 };
+<a name="l00135"></a>00135 
+<a name="l00137"></a>00137 <span class="keyword">namespace </span>internal {
+<a name="l00138"></a>00138 
+<a name="l00139"></a>00139 <span class="keyword">class </span>affinity_partition_type: <span class="keyword">public</span> no_copy {
+<a name="l00141"></a>00141     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> factor = 16;
+<a name="l00142"></a>00142     <span class="keyword">static</span> <span class="keyword">const</span> size_t VICTIM_CHUNKS = 4;
+<a name="l00143"></a>00143 
+<a name="l00144"></a>00144     internal::affinity_id* my_array;
+<a name="l00145"></a>00145     <a class="code" href="a00134.html">task_list</a> delay_list;
+<a name="l00146"></a>00146     <span class="keywordtype">unsigned</span> map_begin, map_end;
+<a name="l00147"></a>00147     size_t num_chunks;
+<a name="l00148"></a>00148 <span class="keyword">public</span>:
+<a name="l00149"></a>00149     affinity_partition_type( <a class="code" href="a00091.html">affinity_partitioner</a>& ap ) {
+<a name="l00150"></a>00150         __TBB_ASSERT( (factor&(factor-1))==0, <span class="stringliteral">"factor must be power of two"</span> ); 
+<a name="l00151"></a>00151         ap.resize(factor);
+<a name="l00152"></a>00152         my_array = ap.my_array;
+<a name="l00153"></a>00153         map_begin = 0;
+<a name="l00154"></a>00154         map_end = unsigned(ap.my_size);
+<a name="l00155"></a>00155         num_chunks = internal::get_initial_auto_partitioner_divisor();
+<a name="l00156"></a>00156     }
+<a name="l00157"></a>00157     affinity_partition_type(affinity_partition_type& p, split) : my_array(p.my_array) {
+<a name="l00158"></a>00158         __TBB_ASSERT( p.map_end-p.map_begin<factor || (p.map_end-p.map_begin)%factor==0, NULL );
+<a name="l00159"></a>00159         num_chunks = p.num_chunks /= 2;
+<a name="l00160"></a>00160         <span class="keywordtype">unsigned</span> e = p.map_end;
+<a name="l00161"></a>00161         <span class="keywordtype">unsigned</span> d = (e - p.map_begin)/2;
+<a name="l00162"></a>00162         <span class="keywordflow">if</span>( d>factor ) 
+<a name="l00163"></a>00163             d &= 0u-factor;
+<a name="l00164"></a>00164         map_end = e;
+<a name="l00165"></a>00165         map_begin = p.map_end = e-d;
+<a name="l00166"></a>00166     }
+<a name="l00167"></a>00167 
+<a name="l00168"></a>00168     <span class="keywordtype">bool</span> should_execute_range(<span class="keyword">const</span> task &t) {
+<a name="l00169"></a>00169         <span class="keywordflow">if</span>( num_chunks < VICTIM_CHUNKS && t.is_stolen_task() )
+<a name="l00170"></a>00170             num_chunks = VICTIM_CHUNKS;
+<a name="l00171"></a>00171         <span class="keywordflow">return</span> num_chunks == 1;
+<a name="l00172"></a>00172     }
+<a name="l00173"></a>00173 
+<a name="l00174"></a>00174     <span class="keywordtype">void</span> set_affinity( task &t ) {
+<a name="l00175"></a>00175         <span class="keywordflow">if</span>( map_begin<map_end )
+<a name="l00176"></a>00176             t.set_affinity( my_array[map_begin] );
+<a name="l00177"></a>00177     }
+<a name="l00178"></a>00178     <span class="keywordtype">void</span> note_affinity( <a class="code" href="a00132.html#d61bb32389d3857bf7511d69beaafb76">task::affinity_id</a> <span class="keywordtype">id</span> ) {
+<a name="l00179"></a>00179         <span class="keywordflow">if</span>( map_begin<map_end ) 
+<a name="l00180"></a>00180             my_array[map_begin] = id;
+<a name="l00181"></a>00181     }
+<a name="l00182"></a>00182     task* continue_after_execute_range( task& t ) {
+<a name="l00183"></a>00183         task* first = NULL;
+<a name="l00184"></a>00184         <span class="keywordflow">if</span>( !delay_list.empty() ) {
+<a name="l00185"></a>00185             first = &delay_list.pop_front();
+<a name="l00186"></a>00186             <span class="keywordflow">while</span>( !delay_list.empty() ) {
+<a name="l00187"></a>00187                 t.spawn(*first);
+<a name="l00188"></a>00188                 first = &delay_list.pop_front();
+<a name="l00189"></a>00189             }
+<a name="l00190"></a>00190         }
+<a name="l00191"></a>00191         <span class="keywordflow">return</span> first;
+<a name="l00192"></a>00192     }
+<a name="l00193"></a>00193     <span class="keywordtype">bool</span> decide_whether_to_delay() {
+<a name="l00194"></a>00194         <span class="comment">// The possible underflow caused by "-1u" is deliberate</span>
+<a name="l00195"></a>00195         <span class="keywordflow">return</span> (map_begin&(factor-1))==0 && map_end-map_begin-1u<factor;
+<a name="l00196"></a>00196     }
+<a name="l00197"></a>00197     <span class="keywordtype">void</span> spawn_or_delay( <span class="keywordtype">bool</span> delay, task& a, task& b ) {
+<a name="l00198"></a>00198         <span class="keywordflow">if</span>( delay )  
+<a name="l00199"></a>00199             delay_list.push_back(b);
+<a name="l00200"></a>00200         <span class="keywordflow">else</span> 
+<a name="l00201"></a>00201             a.spawn(b);
+<a name="l00202"></a>00202     }
+<a name="l00203"></a>00203 
+<a name="l00204"></a>00204     ~affinity_partition_type() {
+<a name="l00205"></a>00205         <span class="comment">// The delay_list can be non-empty if an exception is thrown.</span>
+<a name="l00206"></a>00206         <span class="keywordflow">while</span>( !delay_list.empty() ) {
+<a name="l00207"></a>00207             task& t = delay_list.pop_front();
+<a name="l00208"></a>00208             t.destroy(t);
+<a name="l00209"></a>00209         } 
+<a name="l00210"></a>00210     }
+<a name="l00211"></a>00211 };
+<a name="l00212"></a>00212 
+<a name="l00213"></a>00213 } <span class="comment">// namespace internal</span>
+<a name="l00215"></a>00215 <span class="comment"></span>
+<a name="l00216"></a>00216 
+<a name="l00217"></a>00217 } <span class="comment">// namespace tbb</span>
+<a name="l00218"></a>00218 
+<a name="l00219"></a>00219 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_partitioner_H */</span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00265.html b/doc/html/a00265.html
deleted file mode 100644
index 5b45507..0000000
--- a/doc/html/a00265.html
+++ /dev/null
@@ -1,170 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::task_scheduler_init Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::task_scheduler_init Class Reference</h1>Class representing reference to tbb scheduler.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00350.html">task_scheduler_init.h</a>></code>
-<p>
-Inherits <a class="el" href="a00230.html">tbb::internal::no_copy</a>.
-<p>
-Inheritance diagram for tbb::task_scheduler_init:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00125.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00265.html#a0">initialize</a> (int number_of_threads=<a class="el" href="a00265.html#s0">automatic</a>)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Ensure that scheduler exists for this thread.  <a href="#a0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00265.html#a1">initialize</a> (int number_of_threads, stack_size_type thread_stack_size)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The overloaded method with stack size parameter.  <a href="#a1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::task_scheduler_init::terminate"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00265.html#a2">terminate</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inverse of method initialize. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::task_scheduler_init::task_scheduler_init"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00265.html#a3">task_scheduler_init</a> (int number_of_threads=<a class="el" href="a00265.html#s0">automatic</a>, stack_size_type thread_stack_size=0)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for default constructor followed by call to intialize(number_of_threads). <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::task_scheduler_init::~task_scheduler_init"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00265.html#a4">~task_scheduler_init</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroy scheduler for this thread if thread has no other live task_scheduler_inits. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::task_scheduler_init::is_active"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00265.html#a5">is_active</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if scheduler is active (initialized); false otherwise. <br></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00265.html#e0">default_num_threads</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of threads tbb scheduler would create if initialized by default.  <a href="#e0"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s0" doxytag="tbb::task_scheduler_init::automatic"></a>
-const int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00265.html#s0">automatic</a> = -1</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Typedef for number of threads that is automatic. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s1" doxytag="tbb::task_scheduler_init::deferred"></a>
-const int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00265.html#s1">deferred</a> = -2</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Argument to <a class="el" href="a00265.html#a0">initialize()</a> or constructor that causes initialization to be deferred. <br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Class representing reference to tbb scheduler. 
-<p>
-A thread must construct a <a class="el" href="a00265.html">task_scheduler_init</a>, and keep it alive, during the time that it uses the services of class task. 
-<p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="e0" doxytag="tbb::task_scheduler_init::default_num_threads"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">int __TBB_EXPORTED_FUNC tbb::task_scheduler_init::default_num_threads           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [static]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Returns the number of threads tbb scheduler would create if initialized by default. 
-<p>
-Result returned by this method does not depend on whether the scheduler has already been initialized.<p>
-Because tbb 2.0 does not support blocking tasks yet, you may use this method to boost the number of threads in the tbb's internal pool, if your tasks are doing I/O operations. The optimal number of additional threads depends on how much time your tasks spend in the blocked state.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a1" doxytag="tbb::task_scheduler_init::initialize"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void __TBB_EXPORTED_METHOD tbb::task_scheduler_init::initialize           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">int </td>
-          <td class="mdname" nowrap> <em>number_of_threads</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>stack_size_type </td>
-          <td class="mdname" nowrap> <em>thread_stack_size</em></td>
-        </tr>
-        <tr>
-          <td class="md"></td>
-          <td class="md">) </td>
-          <td class="md" colspan="2"></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-The overloaded method with stack size parameter. 
-<p>
-Overloading is necessary to preserve ABI compatibility     </td>
-  </tr>
-</table>
-<a class="anchor" name="a0" doxytag="tbb::task_scheduler_init::initialize"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void __TBB_EXPORTED_METHOD tbb::task_scheduler_init::initialize           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">int </td>
-          <td class="mdname1" valign="top" nowrap> <em>number_of_threads</em> = <code><a class="el" href="a00265.html#s0">automatic</a></code>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Ensure that scheduler exists for this thread. 
-<p>
-A value of -1 lets tbb decide on the number of threads, which is typically the number of hardware threads. For production code, the default value of -1 should be used, particularly if the client code is mixed with third party clients that might also use tbb.<p>
-The number_of_threads is ignored if any other task_scheduler_inits currently exist. A thread may construct multiple task_scheduler_inits. Doing so does no harm because the underlying scheduler is reference counted.     </td>
-  </tr>
-</table>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00350.html">task_scheduler_init.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00266.html b/doc/html/a00266.html
deleted file mode 100644
index 3c54c19..0000000
--- a/doc/html/a00266.html
+++ /dev/null
@@ -1,100 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::tbb_allocator< T > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::tbb_allocator< T > Class Template Reference</h1>Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00352.html">tbb_allocator.h</a>></code>
-<p>
-<a href="a00127.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w0" doxytag="tbb::tbb_allocator::pointer"></a>
-typedef T * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w1" doxytag="tbb::tbb_allocator::const_pointer"></a>
-typedef const T * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w2" doxytag="tbb::tbb_allocator::reference"></a>
-typedef T & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w3" doxytag="tbb::tbb_allocator::const_reference"></a>
-typedef const T & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w4" doxytag="tbb::tbb_allocator::value_type"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w5" doxytag="tbb::tbb_allocator::size_type"></a>
-typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w6" doxytag="tbb::tbb_allocator::difference_type"></a>
-typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00266.html#w9">malloc_type</a> { <b>scalable</b>, 
-<b>standard</b>
- }</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Specifies current allocator. <br></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::tbb_allocator::tbb_allocator"></a>
- </td><td class="memItemRight" valign="bottom"><b>tbb_allocator</b> (const <a class="el" href="a00266.html">tbb_allocator</a> &)  throw ()</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a2" doxytag="tbb::tbb_allocator::tbb_allocator"></a>
-template<typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>tbb_allocator</b> (const <a class="el" href="a00266.html">tbb_allocator</a>< U > &)  throw ()</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::tbb_allocator::address"></a>
-pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (reference x) const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::tbb_allocator::address"></a>
-const_pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (const_reference x) const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::tbb_allocator::allocate"></a>
-pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00266.html#a5">allocate</a> (size_type n, const void *=0)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allocate space for n objects. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a6" doxytag="tbb::tbb_allocator::deallocate"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00266.html#a6">deallocate</a> (pointer p, size_type)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Free previously allocated block of memory. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a7" doxytag="tbb::tbb_allocator::max_size"></a>
-size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00266.html#a7">max_size</a> () const   throw ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Largest value for which method allocate might succeed. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a8" doxytag="tbb::tbb_allocator::construct"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00266.html#a8">construct</a> (pointer p, const T &value)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy-construct value at location pointed to by p. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a9" doxytag="tbb::tbb_allocator::destroy"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00266.html#a9">destroy</a> (pointer p)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroy value at location pointed to by p. <br></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e0" doxytag="tbb::tbb_allocator::allocator_type"></a>
-<a class="el" href="a00266.html#w9">malloc_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00266.html#e0">allocator_type</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns current allocator. <br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename T><br>
- class tbb::tbb_allocator< T ></h3>
-
-Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. 
-<p>
-The class selects the best memory allocation mechanism available from scalable_malloc and standard malloc. The members are ordered the same way they are in section 20.4.1 of the ISO C++ standard. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00352.html">tbb_allocator.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00267.html b/doc/html/a00267.html
deleted file mode 100644
index 1e90846..0000000
--- a/doc/html/a00267.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::tbb_allocator< void > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::tbb_allocator< void > Class Template Reference</h1>Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00352.html">tbb_allocator.h</a>></code>
-<p>
-<a href="a00129.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w0" doxytag="tbb::tbb_allocator< void >::pointer"></a>
-typedef void * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w1" doxytag="tbb::tbb_allocator< void >::const_pointer"></a>
-typedef const void * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w2" doxytag="tbb::tbb_allocator< void >::value_type"></a>
-typedef void </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<><br>
- class tbb::tbb_allocator< void ></h3>
-
-Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00352.html">tbb_allocator.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00268.html b/doc/html/a00268.html
deleted file mode 100644
index 57182ae..0000000
--- a/doc/html/a00268.html
+++ /dev/null
@@ -1,148 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::tbb_exception Class Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::tbb_exception Class Reference</h1>Interface to be implemented by all exceptions TBB recognizes and propagates across the threads.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00353.html">tbb_exception.h</a>></code>
-<p>
-Inherited by <a class="el" href="a00200.html">tbb::captured_exception</a>, and <a class="el" href="a00226.html">tbb::movable_exception< ExceptionData ></a>.
-<p>
-Inheritance diagram for tbb::tbb_exception:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00132.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="a00268.html">tbb_exception</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00268.html#a0">move</a> ()=0  throw ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates and returns pointer to the deep copy of this exception object.  <a href="#a0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00268.html#a1">destroy</a> ()=0  throw ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Destroys objects created by the <a class="el" href="a00268.html#a0">move()</a> method.  <a href="#a1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00268.html#a2">throw_self</a> ()=0</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Throws this exception object.  <a href="#a2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::tbb_exception::name"></a>
-virtual const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00268.html#a3">name</a> () const =0  throw ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns RTTI name of the originally intercepted exception. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::tbb_exception::what"></a>
-virtual const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00268.html#a4">what</a> () const =0  throw ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the result of originally intercepted exception's <a class="el" href="a00268.html#a4">what()</a> method. <br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface to be implemented by all exceptions TBB recognizes and propagates across the threads. 
-<p>
-If an unhandled exception of the type derived from tbb::tbb_exception is intercepted by the TBB scheduler in one of the worker threads, it is delivered to and re-thrown in the root thread. The root thread is the thread that has started the outermost algorithm or root task sharing the same <a class="el" href="a00262.html">task_group_context</a> with the guilty algorithm/task (the one that threw the exception first).<p>
-Note: when documentation mentions workers with respect to exception handling, masters are implied as well, because they are completely equivalent in this context. Consequently a root thread can be master or worker thread.<p>
-NOTE: In case of nested algorithms or complex task hierarchies when the nested levels share (explicitly or by means of implicit inheritance) the task group context of the outermost level, the exception may be (re-)thrown multiple times (ultimately - in each worker on each nesting level) before reaching the root thread at the outermost level. IMPORTANT: if you intercept an exception derived from this class on a nested level, you must re-throw it in the catch block by means of the "throw;" [...]
-TBB provides two implementations of this interface: <a class="el" href="a00200.html">tbb::captured_exception</a> and template class <a class="el" href="a00226.html">tbb::movable_exception</a>. See their declarations for more info. * 
-<p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="a1" doxytag="tbb::tbb_exception::destroy"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">virtual void tbb::tbb_exception::destroy           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap>  throw ()<code> [pure virtual]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Destroys objects created by the <a class="el" href="a00268.html#a0">move()</a> method. 
-<p>
-Frees memory and calls destructor for this exception object. Can and must be used only on objects created by the move method. * 
-<p>
-Implemented in <a class="el" href="a00200.html#a5">tbb::captured_exception</a>, and <a class="el" href="a00226.html#a9">tbb::movable_exception< ExceptionData ></a>.    </td>
-  </tr>
-</table>
-<a class="anchor" name="a0" doxytag="tbb::tbb_exception::move"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">virtual <a class="el" href="a00268.html">tbb_exception</a>* tbb::tbb_exception::move           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap>  throw ()<code> [pure virtual]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Creates and returns pointer to the deep copy of this exception object. 
-<p>
-Move semantics is allowed. * 
-<p>
-Implemented in <a class="el" href="a00200.html#a4">tbb::captured_exception</a>, and <a class="el" href="a00226.html#a8">tbb::movable_exception< ExceptionData ></a>.    </td>
-  </tr>
-</table>
-<a class="anchor" name="a2" doxytag="tbb::tbb_exception::throw_self"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">virtual void tbb::tbb_exception::throw_self           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap><code> [pure virtual]</code></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Throws this exception object. 
-<p>
-Make sure that if you have several levels of derivation from this interface you implement or override this method on the most derived level. The implementation is as simple as "throw *this;". Failure to do this will result in exception of a base class type being thrown. * 
-<p>
-Implemented in <a class="el" href="a00200.html#a6">tbb::captured_exception</a>, and <a class="el" href="a00226.html#a10">tbb::movable_exception< ExceptionData ></a>.    </td>
-  </tr>
-</table>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00353.html">tbb_exception.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00269.html b/doc/html/a00269.html
index d82cf7d..796ac48 100644
--- a/doc/html/a00269.html
+++ b/doc/html/a00269.html
@@ -1,34 +1,187 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::tbb_hash_compare< T > Struct Template Reference</title>
+<title>pipeline.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::tbb_hash_compare< T > Struct Template Reference</h1>hash_compare - default argument  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00329.html">concurrent_hash_map.h</a>></code>
-<p>
-<a href="a00026.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e0" doxytag="tbb::tbb_hash_compare::hash"></a>
-<a class="el" href="a00319.html#a2">internal::hashcode_t</a> </td><td class="memItemRight" valign="bottom"><b>hash</b> (const T &t)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e1" doxytag="tbb::tbb_hash_compare::equal"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>equal</b> (const T &a, const T &b)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename T><br>
- struct tbb::tbb_hash_compare< T ></h3>
-
-hash_compare - default argument 
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="a00329.html">concurrent_hash_map.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>pipeline.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_pipeline_H </span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_pipeline_H </span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "atomic.h"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "task.h"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include <cstddef></span>
+<a name="l00027"></a>00027 
+<a name="l00028"></a>00028 <span class="keyword">namespace </span>tbb {
+<a name="l00029"></a>00029 
+<a name="l00030"></a>00030 <span class="keyword">class </span>pipeline;
+<a name="l00031"></a>00031 <span class="keyword">class </span>filter;
+<a name="l00032"></a>00032 
+<a name="l00034"></a>00034 <span class="keyword">namespace </span>internal {
+<a name="l00035"></a>00035 
+<a name="l00036"></a>00036 <span class="comment">// The argument for PIPELINE_VERSION should be an integer between 2 and 9</span>
+<a name="l00037"></a>00037 <span class="preprocessor">#define __TBB_PIPELINE_VERSION(x) (unsigned char)(x-2)<<1</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span>
+<a name="l00039"></a>00039 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> Token;
+<a name="l00040"></a>00040 <span class="keyword">typedef</span> <span class="keywordtype">long</span> tokendiff_t;
+<a name="l00041"></a>00041 <span class="keyword">class </span>stage_task;
+<a name="l00042"></a>00042 <span class="keyword">class </span>ordered_buffer;
+<a name="l00043"></a>00043 
+<a name="l00044"></a>00044 } <span class="comment">// namespace internal</span>
+<a name="l00046"></a>00046 <span class="comment"></span>
+<a name="l00048"></a>00048 
+<a name="l00049"></a><a class="code" href="a00109.html">00049</a> <span class="keyword">class </span><a class="code" href="a00109.html">filter</a>: internal::no_copy {
+<a name="l00050"></a>00050 <span class="keyword">private</span>:
+<a name="l00052"></a>00052     <span class="keyword">static</span> <a class="code" href="a00109.html">filter</a>* not_in_pipeline() {<span class="keywordflow">return</span> reinterpret_cast<filter*>(internal::intptr(-1));}
+<a name="l00053"></a>00053     
+<a name="l00055"></a>00055     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> filter_is_serial = 0x1; 
+<a name="l00056"></a>00056 
+<a name="l00058"></a>00058     <span class="comment">// The bit was not set for parallel filters in TBB 2.1 and earlier,</span>
+<a name="l00059"></a>00059     <span class="comment">// but is_ordered() function always treats parallel filters as out of order</span>
+<a name="l00060"></a>00060     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> filter_is_out_of_order = 0x1<<4;  
+<a name="l00061"></a>00061 
+<a name="l00062"></a>00062     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> current_version = __TBB_PIPELINE_VERSION(4);
+<a name="l00063"></a>00063     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> version_mask = 0x7<<1; <span class="comment">// bits 1-3 are for version</span>
+<a name="l00064"></a>00064 <span class="keyword">public</span>:
+<a name="l00065"></a><a class="code" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf">00065</a>     <span class="keyword">enum</span> <a class="code" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf">mode</a> {
+<a name="l00067"></a>00067         <a class="code" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf75740556347260927e94ce3b23a34abe">parallel</a> = current_version | filter_is_out_of_order, 
+<a name="l00069"></a>00069         <a class="code" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf5645f2f2a541e53009d3e719c06c5f93">serial_in_order</a> = current_version | filter_is_serial,
+<a name="l00071"></a>00071         <a class="code" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf7fb70bcb663107adfc2938de89bab7d9">serial_out_of_order</a> = current_version | filter_is_serial | filter_is_out_of_order,
+<a name="l00073"></a>00073         <a class="code" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cff8662693d85bd1cd3df052b761edd237">serial</a> = serial_in_order
+<a name="l00074"></a>00074     };
+<a name="l00075"></a>00075 <span class="keyword">protected</span>:
+<a name="l00076"></a>00076     <a class="code" href="a00109.html">filter</a>( <span class="keywordtype">bool</span> is_serial_ ) : 
+<a name="l00077"></a>00077         next_filter_in_pipeline(not_in_pipeline()),
+<a name="l00078"></a>00078         input_buffer(NULL),
+<a name="l00079"></a>00079         my_filter_mode(static_cast<unsigned char>(is_serial_ ? <a class="code" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cff8662693d85bd1cd3df052b761edd237">serial</a> : <a class="code" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf75740556347260927e94ce3b23a34abe">parallel</a>)),
+<a name="l00080"></a>00080         prev_filter_in_pipeline(not_in_pipeline()),
+<a name="l00081"></a>00081         my_pipeline(NULL)
+<a name="l00082"></a>00082     {}
+<a name="l00083"></a>00083     
+<a name="l00084"></a>00084     filter( <a class="code" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf">mode</a> filter_mode ) :
+<a name="l00085"></a>00085         next_filter_in_pipeline(not_in_pipeline()),
+<a name="l00086"></a>00086         input_buffer(NULL),
+<a name="l00087"></a>00087         my_filter_mode(static_cast<unsigned char>(filter_mode)),
+<a name="l00088"></a>00088         prev_filter_in_pipeline(not_in_pipeline()),
+<a name="l00089"></a>00089         my_pipeline(NULL)
+<a name="l00090"></a>00090     {}
+<a name="l00091"></a>00091 
+<a name="l00092"></a>00092 <span class="keyword">public</span>:
+<a name="l00094"></a><a class="code" href="a00109.html#fcfec27656a69ff2072802ac001e936f">00094</a>     <span class="keywordtype">bool</span> <a class="code" href="a00109.html#fcfec27656a69ff2072802ac001e936f">is_serial</a>()<span class="keyword"> const </span>{
+<a name="l00095"></a>00095         <span class="keywordflow">return</span> bool( my_filter_mode & filter_is_serial );
+<a name="l00096"></a>00096     }  
+<a name="l00097"></a>00097     
+<a name="l00098"></a>00098     <span class="comment">// ! True if filter must receive stream in order.</span>
+<a name="l00099"></a>00099     <span class="keywordtype">bool</span> is_ordered()<span class="keyword"> const </span>{
+<a name="l00100"></a>00100         <span class="keywordflow">return</span> (my_filter_mode & (filter_is_out_of_order|filter_is_serial))==filter_is_serial;
+<a name="l00101"></a>00101     }
+<a name="l00102"></a>00102 
+<a name="l00104"></a>00104 
+<a name="l00105"></a>00105     <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="a00109.html#fa1b3dc1f4f47563ccab7f4d92f5b543">operator()</a>( <span class="keywordtype">void</span>* item ) = 0;
+<a name="l00106"></a>00106 
+<a name="l00108"></a>00108 
+<a name="l00109"></a>00109     <span class="keyword">virtual</span> __TBB_EXPORTED_METHOD <a class="code" href="a00109.html#66d159f362293e3964ba3da8bc1d2604">~filter</a>();
+<a name="l00110"></a>00110 
+<a name="l00111"></a>00111 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00113"></a>00113 <span class="preprocessor"></span>
+<a name="l00115"></a><a class="code" href="a00109.html#56275eb889c77c4807967133e21401bd">00115</a> <span class="preprocessor">    virtual void finalize( void* </span><span class="comment">/*item*/</span> ) {};
+<a name="l00116"></a>00116 <span class="preprocessor">#endif</span>
+<a name="l00117"></a>00117 <span class="preprocessor"></span>
+<a name="l00118"></a>00118 <span class="keyword">private</span>:
+<a name="l00120"></a>00120     <a class="code" href="a00109.html">filter</a>* next_filter_in_pipeline;
+<a name="l00121"></a>00121 
+<a name="l00123"></a>00123     internal::ordered_buffer* input_buffer;
+<a name="l00124"></a>00124 
+<a name="l00125"></a>00125     <span class="keyword">friend</span> <span class="keyword">class </span>internal::stage_task;
+<a name="l00126"></a>00126     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00116.html">pipeline</a>;
+<a name="l00127"></a>00127 
+<a name="l00129"></a>00129     <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> my_filter_mode;
+<a name="l00130"></a>00130 
+<a name="l00132"></a>00132     <a class="code" href="a00109.html">filter</a>* prev_filter_in_pipeline;
+<a name="l00133"></a>00133 
+<a name="l00135"></a>00135     <a class="code" href="a00116.html">pipeline</a>* my_pipeline;
+<a name="l00136"></a>00136 };
+<a name="l00137"></a>00137 
+<a name="l00139"></a>00139 
+<a name="l00140"></a><a class="code" href="a00116.html">00140</a> <span class="keyword">class </span><a class="code" href="a00116.html">pipeline</a> {
+<a name="l00141"></a>00141 <span class="keyword">public</span>:
+<a name="l00143"></a>00143     __TBB_EXPORTED_METHOD <a class="code" href="a00116.html#596dc3beba27099c4c8581cb419e1a59">pipeline</a>();
+<a name="l00144"></a>00144 
+<a name="l00147"></a>00147     <span class="keyword">virtual</span> __TBB_EXPORTED_METHOD <a class="code" href="a00116.html#49513c6c24f9d5bbbb27edca5efe01c9">~pipeline</a>();
+<a name="l00148"></a>00148 
+<a name="l00150"></a>00150     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD <a class="code" href="a00116.html#38fb5c9c8395dd6f89a4ae2011a83e0d">add_filter</a>( <a class="code" href="a00109.html">filter</a>& filter_ );
+<a name="l00151"></a>00151 
+<a name="l00153"></a>00153     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD <a class="code" href="a00116.html#f627616049b3fe36801f37ee40403ef8">run</a>( size_t max_number_of_live_tokens );
+<a name="l00154"></a>00154 
+<a name="l00155"></a>00155 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00157"></a>00157 <span class="preprocessor">    void __TBB_EXPORTED_METHOD run( size_t max_number_of_live_tokens, tbb::task_group_context& context );</span>
+<a name="l00158"></a>00158 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00159"></a>00159 <span class="preprocessor"></span>
+<a name="l00161"></a>00161     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD <a class="code" href="a00116.html#2c84aef5b834b555ee220b176e25931e">clear</a>();
+<a name="l00162"></a>00162 
+<a name="l00163"></a>00163 <span class="keyword">private</span>:
+<a name="l00164"></a>00164     <span class="keyword">friend</span> <span class="keyword">class </span>internal::stage_task;
+<a name="l00165"></a>00165     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00109.html">filter</a>;
+<a name="l00166"></a>00166 
+<a name="l00168"></a>00168     <a class="code" href="a00109.html">filter</a>* filter_list;
+<a name="l00169"></a>00169 
+<a name="l00171"></a>00171     <a class="code" href="a00109.html">filter</a>* filter_end;
+<a name="l00172"></a>00172 
+<a name="l00174"></a>00174     <a class="code" href="a00108.html">empty_task</a>* end_counter;
+<a name="l00175"></a>00175 
+<a name="l00177"></a>00177     <a class="code" href="a00093.html">atomic<internal::Token></a> input_tokens;
+<a name="l00178"></a>00178 
+<a name="l00180"></a>00180     internal::Token token_counter;
+<a name="l00181"></a>00181 
+<a name="l00183"></a>00183     <span class="keywordtype">bool</span> end_of_input;
+<a name="l00184"></a>00184 
+<a name="l00186"></a>00186     <span class="keywordtype">void</span> remove_filter( <a class="code" href="a00109.html">filter</a>& filter_ );
+<a name="l00187"></a>00187 
+<a name="l00189"></a>00189     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD inject_token( <a class="code" href="a00132.html">task</a>& <span class="keyword">self</span> );
+<a name="l00190"></a>00190 
+<a name="l00191"></a>00191 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00193"></a>00193 <span class="preprocessor">    void clear_filters();</span>
+<a name="l00194"></a>00194 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00195"></a>00195 <span class="preprocessor"></span>};
+<a name="l00196"></a>00196 
+<a name="l00197"></a>00197 } <span class="comment">// tbb</span>
+<a name="l00198"></a>00198 
+<a name="l00199"></a>00199 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_pipeline_H */</span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00270.html b/doc/html/a00270.html
index 4c09df2..94646d9 100644
--- a/doc/html/a00270.html
+++ b/doc/html/a00270.html
@@ -1,83 +1,119 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::tbb_thread_v3 Class Reference</title>
+<title>queuing_mutex.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::tbb_thread_v3 Class Reference</h1>Versioned thread class.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00357.html">tbb_thread.h</a>></code>
-<p>
-<a href="a00151.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w0" doxytag="tbb::internal::tbb_thread_v3::native_handle_type"></a>
-typedef HANDLE </td><td class="memItemRight" valign="bottom"><b>native_handle_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w1" doxytag="tbb::internal::tbb_thread_v3::native_handle_type"></a>
-typedef pthread_t </td><td class="memItemRight" valign="bottom"><b>native_handle_type</b></td></tr>
-
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::internal::tbb_thread_v3::tbb_thread_v3"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00270.html#a0">tbb_thread_v3</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Constructs a thread object that does not represent a thread of execution. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a1" doxytag="tbb::internal::tbb_thread_v3::tbb_thread_v3"></a>
-template<class F> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00270.html#a1">tbb_thread_v3</a> (F f)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Constructs an object and executes f() in a new thread. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a2" doxytag="tbb::internal::tbb_thread_v3::tbb_thread_v3"></a>
-template<class F, class X> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00270.html#a2">tbb_thread_v3</a> (F f, X x)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Constructs an object and executes f(x) in a new thread. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a3" doxytag="tbb::internal::tbb_thread_v3::tbb_thread_v3"></a>
-template<class F, class X, class Y> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00270.html#a3">tbb_thread_v3</a> (F f, X x, Y y)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Constructs an object and executes f(x,y) in a new thread. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::internal::tbb_thread_v3::operator="></a>
-<a class="el" href="a00270.html">tbb_thread_v3</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (<a class="el" href="a00270.html">tbb_thread_v3</a> &x)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::internal::tbb_thread_v3::joinable"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>joinable</b> () const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a6" doxytag="tbb::internal::tbb_thread_v3::join"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00270.html#a6">join</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The completion of the thread represented by *this happens before <a class="el" href="a00270.html#a6">join()</a> returns. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a7" doxytag="tbb::internal::tbb_thread_v3::detach"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00270.html#a7">detach</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">When <a class="el" href="a00270.html#a7">detach()</a> returns, *this no longer represents the possibly continuing thread of execution. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a9" doxytag="tbb::internal::tbb_thread_v3::get_id"></a>
-id </td><td class="memItemRight" valign="bottom"><b>get_id</b> () const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a10" doxytag="tbb::internal::tbb_thread_v3::native_handle"></a>
-native_handle_type </td><td class="memItemRight" valign="bottom"><b>native_handle</b> ()</td></tr>
-
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e0" doxytag="tbb::internal::tbb_thread_v3::hardware_concurrency"></a>
-unsigned __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00270.html#e0">hardware_concurrency</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The number of hardware thread contexts. <br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::internal::tbb_thread_v3::move_v3"></a>
-void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><b>move_v3</b> (<a class="el" href="a00270.html">tbb_thread_v3</a> &t1, <a class="el" href="a00270.html">tbb_thread_v3</a> &t2)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n1" doxytag="tbb::internal::tbb_thread_v3::tbb::swap"></a>
-void </td><td class="memItemRight" valign="bottom"><b>tbb::swap</b> (<a class="el" href="a00270.html">tbb_thread_v3</a> &t1, <a class="el" href="a00270.html">tbb_thread_v3</a> &t2)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Versioned thread class. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00357.html">tbb_thread.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>queuing_mutex.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_queuing_mutex_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_queuing_mutex_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <cstring></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "atomic.h"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include "tbb_profiling.h"</span>
+<a name="l00027"></a>00027 
+<a name="l00028"></a>00028 <span class="keyword">namespace </span>tbb {
+<a name="l00029"></a>00029 
+<a name="l00031"></a>00031 
+<a name="l00032"></a><a class="code" href="a00118.html">00032</a> <span class="keyword">class </span><a class="code" href="a00118.html">queuing_mutex</a> {
+<a name="l00033"></a>00033 <span class="keyword">public</span>:
+<a name="l00035"></a><a class="code" href="a00118.html#b389ad9c4db7293e4bdb5b8cda69ec04">00035</a>     <a class="code" href="a00118.html#b389ad9c4db7293e4bdb5b8cda69ec04">queuing_mutex</a>() {
+<a name="l00036"></a>00036         q_tail = NULL;
+<a name="l00037"></a>00037 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span>        internal_construct();
+<a name="l00039"></a>00039 <span class="preprocessor">#endif</span>
+<a name="l00040"></a>00040 <span class="preprocessor"></span>    }
+<a name="l00041"></a>00041 
+<a name="l00043"></a>00043 
+<a name="l00045"></a><a class="code" href="a00119.html">00045</a>     <span class="keyword">class </span><a class="code" href="a00119.html">scoped_lock</a>: internal::no_copy {
+<a name="l00047"></a>00047         <span class="keywordtype">void</span> initialize() {
+<a name="l00048"></a>00048             <a class="code" href="a00112.html">mutex</a> = NULL;
+<a name="l00049"></a>00049 <span class="preprocessor">#if TBB_USE_ASSERT</span>
+<a name="l00050"></a>00050 <span class="preprocessor"></span>            internal::poison_pointer(next);
+<a name="l00051"></a>00051 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
+<a name="l00052"></a>00052         }
+<a name="l00053"></a>00053     <span class="keyword">public</span>:
+<a name="l00055"></a>00055 
+<a name="l00056"></a><a class="code" href="a00119.html#db0fa3967491014572e24d6607bdc971">00056</a>         <a class="code" href="a00119.html#db0fa3967491014572e24d6607bdc971">scoped_lock</a>() {initialize();}
+<a name="l00057"></a>00057 
+<a name="l00059"></a>00059 
+<a name="l00060"></a><a class="code" href="a00119.html#9b51ef972f5618ac17caadb58841ab6d">00060</a>         <a class="code" href="a00119.html#db0fa3967491014572e24d6607bdc971">scoped_lock</a>( <a class="code" href="a00118.html">queuing_mutex</a>& m ) {
+<a name="l00061"></a>00061             initialize();
+<a name="l00062"></a>00062             <a class="code" href="a00119.html#533e4fc8355ee321206a0609c42d909d">acquire</a>(m);
+<a name="l00063"></a>00063         }
+<a name="l00064"></a>00064 
+<a name="l00066"></a><a class="code" href="a00119.html#ac2c576a93570957d694192a5f491443">00066</a>         <a class="code" href="a00119.html#ac2c576a93570957d694192a5f491443">~scoped_lock</a>() {
+<a name="l00067"></a>00067             <span class="keywordflow">if</span>( <a class="code" href="a00112.html">mutex</a> ) <a class="code" href="a00119.html#3bf2b8c87ff22115be9b2eac179f2d30">release</a>();
+<a name="l00068"></a>00068         }
+<a name="l00069"></a>00069 
+<a name="l00071"></a>00071         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD <a class="code" href="a00119.html#533e4fc8355ee321206a0609c42d909d">acquire</a>( <a class="code" href="a00118.html">queuing_mutex</a>& m );
+<a name="l00072"></a>00072 
+<a name="l00074"></a>00074         <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD <a class="code" href="a00119.html#e5a014fb817599386a87170cf2cf51a9">try_acquire</a>( <a class="code" href="a00118.html">queuing_mutex</a>& m );
+<a name="l00075"></a>00075 
+<a name="l00077"></a>00077         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD <a class="code" href="a00119.html#3bf2b8c87ff22115be9b2eac179f2d30">release</a>();
+<a name="l00078"></a>00078 
+<a name="l00079"></a>00079     <span class="keyword">private</span>:
+<a name="l00081"></a>00081         <a class="code" href="a00118.html">queuing_mutex</a>* <a class="code" href="a00112.html">mutex</a>;
+<a name="l00082"></a>00082 
+<a name="l00084"></a>00084         <a class="code" href="a00119.html">scoped_lock</a> *next;
+<a name="l00085"></a>00085 
+<a name="l00087"></a>00087 
+<a name="l00090"></a>00090         internal::uintptr going;
+<a name="l00091"></a>00091     };
+<a name="l00092"></a>00092 
+<a name="l00093"></a>00093     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_construct();
+<a name="l00094"></a>00094 
+<a name="l00095"></a>00095     <span class="comment">// Mutex traits</span>
+<a name="l00096"></a>00096     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_rw_mutex = <span class="keyword">false</span>;
+<a name="l00097"></a>00097     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_recursive_mutex = <span class="keyword">false</span>;
+<a name="l00098"></a>00098     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_fair_mutex = <span class="keyword">true</span>;
+<a name="l00099"></a>00099 
+<a name="l00100"></a>00100     <span class="keyword">friend</span> <span class="keyword">class </span>scoped_lock;
+<a name="l00101"></a>00101 <span class="keyword">private</span>:
+<a name="l00103"></a>00103     <a class="code" href="a00093.html">atomic<scoped_lock*></a> q_tail;
+<a name="l00104"></a>00104 
+<a name="l00105"></a>00105 };
+<a name="l00106"></a>00106 
+<a name="l00107"></a>00107 __TBB_DEFINE_PROFILING_SET_NAME(queuing_mutex)
+<a name="l00108"></a>00108 
+<a name="l00109"></a>00109 } <span class="comment">// namespace tbb</span>
+<a name="l00110"></a>00110 
+<a name="l00111"></a>00111 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_queuing_mutex_H */</span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00271.html b/doc/html/a00271.html
index 0adfe66..0b6a33a 100644
--- a/doc/html/a00271.html
+++ b/doc/html/a00271.html
@@ -1,43 +1,151 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::thread_closure_1< F, X > Struct Template Reference</title>
+<title>queuing_rw_mutex.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::thread_closure_1< F, X > Struct Template Reference</h1>Structure used to pass user function with 1 argument to thread.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00357.html">tbb_thread.h</a>></code>
-<p>
-<a href="a00149.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::internal::thread_closure_1::thread_closure_1"></a>
- </td><td class="memItemRight" valign="bottom"><b>thread_closure_1</b> (const F &f, const X &x)</td></tr>
-
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e0" doxytag="tbb::internal::thread_closure_1::start_routine"></a>
-__TBB_NATIVE_THREAD_ROUTINE </td><td class="memItemRight" valign="bottom"><a class="el" href="a00271.html#e0">start_routine</a> (void *c)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Routine passed to Windows's _beginthreadex by thread::internal_start() inside tbb.dll. <br></td></tr>
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="o0" doxytag="tbb::internal::thread_closure_1::function"></a>
-F </td><td class="memItemRight" valign="bottom"><b>function</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="o1" doxytag="tbb::internal::thread_closure_1::arg1"></a>
-X </td><td class="memItemRight" valign="bottom"><b>arg1</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<class F, class X><br>
- struct tbb::internal::thread_closure_1< F, X ></h3>
-
-Structure used to pass user function with 1 argument to thread. 
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="a00357.html">tbb_thread.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>queuing_rw_mutex.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_queuing_rw_mutex_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_queuing_rw_mutex_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <cstring></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "atomic.h"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include "tbb_profiling.h"</span>
+<a name="l00027"></a>00027 
+<a name="l00028"></a>00028 <span class="keyword">namespace </span>tbb {
+<a name="l00029"></a>00029 
+<a name="l00031"></a>00031 
+<a name="l00034"></a><a class="code" href="a00120.html">00034</a> <span class="keyword">class </span><a class="code" href="a00120.html">queuing_rw_mutex</a> {
+<a name="l00035"></a>00035 <span class="keyword">public</span>:
+<a name="l00037"></a><a class="code" href="a00120.html#85c90877c3447690ac4e2ac4ff8dea5e">00037</a>     <a class="code" href="a00120.html#85c90877c3447690ac4e2ac4ff8dea5e">queuing_rw_mutex</a>() {
+<a name="l00038"></a>00038         q_tail = NULL;
+<a name="l00039"></a>00039 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS</span>
+<a name="l00040"></a>00040 <span class="preprocessor"></span>        internal_construct();
+<a name="l00041"></a>00041 <span class="preprocessor">#endif</span>
+<a name="l00042"></a>00042 <span class="preprocessor"></span>    }
+<a name="l00043"></a>00043 
+<a name="l00045"></a><a class="code" href="a00120.html#1ba73e3d95cfdf8323880bc623af9099">00045</a>     <a class="code" href="a00120.html#1ba73e3d95cfdf8323880bc623af9099">~queuing_rw_mutex</a>() {
+<a name="l00046"></a>00046 <span class="preprocessor">#if TBB_USE_ASSERT</span>
+<a name="l00047"></a>00047 <span class="preprocessor"></span>        __TBB_ASSERT( !q_tail, <span class="stringliteral">"destruction of an acquired mutex"</span>);
+<a name="l00048"></a>00048 <span class="preprocessor">#endif</span>
+<a name="l00049"></a>00049 <span class="preprocessor"></span>    }
+<a name="l00050"></a>00050 
+<a name="l00051"></a>00051     <span class="keyword">class </span>scoped_lock;
+<a name="l00052"></a>00052     <span class="keyword">friend</span> <span class="keyword">class </span>scoped_lock;
+<a name="l00053"></a>00053 
+<a name="l00055"></a>00055 
+<a name="l00057"></a><a class="code" href="a00121.html">00057</a>     <span class="keyword">class </span><a class="code" href="a00121.html">scoped_lock</a>: internal::no_copy {
+<a name="l00059"></a>00059         <span class="keywordtype">void</span> initialize() {
+<a name="l00060"></a>00060             <a class="code" href="a00112.html">mutex</a> = NULL;
+<a name="l00061"></a>00061 <span class="preprocessor">#if TBB_USE_ASSERT</span>
+<a name="l00062"></a>00062 <span class="preprocessor"></span>            state = 0xFF; <span class="comment">// Set to invalid state</span>
+<a name="l00063"></a>00063             internal::poison_pointer(next);
+<a name="l00064"></a>00064             internal::poison_pointer(prev);
+<a name="l00065"></a>00065 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
+<a name="l00066"></a>00066         }
+<a name="l00067"></a>00067     <span class="keyword">public</span>:
+<a name="l00069"></a>00069 
+<a name="l00070"></a><a class="code" href="a00121.html#c62e365be7bcbba091c9ea7454a4d22c">00070</a>         <a class="code" href="a00121.html#c62e365be7bcbba091c9ea7454a4d22c">scoped_lock</a>() {initialize();}
+<a name="l00071"></a>00071 
+<a name="l00073"></a>00073 
+<a name="l00074"></a><a class="code" href="a00121.html#fbb8798792d3aebb136c46fc63d2529e">00074</a>         <a class="code" href="a00121.html#c62e365be7bcbba091c9ea7454a4d22c">scoped_lock</a>( <a class="code" href="a00120.html">queuing_rw_mutex</a>& m, <span class="keywordtype">bool</span> write=<span class="keyword">true</span> ) {
+<a name="l00075"></a>00075             initialize();
+<a name="l00076"></a>00076             <a class="code" href="a00121.html#a8dd5ab8686e76de21587544dbb681e0">acquire</a>(m,write);
+<a name="l00077"></a>00077         }
+<a name="l00078"></a>00078 
+<a name="l00080"></a><a class="code" href="a00121.html#32c7d67a660d23ebbaab1a1d2826d31a">00080</a>         <a class="code" href="a00121.html#32c7d67a660d23ebbaab1a1d2826d31a">~scoped_lock</a>() {
+<a name="l00081"></a>00081             <span class="keywordflow">if</span>( <a class="code" href="a00112.html">mutex</a> ) <a class="code" href="a00121.html#67ae221109ddc69510ab593874e435d4">release</a>();
+<a name="l00082"></a>00082         }
+<a name="l00083"></a>00083 
+<a name="l00085"></a>00085         <span class="keywordtype">void</span> <a class="code" href="a00121.html#a8dd5ab8686e76de21587544dbb681e0">acquire</a>( <a class="code" href="a00120.html">queuing_rw_mutex</a>& m, <span class="keywordtype">bool</span> write=<span class="keyword">true</span> );
+<a name="l00086"></a>00086 
+<a name="l00088"></a>00088         <span class="keywordtype">bool</span> <a class="code" href="a00121.html#2e4ff6c9ec2fee6682f95290d1f42baa">try_acquire</a>( <a class="code" href="a00120.html">queuing_rw_mutex</a>& m, <span class="keywordtype">bool</span> write=<span class="keyword">true</span> );
+<a name="l00089"></a>00089 
+<a name="l00091"></a>00091         <span class="keywordtype">void</span> <a class="code" href="a00121.html#67ae221109ddc69510ab593874e435d4">release</a>();
+<a name="l00092"></a>00092 
+<a name="l00094"></a>00094 
+<a name="l00095"></a>00095         <span class="keywordtype">bool</span> <a class="code" href="a00121.html#11ba1da4a722c9e6f73339a52c487e82">upgrade_to_writer</a>();
+<a name="l00096"></a>00096 
+<a name="l00098"></a>00098         <span class="keywordtype">bool</span> <a class="code" href="a00121.html#0d2f93edf7b15ec4bcee138823220c52">downgrade_to_reader</a>();
+<a name="l00099"></a>00099 
+<a name="l00100"></a>00100     <span class="keyword">private</span>:
+<a name="l00102"></a>00102         <a class="code" href="a00120.html">queuing_rw_mutex</a>* <a class="code" href="a00112.html">mutex</a>;
+<a name="l00103"></a>00103 
+<a name="l00105"></a>00105         <a class="code" href="a00121.html">scoped_lock</a> * prev, * next;
+<a name="l00106"></a>00106 
+<a name="l00107"></a>00107         <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> state_t;
+<a name="l00108"></a>00108 
+<a name="l00110"></a>00110         <a class="code" href="a00093.html">atomic<state_t></a> state;
+<a name="l00111"></a>00111 
+<a name="l00113"></a>00113 
+<a name="l00114"></a>00114         <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> going;
+<a name="l00115"></a>00115 
+<a name="l00117"></a>00117         <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> internal_lock;
+<a name="l00118"></a>00118 
+<a name="l00120"></a>00120         <span class="keywordtype">void</span> acquire_internal_lock();
+<a name="l00121"></a>00121 
+<a name="l00123"></a>00123 
+<a name="l00124"></a>00124         <span class="keywordtype">bool</span> try_acquire_internal_lock();
+<a name="l00125"></a>00125 
+<a name="l00127"></a>00127         <span class="keywordtype">void</span> release_internal_lock();
+<a name="l00128"></a>00128 
+<a name="l00130"></a>00130         <span class="keywordtype">void</span> wait_for_release_of_internal_lock();
+<a name="l00131"></a>00131 
+<a name="l00133"></a>00133         <span class="keywordtype">void</span> unblock_or_wait_on_internal_lock( uintptr_t );
+<a name="l00134"></a>00134     };
+<a name="l00135"></a>00135 
+<a name="l00136"></a>00136     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_construct();
+<a name="l00137"></a>00137 
+<a name="l00138"></a>00138     <span class="comment">// Mutex traits</span>
+<a name="l00139"></a>00139     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_rw_mutex = <span class="keyword">true</span>;
+<a name="l00140"></a>00140     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_recursive_mutex = <span class="keyword">false</span>;
+<a name="l00141"></a>00141     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_fair_mutex = <span class="keyword">true</span>;
+<a name="l00142"></a>00142 
+<a name="l00143"></a>00143 <span class="keyword">private</span>:
+<a name="l00145"></a>00145     <a class="code" href="a00093.html">atomic<scoped_lock*></a> q_tail;
+<a name="l00146"></a>00146 
+<a name="l00147"></a>00147 };
+<a name="l00148"></a>00148 
+<a name="l00149"></a>00149 __TBB_DEFINE_PROFILING_SET_NAME(queuing_rw_mutex)
+<a name="l00150"></a>00150 
+<a name="l00151"></a>00151 } <span class="comment">// namespace tbb</span>
+<a name="l00152"></a>00152 
+<a name="l00153"></a>00153 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_queuing_rw_mutex_H */</span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00272.html b/doc/html/a00272.html
index 9094d54..96366c1 100644
--- a/doc/html/a00272.html
+++ b/doc/html/a00272.html
@@ -1,39 +1,206 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::tick_count Class Reference</title>
+<title>recursive_mutex.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::tick_count Class Reference</h1>Absolute timestamp.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00358.html">tick_count.h</a>></code>
-<p>
-<a href="a00153.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::tick_count::tick_count"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00272.html#a0">tick_count</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct an absolute timestamp initialized to zero. <br></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e0" doxytag="tbb::tick_count::now"></a>
-<a class="el" href="a00272.html">tick_count</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00272.html#e0">now</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return current time. <br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::tick_count::operator-"></a>
-<a class="el" href="a00273.html">interval_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00272.html#n0">operator-</a> (const <a class="el" href="a00272.html">tick_count</a> &t1, const <a class="el" href="a00272.html">tick_count</a> &t0)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Subtract two timestamps to get the time interval between. <br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Absolute timestamp. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00358.html">tick_count.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>recursive_mutex.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_recursive_mutex_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_recursive_mutex_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#if _WIN32||_WIN64</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include <windows.h></span>
+<a name="l00027"></a>00027 <span class="preprocessor">#if !defined(_WIN32_WINNT)</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="comment">// The following Windows API function is declared explicitly;</span>
+<a name="l00029"></a>00029 <span class="comment">// otherwise any user would have to specify /D_WIN32_WINNT=0x0400</span>
+<a name="l00030"></a>00030 <span class="keyword">extern</span> <span class="stringliteral">"C"</span> BOOL WINAPI TryEnterCriticalSection( LPCRITICAL_SECTION );
+<a name="l00031"></a>00031 <span class="preprocessor">#endif</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span>
+<a name="l00033"></a>00033 <span class="preprocessor">#else </span><span class="comment">/* if not _WIN32||_WIN64 */</span>
+<a name="l00034"></a>00034 
+<a name="l00035"></a>00035 <span class="preprocessor">#include <pthread.h></span>
+<a name="l00036"></a>00036 <span class="keyword">namespace </span>tbb { <span class="keyword">namespace </span>internal {
+<a name="l00037"></a>00037 <span class="comment">// Use this internal TBB function to throw an exception</span>
+<a name="l00038"></a>00038   <span class="keyword">extern</span> <span class="keywordtype">void</span> handle_perror( <span class="keywordtype">int</span> error_code, <span class="keyword">const</span> <span class="keywordtype">char</span>* what );
+<a name="l00039"></a>00039 } } <span class="comment">//namespaces</span>
+<a name="l00040"></a>00040 
+<a name="l00041"></a>00041 <span class="preprocessor">#endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
+<a name="l00042"></a>00042 
+<a name="l00043"></a>00043 <span class="preprocessor">#include "tbb_stddef.h"</span>
+<a name="l00044"></a>00044 <span class="preprocessor">#include "tbb_profiling.h"</span>
+<a name="l00045"></a>00045 
+<a name="l00046"></a>00046 <span class="keyword">namespace </span>tbb {
+<a name="l00048"></a>00048 
+<a name="l00050"></a><a class="code" href="a00122.html">00050</a> <span class="keyword">class </span><a class="code" href="a00122.html">recursive_mutex</a> {
+<a name="l00051"></a>00051 <span class="keyword">public</span>:
+<a name="l00053"></a><a class="code" href="a00122.html#d2fceb7f95c24a8cd1457d4527e4b8c6">00053</a>     <a class="code" href="a00122.html#d2fceb7f95c24a8cd1457d4527e4b8c6">recursive_mutex</a>() {
+<a name="l00054"></a>00054 <span class="preprocessor">#if TBB_USE_ASSERT || TBB_USE_THREADING_TOOLS</span>
+<a name="l00055"></a>00055 <span class="preprocessor"></span>        internal_construct();
+<a name="l00056"></a>00056 <span class="preprocessor">#else</span>
+<a name="l00057"></a>00057 <span class="preprocessor"></span><span class="preprocessor">  #if _WIN32||_WIN64</span>
+<a name="l00058"></a>00058 <span class="preprocessor"></span>        InitializeCriticalSection(&impl);
+<a name="l00059"></a>00059 <span class="preprocessor">  #else</span>
+<a name="l00060"></a>00060 <span class="preprocessor"></span>        pthread_mutexattr_t mtx_attr;
+<a name="l00061"></a>00061         <span class="keywordtype">int</span> error_code = pthread_mutexattr_init( &mtx_attr );
+<a name="l00062"></a>00062         <span class="keywordflow">if</span>( error_code )
+<a name="l00063"></a>00063             tbb::internal::handle_perror(error_code,<span class="stringliteral">"recursive_mutex: pthread_mutexattr_init failed"</span>);
+<a name="l00064"></a>00064 
+<a name="l00065"></a>00065         pthread_mutexattr_settype( &mtx_attr, PTHREAD_MUTEX_RECURSIVE );
+<a name="l00066"></a>00066         error_code = pthread_mutex_init( &impl, &mtx_attr );
+<a name="l00067"></a>00067         <span class="keywordflow">if</span>( error_code )
+<a name="l00068"></a>00068             tbb::internal::handle_perror(error_code,<span class="stringliteral">"recursive_mutex: pthread_mutex_init failed"</span>);
+<a name="l00069"></a>00069 
+<a name="l00070"></a>00070         pthread_mutexattr_destroy( &mtx_attr );
+<a name="l00071"></a>00071 <span class="preprocessor">  #endif </span><span class="comment">/* _WIN32||_WIN64*/</span>
+<a name="l00072"></a>00072 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
+<a name="l00073"></a>00073     };
+<a name="l00074"></a>00074 
+<a name="l00075"></a>00075     ~<a class="code" href="a00122.html">recursive_mutex</a>() {
+<a name="l00076"></a>00076 <span class="preprocessor">#if TBB_USE_ASSERT</span>
+<a name="l00077"></a>00077 <span class="preprocessor"></span>        internal_destroy();
+<a name="l00078"></a>00078 <span class="preprocessor">#else</span>
+<a name="l00079"></a>00079 <span class="preprocessor"></span><span class="preprocessor">  #if _WIN32||_WIN64</span>
+<a name="l00080"></a>00080 <span class="preprocessor"></span>        DeleteCriticalSection(&impl);
+<a name="l00081"></a>00081 <span class="preprocessor">  #else</span>
+<a name="l00082"></a>00082 <span class="preprocessor"></span>        pthread_mutex_destroy(&impl); 
+<a name="l00083"></a>00083 
+<a name="l00084"></a>00084 <span class="preprocessor">  #endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
+<a name="l00085"></a>00085 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
+<a name="l00086"></a>00086     };
+<a name="l00087"></a>00087 
+<a name="l00088"></a>00088     <span class="keyword">class </span>scoped_lock;
+<a name="l00089"></a>00089     <span class="keyword">friend</span> <span class="keyword">class </span>scoped_lock;
+<a name="l00090"></a>00090 
+<a name="l00092"></a>00092 
+<a name="l00094"></a><a class="code" href="a00123.html">00094</a>     <span class="keyword">class </span><a class="code" href="a00123.html">scoped_lock</a>: internal::no_copy {
+<a name="l00095"></a>00095     <span class="keyword">public</span>:
+<a name="l00097"></a><a class="code" href="a00123.html#d82d4d36fbf9727a493d26ae50855fe7">00097</a>         <a class="code" href="a00123.html#d82d4d36fbf9727a493d26ae50855fe7">scoped_lock</a>() : my_mutex(NULL) {};
+<a name="l00098"></a>00098 
+<a name="l00100"></a>00100 
+<a name="l00101"></a><a class="code" href="a00123.html#dec17713c4c1321ac8fec66816d0c602">00101</a>         <a class="code" href="a00123.html#d82d4d36fbf9727a493d26ae50855fe7">scoped_lock</a>( <a class="code" href="a00122.html">recursive_mutex</a>& <a class="code" href="a00112.html">mutex</a> ) {
+<a name="l00102"></a>00102             <a class="code" href="a00123.html#7fb04da37cccf8c99b1f9102d9074f9a">acquire</a>( mutex );
+<a name="l00103"></a>00103         }
+<a name="l00104"></a>00104 
+<a name="l00106"></a><a class="code" href="a00123.html#c1197ffb8f3cd9d4fed71d7e06265b7c">00106</a>         <a class="code" href="a00123.html#c1197ffb8f3cd9d4fed71d7e06265b7c">~scoped_lock</a>() {
+<a name="l00107"></a>00107             <span class="keywordflow">if</span>( my_mutex ) 
+<a name="l00108"></a>00108                 <a class="code" href="a00123.html#ac480ea0e9d5ea0345a67d57008b6263">release</a>();
+<a name="l00109"></a>00109         }
+<a name="l00110"></a>00110 
+<a name="l00112"></a><a class="code" href="a00123.html#7fb04da37cccf8c99b1f9102d9074f9a">00112</a>         <span class="keywordtype">void</span> <a class="code" href="a00123.html#7fb04da37cccf8c99b1f9102d9074f9a">acquire</a>( <a class="code" href="a00122.html">recursive_mutex</a>& <a class="code" href="a00112.html">mutex</a> ) {
+<a name="l00113"></a>00113 <span class="preprocessor">#if TBB_USE_ASSERT</span>
+<a name="l00114"></a>00114 <span class="preprocessor"></span>            internal_acquire( mutex );
+<a name="l00115"></a>00115 <span class="preprocessor">#else</span>
+<a name="l00116"></a>00116 <span class="preprocessor"></span>            my_mutex = &mutex;
+<a name="l00117"></a>00117 <span class="preprocessor">  #if _WIN32||_WIN64</span>
+<a name="l00118"></a>00118 <span class="preprocessor"></span>            EnterCriticalSection(&mutex.<a class="code" href="a00122.html#19cbe7ff028602532d43ff81ec388f29">impl</a>);
+<a name="l00119"></a>00119 <span class="preprocessor">  #else</span>
+<a name="l00120"></a>00120 <span class="preprocessor"></span>            pthread_mutex_lock( &mutex.<a class="code" href="a00122.html#19cbe7ff028602532d43ff81ec388f29">impl</a> );
+<a name="l00121"></a>00121 <span class="preprocessor">  #endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
+<a name="l00122"></a>00122 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
+<a name="l00123"></a>00123         }
+<a name="l00124"></a>00124 
+<a name="l00126"></a><a class="code" href="a00123.html#36bfc3e93e3ef6340abef4901444d340">00126</a>         <span class="keywordtype">bool</span> <a class="code" href="a00123.html#36bfc3e93e3ef6340abef4901444d340">try_acquire</a>( <a class="code" href="a00122.html">recursive_mutex</a>& <a class="code" href="a00112.html">mutex</a> ) {
+<a name="l00127"></a>00127 <span class="preprocessor">#if TBB_USE_ASSERT</span>
+<a name="l00128"></a>00128 <span class="preprocessor"></span>            <span class="keywordflow">return</span> internal_try_acquire( mutex );
+<a name="l00129"></a>00129 <span class="preprocessor">#else</span>
+<a name="l00130"></a>00130 <span class="preprocessor"></span>            <span class="keywordtype">bool</span> result;
+<a name="l00131"></a>00131 <span class="preprocessor">  #if _WIN32||_WIN64</span>
+<a name="l00132"></a>00132 <span class="preprocessor"></span>            result = TryEnterCriticalSection(&mutex.<a class="code" href="a00122.html#19cbe7ff028602532d43ff81ec388f29">impl</a>)!=0;
+<a name="l00133"></a>00133 <span class="preprocessor">  #else</span>
+<a name="l00134"></a>00134 <span class="preprocessor"></span>            result = pthread_mutex_trylock(&mutex.<a class="code" href="a00122.html#19cbe7ff028602532d43ff81ec388f29">impl</a>)==0;
+<a name="l00135"></a>00135 <span class="preprocessor">  #endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
+<a name="l00136"></a>00136             <span class="keywordflow">if</span>( result )
+<a name="l00137"></a>00137                 my_mutex = &mutex;
+<a name="l00138"></a>00138 
+<a name="l00139"></a>00139             <span class="keywordflow">return</span> result;
+<a name="l00140"></a>00140 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
+<a name="l00141"></a>00141         }
+<a name="l00142"></a>00142 
+<a name="l00144"></a><a class="code" href="a00123.html#ac480ea0e9d5ea0345a67d57008b6263">00144</a>         <span class="keywordtype">void</span> <a class="code" href="a00123.html#ac480ea0e9d5ea0345a67d57008b6263">release</a>() {
+<a name="l00145"></a>00145 <span class="preprocessor">#if TBB_USE_ASSERT</span>
+<a name="l00146"></a>00146 <span class="preprocessor"></span>            internal_release ();
+<a name="l00147"></a>00147 <span class="preprocessor">#else</span>
+<a name="l00148"></a>00148 <span class="preprocessor"></span><span class="preprocessor">  #if _WIN32||_WIN64</span>
+<a name="l00149"></a>00149 <span class="preprocessor"></span>            LeaveCriticalSection(&my_mutex-><a class="code" href="a00122.html#19cbe7ff028602532d43ff81ec388f29">impl</a>);
+<a name="l00150"></a>00150 <span class="preprocessor">  #else</span>
+<a name="l00151"></a>00151 <span class="preprocessor"></span>            pthread_mutex_unlock(&my_mutex-><a class="code" href="a00122.html#19cbe7ff028602532d43ff81ec388f29">impl</a>);
+<a name="l00152"></a>00152 <span class="preprocessor">  #endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
+<a name="l00153"></a>00153             my_mutex = NULL;
+<a name="l00154"></a>00154 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
+<a name="l00155"></a>00155         }
+<a name="l00156"></a>00156 
+<a name="l00157"></a>00157     <span class="keyword">private</span>:
+<a name="l00159"></a>00159         <a class="code" href="a00122.html">recursive_mutex</a>* my_mutex;
+<a name="l00160"></a>00160 
+<a name="l00162"></a>00162         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_acquire( <a class="code" href="a00122.html">recursive_mutex</a>& m );
+<a name="l00163"></a>00163 
+<a name="l00165"></a>00165         <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD internal_try_acquire( <a class="code" href="a00122.html">recursive_mutex</a>& m );
+<a name="l00166"></a>00166 
+<a name="l00168"></a>00168         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_release();
+<a name="l00169"></a>00169     };
+<a name="l00170"></a>00170 
+<a name="l00171"></a>00171     <span class="comment">// Mutex traits</span>
+<a name="l00172"></a>00172     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_rw_mutex = <span class="keyword">false</span>;
+<a name="l00173"></a>00173     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_recursive_mutex = <span class="keyword">true</span>;
+<a name="l00174"></a>00174     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_fair_mutex = <span class="keyword">false</span>;
+<a name="l00175"></a>00175 
+<a name="l00176"></a>00176 <span class="keyword">private</span>:
+<a name="l00177"></a>00177 <span class="preprocessor">#if _WIN32||_WIN64</span>
+<a name="l00178"></a>00178 <span class="preprocessor"></span>    CRITICAL_SECTION impl;
+<a name="l00179"></a>00179     <span class="keyword">enum</span> state_t {
+<a name="l00180"></a>00180         INITIALIZED=0x1234,
+<a name="l00181"></a>00181         DESTROYED=0x789A,
+<a name="l00182"></a>00182     } state;
+<a name="l00183"></a>00183 <span class="preprocessor">#else</span>
+<a name="l00184"></a>00184 <span class="preprocessor"></span>    pthread_mutex_t impl;
+<a name="l00185"></a>00185 <span class="preprocessor">#endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
+<a name="l00186"></a>00186 
+<a name="l00188"></a>00188     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_construct();
+<a name="l00189"></a>00189 
+<a name="l00191"></a>00191     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_destroy();
+<a name="l00192"></a>00192 };
+<a name="l00193"></a>00193 
+<a name="l00194"></a>00194 __TBB_DEFINE_PROFILING_SET_NAME(recursive_mutex)
+<a name="l00195"></a>00195 
+<a name="l00196"></a>00196 } <span class="comment">// namespace tbb </span>
+<a name="l00197"></a>00197 
+<a name="l00198"></a>00198 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_recursive_mutex_H */</span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00273.html b/doc/html/a00273.html
index e61a575..1067224 100644
--- a/doc/html/a00273.html
+++ b/doc/html/a00273.html
@@ -1,61 +1,190 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::tick_count::interval_t Class Reference</title>
+<title>scalable_allocator.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::tick_count::interval_t Class Reference</h1>Relative time interval.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00358.html">tick_count.h</a>></code>
-<p>
-<a href="a00154.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::tick_count::interval_t::interval_t"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00273.html#a0">interval_t</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct a time interval representing zero time duration. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::tick_count::interval_t::interval_t"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00273.html#a1">interval_t</a> (double sec)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct a time interval representing sec seconds time duration. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::tick_count::interval_t::seconds"></a>
-double </td><td class="memItemRight" valign="bottom"><a class="el" href="a00273.html#a2">seconds</a> () const </td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the length of a time interval in seconds. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::tick_count::interval_t::operator+="></a>
-<a class="el" href="a00273.html">interval_t</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00273.html#a3">operator+=</a> (const <a class="el" href="a00273.html">interval_t</a> &i)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Accumulation operator. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::tick_count::interval_t::operator-="></a>
-<a class="el" href="a00273.html">interval_t</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00273.html#a4">operator-=</a> (const <a class="el" href="a00273.html">interval_t</a> &i)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Subtraction operator. <br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::tick_count::interval_t::tbb::tick_count"></a>
-class </td><td class="memItemRight" valign="bottom"><a class="el" href="a00273.html#n0">tbb::tick_count</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n1" doxytag="tbb::tick_count::interval_t::operator-"></a>
-<a class="el" href="a00273.html">interval_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00273.html#n1">operator-</a> (const <a class="el" href="a00272.html">tick_count</a> &t1, const <a class="el" href="a00272.html">tick_count</a> &t0)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Extract the intervals from the tick_counts and subtract them. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n2" doxytag="tbb::tick_count::interval_t::operator+"></a>
-<a class="el" href="a00273.html">interval_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00273.html#n2">operator+</a> (const <a class="el" href="a00273.html">interval_t</a> &i, const <a class="el" href="a00273.html">interval_t</a> &j)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Add two intervals. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n3" doxytag="tbb::tick_count::interval_t::operator-"></a>
-<a class="el" href="a00273.html">interval_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00273.html#n3">operator-</a> (const <a class="el" href="a00273.html">interval_t</a> &i, const <a class="el" href="a00273.html">interval_t</a> &j)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Subtract two intervals. <br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Relative time interval. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00358.html">tick_count.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>scalable_allocator.h</h1><a href="a00167.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_scalable_allocator_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_scalable_allocator_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include <stddef.h></span> <span class="comment">/* Need ptrdiff_t and size_t from here. */</span>
+<a name="l00026"></a>00026 
+<a name="l00027"></a>00027 <span class="preprocessor">#if !defined(__cplusplus) && __ICC==1100</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (push)</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (disable: 991)</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span>
+<a name="l00032"></a>00032 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
+<a name="l00034"></a>00034 <span class="preprocessor">#endif </span><span class="comment">/* __cplusplus */</span>
+<a name="l00035"></a>00035 
+<a name="l00036"></a>00036 <span class="preprocessor">#if _MSC_VER >= 1400</span>
+<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_EXPORTED_FUNC   __cdecl</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_EXPORTED_FUNC</span>
+<a name="l00040"></a>00040 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00041"></a>00041 <span class="preprocessor"></span>
+<a name="l00044"></a>00044 <span class="keywordtype">void</span> * __TBB_EXPORTED_FUNC <a class="code" href="a00185.html#gc25b8e6c76db0b346a8249796a7a2475">scalable_malloc</a> (size_t size);
+<a name="l00045"></a>00045 
+<a name="l00048"></a>00048 <span class="keywordtype">void</span>   __TBB_EXPORTED_FUNC <a class="code" href="a00185.html#gca3579c21244dba9f0c351e5984d4565">scalable_free</a> (<span class="keywordtype">void</span>* ptr);
+<a name="l00049"></a>00049 
+<a name="l00052"></a>00052 <span class="keywordtype">void</span> * __TBB_EXPORTED_FUNC <a class="code" href="a00185.html#g951bbbbd2d041acb59ba5fa910b52543">scalable_realloc</a> (<span class="keywordtype">void</span>* ptr, size_t size);
+<a name="l00053"></a>00053 
+<a name="l00056"></a>00056 <span class="keywordtype">void</span> * __TBB_EXPORTED_FUNC <a class="code" href="a00185.html#g3f5a2fde0bcaa3eda35be32c8658f444">scalable_calloc</a> (size_t nobj, size_t size);
+<a name="l00057"></a>00057 
+<a name="l00060"></a>00060 <span class="keywordtype">int</span> __TBB_EXPORTED_FUNC <a class="code" href="a00185.html#g05dcec987480bb2c82ecdead6a085899">scalable_posix_memalign</a> (<span class="keywordtype">void</span>** memptr, size_t alignment, size_t size);
+<a name="l00061"></a>00061 
+<a name="l00064"></a>00064 <span class="keywordtype">void</span> * __TBB_EXPORTED_FUNC <a class="code" href="a00185.html#gc1c7aaa1fe85c17ba5a3a96f7e8d89e7">scalable_aligned_malloc</a> (size_t size, size_t alignment);
+<a name="l00065"></a>00065 
+<a name="l00068"></a>00068 <span class="keywordtype">void</span> * __TBB_EXPORTED_FUNC <a class="code" href="a00185.html#gbaea91376be80dfabd7c93eaffd9abaa">scalable_aligned_realloc</a> (<span class="keywordtype">void</span>* ptr, size_t size, size_t alignment);
+<a name="l00069"></a>00069 
+<a name="l00072"></a>00072 <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC <a class="code" href="a00185.html#g65a20e812012f15ec7442d5b45d0cba5">scalable_aligned_free</a> (<span class="keywordtype">void</span>* ptr);
+<a name="l00073"></a>00073 
+<a name="l00074"></a>00074 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00075"></a>00075 <span class="preprocessor"></span>} <span class="comment">/* extern "C" */</span>
+<a name="l00076"></a>00076 <span class="preprocessor">#endif </span><span class="comment">/* __cplusplus */</span>
+<a name="l00077"></a>00077 
+<a name="l00078"></a>00078 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00079"></a>00079 <span class="preprocessor"></span>
+<a name="l00080"></a>00080 <span class="preprocessor">#include <new></span>      <span class="comment">/* To use new with the placement argument */</span>
+<a name="l00081"></a>00081 
+<a name="l00082"></a>00082 <span class="comment">/* Ensure that including this header does not cause implicit linkage with TBB */</span>
+<a name="l00083"></a>00083 <span class="preprocessor">#ifndef __TBB_NO_IMPLICIT_LINKAGE</span>
+<a name="l00084"></a>00084 <span class="preprocessor"></span><span class="preprocessor">    #define __TBB_NO_IMPLICIT_LINKAGE 1</span>
+<a name="l00085"></a>00085 <span class="preprocessor"></span><span class="preprocessor">    #include "tbb_stddef.h"</span>
+<a name="l00086"></a>00086 <span class="preprocessor">    #undef  __TBB_NO_IMPLICIT_LINKAGE</span>
+<a name="l00087"></a>00087 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00088"></a>00088 <span class="preprocessor"></span><span class="preprocessor">    #include "tbb_stddef.h"</span>
+<a name="l00089"></a>00089 <span class="preprocessor">#endif</span>
+<a name="l00090"></a>00090 <span class="preprocessor"></span>
+<a name="l00091"></a>00091 
+<a name="l00092"></a>00092 <span class="keyword">namespace </span>tbb {
+<a name="l00093"></a>00093 
+<a name="l00094"></a>00094 <span class="preprocessor">#if _MSC_VER && !defined(__INTEL_COMPILER)</span>
+<a name="l00095"></a>00095 <span class="preprocessor"></span>    <span class="comment">// Workaround for erroneous "unreferenced parameter" warning in method destroy.</span>
+<a name="l00096"></a>00096 <span class="preprocessor">    #pragma warning (push)</span>
+<a name="l00097"></a>00097 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (disable: 4100)</span>
+<a name="l00098"></a>00098 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00099"></a>00099 <span class="preprocessor"></span>
+<a name="l00101"></a>00101 
+<a name="l00104"></a>00104 <span class="keyword">template</span><<span class="keyword">typename</span> T>
+<a name="l00105"></a><a class="code" href="a00124.html">00105</a> <span class="keyword">class </span><a class="code" href="a00124.html">scalable_allocator</a> {
+<a name="l00106"></a>00106 <span class="keyword">public</span>:
+<a name="l00107"></a>00107     <span class="keyword">typedef</span> <span class="keyword">typename</span> internal::allocator_type<T>::value_type value_type;
+<a name="l00108"></a>00108     <span class="keyword">typedef</span> value_type* pointer;
+<a name="l00109"></a>00109     <span class="keyword">typedef</span> <span class="keyword">const</span> value_type* const_pointer;
+<a name="l00110"></a>00110     <span class="keyword">typedef</span> value_type& reference;
+<a name="l00111"></a>00111     <span class="keyword">typedef</span> <span class="keyword">const</span> value_type& const_reference;
+<a name="l00112"></a>00112     <span class="keyword">typedef</span> size_t size_type;
+<a name="l00113"></a>00113     <span class="keyword">typedef</span> ptrdiff_t difference_type;
+<a name="l00114"></a>00114     <span class="keyword">template</span><<span class="keyword">class</span> U> <span class="keyword">struct </span>rebind {
+<a name="l00115"></a>00115         <span class="keyword">typedef</span> <a class="code" href="a00124.html">scalable_allocator<U></a> other;
+<a name="l00116"></a>00116     };
+<a name="l00117"></a>00117 
+<a name="l00118"></a>00118     <a class="code" href="a00124.html">scalable_allocator</a>() <span class="keywordflow">throw</span>() {}
+<a name="l00119"></a>00119     <a class="code" href="a00124.html">scalable_allocator</a>( <span class="keyword">const</span> <a class="code" href="a00124.html">scalable_allocator</a>& ) <span class="keywordflow">throw</span>() {}
+<a name="l00120"></a>00120     <span class="keyword">template</span><<span class="keyword">typename</span> U> <a class="code" href="a00124.html">scalable_allocator</a>(<span class="keyword">const</span> <a class="code" href="a00124.html">scalable_allocator<U></a>&) <span class="keywordflow">throw</span>() {}
+<a name="l00121"></a>00121 
+<a name="l00122"></a>00122     pointer address(reference x)<span class="keyword"> const </span>{<span class="keywordflow">return</span> &x;}
+<a name="l00123"></a>00123     const_pointer address(const_reference x)<span class="keyword"> const </span>{<span class="keywordflow">return</span> &x;}
+<a name="l00124"></a>00124 
+<a name="l00126"></a><a class="code" href="a00124.html#726b1586d05d44665a36e1c7b2699bfd">00126</a>     pointer <a class="code" href="a00124.html#726b1586d05d44665a36e1c7b2699bfd">allocate</a>( size_type n, <span class="keyword">const</span> <span class="keywordtype">void</span>* <span class="comment">/*hint*/</span> =0 ) {
+<a name="l00127"></a>00127         <span class="keywordflow">return</span> static_cast<pointer>( <a class="code" href="a00185.html#gc25b8e6c76db0b346a8249796a7a2475">scalable_malloc</a>( n * <span class="keyword">sizeof</span>(value_type) ) );
+<a name="l00128"></a>00128     }
+<a name="l00129"></a>00129 
+<a name="l00131"></a><a class="code" href="a00124.html#f806a238c18cbcfb531e1e0a0d2ec59d">00131</a>     <span class="keywordtype">void</span> <a class="code" href="a00124.html#f806a238c18cbcfb531e1e0a0d2ec59d">deallocate</a>( pointer p, size_type ) {
+<a name="l00132"></a>00132         <a class="code" href="a00185.html#gca3579c21244dba9f0c351e5984d4565">scalable_free</a>( p );
+<a name="l00133"></a>00133     }
+<a name="l00134"></a>00134 
+<a name="l00136"></a><a class="code" href="a00124.html#880e766f1d913988c21973dbdd874fd5">00136</a>     size_type <a class="code" href="a00124.html#880e766f1d913988c21973dbdd874fd5">max_size</a>() const throw() {
+<a name="l00137"></a>00137         size_type absolutemax = static_cast<size_type>(-1) / <span class="keyword">sizeof</span> (value_type);
+<a name="l00138"></a>00138         <span class="keywordflow">return</span> (absolutemax > 0 ? absolutemax : 1);
+<a name="l00139"></a>00139     }
+<a name="l00140"></a>00140     <span class="keywordtype">void</span> construct( pointer p, <span class="keyword">const</span> value_type& val ) { <span class="keyword">new</span>(static_cast<void*>(p)) value_type(val); }
+<a name="l00141"></a>00141     <span class="keywordtype">void</span> destroy( pointer p ) {p->~value_type();}
+<a name="l00142"></a>00142 };
+<a name="l00143"></a>00143 
+<a name="l00144"></a>00144 <span class="preprocessor">#if _MSC_VER && !defined(__INTEL_COMPILER)</span>
+<a name="l00145"></a>00145 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (pop)</span>
+<a name="l00146"></a>00146 <span class="preprocessor"></span><span class="preprocessor">#endif // warning 4100 is back</span>
+<a name="l00147"></a>00147 <span class="preprocessor"></span>
+<a name="l00149"></a>00149 
+<a name="l00150"></a>00150 <span class="keyword">template</span><>
+<a name="l00151"></a><a class="code" href="a00125.html">00151</a> <span class="keyword">class </span><a class="code" href="a00124.html">scalable_allocator</a><void> {
+<a name="l00152"></a>00152 <span class="keyword">public</span>:
+<a name="l00153"></a>00153     <span class="keyword">typedef</span> <span class="keywordtype">void</span>* pointer;
+<a name="l00154"></a>00154     <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="keywordtype">void</span>* const_pointer;
+<a name="l00155"></a>00155     <span class="keyword">typedef</span> <span class="keywordtype">void</span> value_type;
+<a name="l00156"></a>00156     <span class="keyword">template</span><<span class="keyword">class</span> U> <span class="keyword">struct </span>rebind {
+<a name="l00157"></a>00157         <span class="keyword">typedef</span> <a class="code" href="a00124.html">scalable_allocator<U></a> other;
+<a name="l00158"></a>00158     };
+<a name="l00159"></a>00159 };
+<a name="l00160"></a>00160 
+<a name="l00161"></a>00161 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00162"></a>00162 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator==( <span class="keyword">const</span> <a class="code" href="a00124.html">scalable_allocator<T></a>&, <span class="keyword">const</span> <a class="code" href="a00124.html">scalable_allocator<U></a>& ) {<span class="keywordflow">return</span> <span class="keyword">true</span>;}
+<a name="l00163"></a>00163 
+<a name="l00164"></a>00164 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00165"></a>00165 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator!=( <span class="keyword">const</span> scalable_allocator<T>&, <span class="keyword">const</span> scalable_allocator<U>& ) {<span class="keywordflow">return</span> <span class="keyword">false</span>;}
+<a name="l00166"></a>00166 
+<a name="l00167"></a>00167 } <span class="comment">// namespace tbb</span>
+<a name="l00168"></a>00168 
+<a name="l00169"></a>00169 <span class="preprocessor">#if _MSC_VER</span>
+<a name="l00170"></a>00170 <span class="preprocessor"></span><span class="preprocessor">    #if __TBB_BUILD && !defined(__TBBMALLOC_NO_IMPLICIT_LINKAGE)</span>
+<a name="l00171"></a>00171 <span class="preprocessor"></span><span class="preprocessor">        #define __TBBMALLOC_NO_IMPLICIT_LINKAGE 1</span>
+<a name="l00172"></a>00172 <span class="preprocessor"></span><span class="preprocessor">    #endif</span>
+<a name="l00173"></a>00173 <span class="preprocessor"></span>
+<a name="l00174"></a>00174 <span class="preprocessor">    #if !__TBBMALLOC_NO_IMPLICIT_LINKAGE</span>
+<a name="l00175"></a>00175 <span class="preprocessor"></span><span class="preprocessor">        #ifdef _DEBUG</span>
+<a name="l00176"></a>00176 <span class="preprocessor"></span><span class="preprocessor">            #pragma comment(lib, "tbbmalloc_debug.lib")</span>
+<a name="l00177"></a>00177 <span class="preprocessor"></span><span class="preprocessor">        #else</span>
+<a name="l00178"></a>00178 <span class="preprocessor"></span><span class="preprocessor">            #pragma comment(lib, "tbbmalloc.lib")</span>
+<a name="l00179"></a>00179 <span class="preprocessor"></span><span class="preprocessor">        #endif</span>
+<a name="l00180"></a>00180 <span class="preprocessor"></span><span class="preprocessor">    #endif</span>
+<a name="l00181"></a>00181 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00182"></a>00182 <span class="preprocessor"></span>
+<a name="l00183"></a>00183 <span class="preprocessor">#endif </span><span class="comment">/* __cplusplus */</span>
+<a name="l00184"></a>00184 
+<a name="l00185"></a>00185 <span class="preprocessor">#if !defined(__cplusplus) && __ICC==1100</span>
+<a name="l00186"></a>00186 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (pop)</span>
+<a name="l00187"></a>00187 <span class="preprocessor"></span><span class="preprocessor">#endif // ICC 11.0 warning 991 is back</span>
+<a name="l00188"></a>00188 <span class="preprocessor"></span>
+<a name="l00189"></a>00189 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_scalable_allocator_H */</span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00274.html b/doc/html/a00274.html
index a91198c..fa82b90 100644
--- a/doc/html/a00274.html
+++ b/doc/html/a00274.html
@@ -1,116 +1,149 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::vector_iterator< Container, Value > Class Template Reference</title>
+<title>spin_mutex.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::vector_iterator< Container, Value > Class Template Reference</h1>Meets requirements of a forward iterator for STL and a Value for a <a class="el" href="a00195.html">blocked_range</a>.*/.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00331.html">concurrent_vector.h</a>></code>
-<p>
-<a href="a00042.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w0" doxytag="tbb::internal::vector_iterator::difference_type"></a>
-typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w1" doxytag="tbb::internal::vector_iterator::value_type"></a>
-typedef Value </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w2" doxytag="tbb::internal::vector_iterator::pointer"></a>
-typedef Value * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w3" doxytag="tbb::internal::vector_iterator::reference"></a>
-typedef Value & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="w4" doxytag="tbb::internal::vector_iterator::iterator_category"></a>
-typedef std::random_access_iterator_tag </td><td class="memItemRight" valign="bottom"><b>iterator_category</b></td></tr>
-
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::internal::vector_iterator::vector_iterator"></a>
- </td><td class="memItemRight" valign="bottom"><b>vector_iterator</b> (const Container &vector, size_t index)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1" doxytag="tbb::internal::vector_iterator::vector_iterator"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00274.html#a1">vector_iterator</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Default constructor. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::internal::vector_iterator::vector_iterator"></a>
- </td><td class="memItemRight" valign="bottom"><b>vector_iterator</b> (const <a class="el" href="a00274.html">vector_iterator</a>< Container, typename Container::value_type > &other)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::internal::vector_iterator::operator+"></a>
-<a class="el" href="a00274.html">vector_iterator</a> </td><td class="memItemRight" valign="bottom"><b>operator+</b> (ptrdiff_t offset) const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::internal::vector_iterator::operator+="></a>
-<a class="el" href="a00274.html">vector_iterator</a> & </td><td class="memItemRight" valign="bottom"><b>operator+=</b> (ptrdiff_t offset)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::internal::vector_iterator::operator-"></a>
-<a class="el" href="a00274.html">vector_iterator</a> </td><td class="memItemRight" valign="bottom"><b>operator-</b> (ptrdiff_t offset) const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a6" doxytag="tbb::internal::vector_iterator::operator-="></a>
-<a class="el" href="a00274.html">vector_iterator</a> & </td><td class="memItemRight" valign="bottom"><b>operator-=</b> (ptrdiff_t offset)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a7" doxytag="tbb::internal::vector_iterator::operator *"></a>
-Value & </td><td class="memItemRight" valign="bottom"><b>operator *</b> () const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a8" doxytag="tbb::internal::vector_iterator::operator[]"></a>
-Value & </td><td class="memItemRight" valign="bottom"><b>operator[]</b> (ptrdiff_t k) const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a9" doxytag="tbb::internal::vector_iterator::operator->"></a>
-Value * </td><td class="memItemRight" valign="bottom"><b>operator-></b> () const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a10" doxytag="tbb::internal::vector_iterator::operator++"></a>
-<a class="el" href="a00274.html">vector_iterator</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00274.html#a10">operator++</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Pre increment. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a11" doxytag="tbb::internal::vector_iterator::operator--"></a>
-<a class="el" href="a00274.html">vector_iterator</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00274.html#a11">operator--</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Pre decrement. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a12" doxytag="tbb::internal::vector_iterator::operator++"></a>
-<a class="el" href="a00274.html">vector_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00274.html#a12">operator++</a> (int)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Post increment. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a13" doxytag="tbb::internal::vector_iterator::operator--"></a>
-<a class="el" href="a00274.html">vector_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00274.html#a13">operator--</a> (int)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Post decrement. <br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::internal::vector_iterator::internal::vector_iterator"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::vector_iterator</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n1" doxytag="tbb::internal::vector_iterator::tbb::concurrent_vector"></a>
-class </td><td class="memItemRight" valign="bottom"><a class="el" href="a00274.html#n1">tbb::concurrent_vector</a></td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="n2" doxytag="tbb::internal::vector_iterator::operator+"></a>
-template<typename C, typename T> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"><a class="el" href="a00274.html">vector_iterator</a>< C, T > </td><td class="memTemplItemRight" valign="bottom"><b>operator+</b> (ptrdiff_t offset, const <a class="el" href="a00274.html">vector_iterator</a>< C, T > &v)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="n3" doxytag="tbb::internal::vector_iterator::operator=="></a>
-template<typename C, typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00274.html">vector_iterator</a>< C, T > &i, const <a class="el" href="a00274.html">vector_iterator</a>< C, U > &j)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="n4" doxytag="tbb::internal::vector_iterator::operator<"></a>
-template<typename C, typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator<</b> (const <a class="el" href="a00274.html">vector_iterator</a>< C, T > &i, const <a class="el" href="a00274.html">vector_iterator</a>< C, U > &j)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="n5" doxytag="tbb::internal::vector_iterator::operator-"></a>
-template<typename C, typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">ptrdiff_t </td><td class="memTemplItemRight" valign="bottom"><b>operator-</b> (const <a class="el" href="a00274.html">vector_iterator</a>< C, T > &i, const <a class="el" href="a00274.html">vector_iterator</a>< C, U > &j)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Container, typename Value><br>
- class tbb::internal::vector_iterator< Container, Value ></h3>
-
-Meets requirements of a forward iterator for STL and a Value for a <a class="el" href="a00195.html">blocked_range</a>.*/. 
-<p>
-Value is either the T or const T type of the container. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00331.html">concurrent_vector.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>spin_mutex.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_spin_mutex_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_spin_mutex_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <cstddef></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "tbb_stddef.h"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include "tbb_machine.h"</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include "tbb_profiling.h"</span>
+<a name="l00028"></a>00028 
+<a name="l00029"></a>00029 <span class="keyword">namespace </span>tbb {
+<a name="l00030"></a>00030 
+<a name="l00032"></a>00032 
+<a name="l00037"></a><a class="code" href="a00127.html">00037</a> <span class="keyword">class </span><a class="code" href="a00127.html">spin_mutex</a> {
+<a name="l00039"></a>00039     <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> flag;
+<a name="l00040"></a>00040 
+<a name="l00041"></a>00041 <span class="keyword">public</span>:
+<a name="l00043"></a>00043 
+<a name="l00044"></a><a class="code" href="a00127.html#3d8fb44644fd8d41ada1fbeba7409be3">00044</a>     <a class="code" href="a00127.html#3d8fb44644fd8d41ada1fbeba7409be3">spin_mutex</a>() : flag(0) {
+<a name="l00045"></a>00045 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS</span>
+<a name="l00046"></a>00046 <span class="preprocessor"></span>        internal_construct();
+<a name="l00047"></a>00047 <span class="preprocessor">#endif</span>
+<a name="l00048"></a>00048 <span class="preprocessor"></span>    }
+<a name="l00049"></a>00049 
+<a name="l00051"></a><a class="code" href="a00128.html">00051</a>     <span class="keyword">class </span><a class="code" href="a00128.html">scoped_lock</a> : internal::no_copy {
+<a name="l00052"></a>00052     <span class="keyword">private</span>:
+<a name="l00054"></a>00054         <a class="code" href="a00127.html">spin_mutex</a>* my_mutex; 
+<a name="l00055"></a>00055 
+<a name="l00057"></a>00057         internal::uintptr my_unlock_value;
+<a name="l00058"></a>00058 
+<a name="l00060"></a>00060         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_acquire( <a class="code" href="a00127.html">spin_mutex</a>& m );
+<a name="l00061"></a>00061 
+<a name="l00063"></a>00063         <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD internal_try_acquire( <a class="code" href="a00127.html">spin_mutex</a>& m );
+<a name="l00064"></a>00064 
+<a name="l00066"></a>00066         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_release();
+<a name="l00067"></a>00067 
+<a name="l00068"></a>00068     <span class="keyword">public</span>:
+<a name="l00070"></a><a class="code" href="a00128.html#29ae680ae7f5e685c2e15535b9c855b3">00070</a>         <a class="code" href="a00128.html#29ae680ae7f5e685c2e15535b9c855b3">scoped_lock</a>() : my_mutex(NULL), my_unlock_value(0) {}
+<a name="l00071"></a>00071 
+<a name="l00073"></a><a class="code" href="a00128.html#5ce6807050a9e8f87bcb4a65dccb12ef">00073</a>         <a class="code" href="a00128.html#29ae680ae7f5e685c2e15535b9c855b3">scoped_lock</a>( <a class="code" href="a00127.html">spin_mutex</a>& m ) { 
+<a name="l00074"></a>00074 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT</span>
+<a name="l00075"></a>00075 <span class="preprocessor"></span>            my_mutex=NULL;
+<a name="l00076"></a>00076             internal_acquire(m);
+<a name="l00077"></a>00077 <span class="preprocessor">#else</span>
+<a name="l00078"></a>00078 <span class="preprocessor"></span>            my_unlock_value = __TBB_LockByte(m.<a class="code" href="a00127.html#81b0b05fb71280ce0c79708e82569d86">flag</a>);
+<a name="l00079"></a>00079             my_mutex=&m;
+<a name="l00080"></a>00080 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT*/</span>
+<a name="l00081"></a>00081         }
+<a name="l00082"></a>00082 
+<a name="l00084"></a><a class="code" href="a00128.html#3ee3c338732b1f64b0b32a757807a30d">00084</a>         <span class="keywordtype">void</span> <a class="code" href="a00128.html#3ee3c338732b1f64b0b32a757807a30d">acquire</a>( <a class="code" href="a00127.html">spin_mutex</a>& m ) {
+<a name="l00085"></a>00085 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT</span>
+<a name="l00086"></a>00086 <span class="preprocessor"></span>            internal_acquire(m);
+<a name="l00087"></a>00087 <span class="preprocessor">#else</span>
+<a name="l00088"></a>00088 <span class="preprocessor"></span>            my_unlock_value = __TBB_LockByte(m.<a class="code" href="a00127.html#81b0b05fb71280ce0c79708e82569d86">flag</a>);
+<a name="l00089"></a>00089             my_mutex = &m;
+<a name="l00090"></a>00090 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT*/</span>
+<a name="l00091"></a>00091         }
+<a name="l00092"></a>00092 
+<a name="l00094"></a><a class="code" href="a00128.html#9297ec188534b45dc0ca48f2f39a0501">00094</a>         <span class="keywordtype">bool</span> <a class="code" href="a00128.html#9297ec188534b45dc0ca48f2f39a0501">try_acquire</a>( <a class="code" href="a00127.html">spin_mutex</a>& m ) {
+<a name="l00095"></a>00095 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT</span>
+<a name="l00096"></a>00096 <span class="preprocessor"></span>            <span class="keywordflow">return</span> internal_try_acquire(m);
+<a name="l00097"></a>00097 <span class="preprocessor">#else</span>
+<a name="l00098"></a>00098 <span class="preprocessor"></span>            <span class="keywordtype">bool</span> result = __TBB_TryLockByte(m.<a class="code" href="a00127.html#81b0b05fb71280ce0c79708e82569d86">flag</a>);
+<a name="l00099"></a>00099             <span class="keywordflow">if</span>( result ) {
+<a name="l00100"></a>00100                 my_unlock_value = 0;
+<a name="l00101"></a>00101                 my_mutex = &m;
+<a name="l00102"></a>00102             }
+<a name="l00103"></a>00103             <span class="keywordflow">return</span> result;
+<a name="l00104"></a>00104 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT*/</span>
+<a name="l00105"></a>00105         }
+<a name="l00106"></a>00106 
+<a name="l00108"></a><a class="code" href="a00128.html#eeb615e68e963e6bf8d9c11402d0ce8e">00108</a>         <span class="keywordtype">void</span> <a class="code" href="a00128.html#eeb615e68e963e6bf8d9c11402d0ce8e">release</a>() {
+<a name="l00109"></a>00109 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT</span>
+<a name="l00110"></a>00110 <span class="preprocessor"></span>            internal_release();
+<a name="l00111"></a>00111 <span class="preprocessor">#else</span>
+<a name="l00112"></a>00112 <span class="preprocessor"></span>            __TBB_store_with_release(my_mutex-><a class="code" href="a00127.html#81b0b05fb71280ce0c79708e82569d86">flag</a>, static_cast<unsigned char>(my_unlock_value));
+<a name="l00113"></a>00113             my_mutex = NULL;
+<a name="l00114"></a>00114 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT */</span>
+<a name="l00115"></a>00115         }
+<a name="l00116"></a>00116 
+<a name="l00118"></a><a class="code" href="a00128.html#ac6fa425d1f06c56d8b70abc51aac844">00118</a>         <a class="code" href="a00128.html#ac6fa425d1f06c56d8b70abc51aac844">~scoped_lock</a>() {
+<a name="l00119"></a>00119             <span class="keywordflow">if</span>( my_mutex ) {
+<a name="l00120"></a>00120 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT</span>
+<a name="l00121"></a>00121 <span class="preprocessor"></span>                internal_release();
+<a name="l00122"></a>00122 <span class="preprocessor">#else</span>
+<a name="l00123"></a>00123 <span class="preprocessor"></span>                __TBB_store_with_release(my_mutex-><a class="code" href="a00127.html#81b0b05fb71280ce0c79708e82569d86">flag</a>, static_cast<unsigned char>(my_unlock_value));
+<a name="l00124"></a>00124 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT */</span>
+<a name="l00125"></a>00125             }
+<a name="l00126"></a>00126         }
+<a name="l00127"></a>00127     };
+<a name="l00128"></a>00128 
+<a name="l00129"></a>00129     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_construct();
+<a name="l00130"></a>00130 
+<a name="l00131"></a>00131     <span class="comment">// Mutex traits</span>
+<a name="l00132"></a>00132     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_rw_mutex = <span class="keyword">false</span>;
+<a name="l00133"></a>00133     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_recursive_mutex = <span class="keyword">false</span>;
+<a name="l00134"></a>00134     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_fair_mutex = <span class="keyword">false</span>;
+<a name="l00135"></a>00135 
+<a name="l00136"></a>00136     <span class="keyword">friend</span> <span class="keyword">class </span>scoped_lock;
+<a name="l00137"></a>00137 };
+<a name="l00138"></a>00138 
+<a name="l00139"></a>00139 __TBB_DEFINE_PROFILING_SET_NAME(spin_mutex)
+<a name="l00140"></a>00140 
+<a name="l00141"></a>00141 } <span class="comment">// namespace tbb</span>
+<a name="l00142"></a>00142 
+<a name="l00143"></a>00143 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_spin_mutex_H */</span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00275.html b/doc/html/a00275.html
index 9aa5a74..a564271 100644
--- a/doc/html/a00275.html
+++ b/doc/html/a00275.html
@@ -1,21 +1,189 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::version_tag_v3 Struct Reference</title>
+<title>spin_rw_mutex.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::version_tag_v3 Struct Reference</h1><code>#include <<a class="el" href="a00356.html">tbb_stddef.h</a>></code>
-<p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Version tag can be necessary to prevent loader on Linux from using the wrong symbol in debug builds (when inline functions are compiled as out-of-line). * 
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="a00356.html">tbb_stddef.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>spin_rw_mutex.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_spin_rw_mutex_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_spin_rw_mutex_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "tbb_stddef.h"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "tbb_machine.h"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include "tbb_profiling.h"</span>
+<a name="l00027"></a>00027 
+<a name="l00028"></a>00028 <span class="keyword">namespace </span>tbb {
+<a name="l00029"></a>00029 
+<a name="l00030"></a>00030 <span class="keyword">class </span>spin_rw_mutex_v3;
+<a name="l00031"></a>00031 <span class="keyword">typedef</span> spin_rw_mutex_v3 spin_rw_mutex;
+<a name="l00032"></a>00032 
+<a name="l00034"></a>00034 
+<a name="l00035"></a><a class="code" href="a00129.html">00035</a> <span class="keyword">class </span><a class="code" href="a00129.html">spin_rw_mutex_v3</a> {
+<a name="l00037"></a>00037 
+<a name="l00039"></a>00039     <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD internal_acquire_writer();
+<a name="l00040"></a>00040 
+<a name="l00042"></a>00042 
+<a name="l00043"></a>00043     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_release_writer();
+<a name="l00044"></a>00044 
+<a name="l00046"></a>00046     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_acquire_reader();
+<a name="l00047"></a>00047 
+<a name="l00049"></a>00049     <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD internal_upgrade();
+<a name="l00050"></a>00050 
+<a name="l00052"></a>00052 
+<a name="l00053"></a>00053     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_downgrade();
+<a name="l00054"></a>00054 
+<a name="l00056"></a>00056     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_release_reader();
+<a name="l00057"></a>00057 
+<a name="l00059"></a>00059     <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD internal_try_acquire_writer();
+<a name="l00060"></a>00060 
+<a name="l00062"></a>00062     <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD internal_try_acquire_reader();
+<a name="l00063"></a>00063 
+<a name="l00065"></a>00065 <span class="keyword">public</span>:
+<a name="l00067"></a><a class="code" href="a00129.html#61332b2756de89f3f5f69310cbb6e70c">00067</a>     <a class="code" href="a00129.html#61332b2756de89f3f5f69310cbb6e70c">spin_rw_mutex_v3</a>() : state(0) {
+<a name="l00068"></a>00068 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS</span>
+<a name="l00069"></a>00069 <span class="preprocessor"></span>        internal_construct();
+<a name="l00070"></a>00070 <span class="preprocessor">#endif</span>
+<a name="l00071"></a>00071 <span class="preprocessor"></span>    }
+<a name="l00072"></a>00072 
+<a name="l00073"></a>00073 <span class="preprocessor">#if TBB_USE_ASSERT</span>
+<a name="l00075"></a><a class="code" href="a00129.html#9a815fb2759e55072ed413f1b6970cf3">00075</a> <span class="preprocessor">    ~spin_rw_mutex_v3() {</span>
+<a name="l00076"></a>00076 <span class="preprocessor"></span>        __TBB_ASSERT( !state, <span class="stringliteral">"destruction of an acquired mutex"</span>);
+<a name="l00077"></a>00077     };
+<a name="l00078"></a>00078 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
+<a name="l00079"></a>00079 
+<a name="l00081"></a>00081 
+<a name="l00083"></a><a class="code" href="a00130.html">00083</a>     <span class="keyword">class </span><a class="code" href="a00130.html">scoped_lock</a> : internal::no_copy {
+<a name="l00084"></a>00084     <span class="keyword">public</span>:
+<a name="l00086"></a>00086 
+<a name="l00087"></a><a class="code" href="a00130.html#d6ea60dee5563f702379bf5e51aa8806">00087</a>         <a class="code" href="a00130.html">scoped_lock</a>() : <a class="code" href="a00112.html">mutex</a>(NULL) {}
+<a name="l00088"></a>00088 
+<a name="l00090"></a>00090 
+<a name="l00091"></a><a class="code" href="a00130.html#42a92d4f8fdde425b111cfa8a9228071">00091</a>         <a class="code" href="a00130.html">scoped_lock</a>( <a class="code" href="a00129.html">spin_rw_mutex</a>& m, <span class="keywordtype">bool</span> write = <span class="keyword">true</span> ) : <a class="code" href="a00112.html">mutex</a>(NULL) {
+<a name="l00092"></a>00092             <a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fef5f1fafe8d229d348ff91d937f64e79c7">acquire</a>(m, write);
+<a name="l00093"></a>00093         }
+<a name="l00094"></a>00094 
+<a name="l00096"></a><a class="code" href="a00130.html#d7eaaa3f2e2c5dc11e7005811b1bdd04">00096</a>         ~<a class="code" href="a00130.html">scoped_lock</a>() {
+<a name="l00097"></a>00097             <span class="keywordflow">if</span>( <a class="code" href="a00112.html">mutex</a> ) <a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fefaa1fa107db0245c41fb109d976ae8d70">release</a>();
+<a name="l00098"></a>00098         }
+<a name="l00099"></a>00099 
+<a name="l00101"></a><a class="code" href="a00130.html#b0b646ec5be02a127d159bbb7ca65353">00101</a>         <span class="keywordtype">void</span> <a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fef5f1fafe8d229d348ff91d937f64e79c7">acquire</a>( <a class="code" href="a00129.html">spin_rw_mutex</a>& m, <span class="keywordtype">bool</span> write = <span class="keyword">true</span> ) {
+<a name="l00102"></a>00102             __TBB_ASSERT( !<a class="code" href="a00112.html">mutex</a>, <span class="stringliteral">"holding mutex already"</span> );
+<a name="l00103"></a>00103             is_writer = write; 
+<a name="l00104"></a>00104             <a class="code" href="a00112.html">mutex</a> = &m;
+<a name="l00105"></a>00105             <span class="keywordflow">if</span>( write ) <a class="code" href="a00112.html">mutex</a>->internal_acquire_writer();
+<a name="l00106"></a>00106             <span class="keywordflow">else</span>        <a class="code" href="a00112.html">mutex</a>->internal_acquire_reader();
+<a name="l00107"></a>00107         }
+<a name="l00108"></a>00108 
+<a name="l00110"></a>00110 
+<a name="l00111"></a><a class="code" href="a00130.html#3f0b1e3f2efab63336400348bd070226">00111</a>         <span class="keywordtype">bool</span> upgrade_to_writer() {
+<a name="l00112"></a>00112             __TBB_ASSERT( <a class="code" href="a00112.html">mutex</a>, <span class="stringliteral">"lock is not acquired"</span> );
+<a name="l00113"></a>00113             __TBB_ASSERT( !is_writer, <span class="stringliteral">"not a reader"</span> );
+<a name="l00114"></a>00114             is_writer = <span class="keyword">true</span>; 
+<a name="l00115"></a>00115             <span class="keywordflow">return</span> <a class="code" href="a00112.html">mutex</a>->internal_upgrade();
+<a name="l00116"></a>00116         }
+<a name="l00117"></a>00117 
+<a name="l00119"></a><a class="code" href="a00130.html#61b14d00a78185c9b2d206ebfc379124">00119</a>         <span class="keywordtype">void</span> <a class="code" href="a00181.html#a8686246bb5d3664bd07563749970fefaa1fa107db0245c41fb109d976ae8d70">release</a>() {
+<a name="l00120"></a>00120             __TBB_ASSERT( <a class="code" href="a00112.html">mutex</a>, <span class="stringliteral">"lock is not acquired"</span> );
+<a name="l00121"></a>00121             <a class="code" href="a00129.html">spin_rw_mutex</a> *m = <a class="code" href="a00112.html">mutex</a>; 
+<a name="l00122"></a>00122             <a class="code" href="a00112.html">mutex</a> = NULL;
+<a name="l00123"></a>00123 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT</span>
+<a name="l00124"></a>00124 <span class="preprocessor"></span>            <span class="keywordflow">if</span>( is_writer ) m->internal_release_writer();
+<a name="l00125"></a>00125             <span class="keywordflow">else</span>            m->internal_release_reader();
+<a name="l00126"></a>00126 <span class="preprocessor">#else</span>
+<a name="l00127"></a>00127 <span class="preprocessor"></span>            <span class="keywordflow">if</span>( is_writer ) __TBB_AtomicAND( &m-><a class="code" href="a00129.html#621b900d5fef23d2e401aabcbb777c76">state</a>, READERS ); 
+<a name="l00128"></a>00128             <span class="keywordflow">else</span>            __TBB_FetchAndAddWrelease( &m-><a class="code" href="a00129.html#621b900d5fef23d2e401aabcbb777c76">state</a>, -(intptr_t)ONE_READER);
+<a name="l00129"></a>00129 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT */</span>
+<a name="l00130"></a>00130         }
+<a name="l00131"></a>00131 
+<a name="l00133"></a><a class="code" href="a00130.html#c2c2c38a08cb9080e87099fac3e5bc94">00133</a>         <span class="keywordtype">bool</span> downgrade_to_reader() {
+<a name="l00134"></a>00134 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT</span>
+<a name="l00135"></a>00135 <span class="preprocessor"></span>            __TBB_ASSERT( <a class="code" href="a00112.html">mutex</a>, <span class="stringliteral">"lock is not acquired"</span> );
+<a name="l00136"></a>00136             __TBB_ASSERT( is_writer, <span class="stringliteral">"not a writer"</span> );
+<a name="l00137"></a>00137             <a class="code" href="a00112.html">mutex</a>->internal_downgrade();
+<a name="l00138"></a>00138 <span class="preprocessor">#else</span>
+<a name="l00139"></a>00139 <span class="preprocessor"></span>             __TBB_FetchAndAddW( &<a class="code" href="a00112.html">mutex</a>->state, ((intptr_t)ONE_READER-WRITER));
+<a name="l00140"></a>00140 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT */</span>
+<a name="l00141"></a>00141             is_writer = <span class="keyword">false</span>;
+<a name="l00142"></a>00142 
+<a name="l00143"></a>00143             <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00144"></a>00144         }
+<a name="l00145"></a>00145 
+<a name="l00147"></a><a class="code" href="a00130.html#9879626968d9b9a04cd2ec0fb2e84ae1">00147</a>         <span class="keywordtype">bool</span> try_acquire( <a class="code" href="a00129.html">spin_rw_mutex</a>& m, <span class="keywordtype">bool</span> write = <span class="keyword">true</span> ) {
+<a name="l00148"></a>00148             __TBB_ASSERT( !<a class="code" href="a00112.html">mutex</a>, <span class="stringliteral">"holding mutex already"</span> );
+<a name="l00149"></a>00149             <span class="keywordtype">bool</span> result;
+<a name="l00150"></a>00150             is_writer = write; 
+<a name="l00151"></a>00151             result = write? m.internal_try_acquire_writer()
+<a name="l00152"></a>00152                           : m.internal_try_acquire_reader();
+<a name="l00153"></a>00153             <span class="keywordflow">if</span>( result ) 
+<a name="l00154"></a>00154                 <a class="code" href="a00112.html">mutex</a> = &m;
+<a name="l00155"></a>00155             <span class="keywordflow">return</span> result;
+<a name="l00156"></a>00156         }
+<a name="l00157"></a>00157 
+<a name="l00158"></a>00158     <span class="keyword">private</span>:
+<a name="l00160"></a>00160         <a class="code" href="a00129.html">spin_rw_mutex</a>* <a class="code" href="a00112.html">mutex</a>;
+<a name="l00161"></a>00161 
+<a name="l00163"></a>00163 
+<a name="l00164"></a>00164         <span class="keywordtype">bool</span> is_writer;
+<a name="l00165"></a>00165     };
+<a name="l00166"></a>00166 
+<a name="l00167"></a>00167     <span class="comment">// Mutex traits</span>
+<a name="l00168"></a>00168     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_rw_mutex = <span class="keyword">true</span>;
+<a name="l00169"></a>00169     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_recursive_mutex = <span class="keyword">false</span>;
+<a name="l00170"></a>00170     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_fair_mutex = <span class="keyword">false</span>;
+<a name="l00171"></a>00171 
+<a name="l00172"></a>00172 <span class="keyword">private</span>:
+<a name="l00173"></a>00173     <span class="keyword">typedef</span> intptr_t state_t;
+<a name="l00174"></a>00174     <span class="keyword">static</span> <span class="keyword">const</span> state_t WRITER = 1;
+<a name="l00175"></a>00175     <span class="keyword">static</span> <span class="keyword">const</span> state_t WRITER_PENDING = 2;
+<a name="l00176"></a>00176     <span class="keyword">static</span> <span class="keyword">const</span> state_t READERS = ~(WRITER | WRITER_PENDING);
+<a name="l00177"></a>00177     <span class="keyword">static</span> <span class="keyword">const</span> state_t ONE_READER = 4;
+<a name="l00178"></a>00178     <span class="keyword">static</span> <span class="keyword">const</span> state_t BUSY = WRITER | READERS;
+<a name="l00180"></a>00180 
+<a name="l00183"></a>00183     state_t state;
+<a name="l00184"></a>00184 
+<a name="l00185"></a>00185     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_construct();
+<a name="l00186"></a>00186 };
+<a name="l00187"></a>00187 
+<a name="l00188"></a>00188 __TBB_DEFINE_PROFILING_SET_NAME(spin_rw_mutex)
+<a name="l00189"></a>00189 
+<a name="l00190"></a>00190 } <span class="comment">// namespace tbb</span>
+<a name="l00191"></a>00191 
+<a name="l00192"></a>00192 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_spin_rw_mutex_H */</span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00276.html b/doc/html/a00276.html
index 947a959..573aa71 100644
--- a/doc/html/a00276.html
+++ b/doc/html/a00276.html
@@ -1,38 +1,562 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::while_group_task< Body > Class Template Reference</title>
+<title>task.h Source File</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::while_group_task< Body > Class Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>For internal use only.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00340.html">parallel_while.h</a>></code>
-<p>
-Inherits <a class="el" href="a00261.html">tbb::task</a>.
-<p>
-Inheritance diagram for tbb::internal::while_group_task< Body >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00085.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::internal::while_group_task::while_task"></a>
-class </td><td class="memItemRight" valign="bottom"><b>while_task</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Body><br>
- class tbb::internal::while_group_task< Body ></h3>
-
-For internal use only. 
-<p>
-Unpacks a block of iterations. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00340.html">parallel_while.h</a></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>task.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_task_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_task_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "tbb_stddef.h"</span>
+<a name="l00025"></a>00025 
+<a name="l00026"></a>00026 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#include "cache_aligned_allocator.h"</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
+<a name="l00029"></a>00029 
+<a name="l00030"></a>00030 <span class="keyword">namespace </span>tbb {
+<a name="l00031"></a>00031 
+<a name="l00032"></a>00032 <span class="keyword">class </span>task;
+<a name="l00033"></a>00033 <span class="keyword">class </span>task_list;
+<a name="l00034"></a>00034 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="keyword">class </span>task_group_context;
+<a name="l00036"></a>00036 <span class="keyword">class </span>tbb_exception;
+<a name="l00037"></a>00037 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
+<a name="l00038"></a>00038 
+<a name="l00040"></a>00040 <span class="keyword">namespace </span>internal {
+<a name="l00041"></a>00041 
+<a name="l00042"></a>00042     <span class="keyword">class </span>scheduler: no_copy {
+<a name="l00043"></a>00043     <span class="keyword">public</span>:
+<a name="l00045"></a>00045         <span class="keyword">virtual</span> <span class="keywordtype">void</span> spawn( task& first, task*& next ) = 0;
+<a name="l00046"></a>00046 
+<a name="l00048"></a>00048         <span class="keyword">virtual</span> <span class="keywordtype">void</span> wait_for_all( task& parent, task* child ) = 0;
+<a name="l00049"></a>00049 
+<a name="l00051"></a>00051         <span class="keyword">virtual</span> <span class="keywordtype">void</span> spawn_root_and_wait( task& first, task*& next ) = 0;
+<a name="l00052"></a>00052 
+<a name="l00054"></a>00054         <span class="comment">//  Have to have it just to shut up overzealous compilation warnings</span>
+<a name="l00055"></a>00055         <span class="keyword">virtual</span> ~scheduler() = 0;
+<a name="l00056"></a>00056     };
+<a name="l00057"></a>00057 
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060     <span class="keyword">typedef</span> intptr reference_count;
+<a name="l00061"></a>00061 
+<a name="l00063"></a>00063     <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> affinity_id;
+<a name="l00064"></a>00064 
+<a name="l00065"></a>00065 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00066"></a>00066 <span class="preprocessor"></span>    <span class="keyword">struct </span>context_list_node_t {
+<a name="l00067"></a>00067         context_list_node_t *my_prev,
+<a name="l00068"></a>00068                             *my_next;
+<a name="l00069"></a>00069     };
+<a name="l00070"></a>00070 
+<a name="l00071"></a>00071     <span class="keyword">class </span>allocate_root_with_context_proxy: no_assign {
+<a name="l00072"></a>00072         task_group_context& my_context;
+<a name="l00073"></a>00073     <span class="keyword">public</span>:
+<a name="l00074"></a>00074         allocate_root_with_context_proxy ( task_group_context& ctx ) : my_context(ctx) {}
+<a name="l00075"></a>00075         task& __TBB_EXPORTED_METHOD allocate( size_t size ) <span class="keyword">const</span>;
+<a name="l00076"></a>00076         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD free( task& ) <span class="keyword">const</span>;
+<a name="l00077"></a>00077     };
+<a name="l00078"></a>00078 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
+<a name="l00079"></a>00079 
+<a name="l00080"></a>00080     <span class="keyword">class </span>allocate_root_proxy: no_assign {
+<a name="l00081"></a>00081     <span class="keyword">public</span>:
+<a name="l00082"></a>00082         <span class="keyword">static</span> task& __TBB_EXPORTED_FUNC allocate( size_t size );
+<a name="l00083"></a>00083         <span class="keyword">static</span> <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC free( task& );
+<a name="l00084"></a>00084     };
+<a name="l00085"></a>00085 
+<a name="l00086"></a>00086     <span class="keyword">class </span>allocate_continuation_proxy: no_assign {
+<a name="l00087"></a>00087     <span class="keyword">public</span>:
+<a name="l00088"></a>00088         task& __TBB_EXPORTED_METHOD allocate( size_t size ) <span class="keyword">const</span>;
+<a name="l00089"></a>00089         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD free( task& ) <span class="keyword">const</span>;
+<a name="l00090"></a>00090     };
+<a name="l00091"></a>00091 
+<a name="l00092"></a>00092     <span class="keyword">class </span>allocate_child_proxy: no_assign {
+<a name="l00093"></a>00093     <span class="keyword">public</span>:
+<a name="l00094"></a>00094         task& __TBB_EXPORTED_METHOD allocate( size_t size ) <span class="keyword">const</span>;
+<a name="l00095"></a>00095         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD free( task& ) <span class="keyword">const</span>;
+<a name="l00096"></a>00096     };
+<a name="l00097"></a>00097 
+<a name="l00098"></a>00098     <span class="keyword">class </span>allocate_additional_child_of_proxy: no_assign {
+<a name="l00099"></a>00099         task& <span class="keyword">self</span>;
+<a name="l00100"></a>00100         task& parent;
+<a name="l00101"></a>00101     <span class="keyword">public</span>:
+<a name="l00102"></a>00102         allocate_additional_child_of_proxy( task& self_, task& parent_ ) : self(self_), parent(parent_) {}
+<a name="l00103"></a>00103         task& __TBB_EXPORTED_METHOD allocate( size_t size ) <span class="keyword">const</span>;
+<a name="l00104"></a>00104         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD free( task& ) <span class="keyword">const</span>;
+<a name="l00105"></a>00105     };
+<a name="l00106"></a>00106 
+<a name="l00108"></a>00108 
+<a name="l00113"></a>00113     <span class="keyword">class </span>task_prefix {
+<a name="l00114"></a>00114     <span class="keyword">private</span>:
+<a name="l00115"></a>00115         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00132.html">tbb::task</a>;
+<a name="l00116"></a>00116         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00134.html">tbb::task_list</a>;
+<a name="l00117"></a>00117         <span class="keyword">friend</span> <span class="keyword">class </span>internal::scheduler;
+<a name="l00118"></a>00118         <span class="keyword">friend</span> <span class="keyword">class </span>internal::allocate_root_proxy;
+<a name="l00119"></a>00119         <span class="keyword">friend</span> <span class="keyword">class </span>internal::allocate_child_proxy;
+<a name="l00120"></a>00120         <span class="keyword">friend</span> <span class="keyword">class </span>internal::allocate_continuation_proxy;
+<a name="l00121"></a>00121         <span class="keyword">friend</span> <span class="keyword">class </span>internal::allocate_additional_child_of_proxy;
+<a name="l00122"></a>00122 
+<a name="l00123"></a>00123 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00125"></a>00125 <span class="preprocessor"></span>
+<a name="l00128"></a>00128 <span class="preprocessor">        task_group_context  *context;</span>
+<a name="l00129"></a>00129 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
+<a name="l00130"></a>00130         
+<a name="l00132"></a>00132 
+<a name="l00137"></a>00137         scheduler* origin;
+<a name="l00138"></a>00138 
+<a name="l00140"></a>00140         scheduler* owner;
+<a name="l00141"></a>00141 
+<a name="l00143"></a>00143 
+<a name="l00146"></a>00146         <a class="code" href="a00132.html">tbb::task</a>* parent;
+<a name="l00147"></a>00147 
+<a name="l00149"></a>00149 
+<a name="l00153"></a>00153         reference_count ref_count;
+<a name="l00154"></a>00154 
+<a name="l00156"></a>00156         <span class="keywordtype">int</span> depth;
+<a name="l00157"></a>00157 
+<a name="l00159"></a>00159 
+<a name="l00160"></a>00160         <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> state;
+<a name="l00161"></a>00161 
+<a name="l00163"></a>00163 
+<a name="l00167"></a>00167         <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> extra_state;
+<a name="l00168"></a>00168 
+<a name="l00169"></a>00169         affinity_id affinity;
+<a name="l00170"></a>00170 
+<a name="l00172"></a>00172         <a class="code" href="a00132.html">tbb::task</a>* next;
+<a name="l00173"></a>00173 
+<a name="l00175"></a>00175         <a class="code" href="a00132.html">tbb::task</a>& task() {<span class="keywordflow">return</span> *reinterpret_cast<tbb::task*>(<span class="keyword">this</span>+1);}
+<a name="l00176"></a>00176     };
+<a name="l00177"></a>00177 
+<a name="l00178"></a>00178 } <span class="comment">// namespace internal</span>
+<a name="l00180"></a>00180 <span class="comment"></span>
+<a name="l00181"></a>00181 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00182"></a>00182 <span class="preprocessor"></span>
+<a name="l00183"></a>00183 
+<a name="l00185"></a>00185 
+<a name="l00200"></a><a class="code" href="a00133.html">00200</a> <span class="keyword">class </span><a class="code" href="a00133.html">task_group_context</a> : internal::no_copy
+<a name="l00201"></a>00201 {
+<a name="l00202"></a>00202 <span class="keyword">public</span>:
+<a name="l00203"></a>00203     <span class="keyword">enum</span> kind_type {
+<a name="l00204"></a>00204         isolated,
+<a name="l00205"></a>00205         bound
+<a name="l00206"></a>00206     };
+<a name="l00207"></a>00207 
+<a name="l00208"></a>00208 <span class="keyword">private</span>:
+<a name="l00209"></a>00209     <span class="keyword">union </span>{
+<a name="l00211"></a>00211         kind_type my_kind;
+<a name="l00212"></a>00212         uintptr_t _my_kind_aligner;
+<a name="l00213"></a>00213     };
+<a name="l00214"></a>00214 
+<a name="l00216"></a>00216     <a class="code" href="a00133.html">task_group_context</a> *my_parent;
+<a name="l00217"></a>00217 
+<a name="l00219"></a>00219 
+<a name="l00221"></a>00221     internal::context_list_node_t my_node;
+<a name="l00222"></a>00222 
+<a name="l00224"></a>00224 
+<a name="l00227"></a>00227     <span class="keywordtype">char</span> _leading_padding[internal::NFS_MaxLineSize - 2 * <span class="keyword">sizeof</span>(uintptr_t)- <span class="keyword">sizeof</span>(<span class="keywordtype">void</span>*) - <span class="keyword">sizeof</span>(internal::context_list_node_t)];
+<a name="l00228"></a>00228     
+<a name="l00230"></a>00230     uintptr_t my_cancellation_requested;
+<a name="l00231"></a>00231     
+<a name="l00233"></a>00233 
+<a name="l00236"></a>00236     uintptr_t  my_version;
+<a name="l00237"></a>00237 
+<a name="l00239"></a>00239     <a class="code" href="a00138.html">tbb_exception</a> *my_exception;
+<a name="l00240"></a>00240 
+<a name="l00242"></a>00242 
+<a name="l00245"></a>00245     <span class="keywordtype">void</span> *my_owner;
+<a name="l00246"></a>00246 
+<a name="l00248"></a>00248 
+<a name="l00249"></a>00249     <span class="keywordtype">char</span> _trailing_padding[internal::NFS_MaxLineSize - <span class="keyword">sizeof</span>(intptr_t) - 2 * <span class="keyword">sizeof</span>(<span class="keywordtype">void</span>*)];
+<a name="l00250"></a>00250 
+<a name="l00251"></a>00251 <span class="keyword">public</span>:
+<a name="l00252"></a>00252 
+<a name="l00253"></a>00253 
+<a name="l00255"></a>00255 
+<a name="l00272"></a><a class="code" href="a00133.html#6fc0ba6f3abcdb4d43277c05bd67bdd4">00272</a>     <a class="code" href="a00133.html#6fc0ba6f3abcdb4d43277c05bd67bdd4">task_group_context</a> ( kind_type relation_with_parent = bound )
+<a name="l00273"></a>00273         : my_kind(relation_with_parent)
+<a name="l00274"></a>00274         , my_version(0)
+<a name="l00275"></a>00275     {
+<a name="l00276"></a>00276         <a class="code" href="a00133.html#49a55352084fd44b8863d182e839e6dc">init</a>();
+<a name="l00277"></a>00277     }
+<a name="l00278"></a>00278 
+<a name="l00279"></a>00279     __TBB_EXPORTED_METHOD ~<a class="code" href="a00133.html">task_group_context</a> ();
+<a name="l00280"></a>00280 
+<a name="l00282"></a>00282 
+<a name="l00289"></a>00289     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD <a class="code" href="a00133.html#6d30d16bf1cd22f86c6afaf29c2b430c">reset</a> ();
+<a name="l00290"></a>00290 
+<a name="l00292"></a>00292 
+<a name="l00299"></a>00299     <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD <a class="code" href="a00133.html#8bcdfdf4e6bfb76125b6de15c00b571d">cancel_group_execution</a> ();
+<a name="l00300"></a>00300 
+<a name="l00302"></a>00302     <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD <a class="code" href="a00133.html#4db72f16210b0a991b2c134d6763a4cc">is_group_execution_cancelled</a> () <span class="keyword">const</span>;
+<a name="l00303"></a>00303 
+<a name="l00304"></a>00304 <span class="keyword">protected</span>:
+<a name="l00306"></a>00306 
+<a name="l00307"></a>00307     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD <a class="code" href="a00133.html#49a55352084fd44b8863d182e839e6dc">init</a> ();
+<a name="l00308"></a>00308 
+<a name="l00309"></a>00309 <span class="keyword">private</span>:
+<a name="l00310"></a>00310     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00132.html">task</a>;
+<a name="l00311"></a>00311     <span class="keyword">friend</span> <span class="keyword">class </span>internal::allocate_root_with_context_proxy;
+<a name="l00312"></a>00312 
+<a name="l00313"></a>00313     <span class="keyword">static</span> <span class="keyword">const</span> kind_type binding_required = bound;
+<a name="l00314"></a>00314     <span class="keyword">static</span> <span class="keyword">const</span> kind_type binding_completed = kind_type(bound+1);
+<a name="l00315"></a>00315 
+<a name="l00318"></a>00318     <span class="keywordtype">void</span> propagate_cancellation_from_ancestors ();
+<a name="l00319"></a>00319 }; <span class="comment">// class task_group_context</span>
+<a name="l00320"></a>00320 
+<a name="l00321"></a>00321 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
+<a name="l00322"></a>00322 
+<a name="l00324"></a>00324 
+<a name="l00325"></a><a class="code" href="a00132.html">00325</a> <span class="keyword">class </span><a class="code" href="a00132.html">task</a>: internal::no_copy {
+<a name="l00327"></a>00327     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_set_ref_count( <span class="keywordtype">int</span> count );
+<a name="l00328"></a>00328 
+<a name="l00329"></a>00329 <span class="keyword">protected</span>:
+<a name="l00331"></a><a class="code" href="a00132.html#2bce8ec6e44706e70128f5cf91b76e67">00331</a>     <a class="code" href="a00132.html#2bce8ec6e44706e70128f5cf91b76e67">task</a>() {prefix().extra_state=1;}
+<a name="l00332"></a>00332 
+<a name="l00333"></a>00333 <span class="keyword">public</span>:
+<a name="l00335"></a><a class="code" href="a00132.html#98245ee0473f84cb19dbbf8c81134908">00335</a>     <span class="keyword">virtual</span> <a class="code" href="a00132.html#98245ee0473f84cb19dbbf8c81134908">~task</a>() {}
+<a name="l00336"></a>00336 
+<a name="l00338"></a>00338     <span class="keyword">virtual</span> <a class="code" href="a00132.html">task</a>* <a class="code" href="a00132.html#22c298cd40937a431a06777423f002f6">execute</a>() = 0;
+<a name="l00339"></a>00339 
+<a name="l00341"></a><a class="code" href="a00132.html#4a3c415562d17905390ea5b49d12293e">00341</a>     <span class="keyword">enum</span> <a class="code" href="a00132.html#4a3c415562d17905390ea5b49d12293e">state_type</a> {
+<a name="l00343"></a>00343         <a class="code" href="a00132.html#4a3c415562d17905390ea5b49d12293ead0fe2302ccc360923f738c2ed7ec1b9">executing</a>,
+<a name="l00345"></a>00345         <a class="code" href="a00132.html#4a3c415562d17905390ea5b49d12293e3bf499aa6e6487cd1ace883a63100513">reexecute</a>,
+<a name="l00347"></a>00347         <a class="code" href="a00132.html#4a3c415562d17905390ea5b49d12293e0841dcf1c2a96dee9aa7b69f636cb81a">ready</a>,
+<a name="l00349"></a>00349         <a class="code" href="a00132.html#4a3c415562d17905390ea5b49d12293ebe94d3348dd038e41107819f00c1884c">allocated</a>,
+<a name="l00351"></a>00351         <a class="code" href="a00132.html#4a3c415562d17905390ea5b49d12293ecc67ca92bd6f1ce9738a1e9e7206b735">freed</a>,
+<a name="l00353"></a>00353         <a class="code" href="a00132.html#4a3c415562d17905390ea5b49d12293e58debec6ab130290640d0cc2eedba35d">recycle</a>
+<a name="l00354"></a>00354     };
+<a name="l00355"></a>00355 
+<a name="l00356"></a>00356     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00357"></a>00357     <span class="comment">// Allocating tasks</span>
+<a name="l00358"></a>00358     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00359"></a>00359 
+<a name="l00361"></a><a class="code" href="a00132.html#23acb0da0afd690da797f9f882027d34">00361</a>     <span class="keyword">static</span> internal::allocate_root_proxy <a class="code" href="a00132.html#23acb0da0afd690da797f9f882027d34">allocate_root</a>() {
+<a name="l00362"></a>00362         <span class="keywordflow">return</span> internal::allocate_root_proxy();
+<a name="l00363"></a>00363     }
+<a name="l00364"></a>00364 
+<a name="l00365"></a>00365 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00367"></a><a class="code" href="a00132.html#8ccc518caf31075a3e073996d2d240a4">00367</a> <span class="preprocessor">    static internal::allocate_root_with_context_proxy allocate_root( task_group_context& ctx ) {</span>
+<a name="l00368"></a>00368 <span class="preprocessor"></span>        <span class="keywordflow">return</span> internal::allocate_root_with_context_proxy(ctx);
+<a name="l00369"></a>00369     }
+<a name="l00370"></a>00370 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
+<a name="l00371"></a>00371 
+<a name="l00373"></a>00373 
+<a name="l00374"></a><a class="code" href="a00132.html#1434c79a5138993269d034008bff7329">00374</a>     internal::allocate_continuation_proxy& allocate_continuation() {
+<a name="l00375"></a>00375         <span class="keywordflow">return</span> *reinterpret_cast<internal::allocate_continuation_proxy*>(<span class="keyword">this</span>);
+<a name="l00376"></a>00376     }
+<a name="l00377"></a>00377 
+<a name="l00379"></a><a class="code" href="a00132.html#1ff794f7053cd9148d5f280fbf07377f">00379</a>     internal::allocate_child_proxy& allocate_child() {
+<a name="l00380"></a>00380         <span class="keywordflow">return</span> *reinterpret_cast<internal::allocate_child_proxy*>(<span class="keyword">this</span>);
+<a name="l00381"></a>00381     }
+<a name="l00382"></a>00382 
+<a name="l00384"></a>00384 
+<a name="l00386"></a><a class="code" href="a00132.html#43bfe64c0e9333c0ca895cc0c375512b">00386</a>     internal::allocate_additional_child_of_proxy allocate_additional_child_of( <a class="code" href="a00132.html">task</a>& t ) {
+<a name="l00387"></a>00387         <span class="keywordflow">return</span> internal::allocate_additional_child_of_proxy(*<span class="keyword">this</span>,t);
+<a name="l00388"></a>00388     }
+<a name="l00389"></a>00389 
+<a name="l00391"></a>00391 
+<a name="l00395"></a>00395     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD destroy( <a class="code" href="a00132.html">task</a>& victim );
+<a name="l00396"></a>00396 
+<a name="l00397"></a>00397     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00398"></a>00398     <span class="comment">// Recycling of tasks</span>
+<a name="l00399"></a>00399     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00400"></a>00400 
+<a name="l00402"></a>00402 
+<a name="l00408"></a><a class="code" href="a00132.html#a67a79e18f62b43a623a00cfbd76db4c">00408</a>     <span class="keywordtype">void</span> recycle_as_continuation() {
+<a name="l00409"></a>00409         __TBB_ASSERT( prefix().state==executing, <span class="stringliteral">"execute not running?"</span> );
+<a name="l00410"></a>00410         prefix().state = allocated;
+<a name="l00411"></a>00411     }
+<a name="l00412"></a>00412 
+<a name="l00414"></a>00414 
+<a name="l00415"></a><a class="code" href="a00132.html#3b290d14109704e2b69dc1ac980a7a76">00415</a>     <span class="keywordtype">void</span> recycle_as_safe_continuation() {
+<a name="l00416"></a>00416         __TBB_ASSERT( prefix().state==executing, <span class="stringliteral">"execute not running?"</span> );
+<a name="l00417"></a>00417         prefix().state = recycle;
+<a name="l00418"></a>00418     }
+<a name="l00419"></a>00419 
+<a name="l00421"></a><a class="code" href="a00132.html#db399855177438bbc9cc61d508dae8d2">00421</a>     <span class="keywordtype">void</span> recycle_as_child_of( <a class="code" href="a00132.html">task</a>& new_parent ) {
+<a name="l00422"></a>00422         internal::task_prefix& p = prefix();
+<a name="l00423"></a>00423         __TBB_ASSERT( prefix().state==executing||prefix().state==allocated, <span class="stringliteral">"execute not running, or already recycled"</span> );
+<a name="l00424"></a>00424         __TBB_ASSERT( prefix().ref_count==0, <span class="stringliteral">"no child tasks allowed when recycled as a child"</span> );
+<a name="l00425"></a>00425         __TBB_ASSERT( p.parent==NULL, <span class="stringliteral">"parent must be null"</span> );
+<a name="l00426"></a>00426         __TBB_ASSERT( new_parent.<a class="code" href="a00132.html#ac578940848e9dc8b4f1f2bcf17b627d">prefix</a>().state<=recycle, <span class="stringliteral">"corrupt parent's state"</span> );
+<a name="l00427"></a>00427         __TBB_ASSERT( new_parent.<a class="code" href="a00132.html#ac578940848e9dc8b4f1f2bcf17b627d">prefix</a>().state!=freed, <span class="stringliteral">"parent already freed"</span> );
+<a name="l00428"></a>00428         p.state = allocated;
+<a name="l00429"></a>00429         p.parent = &new_parent;
+<a name="l00430"></a>00430         p.<a class="code" href="a00132.html#5be823a972b3c3b9901c5963eeb050fd">depth</a> = new_parent.<a class="code" href="a00132.html#ac578940848e9dc8b4f1f2bcf17b627d">prefix</a>().depth+1;
+<a name="l00431"></a>00431 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00432"></a>00432 <span class="preprocessor"></span>        p.context = new_parent.<a class="code" href="a00132.html#ac578940848e9dc8b4f1f2bcf17b627d">prefix</a>().context;
+<a name="l00433"></a>00433 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
+<a name="l00434"></a>00434     }
+<a name="l00435"></a>00435 
+<a name="l00437"></a>00437 
+<a name="l00438"></a><a class="code" href="a00132.html#4f1be9bbcdb487830dbe298b68d85144">00438</a>     <span class="keywordtype">void</span> recycle_to_reexecute() {
+<a name="l00439"></a>00439         __TBB_ASSERT( prefix().state==executing, <span class="stringliteral">"execute not running, or already recycled"</span> );
+<a name="l00440"></a>00440         __TBB_ASSERT( prefix().ref_count==0, <span class="stringliteral">"no child tasks allowed when recycled for reexecution"</span> );
+<a name="l00441"></a>00441         prefix().state = reexecute;
+<a name="l00442"></a>00442     }
+<a name="l00443"></a>00443 
+<a name="l00445"></a>00445 
+<a name="l00446"></a><a class="code" href="a00132.html#d8815c39bb61bd7e2d2691c476ed03b9">00446</a>     <span class="keyword">typedef</span> internal::intptr depth_type;
+<a name="l00447"></a>00447 
+<a name="l00449"></a><a class="code" href="a00132.html#5be823a972b3c3b9901c5963eeb050fd">00449</a>     depth_type depth()<span class="keyword"> const </span>{<span class="keywordflow">return</span> prefix().depth;}
+<a name="l00450"></a>00450 
+<a name="l00452"></a>00452 
+<a name="l00453"></a><a class="code" href="a00132.html#fc4d4e61a56823aa1efdbb5d59e42973">00453</a>     <span class="keywordtype">void</span> set_depth( depth_type new_depth ) {
+<a name="l00454"></a>00454         __TBB_ASSERT( state()!=ready, <span class="stringliteral">"cannot change depth of ready task"</span> );
+<a name="l00455"></a>00455         __TBB_ASSERT( new_depth>=0, <span class="stringliteral">"depth cannot be negative"</span> );
+<a name="l00456"></a>00456         __TBB_ASSERT( new_depth==<span class="keywordtype">int</span>(new_depth), <span class="stringliteral">"integer overflow error"</span>);
+<a name="l00457"></a>00457         prefix().depth = int(new_depth);
+<a name="l00458"></a>00458     }
+<a name="l00459"></a>00459 
+<a name="l00461"></a>00461 
+<a name="l00462"></a><a class="code" href="a00132.html#b0f98c633647fc73b978fe4cd2277ac4">00462</a>     <span class="keywordtype">void</span> add_to_depth( <span class="keywordtype">int</span> delta ) {
+<a name="l00463"></a>00463         __TBB_ASSERT( state()!=ready, <span class="stringliteral">"cannot change depth of ready task"</span> );
+<a name="l00464"></a>00464         __TBB_ASSERT( prefix().depth>=-delta, <span class="stringliteral">"depth cannot be negative"</span> );
+<a name="l00465"></a>00465         prefix().depth+=delta;
+<a name="l00466"></a>00466     }
+<a name="l00467"></a>00467 
+<a name="l00468"></a>00468     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00469"></a>00469     <span class="comment">// Spawning and blocking</span>
+<a name="l00470"></a>00470     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00471"></a>00471 
+<a name="l00473"></a><a class="code" href="a00132.html#06a4206a57e8e12a439b14d6d41cfd92">00473</a>     <span class="keywordtype">void</span> set_ref_count( <span class="keywordtype">int</span> count ) {
+<a name="l00474"></a>00474 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT</span>
+<a name="l00475"></a>00475 <span class="preprocessor"></span>        internal_set_ref_count(count);
+<a name="l00476"></a>00476 <span class="preprocessor">#else</span>
+<a name="l00477"></a>00477 <span class="preprocessor"></span>        prefix().ref_count = count;
+<a name="l00478"></a>00478 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT */</span>
+<a name="l00479"></a>00479     }
+<a name="l00480"></a>00480 
+<a name="l00482"></a>00482 
+<a name="l00486"></a><a class="code" href="a00132.html#f7737143d458f1ed1c0d7da3971d9e6b">00486</a>     <span class="keywordtype">void</span> spawn( <a class="code" href="a00132.html">task</a>& child ) {
+<a name="l00487"></a>00487         __TBB_ASSERT( is_owned_by_current_thread(), <span class="stringliteral">"'this' not owned by current thread"</span> );
+<a name="l00488"></a>00488         prefix().owner->spawn( child, child.<a class="code" href="a00132.html#ac578940848e9dc8b4f1f2bcf17b627d">prefix</a>().next );
+<a name="l00489"></a>00489     }
+<a name="l00490"></a>00490 
+<a name="l00492"></a>00492 
+<a name="l00493"></a>00493     <span class="keywordtype">void</span> spawn( <a class="code" href="a00134.html">task_list</a>& list );
+<a name="l00494"></a>00494 
+<a name="l00496"></a><a class="code" href="a00132.html#3ce28ca9baa771cfc37ecd72e69c4f3c">00496</a>     <span class="keywordtype">void</span> spawn_and_wait_for_all( <a class="code" href="a00132.html">task</a>& child ) {
+<a name="l00497"></a>00497         __TBB_ASSERT( is_owned_by_current_thread(), <span class="stringliteral">"'this' not owned by current thread"</span> );
+<a name="l00498"></a>00498         prefix().owner->wait_for_all( *<span class="keyword">this</span>, &child );
+<a name="l00499"></a>00499     }
+<a name="l00500"></a>00500 
+<a name="l00502"></a>00502     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD spawn_and_wait_for_all( <a class="code" href="a00134.html">task_list</a>& list );
+<a name="l00503"></a>00503 
+<a name="l00505"></a>00505 
+<a name="l00507"></a><a class="code" href="a00132.html#ce8ce689c26a4ddf343829bc3c73290a">00507</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> spawn_root_and_wait( <a class="code" href="a00132.html">task</a>& root ) {
+<a name="l00508"></a>00508         __TBB_ASSERT( root.<a class="code" href="a00132.html#c26718b3b247cd13deb1a741902e7105">is_owned_by_current_thread</a>(), <span class="stringliteral">"root not owned by current thread"</span> );
+<a name="l00509"></a>00509         root.<a class="code" href="a00132.html#ac578940848e9dc8b4f1f2bcf17b627d">prefix</a>().owner->spawn_root_and_wait( root, root.<a class="code" href="a00132.html#ac578940848e9dc8b4f1f2bcf17b627d">prefix</a>().next );
+<a name="l00510"></a>00510     }
+<a name="l00511"></a>00511 
+<a name="l00513"></a>00513 
+<a name="l00515"></a>00515     <span class="keyword">static</span> <span class="keywordtype">void</span> spawn_root_and_wait( <a class="code" href="a00134.html">task_list</a>& root_list );
+<a name="l00516"></a>00516 
+<a name="l00518"></a>00518 
+<a name="l00519"></a><a class="code" href="a00132.html#53d2615ad9c38859b4c8080936600283">00519</a>     <span class="keywordtype">void</span> wait_for_all() {
+<a name="l00520"></a>00520         __TBB_ASSERT( is_owned_by_current_thread(), <span class="stringliteral">"'this' not owned by current thread"</span> );
+<a name="l00521"></a>00521         prefix().owner->wait_for_all( *<span class="keyword">this</span>, NULL );
+<a name="l00522"></a>00522     }
+<a name="l00523"></a>00523 
+<a name="l00525"></a>00525     <span class="keyword">static</span> <a class="code" href="a00132.html">task</a>& __TBB_EXPORTED_FUNC <span class="keyword">self</span>();
+<a name="l00526"></a>00526 
+<a name="l00528"></a><a class="code" href="a00132.html#314e98ee4347ccec83efcb9ee22e8596">00528</a>     <a class="code" href="a00132.html">task</a>* parent()<span class="keyword"> const </span>{<span class="keywordflow">return</span> prefix().parent;}
+<a name="l00529"></a>00529 
+<a name="l00531"></a><a class="code" href="a00132.html#f9169402702f56bf519448aaf34450aa">00531</a>     <span class="keywordtype">bool</span> is_stolen_task()<span class="keyword"> const </span>{
+<a name="l00532"></a>00532         internal::task_prefix& p = prefix();
+<a name="l00533"></a>00533         internal::task_prefix& q = parent()->prefix();
+<a name="l00534"></a>00534         <span class="keywordflow">return</span> p.owner!=q.owner;
+<a name="l00535"></a>00535     }
+<a name="l00536"></a>00536 
+<a name="l00537"></a>00537     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00538"></a>00538     <span class="comment">// Debugging</span>
+<a name="l00539"></a>00539     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00540"></a>00540 
+<a name="l00542"></a><a class="code" href="a00132.html#0af7b2d7e6e8b4333b2accfce3dfb374">00542</a>     <a class="code" href="a00132.html#4a3c415562d17905390ea5b49d12293e">state_type</a> state()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="a00132.html#4a3c415562d17905390ea5b49d12293e">state_type</a>(prefix().state);}
+<a name="l00543"></a>00543 
+<a name="l00545"></a><a class="code" href="a00132.html#ad774f55eaec008ae02b236423209ced">00545</a>     <span class="keywordtype">int</span> ref_count()<span class="keyword"> const </span>{
+<a name="l00546"></a>00546 <span class="preprocessor">#if TBB_USE_ASSERT</span>
+<a name="l00547"></a>00547 <span class="preprocessor"></span>        internal::reference_count ref_count = prefix().ref_count;
+<a name="l00548"></a>00548         __TBB_ASSERT( ref_count==<span class="keywordtype">int</span>(ref_count), <span class="stringliteral">"integer overflow error"</span>);
+<a name="l00549"></a>00549 <span class="preprocessor">#endif</span>
+<a name="l00550"></a>00550 <span class="preprocessor"></span>        <span class="keywordflow">return</span> int(prefix().ref_count);
+<a name="l00551"></a>00551     }
+<a name="l00552"></a>00552 
+<a name="l00554"></a>00554     <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD is_owned_by_current_thread() <span class="keyword">const</span>;
+<a name="l00555"></a>00555 
+<a name="l00556"></a>00556     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00557"></a>00557     <span class="comment">// Affinity</span>
+<a name="l00558"></a>00558     <span class="comment">//------------------------------------------------------------------------</span>
+<a name="l00559"></a>00559  
+<a name="l00561"></a>00561 
+<a name="l00562"></a><a class="code" href="a00132.html#d61bb32389d3857bf7511d69beaafb76">00562</a>     <span class="keyword">typedef</span> internal::affinity_id affinity_id;
+<a name="l00563"></a>00563 
+<a name="l00565"></a><a class="code" href="a00132.html#dca19d7a45487a7d67a0db517e2b57c9">00565</a>     <span class="keywordtype">void</span> set_affinity( affinity_id <span class="keywordtype">id</span> ) {prefix().affinity = id;}
+<a name="l00566"></a>00566 
+<a name="l00568"></a><a class="code" href="a00132.html#3a920a56b0bcf2801518fb45b2c9d2be">00568</a>     affinity_id affinity()<span class="keyword"> const </span>{<span class="keywordflow">return</span> prefix().affinity;}
+<a name="l00569"></a>00569 
+<a name="l00571"></a>00571 
+<a name="l00575"></a>00575     <span class="keyword">virtual</span> <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD note_affinity( affinity_id <span class="keywordtype">id</span> );
+<a name="l00576"></a>00576 
+<a name="l00577"></a>00577 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00579"></a>00579 <span class="preprocessor"></span>
+<a name="l00580"></a><a class="code" href="a00132.html#0f3fb4aac549ab642022450a4bd13326">00580</a> <span class="preprocessor">    bool cancel_group_execution () { return prefix().context->cancel_group_execution(); }</span>
+<a name="l00581"></a>00581 <span class="preprocessor"></span>
+<a name="l00583"></a><a class="code" href="a00132.html#025f18118c057c4c8db87ff2ce8df975">00583</a>     <span class="keywordtype">bool</span> is_cancelled ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> prefix().context->is_group_execution_cancelled(); }
+<a name="l00584"></a>00584 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
+<a name="l00585"></a>00585 
+<a name="l00586"></a>00586 <span class="keyword">private</span>:
+<a name="l00587"></a>00587     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00134.html">task_list</a>;
+<a name="l00588"></a>00588     <span class="keyword">friend</span> <span class="keyword">class </span>internal::scheduler;
+<a name="l00589"></a>00589     <span class="keyword">friend</span> <span class="keyword">class </span>internal::allocate_root_proxy;
+<a name="l00590"></a>00590 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00591"></a>00591 <span class="preprocessor"></span>    <span class="keyword">friend</span> <span class="keyword">class </span>internal::allocate_root_with_context_proxy;
+<a name="l00592"></a>00592 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
+<a name="l00593"></a>00593     <span class="keyword">friend</span> <span class="keyword">class </span>internal::allocate_continuation_proxy;
+<a name="l00594"></a>00594     <span class="keyword">friend</span> <span class="keyword">class </span>internal::allocate_child_proxy;
+<a name="l00595"></a>00595     <span class="keyword">friend</span> <span class="keyword">class </span>internal::allocate_additional_child_of_proxy;
+<a name="l00596"></a>00596 
+<a name="l00598"></a>00598 
+<a name="l00599"></a>00599     internal::task_prefix& prefix( internal::version_tag* = NULL )<span class="keyword"> const </span>{
+<a name="l00600"></a>00600         <span class="keywordflow">return</span> reinterpret_cast<internal::task_prefix*>(const_cast<task*>(<span class="keyword">this</span>))[-1];
+<a name="l00601"></a>00601     }
+<a name="l00602"></a>00602 }; <span class="comment">// class task</span>
+<a name="l00603"></a>00603 
+<a name="l00605"></a>00605 
+<a name="l00606"></a><a class="code" href="a00108.html">00606</a> <span class="keyword">class </span><a class="code" href="a00108.html">empty_task</a>: <span class="keyword">public</span> <a class="code" href="a00132.html">task</a> {
+<a name="l00607"></a>00607     <span class="comment">/*override*/</span> <a class="code" href="a00132.html">task</a>* execute() {
+<a name="l00608"></a>00608         <span class="keywordflow">return</span> NULL;
+<a name="l00609"></a>00609     }
+<a name="l00610"></a>00610 };
+<a name="l00611"></a>00611 
+<a name="l00613"></a>00613 
+<a name="l00615"></a><a class="code" href="a00134.html">00615</a> <span class="keyword">class </span><a class="code" href="a00134.html">task_list</a>: internal::no_copy {
+<a name="l00616"></a>00616 <span class="keyword">private</span>:
+<a name="l00617"></a>00617     <a class="code" href="a00132.html">task</a>* first;
+<a name="l00618"></a>00618     <a class="code" href="a00132.html">task</a>** next_ptr;
+<a name="l00619"></a>00619     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00132.html">task</a>;
+<a name="l00620"></a>00620 <span class="keyword">public</span>:
+<a name="l00622"></a><a class="code" href="a00134.html#416341c2047eaef50417b41eaf7e9de6">00622</a>     <a class="code" href="a00134.html">task_list</a>() : first(NULL), next_ptr(&first) {}
+<a name="l00623"></a>00623 
+<a name="l00625"></a><a class="code" href="a00134.html#6d438f1499a02db1e59c24ab6043e5ba">00625</a>     ~<a class="code" href="a00134.html">task_list</a>() {}
+<a name="l00626"></a>00626 
+<a name="l00628"></a><a class="code" href="a00134.html#f3ac31e092814b90929f81bb30441959">00628</a>     <span class="keywordtype">bool</span> empty()<span class="keyword"> const </span>{<span class="keywordflow">return</span> !first;}
+<a name="l00629"></a>00629 
+<a name="l00631"></a><a class="code" href="a00134.html#4cd34756bc4763dafb8c84838a0124ff">00631</a>     <span class="keywordtype">void</span> push_back( <a class="code" href="a00132.html">task</a>& <a class="code" href="a00132.html">task</a> ) {
+<a name="l00632"></a>00632         task.<a class="code" href="a00132.html#ac578940848e9dc8b4f1f2bcf17b627d">prefix</a>().next = NULL;
+<a name="l00633"></a>00633         *next_ptr = &task;
+<a name="l00634"></a>00634         next_ptr = &task.<a class="code" href="a00132.html#ac578940848e9dc8b4f1f2bcf17b627d">prefix</a>().next;
+<a name="l00635"></a>00635     }
+<a name="l00636"></a>00636 
+<a name="l00638"></a><a class="code" href="a00134.html#5fe85df5ed524418389d34051750347d">00638</a>     <a class="code" href="a00132.html">task</a>& pop_front() {
+<a name="l00639"></a>00639         __TBB_ASSERT( !empty(), <span class="stringliteral">"attempt to pop item from empty task_list"</span> );
+<a name="l00640"></a>00640         <a class="code" href="a00132.html">task</a>* result = first;
+<a name="l00641"></a>00641         first = result-><a class="code" href="a00132.html#ac578940848e9dc8b4f1f2bcf17b627d">prefix</a>().next;
+<a name="l00642"></a>00642         <span class="keywordflow">if</span>( !first ) next_ptr = &first;
+<a name="l00643"></a>00643         <span class="keywordflow">return</span> *result;
+<a name="l00644"></a>00644     }
+<a name="l00645"></a>00645 
+<a name="l00647"></a><a class="code" href="a00134.html#fce446ee13e025969945328f3ff59b95">00647</a>     <span class="keywordtype">void</span> clear() {
+<a name="l00648"></a>00648         first=NULL;
+<a name="l00649"></a>00649         next_ptr=&first;
+<a name="l00650"></a>00650     }
+<a name="l00651"></a>00651 };
+<a name="l00652"></a>00652 
+<a name="l00653"></a><a class="code" href="a00132.html#db841c647eb6d754440c2f4e4a73c80b">00653</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> task::spawn( <a class="code" href="a00134.html">task_list</a>& list ) {
+<a name="l00654"></a>00654     __TBB_ASSERT( <a class="code" href="a00132.html#c26718b3b247cd13deb1a741902e7105">is_owned_by_current_thread</a>(), <span class="stringliteral">"'this' not owned by current thread"</span> );
+<a name="l00655"></a>00655     <span class="keywordflow">if</span>( <a class="code" href="a00132.html">task</a>* t = list.<a class="code" href="a00134.html#78fcc389819ee34427d510f7d8cb8b1e">first</a> ) {
+<a name="l00656"></a>00656         prefix().owner->spawn( *t, *list.<a class="code" href="a00134.html#21553a32bcd08f980aa28f61254307da">next_ptr</a> );
+<a name="l00657"></a>00657         list.<a class="code" href="a00134.html#fce446ee13e025969945328f3ff59b95">clear</a>();
+<a name="l00658"></a>00658     }
+<a name="l00659"></a>00659 }
+<a name="l00660"></a>00660 
+<a name="l00661"></a><a class="code" href="a00132.html#c33c7edbaec67aa8a56f48986a9dc69f">00661</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="a00132.html#ce8ce689c26a4ddf343829bc3c73290a">task::spawn_root_and_wait</a>( <a class="code" href="a00134.html">task_list</a>& root_list ) {
+<a name="l00662"></a>00662     <span class="keywordflow">if</span>( <a class="code" href="a00132.html">task</a>* t = root_list.<a class="code" href="a00134.html#78fcc389819ee34427d510f7d8cb8b1e">first</a> ) {
+<a name="l00663"></a>00663         __TBB_ASSERT( t->is_owned_by_current_thread(), <span class="stringliteral">"'this' not owned by current thread"</span> );
+<a name="l00664"></a>00664         t->prefix().owner->spawn_root_and_wait( *t, *root_list.<a class="code" href="a00134.html#21553a32bcd08f980aa28f61254307da">next_ptr</a> );
+<a name="l00665"></a>00665         root_list.<a class="code" href="a00134.html#fce446ee13e025969945328f3ff59b95">clear</a>();
+<a name="l00666"></a>00666     }
+<a name="l00667"></a>00667 }
+<a name="l00668"></a>00668 
+<a name="l00669"></a>00669 } <span class="comment">// namespace tbb</span>
+<a name="l00670"></a>00670 
+<a name="l00671"></a>00671 <span class="keyword">inline</span> <span class="keywordtype">void</span> *operator new( size_t bytes, <span class="keyword">const</span> tbb::internal::allocate_root_proxy& ) {
+<a name="l00672"></a>00672     <span class="keywordflow">return</span> &tbb::internal::allocate_root_proxy::allocate(bytes);
+<a name="l00673"></a>00673 }
+<a name="l00674"></a>00674 
+<a name="l00675"></a>00675 <span class="keyword">inline</span> <span class="keywordtype">void</span> operator delete( <span class="keywordtype">void</span>* task, <span class="keyword">const</span> tbb::internal::allocate_root_proxy& ) {
+<a name="l00676"></a>00676     tbb::internal::allocate_root_proxy::free( *static_cast<tbb::task*>(task) );
+<a name="l00677"></a>00677 }
+<a name="l00678"></a>00678 
+<a name="l00679"></a>00679 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00680"></a>00680 <span class="preprocessor"></span><span class="keyword">inline</span> <span class="keywordtype">void</span> *operator new( size_t bytes, <span class="keyword">const</span> tbb::internal::allocate_root_with_context_proxy& p ) {
+<a name="l00681"></a>00681     <span class="keywordflow">return</span> &p.allocate(bytes);
+<a name="l00682"></a>00682 }
+<a name="l00683"></a>00683 
+<a name="l00684"></a>00684 <span class="keyword">inline</span> <span class="keywordtype">void</span> operator delete( <span class="keywordtype">void</span>* task, <span class="keyword">const</span> tbb::internal::allocate_root_with_context_proxy& p ) {
+<a name="l00685"></a>00685     p.free( *static_cast<tbb::task*>(task) );
+<a name="l00686"></a>00686 }
+<a name="l00687"></a>00687 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
+<a name="l00688"></a>00688 
+<a name="l00689"></a>00689 <span class="keyword">inline</span> <span class="keywordtype">void</span> *operator new( size_t bytes, <span class="keyword">const</span> tbb::internal::allocate_continuation_proxy& p ) {
+<a name="l00690"></a>00690     <span class="keywordflow">return</span> &p.allocate(bytes);
+<a name="l00691"></a>00691 }
+<a name="l00692"></a>00692 
+<a name="l00693"></a>00693 <span class="keyword">inline</span> <span class="keywordtype">void</span> operator delete( <span class="keywordtype">void</span>* task, <span class="keyword">const</span> tbb::internal::allocate_continuation_proxy& p ) {
+<a name="l00694"></a>00694     p.free( *static_cast<tbb::task*>(task) );
+<a name="l00695"></a>00695 }
+<a name="l00696"></a>00696 
+<a name="l00697"></a>00697 <span class="keyword">inline</span> <span class="keywordtype">void</span> *operator new( size_t bytes, <span class="keyword">const</span> tbb::internal::allocate_child_proxy& p ) {
+<a name="l00698"></a>00698     <span class="keywordflow">return</span> &p.allocate(bytes);
+<a name="l00699"></a>00699 }
+<a name="l00700"></a>00700 
+<a name="l00701"></a>00701 <span class="keyword">inline</span> <span class="keywordtype">void</span> operator delete( <span class="keywordtype">void</span>* task, <span class="keyword">const</span> tbb::internal::allocate_child_proxy& p ) {
+<a name="l00702"></a>00702     p.free( *static_cast<tbb::task*>(task) );
+<a name="l00703"></a>00703 }
+<a name="l00704"></a>00704 
+<a name="l00705"></a>00705 <span class="keyword">inline</span> <span class="keywordtype">void</span> *operator new( size_t bytes, <span class="keyword">const</span> tbb::internal::allocate_additional_child_of_proxy& p ) {
+<a name="l00706"></a>00706     <span class="keywordflow">return</span> &p.allocate(bytes);
+<a name="l00707"></a>00707 }
+<a name="l00708"></a>00708 
+<a name="l00709"></a>00709 <span class="keyword">inline</span> <span class="keywordtype">void</span> operator delete( <span class="keywordtype">void</span>* task, <span class="keyword">const</span> tbb::internal::allocate_additional_child_of_proxy& p ) {
+<a name="l00710"></a>00710     p.free( *static_cast<tbb::task*>(task) );
+<a name="l00711"></a>00711 }
+<a name="l00712"></a>00712 
+<a name="l00713"></a>00713 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_task_H */</span>
+</pre></div><hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/a00277.html b/doc/html/a00277.html
deleted file mode 100644
index ac5fb86..0000000
--- a/doc/html/a00277.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::while_iteration_task< Body > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::while_iteration_task< Body > Class Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>For internal use only.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00340.html">parallel_while.h</a>></code>
-<p>
-Inherits <a class="el" href="a00261.html">tbb::task</a>.
-<p>
-Inheritance diagram for tbb::internal::while_iteration_task< Body >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00084.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::internal::while_iteration_task::while_group_task"></a>
-class </td><td class="memItemRight" valign="bottom"><b>while_group_task</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n1" doxytag="tbb::internal::while_iteration_task::tbb::parallel_while<Body>"></a>
-class </td><td class="memItemRight" valign="bottom"><b>tbb::parallel_while<Body></b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Body><br>
- class tbb::internal::while_iteration_task< Body ></h3>
-
-For internal use only. 
-<p>
-Executes one iteration of a while. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00340.html">parallel_while.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00278.html b/doc/html/a00278.html
deleted file mode 100644
index bb08bc9..0000000
--- a/doc/html/a00278.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::while_task< Stream, Body > Class Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::while_task< Stream, Body > Class Template Reference<br>
-<small>
-[<a class="el" href="a00321.html">Algorithms</a>]</small>
-</h1>For internal use only.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00340.html">parallel_while.h</a>></code>
-<p>
-Inherits <a class="el" href="a00261.html">tbb::task</a>.
-<p>
-Inheritance diagram for tbb::internal::while_task< Stream, Body >:<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00086.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0" doxytag="tbb::internal::while_task::tbb::parallel_while<Body>"></a>
-class </td><td class="memItemRight" valign="bottom"><b>tbb::parallel_while<Body></b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Stream, typename Body><br>
- class tbb::internal::while_task< Stream, Body ></h3>
-
-For internal use only. 
-<p>
-Gets block of iterations from a stream and packages them into a <a class="el" href="a00276.html">while_group_task</a>. 
-<p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00340.html">parallel_while.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00279.html b/doc/html/a00279.html
deleted file mode 100644
index 72c5374..0000000
--- a/doc/html/a00279.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal::work_around_alignment_bug< Size, T > Struct Template Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal::work_around_alignment_bug< Size, T > Struct Template Reference</h1>Work around for bug in GNU 3.2 and MSVC compilers.  
-<a href="#_details">More...</a>
-<p>
-<code>#include <<a class="el" href="a00354.html">tbb_machine.h</a>></code>
-<p>
-<a href="a00142.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="s0" doxytag="tbb::internal::work_around_alignment_bug::alignment"></a>
-const size_t </td><td class="memItemRight" valign="bottom"><b>alignment</b> = __alignof(T)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<size_t Size, typename T><br>
- struct tbb::internal::work_around_alignment_bug< Size, T ></h3>
-
-Work around for bug in GNU 3.2 and MSVC compilers. 
-<p>
-Bug is that compiler sometimes returns 0 for __alignof(T) when T has not yet been instantiated. The work-around forces instantiation by forcing computation of sizeof(T) before __alignof(T). 
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="a00354.html">tbb_machine.h</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00285.html b/doc/html/a00285.html
new file mode 100644
index 0000000..29c28de
--- /dev/null
+++ b/doc/html/a00285.html
@@ -0,0 +1,99 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>task_scheduler_init.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>task_scheduler_init.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_task_scheduler_init_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_task_scheduler_init_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "tbb_stddef.h"</span>
+<a name="l00025"></a>00025 
+<a name="l00026"></a>00026 <span class="keyword">namespace </span>tbb {
+<a name="l00027"></a>00027 
+<a name="l00028"></a>00028 <span class="keyword">typedef</span> std::size_t stack_size_type;
+<a name="l00029"></a>00029 
+<a name="l00031"></a>00031 <span class="keyword">namespace </span>internal {
+<a name="l00033"></a>00033 
+<a name="l00034"></a>00034     <span class="keyword">class </span>scheduler;
+<a name="l00035"></a>00035 } <span class="comment">// namespace internal</span>
+<a name="l00037"></a>00037 <span class="comment"></span>
+<a name="l00039"></a>00039 
+<a name="l00042"></a><a class="code" href="a00135.html">00042</a> <span class="keyword">class </span><a class="code" href="a00135.html">task_scheduler_init</a>: internal::no_copy {
+<a name="l00044"></a>00044     internal::scheduler* my_scheduler;
+<a name="l00045"></a>00045 <span class="keyword">public</span>:
+<a name="l00046"></a>00046 
+<a name="l00048"></a><a class="code" href="a00135.html#8f5988e2b0fbb2d533fcbb7f2583743f">00048</a>     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="a00135.html#8f5988e2b0fbb2d533fcbb7f2583743f">automatic</a> = -1;
+<a name="l00049"></a>00049 
+<a name="l00051"></a><a class="code" href="a00135.html#e6c860f1e559026ff3ef4599c0d6c514">00051</a>     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="a00135.html#e6c860f1e559026ff3ef4599c0d6c514">deferred</a> = -2;
+<a name="l00052"></a>00052 
+<a name="l00054"></a>00054 
+<a name="l00062"></a>00062     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD <a class="code" href="a00135.html#d476053cc712e572554823492a5229ce">initialize</a>( <span class="keywordtype">int</span> number_of_threads=<a class="code" href="a00135.html#8f5988e2b0fbb2d533fcbb7f2583743f">automatic</a> );
+<a name="l00063"></a>00063 
+<a name="l00065"></a>00065 
+<a name="l00066"></a>00066     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD <a class="code" href="a00135.html#d476053cc712e572554823492a5229ce">initialize</a>( <span class="keywordtype">int</span> number_of_threads, stack_size_type thread_stack_size );
+<a name="l00067"></a>00067 
+<a name="l00069"></a>00069     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD <a class="code" href="a00135.html#f73257e04cb7fb9bd5be2b635d9016f1">terminate</a>();
+<a name="l00070"></a>00070 
+<a name="l00072"></a><a class="code" href="a00135.html#421600bf9bf9338bcf937063f2ff0e90">00072</a>     <a class="code" href="a00135.html#421600bf9bf9338bcf937063f2ff0e90">task_scheduler_init</a>( <span class="keywordtype">int</span> number_of_threads=<a class="code" href="a00135.html#8f5988e2b0fbb2d533fcbb7f2583743f">automatic</a>, stack_size_type thread_stack_size=0 ) : my_scheduler(NULL)  {
+<a name="l00073"></a>00073         <a class="code" href="a00135.html#d476053cc712e572554823492a5229ce">initialize</a>( number_of_threads, thread_stack_size );
+<a name="l00074"></a>00074     }
+<a name="l00075"></a>00075 
+<a name="l00077"></a><a class="code" href="a00135.html#4da6c86292d80c703a66c1f6f5299488">00077</a>     <a class="code" href="a00135.html#4da6c86292d80c703a66c1f6f5299488">~task_scheduler_init</a>() {
+<a name="l00078"></a>00078         <span class="keywordflow">if</span>( my_scheduler ) 
+<a name="l00079"></a>00079             <a class="code" href="a00135.html#f73257e04cb7fb9bd5be2b635d9016f1">terminate</a>();
+<a name="l00080"></a>00080         internal::poison_pointer( my_scheduler );
+<a name="l00081"></a>00081     }
+<a name="l00083"></a>00083 
+<a name="l00090"></a>00090     <span class="keyword">static</span> <span class="keywordtype">int</span> __TBB_EXPORTED_FUNC <a class="code" href="a00135.html#ba00714c33a41a3c2216f48613971cab">default_num_threads</a> ();
+<a name="l00091"></a>00091 
+<a name="l00093"></a><a class="code" href="a00135.html#12752282977029f23416642bc03e8b74">00093</a>     <span class="keywordtype">bool</span> <a class="code" href="a00135.html#12752282977029f23416642bc03e8b74">is_active</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> my_scheduler != NULL; }
+<a name="l00094"></a>00094 };
+<a name="l00095"></a>00095 
+<a name="l00096"></a>00096 } <span class="comment">// namespace tbb</span>
+<a name="l00097"></a>00097 
+<a name="l00098"></a>00098 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_task_scheduler_init_H */</span>
+</pre></div><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00286.html b/doc/html/a00286.html
new file mode 100644
index 0000000..87886d1
--- /dev/null
+++ b/doc/html/a00286.html
@@ -0,0 +1,90 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>task_scheduler_observer.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>task_scheduler_observer.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_task_scheduler_observer_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_task_scheduler_observer_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "atomic.h"</span>
+<a name="l00025"></a>00025 
+<a name="l00026"></a>00026 <span class="preprocessor">#if __TBB_SCHEDULER_OBSERVER</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span>
+<a name="l00028"></a>00028 <span class="keyword">namespace </span>tbb {
+<a name="l00029"></a>00029 
+<a name="l00030"></a>00030 <span class="keyword">namespace </span>internal {
+<a name="l00031"></a>00031 
+<a name="l00032"></a>00032 <span class="keyword">class </span>observer_proxy;
+<a name="l00033"></a>00033 
+<a name="l00034"></a>00034 <span class="keyword">class </span>task_scheduler_observer_v3 {
+<a name="l00035"></a>00035     <span class="keyword">friend</span> <span class="keyword">class </span>observer_proxy;
+<a name="l00036"></a>00036     observer_proxy* my_proxy;
+<a name="l00037"></a>00037     atomic<intptr> my_busy_count;
+<a name="l00038"></a>00038 <span class="keyword">public</span>:
+<a name="l00040"></a>00040     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD observe( <span class="keywordtype">bool</span> state=<span class="keyword">true</span> );
+<a name="l00041"></a>00041 
+<a name="l00043"></a>00043     <span class="keywordtype">bool</span> is_observing()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_proxy!=NULL;}
+<a name="l00044"></a>00044 
+<a name="l00046"></a>00046     task_scheduler_observer_v3() : my_proxy(NULL) {my_busy_count=0;}
+<a name="l00047"></a>00047 
+<a name="l00049"></a>00049     <span class="keyword">virtual</span> <span class="keywordtype">void</span> on_scheduler_entry( <span class="keywordtype">bool</span> <span class="comment">/*is_worker*/</span> ) {} 
+<a name="l00050"></a>00050 
+<a name="l00052"></a>00052     <span class="keyword">virtual</span> <span class="keywordtype">void</span> on_scheduler_exit( <span class="keywordtype">bool</span> <span class="comment">/*is_worker*/</span> ) {}
+<a name="l00053"></a>00053 
+<a name="l00055"></a>00055     <span class="keyword">virtual</span> ~task_scheduler_observer_v3() {observe(<span class="keyword">false</span>);}
+<a name="l00056"></a>00056 };
+<a name="l00057"></a>00057 
+<a name="l00058"></a>00058 } <span class="comment">// namespace internal</span>
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060 <span class="keyword">typedef</span> internal::task_scheduler_observer_v3 task_scheduler_observer;
+<a name="l00061"></a>00061 
+<a name="l00062"></a>00062 } <span class="comment">// namespace tbb</span>
+<a name="l00063"></a>00063 
+<a name="l00064"></a>00064 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_SCHEDULER_OBSERVER */</span>
+<a name="l00065"></a>00065 
+<a name="l00066"></a>00066 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_task_scheduler_observer_H */</span>
+</pre></div><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00288.html b/doc/html/a00288.html
new file mode 100644
index 0000000..0e89e1d
--- /dev/null
+++ b/doc/html/a00288.html
@@ -0,0 +1,149 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb_allocator.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>tbb_allocator.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_tbb_allocator_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_tbb_allocator_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <new></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "tbb_stddef.h"</span>
+<a name="l00026"></a>00026 
+<a name="l00027"></a>00027 <span class="keyword">namespace </span>tbb {
+<a name="l00028"></a>00028 
+<a name="l00030"></a>00030 <span class="keyword">namespace </span>internal {
+<a name="l00031"></a>00031 
+<a name="l00033"></a>00033 
+<a name="l00034"></a>00034     <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC deallocate_via_handler_v3( <span class="keywordtype">void</span> *p );
+<a name="l00035"></a>00035 
+<a name="l00037"></a>00037 
+<a name="l00038"></a>00038     <span class="keywordtype">void</span>* __TBB_EXPORTED_FUNC allocate_via_handler_v3( size_t n );
+<a name="l00039"></a>00039 
+<a name="l00041"></a>00041     <span class="keywordtype">bool</span> __TBB_EXPORTED_FUNC is_malloc_used_v3();
+<a name="l00042"></a>00042 }
+<a name="l00044"></a>00044 
+<a name="l00045"></a>00045 <span class="preprocessor">#if _MSC_VER && !defined(__INTEL_COMPILER)</span>
+<a name="l00046"></a>00046 <span class="preprocessor"></span>    <span class="comment">// Workaround for erroneous "unreferenced parameter" warning in method destroy.</span>
+<a name="l00047"></a>00047 <span class="preprocessor">    #pragma warning (push)</span>
+<a name="l00048"></a>00048 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (disable: 4100)</span>
+<a name="l00049"></a>00049 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00050"></a>00050 <span class="preprocessor"></span>
+<a name="l00052"></a>00052 
+<a name="l00057"></a>00057 <span class="keyword">template</span><<span class="keyword">typename</span> T>
+<a name="l00058"></a><a class="code" href="a00136.html">00058</a> <span class="keyword">class </span><a class="code" href="a00136.html">tbb_allocator</a> {
+<a name="l00059"></a>00059 <span class="keyword">public</span>:
+<a name="l00060"></a>00060     <span class="keyword">typedef</span> <span class="keyword">typename</span> internal::allocator_type<T>::value_type value_type;
+<a name="l00061"></a>00061     <span class="keyword">typedef</span> value_type* pointer;
+<a name="l00062"></a>00062     <span class="keyword">typedef</span> <span class="keyword">const</span> value_type* const_pointer;
+<a name="l00063"></a>00063     <span class="keyword">typedef</span> value_type& reference;
+<a name="l00064"></a>00064     <span class="keyword">typedef</span> <span class="keyword">const</span> value_type& const_reference;
+<a name="l00065"></a>00065     <span class="keyword">typedef</span> size_t size_type;
+<a name="l00066"></a>00066     <span class="keyword">typedef</span> ptrdiff_t difference_type;
+<a name="l00067"></a>00067     <span class="keyword">template</span><<span class="keyword">typename</span> U> <span class="keyword">struct </span>rebind {
+<a name="l00068"></a>00068         <span class="keyword">typedef</span> <a class="code" href="a00136.html">tbb_allocator<U></a> other;
+<a name="l00069"></a>00069     };
+<a name="l00070"></a>00070 
+<a name="l00072"></a><a class="code" href="a00136.html#09a7f81fb2c3055aaecf058b11538544">00072</a>     <span class="keyword">enum</span> <a class="code" href="a00136.html#09a7f81fb2c3055aaecf058b11538544">malloc_type</a> {
+<a name="l00073"></a>00073         scalable, 
+<a name="l00074"></a>00074         standard
+<a name="l00075"></a>00075     };
+<a name="l00076"></a>00076 
+<a name="l00077"></a>00077     <a class="code" href="a00136.html">tbb_allocator</a>() throw() {}
+<a name="l00078"></a>00078     tbb_allocator( <span class="keyword">const</span> tbb_allocator& ) throw() {}
+<a name="l00079"></a>00079     <span class="keyword">template</span><<span class="keyword">typename</span> U> tbb_allocator(<span class="keyword">const</span> tbb_allocator<U>&) throw() {}
+<a name="l00080"></a>00080 
+<a name="l00081"></a>00081     pointer address(reference x)<span class="keyword"> const </span>{<span class="keywordflow">return</span> &x;}
+<a name="l00082"></a>00082     const_pointer address(const_reference x)<span class="keyword"> const </span>{<span class="keywordflow">return</span> &x;}
+<a name="l00083"></a>00083     
+<a name="l00085"></a><a class="code" href="a00136.html#f6cb487b1bdce0b581f265a77dca6d53">00085</a>     pointer <a class="code" href="a00136.html#f6cb487b1bdce0b581f265a77dca6d53">allocate</a>( size_type n, <span class="keyword">const</span> <span class="keywordtype">void</span>* <span class="comment">/*hint*/</span> = 0) {
+<a name="l00086"></a>00086         <span class="keywordflow">return</span> pointer(internal::allocate_via_handler_v3( n * <span class="keyword">sizeof</span>(value_type) ));
+<a name="l00087"></a>00087     }
+<a name="l00088"></a>00088 
+<a name="l00090"></a><a class="code" href="a00136.html#fdd011fdf2f9ad07006dc7c0a7ec1da2">00090</a>     <span class="keywordtype">void</span> <a class="code" href="a00136.html#fdd011fdf2f9ad07006dc7c0a7ec1da2">deallocate</a>( pointer p, size_type ) {
+<a name="l00091"></a>00091         internal::deallocate_via_handler_v3(p);        
+<a name="l00092"></a>00092     }
+<a name="l00093"></a>00093 
+<a name="l00095"></a><a class="code" href="a00136.html#f059ca2c96243024f0d562ee3a87a3a5">00095</a>     size_type <a class="code" href="a00136.html#f059ca2c96243024f0d562ee3a87a3a5">max_size</a>() const throw() {
+<a name="l00096"></a>00096         size_type max = static_cast<size_type>(-1) / <span class="keyword">sizeof</span> (value_type);
+<a name="l00097"></a>00097         <span class="keywordflow">return</span> (max > 0 ? max : 1);
+<a name="l00098"></a>00098     }
+<a name="l00099"></a>00099     
+<a name="l00101"></a><a class="code" href="a00136.html#ab228ab9e324ed041c2226e1d717df5f">00101</a>     <span class="keywordtype">void</span> <a class="code" href="a00136.html#ab228ab9e324ed041c2226e1d717df5f">construct</a>( pointer p, <span class="keyword">const</span> value_type& value ) {<span class="keyword">new</span>(static_cast<void*>(p)) value_type(value);}
+<a name="l00102"></a>00102 
+<a name="l00104"></a><a class="code" href="a00136.html#ef133522bf55f05a605bee0763208281">00104</a>     <span class="keywordtype">void</span> <a class="code" href="a00136.html#ef133522bf55f05a605bee0763208281">destroy</a>( pointer p ) {p->~value_type();}
+<a name="l00105"></a>00105 
+<a name="l00107"></a><a class="code" href="a00136.html#78701e7454ef8e1a25b5acd364367080">00107</a>     <span class="keyword">static</span> <a class="code" href="a00136.html#09a7f81fb2c3055aaecf058b11538544">malloc_type</a> <a class="code" href="a00136.html#78701e7454ef8e1a25b5acd364367080">allocator_type</a>() {
+<a name="l00108"></a>00108         <span class="keywordflow">return</span> internal::is_malloc_used_v3() ? standard : scalable;
+<a name="l00109"></a>00109     }
+<a name="l00110"></a>00110 };
+<a name="l00111"></a>00111 
+<a name="l00112"></a>00112 <span class="preprocessor">#if _MSC_VER && !defined(__INTEL_COMPILER)</span>
+<a name="l00113"></a>00113 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (pop)</span>
+<a name="l00114"></a>00114 <span class="preprocessor"></span><span class="preprocessor">#endif // warning 4100 is back</span>
+<a name="l00115"></a>00115 <span class="preprocessor"></span>
+<a name="l00117"></a>00117 
+<a name="l00118"></a>00118 <span class="keyword">template</span><> 
+<a name="l00119"></a><a class="code" href="a00137.html">00119</a> <span class="keyword">class </span><a class="code" href="a00136.html">tbb_allocator</a><void> {
+<a name="l00120"></a>00120 <span class="keyword">public</span>:
+<a name="l00121"></a>00121     <span class="keyword">typedef</span> <span class="keywordtype">void</span>* pointer;
+<a name="l00122"></a>00122     <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="keywordtype">void</span>* const_pointer;
+<a name="l00123"></a>00123     <span class="keyword">typedef</span> <span class="keywordtype">void</span> value_type;
+<a name="l00124"></a>00124     <span class="keyword">template</span><<span class="keyword">typename</span> U> <span class="keyword">struct </span>rebind {
+<a name="l00125"></a>00125         <span class="keyword">typedef</span> <a class="code" href="a00136.html">tbb_allocator<U></a> other;
+<a name="l00126"></a>00126     };
+<a name="l00127"></a>00127 };
+<a name="l00128"></a>00128 
+<a name="l00129"></a>00129 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00130"></a>00130 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator==( <span class="keyword">const</span> <a class="code" href="a00136.html">tbb_allocator<T></a>&, <span class="keyword">const</span> <a class="code" href="a00136.html">tbb_allocator<U></a>& ) {<span class="keywordflow">return</span> <span class="keyword">true</span>;}
+<a name="l00131"></a>00131 
+<a name="l00132"></a>00132 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
+<a name="l00133"></a>00133 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator!=( <span class="keyword">const</span> tbb_allocator<T>&, <span class="keyword">const</span> tbb_allocator<U>& ) {<span class="keywordflow">return</span> <span class="keyword">false</span>;}
+<a name="l00134"></a>00134 
+<a name="l00135"></a>00135 } <span class="comment">// namespace tbb </span>
+<a name="l00136"></a>00136 
+<a name="l00137"></a>00137 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_tbb_allocator_H */</span>
+</pre></div><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00289.html b/doc/html/a00289.html
new file mode 100644
index 0000000..6b2047b
--- /dev/null
+++ b/doc/html/a00289.html
@@ -0,0 +1,221 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb_exception.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>tbb_exception.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_exception_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_exception_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "tbb_stddef.h"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include <stdexcept></span>
+<a name="l00026"></a>00026 
+<a name="l00027"></a>00027 <span class="keyword">namespace </span>tbb {
+<a name="l00028"></a>00028 
+<a name="l00030"></a><a class="code" href="a00096.html">00030</a> <span class="keyword">class </span><a class="code" href="a00096.html">bad_last_alloc</a> : <span class="keyword">public</span> std::bad_alloc {
+<a name="l00031"></a>00031 <span class="keyword">public</span>:
+<a name="l00032"></a>00032     <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> <span class="stringliteral">"bad allocation in previous or concurrent attempt"</span>; }
+<a name="l00033"></a>00033     <span class="keyword">virtual</span> ~<a class="code" href="a00096.html">bad_last_alloc</a>() <span class="keywordflow">throw</span>() {}
+<a name="l00034"></a>00034 };
+<a name="l00035"></a>00035 
+<a name="l00036"></a>00036 } <span class="comment">// namespace tbb</span>
+<a name="l00037"></a>00037 
+<a name="l00038"></a>00038 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
+<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#include "tbb_allocator.h"</span>
+<a name="l00040"></a>00040 <span class="preprocessor">#include <exception></span>
+<a name="l00041"></a>00041 <span class="preprocessor">#include <typeinfo></span>
+<a name="l00042"></a>00042 <span class="preprocessor">#include <new></span>
+<a name="l00043"></a>00043 
+<a name="l00044"></a>00044 <span class="keyword">namespace </span>tbb {
+<a name="l00045"></a>00045 
+<a name="l00047"></a>00047 
+<a name="l00067"></a><a class="code" href="a00138.html">00067</a> <span class="keyword">class </span><a class="code" href="a00138.html">tbb_exception</a> : <span class="keyword">public</span> std::exception {
+<a name="l00068"></a>00068 <span class="keyword">public</span>:
+<a name="l00070"></a>00070 
+<a name="l00071"></a>00071     <span class="keyword">virtual</span> <a class="code" href="a00138.html">tbb_exception</a>* <a class="code" href="a00138.html#3e3482bf264d4ca4dde046cd9c02c766">move</a> () <span class="keywordflow">throw</span>() = 0;
+<a name="l00072"></a>00072     
+<a name="l00074"></a>00074 
+<a name="l00076"></a>00076     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="a00138.html#66c94938eca8bf88b76f3eccaaf215d8">destroy</a> () <span class="keywordflow">throw</span>() = 0;
+<a name="l00077"></a>00077 
+<a name="l00079"></a>00079 
+<a name="l00083"></a>00083     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="a00138.html#8588e07fa49692f4d734e4f2e4f048f4">throw_self</a> () = 0;
+<a name="l00084"></a>00084 
+<a name="l00086"></a>00086     <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="a00138.html#d00f6497e552fee978a02bfcbebf46e2">name</a>() <span class="keyword">const</span> <span class="keywordflow">throw</span>() = 0;
+<a name="l00087"></a>00087 
+<a name="l00089"></a>00089     <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="a00138.html#e8157689ecb66bc6c72d3618bf3cc371">what</a>() <span class="keyword">const</span> <span class="keywordflow">throw</span>() = 0;
+<a name="l00090"></a>00090 };
+<a name="l00091"></a>00091 
+<a name="l00093"></a>00093 
+<a name="l00097"></a><a class="code" href="a00102.html">00097</a> <span class="keyword">class </span><a class="code" href="a00102.html">captured_exception</a> : <span class="keyword">public</span> <a class="code" href="a00138.html">tbb_exception</a>
+<a name="l00098"></a>00098 {
+<a name="l00099"></a>00099 <span class="keyword">public</span>:
+<a name="l00100"></a>00100     <a class="code" href="a00102.html">captured_exception</a> ( <span class="keyword">const</span> <a class="code" href="a00102.html">captured_exception</a>& src )
+<a name="l00101"></a>00101         : my_dynamic(<span class="keyword">false</span>)
+<a name="l00102"></a>00102     {
+<a name="l00103"></a>00103         set(src.<a class="code" href="a00102.html#6a57f9aa0bce72392492d109b9e1d941">my_exception_name</a>, src.<a class="code" href="a00102.html#788adf4e55cdad7abc178a48a1d47e69">my_exception_info</a>);
+<a name="l00104"></a>00104     }
+<a name="l00105"></a>00105 
+<a name="l00106"></a>00106     <a class="code" href="a00102.html">captured_exception</a> ( <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="a00102.html#5af82fd677449c5ca727fa1d7e16f9f5">name</a>, <span class="keyword">const</span> <span class="keywordtype">char</span>* info )
+<a name="l00107"></a>00107         : my_dynamic(<span class="keyword">false</span>)
+<a name="l00108"></a>00108     {
+<a name="l00109"></a>00109         set(name, info);
+<a name="l00110"></a>00110     }
+<a name="l00111"></a>00111 
+<a name="l00112"></a>00112     __TBB_EXPORTED_METHOD ~<a class="code" href="a00102.html">captured_exception</a> () <span class="keywordflow">throw</span>() {
+<a name="l00113"></a>00113         clear();
+<a name="l00114"></a>00114     }
+<a name="l00115"></a>00115 
+<a name="l00116"></a>00116     <a class="code" href="a00102.html">captured_exception</a>& operator= ( <span class="keyword">const</span> <a class="code" href="a00102.html">captured_exception</a>& src ) {
+<a name="l00117"></a>00117         <span class="keywordflow">if</span> ( <span class="keyword">this</span> != &src ) {
+<a name="l00118"></a>00118             clear();
+<a name="l00119"></a>00119             set(src.<a class="code" href="a00102.html#6a57f9aa0bce72392492d109b9e1d941">my_exception_name</a>, src.<a class="code" href="a00102.html#788adf4e55cdad7abc178a48a1d47e69">my_exception_info</a>);
+<a name="l00120"></a>00120         }
+<a name="l00121"></a>00121         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00122"></a>00122     }
+<a name="l00123"></a>00123 
+<a name="l00124"></a>00124     <span class="comment">/*override*/</span> 
+<a name="l00125"></a>00125     <a class="code" href="a00102.html">captured_exception</a>* <a class="code" href="a00102.html#df6bbb78a362fe862a341e81e2999810">move</a> () <span class="keywordflow">throw</span>();
+<a name="l00126"></a>00126 
+<a name="l00127"></a>00127     <span class="comment">/*override*/</span> 
+<a name="l00128"></a>00128     <span class="keywordtype">void</span> <a class="code" href="a00102.html#667812a82f1525e968c52593dea0ef4c">destroy</a> () <span class="keywordflow">throw</span>();
+<a name="l00129"></a>00129 
+<a name="l00130"></a>00130     <span class="comment">/*override*/</span> 
+<a name="l00131"></a><a class="code" href="a00102.html#2dd1be66ab32fa27e0ddef5707fa67ef">00131</a>     <span class="keywordtype">void</span> <a class="code" href="a00102.html#2dd1be66ab32fa27e0ddef5707fa67ef">throw_self</a> () { <span class="keywordflow">throw</span> *<span class="keyword">this</span>; }
+<a name="l00132"></a>00132 
+<a name="l00133"></a>00133     <span class="comment">/*override*/</span> 
+<a name="l00134"></a>00134     <span class="keyword">const</span> <span class="keywordtype">char</span>* __TBB_EXPORTED_METHOD <a class="code" href="a00102.html#5af82fd677449c5ca727fa1d7e16f9f5">name</a>() const throw();
+<a name="l00135"></a>00135 
+<a name="l00136"></a>00136     <span class="comment">/*override*/</span> 
+<a name="l00137"></a>00137     const <span class="keywordtype">char</span>* __TBB_EXPORTED_METHOD <a class="code" href="a00102.html#6b5988ef74a1fe2a58998d110b3633e0">what</a>() const throw();
+<a name="l00138"></a>00138 
+<a name="l00139"></a>00139 private:
+<a name="l00141"></a>00141     <a class="code" href="a00102.html">captured_exception</a>() {}
+<a name="l00142"></a>00142 
+<a name="l00144"></a>00144     <span class="keyword">static</span> captured_exception* allocate ( <span class="keyword">const</span> <span class="keywordtype">char</span>* name, <span class="keyword">const</span> <span class="keywordtype">char</span>* info );
+<a name="l00145"></a>00145 
+<a name="l00146"></a>00146     <span class="keywordtype">void</span> set ( <span class="keyword">const</span> <span class="keywordtype">char</span>* name, <span class="keyword">const</span> <span class="keywordtype">char</span>* info ) <span class="keywordflow">throw</span>();
+<a name="l00147"></a>00147     <span class="keywordtype">void</span> clear () throw();
+<a name="l00148"></a>00148 
+<a name="l00149"></a>00149     <span class="keywordtype">bool</span> my_dynamic;
+<a name="l00150"></a>00150     const <span class="keywordtype">char</span>* my_exception_name;
+<a name="l00151"></a>00151     const <span class="keywordtype">char</span>* my_exception_info;
+<a name="l00152"></a>00152 };
+<a name="l00153"></a>00153 
+<a name="l00155"></a>00155 
+<a name="l00159"></a>00159 template<typename ExceptionData>
+<a name="l00160"></a><a class="code" href="a00111.html">00160</a> class <a class="code" href="a00111.html">movable_exception</a> : public <a class="code" href="a00138.html">tbb_exception</a>
+<a name="l00161"></a>00161 {
+<a name="l00162"></a>00162     <span class="keyword">typedef</span> <a class="code" href="a00111.html">movable_exception<ExceptionData></a> <a class="code" href="a00111.html">self_type</a>;
+<a name="l00163"></a>00163 
+<a name="l00164"></a>00164 <span class="keyword">public</span>:
+<a name="l00165"></a>00165     <a class="code" href="a00111.html">movable_exception</a> ( <span class="keyword">const</span> ExceptionData& data ) 
+<a name="l00166"></a>00166         : my_exception_data(data)
+<a name="l00167"></a>00167         , my_dynamic(<span class="keyword">false</span>)
+<a name="l00168"></a>00168         , my_exception_name(<span class="keyword">typeid</span>(self_type).<a class="code" href="a00102.html#5af82fd677449c5ca727fa1d7e16f9f5">name</a>())
+<a name="l00169"></a>00169     {}
+<a name="l00170"></a>00170 
+<a name="l00171"></a>00171     <a class="code" href="a00111.html">movable_exception</a> ( <span class="keyword">const</span> <a class="code" href="a00111.html">movable_exception</a>& src ) <span class="keywordflow">throw</span> () 
+<a name="l00172"></a>00172         : my_exception_data(src.<a class="code" href="a00111.html#a8c0ae2089ae784b28907cf748b89416">my_exception_data</a>)
+<a name="l00173"></a>00173         , my_dynamic(<span class="keyword">false</span>)
+<a name="l00174"></a>00174         , my_exception_name(src.<a class="code" href="a00111.html#5f5843b501829ff824c9c8d28c8283eb">my_exception_name</a>)
+<a name="l00175"></a>00175     {}
+<a name="l00176"></a>00176 
+<a name="l00177"></a>00177     ~<a class="code" href="a00111.html">movable_exception</a> () <span class="keywordflow">throw</span>() {}
+<a name="l00178"></a>00178 
+<a name="l00179"></a>00179     <span class="keyword">const</span> <a class="code" href="a00111.html">movable_exception</a>& operator= ( <span class="keyword">const</span> <a class="code" href="a00111.html">movable_exception</a>& src ) {
+<a name="l00180"></a>00180         <span class="keywordflow">if</span> ( <span class="keyword">this</span> != &src ) {
+<a name="l00181"></a>00181             my_exception_data = src.<a class="code" href="a00111.html#a8c0ae2089ae784b28907cf748b89416">my_exception_data</a>;
+<a name="l00182"></a>00182             my_exception_name = src.<a class="code" href="a00111.html#5f5843b501829ff824c9c8d28c8283eb">my_exception_name</a>;
+<a name="l00183"></a>00183         }
+<a name="l00184"></a>00184         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00185"></a>00185     }
+<a name="l00186"></a>00186 
+<a name="l00187"></a>00187     ExceptionData& data () <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> my_exception_data; }
+<a name="l00188"></a>00188 
+<a name="l00189"></a>00189     <span class="keyword">const</span> ExceptionData& data () <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> my_exception_data; }
+<a name="l00190"></a>00190 
+<a name="l00191"></a><a class="code" href="a00111.html#bc5f5c4739b17ac5211ac58226c2f5a5">00191</a>     <span class="comment">/*override*/</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="a00102.html#5af82fd677449c5ca727fa1d7e16f9f5">name</a> () const throw() { <span class="keywordflow">return</span> my_exception_name; }
+<a name="l00192"></a>00192 
+<a name="l00193"></a><a class="code" href="a00111.html#b33a89bccf0c63106f1270c7bfaaf54f">00193</a>     <span class="comment">/*override*/</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="a00102.html#6b5988ef74a1fe2a58998d110b3633e0">what</a> () const throw() { <span class="keywordflow">return</span> <span class="stringliteral">"tbb::movable_exception"</span>; }
+<a name="l00194"></a>00194 
+<a name="l00195"></a>00195     <span class="comment">/*override*/</span> 
+<a name="l00196"></a><a class="code" href="a00111.html#1aea0ad179d6f0481fe7f3495f66adf9">00196</a>     <a class="code" href="a00111.html">movable_exception</a>* <a class="code" href="a00102.html#df6bbb78a362fe862a341e81e2999810">move</a> () throw() {
+<a name="l00197"></a>00197         <span class="keywordtype">void</span>* e = internal::allocate_via_handler_v3(<span class="keyword">sizeof</span>(<a class="code" href="a00111.html">movable_exception</a>));
+<a name="l00198"></a>00198         <span class="keywordflow">if</span> ( e ) {
+<a name="l00199"></a>00199             <span class="keyword">new</span> (e) movable_exception(*<span class="keyword">this</span>);
+<a name="l00200"></a>00200             ((movable_exception*)e)->my_dynamic = <span class="keyword">true</span>;
+<a name="l00201"></a>00201         }
+<a name="l00202"></a>00202         <span class="keywordflow">return</span> (movable_exception*)e;
+<a name="l00203"></a>00203     }
+<a name="l00204"></a>00204     <span class="comment">/*override*/</span> 
+<a name="l00205"></a><a class="code" href="a00111.html#7a46873119d9f85a7b0009c13e41a258">00205</a>     <span class="keywordtype">void</span> <a class="code" href="a00102.html#667812a82f1525e968c52593dea0ef4c">destroy</a> () throw() {
+<a name="l00206"></a>00206         __TBB_ASSERT ( my_dynamic, <span class="stringliteral">"Method destroy can be called only on dynamically allocated movable_exceptions"</span> );
+<a name="l00207"></a>00207         <span class="keywordflow">if</span> ( my_dynamic ) {
+<a name="l00208"></a>00208             this->~<a class="code" href="a00111.html">movable_exception</a>();
+<a name="l00209"></a>00209             internal::deallocate_via_handler_v3(<span class="keyword">this</span>);
+<a name="l00210"></a>00210         }
+<a name="l00211"></a>00211     }
+<a name="l00212"></a>00212     <span class="comment">/*override*/</span> 
+<a name="l00213"></a><a class="code" href="a00111.html#17cffba35811c92b7e65d63506b69602">00213</a>     <span class="keywordtype">void</span> <a class="code" href="a00102.html#2dd1be66ab32fa27e0ddef5707fa67ef">throw_self</a> () {
+<a name="l00214"></a>00214         <span class="keywordflow">throw</span> *<span class="keyword">this</span>;
+<a name="l00215"></a>00215     }
+<a name="l00216"></a>00216 
+<a name="l00217"></a>00217 <span class="keyword">protected</span>:
+<a name="l00219"></a><a class="code" href="a00111.html#a8c0ae2089ae784b28907cf748b89416">00219</a>     ExceptionData  my_exception_data;
+<a name="l00220"></a>00220 
+<a name="l00221"></a>00221 <span class="keyword">private</span>:
+<a name="l00223"></a>00223     <span class="keywordtype">bool</span> my_dynamic;
+<a name="l00224"></a>00224 
+<a name="l00226"></a>00226 
+<a name="l00227"></a>00227     <span class="keyword">const</span> <span class="keywordtype">char</span>* my_exception_name;
+<a name="l00228"></a>00228 };
+<a name="l00229"></a>00229 
+<a name="l00230"></a>00230 } <span class="comment">// namespace tbb</span>
+<a name="l00231"></a>00231 
+<a name="l00232"></a>00232 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
+<a name="l00233"></a>00233 
+<a name="l00234"></a>00234 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_exception_H */</span>
+</pre></div><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00290.html b/doc/html/a00290.html
new file mode 100644
index 0000000..f08fefc
--- /dev/null
+++ b/doc/html/a00290.html
@@ -0,0 +1,587 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb_machine.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>tbb_machine.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_machine_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_machine_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "tbb_stddef.h"</span>
+<a name="l00025"></a>00025 
+<a name="l00026"></a>00026 <span class="preprocessor">#if _WIN32||_WIN64</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span>
+<a name="l00028"></a>00028 <span class="preprocessor">#ifdef _MANAGED</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#pragma managed(push, off)</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span>
+<a name="l00032"></a>00032 <span class="preprocessor">#if defined(_M_IX86)</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor">#include "machine/windows_ia32.h"</span>
+<a name="l00034"></a>00034 <span class="preprocessor">#elif defined(_M_AMD64) </span>
+<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#include "machine/windows_em64t.h"</span>
+<a name="l00036"></a>00036 <span class="preprocessor">#else</span>
+<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="preprocessor">#error Unsupported platform</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00039"></a>00039 <span class="preprocessor"></span>
+<a name="l00040"></a>00040 <span class="preprocessor">#ifdef _MANAGED</span>
+<a name="l00041"></a>00041 <span class="preprocessor"></span><span class="preprocessor">#pragma managed(pop)</span>
+<a name="l00042"></a>00042 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00043"></a>00043 <span class="preprocessor"></span>
+<a name="l00044"></a>00044 <span class="preprocessor">#elif __linux__ || __FreeBSD__</span>
+<a name="l00045"></a>00045 <span class="preprocessor"></span>
+<a name="l00046"></a>00046 <span class="preprocessor">#if __i386__</span>
+<a name="l00047"></a>00047 <span class="preprocessor"></span><span class="preprocessor">#include "machine/linux_ia32.h"</span>
+<a name="l00048"></a>00048 <span class="preprocessor">#elif __x86_64__</span>
+<a name="l00049"></a>00049 <span class="preprocessor"></span><span class="preprocessor">#include "machine/linux_em64t.h"</span>
+<a name="l00050"></a>00050 <span class="preprocessor">#elif __ia64__</span>
+<a name="l00051"></a>00051 <span class="preprocessor"></span><span class="preprocessor">#include "machine/linux_itanium.h"</span>
+<a name="l00052"></a>00052 <span class="preprocessor">#endif</span>
+<a name="l00053"></a>00053 <span class="preprocessor"></span>
+<a name="l00054"></a>00054 <span class="preprocessor">#elif __APPLE__</span>
+<a name="l00055"></a>00055 <span class="preprocessor"></span>
+<a name="l00056"></a>00056 <span class="preprocessor">#if __i386__</span>
+<a name="l00057"></a>00057 <span class="preprocessor"></span><span class="preprocessor">#include "machine/linux_ia32.h"</span>
+<a name="l00058"></a>00058 <span class="preprocessor">#elif __x86_64__</span>
+<a name="l00059"></a>00059 <span class="preprocessor"></span><span class="preprocessor">#include "machine/linux_em64t.h"</span>
+<a name="l00060"></a>00060 <span class="preprocessor">#elif __POWERPC__</span>
+<a name="l00061"></a>00061 <span class="preprocessor"></span><span class="preprocessor">#include "machine/mac_ppc.h"</span>
+<a name="l00062"></a>00062 <span class="preprocessor">#endif</span>
+<a name="l00063"></a>00063 <span class="preprocessor"></span>
+<a name="l00064"></a>00064 <span class="preprocessor">#elif _AIX</span>
+<a name="l00065"></a>00065 <span class="preprocessor"></span>
+<a name="l00066"></a>00066 <span class="preprocessor">#include "machine/ibm_aix51.h"</span>
+<a name="l00067"></a>00067 
+<a name="l00068"></a>00068 <span class="preprocessor">#elif __sun || __SUNPRO_CC</span>
+<a name="l00069"></a>00069 <span class="preprocessor"></span>
+<a name="l00070"></a>00070 <span class="preprocessor">#define __asm__ asm </span>
+<a name="l00071"></a>00071 <span class="preprocessor"></span><span class="preprocessor">#define __volatile__ volatile</span>
+<a name="l00072"></a>00072 <span class="preprocessor"></span><span class="preprocessor">#if __i386  || __i386__</span>
+<a name="l00073"></a>00073 <span class="preprocessor"></span><span class="preprocessor">#include "machine/linux_ia32.h"</span>
+<a name="l00074"></a>00074 <span class="preprocessor">#elif __x86_64__</span>
+<a name="l00075"></a>00075 <span class="preprocessor"></span><span class="preprocessor">#include "machine/linux_em64t.h"</span>
+<a name="l00076"></a>00076 <span class="preprocessor">#endif</span>
+<a name="l00077"></a>00077 <span class="preprocessor"></span>
+<a name="l00078"></a>00078 <span class="preprocessor">#endif</span>
+<a name="l00079"></a>00079 <span class="preprocessor"></span>
+<a name="l00080"></a>00080 <span class="preprocessor">#if !defined(__TBB_CompareAndSwap4) || !defined(__TBB_CompareAndSwap8) || !defined(__TBB_Yield)</span>
+<a name="l00081"></a>00081 <span class="preprocessor"></span><span class="preprocessor">#error Minimal requirements for tbb_machine.h not satisfied </span>
+<a name="l00082"></a>00082 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00083"></a>00083 <span class="preprocessor"></span>
+<a name="l00084"></a>00084 <span class="preprocessor">#ifndef __TBB_load_with_acquire</span>
+<a name="l00086"></a>00086 <span class="preprocessor">    template<typename T></span>
+<a name="l00087"></a>00087 <span class="preprocessor"></span>    <span class="keyword">inline</span> T __TBB_load_with_acquire(<span class="keyword">const</span> <span class="keyword">volatile</span> T& location) {
+<a name="l00088"></a>00088         T temp = location;
+<a name="l00089"></a>00089 <span class="preprocessor">#ifdef __TBB_fence_for_acquire </span>
+<a name="l00090"></a>00090 <span class="preprocessor"></span>        __TBB_fence_for_acquire();
+<a name="l00091"></a>00091 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_fence_for_acquire */</span>
+<a name="l00092"></a>00092         <span class="keywordflow">return</span> temp;
+<a name="l00093"></a>00093     }
+<a name="l00094"></a>00094 <span class="preprocessor">#endif</span>
+<a name="l00095"></a>00095 <span class="preprocessor"></span>
+<a name="l00096"></a>00096 <span class="preprocessor">#ifndef __TBB_store_with_release</span>
+<a name="l00098"></a>00098 <span class="preprocessor">    template<typename T, typename V></span>
+<a name="l00099"></a>00099 <span class="preprocessor"></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span> __TBB_store_with_release(<span class="keyword">volatile</span> T& location, V value) {
+<a name="l00100"></a>00100 <span class="preprocessor">#ifdef __TBB_fence_for_release</span>
+<a name="l00101"></a>00101 <span class="preprocessor"></span>        __TBB_fence_for_release();
+<a name="l00102"></a>00102 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_fence_for_release */</span>
+<a name="l00103"></a>00103         location = T(value); 
+<a name="l00104"></a>00104     }
+<a name="l00105"></a>00105 <span class="preprocessor">#endif</span>
+<a name="l00106"></a>00106 <span class="preprocessor"></span>
+<a name="l00107"></a>00107 <span class="preprocessor">#ifndef __TBB_Pause</span>
+<a name="l00108"></a>00108 <span class="preprocessor"></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span> __TBB_Pause(int32_t) {
+<a name="l00109"></a>00109         __TBB_Yield();
+<a name="l00110"></a>00110     }
+<a name="l00111"></a>00111 <span class="preprocessor">#endif</span>
+<a name="l00112"></a>00112 <span class="preprocessor"></span>
+<a name="l00113"></a>00113 <span class="keyword">namespace </span>tbb {
+<a name="l00114"></a>00114 <span class="keyword">namespace </span>internal {
+<a name="l00115"></a>00115 
+<a name="l00117"></a>00117 
+<a name="l00118"></a><a class="code" href="a00094.html">00118</a> <span class="keyword">class </span><a class="code" href="a00094.html">AtomicBackoff</a> {
+<a name="l00120"></a>00120 
+<a name="l00122"></a>00122     <span class="keyword">static</span> <span class="keyword">const</span> int32_t LOOPS_BEFORE_YIELD = 16;
+<a name="l00123"></a>00123     int32_t count;
+<a name="l00124"></a>00124 <span class="keyword">public</span>:
+<a name="l00125"></a>00125     <a class="code" href="a00094.html">AtomicBackoff</a>() : count(1) {}
+<a name="l00126"></a>00126 
+<a name="l00128"></a><a class="code" href="a00094.html#cb1ca420dfc4aa21eca699d3fa4711c7">00128</a>     <span class="keywordtype">void</span> <a class="code" href="a00094.html#cb1ca420dfc4aa21eca699d3fa4711c7">pause</a>() {
+<a name="l00129"></a>00129         <span class="keywordflow">if</span>( count<=LOOPS_BEFORE_YIELD ) {
+<a name="l00130"></a>00130             __TBB_Pause(count);
+<a name="l00131"></a>00131             <span class="comment">// Pause twice as long the next time.</span>
+<a name="l00132"></a>00132             count*=2;
+<a name="l00133"></a>00133         } <span class="keywordflow">else</span> {
+<a name="l00134"></a>00134             <span class="comment">// Pause is so long that we might as well yield CPU to scheduler.</span>
+<a name="l00135"></a>00135             __TBB_Yield();
+<a name="l00136"></a>00136         }
+<a name="l00137"></a>00137     }
+<a name="l00138"></a>00138 
+<a name="l00139"></a>00139     <span class="comment">// pause for a few times and then return false immediately.</span>
+<a name="l00140"></a>00140     <span class="keywordtype">bool</span> bounded_pause() {
+<a name="l00141"></a>00141         <span class="keywordflow">if</span>( count<=LOOPS_BEFORE_YIELD ) {
+<a name="l00142"></a>00142             __TBB_Pause(count);
+<a name="l00143"></a>00143             <span class="comment">// Pause twice as long the next time.</span>
+<a name="l00144"></a>00144             count*=2;
+<a name="l00145"></a>00145             <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00146"></a>00146         } <span class="keywordflow">else</span> {
+<a name="l00147"></a>00147             <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00148"></a>00148         }
+<a name="l00149"></a>00149     }
+<a name="l00150"></a>00150 
+<a name="l00151"></a>00151     <span class="keywordtype">void</span> reset() {
+<a name="l00152"></a>00152         count = 1;
+<a name="l00153"></a>00153     }
+<a name="l00154"></a>00154 };
+<a name="l00155"></a>00155 
+<a name="l00156"></a>00156 <span class="comment">// T should be unsigned, otherwise sign propagation will break correctness of bit manipulations.</span>
+<a name="l00157"></a>00157 <span class="comment">// S should be either 1 or 2, for the mask calculation to work correctly.</span>
+<a name="l00158"></a>00158 <span class="comment">// Together, these rules limit applicability of Masked CAS to unsigned char and unsigned short.</span>
+<a name="l00159"></a>00159 <span class="keyword">template</span><size_t S, <span class="keyword">typename</span> T>
+<a name="l00160"></a>00160 <span class="keyword">inline</span> T __TBB_MaskedCompareAndSwap (<span class="keyword">volatile</span> T *ptr, T value, T comparand ) {
+<a name="l00161"></a>00161     <span class="keyword">volatile</span> uint32_t * base = (uint32_t*)( (uintptr_t)ptr & ~(uintptr_t)0x3 );
+<a name="l00162"></a>00162 <span class="preprocessor">#if __TBB_BIG_ENDIAN</span>
+<a name="l00163"></a>00163 <span class="preprocessor"></span>    <span class="keyword">const</span> uint8_t bitoffset = uint8_t( 8*( 4-S - (uintptr_t(ptr) & 0x3) ) );
+<a name="l00164"></a>00164 <span class="preprocessor">#else</span>
+<a name="l00165"></a>00165 <span class="preprocessor"></span>    <span class="keyword">const</span> uint8_t bitoffset = uint8_t( 8*((uintptr_t)ptr & 0x3) );
+<a name="l00166"></a>00166 <span class="preprocessor">#endif</span>
+<a name="l00167"></a>00167 <span class="preprocessor"></span>    <span class="keyword">const</span> uint32_t mask = ( (1<<(S*8)) - 1 )<<bitoffset;
+<a name="l00168"></a>00168     AtomicBackoff b;
+<a name="l00169"></a>00169     uint32_t result;
+<a name="l00170"></a>00170     <span class="keywordflow">for</span>(;;) {
+<a name="l00171"></a>00171         result = *base; <span class="comment">// reload the base value which might change during the pause</span>
+<a name="l00172"></a>00172         uint32_t old_value = ( result & ~mask ) | ( comparand << bitoffset );
+<a name="l00173"></a>00173         uint32_t new_value = ( result & ~mask ) | ( value << bitoffset );
+<a name="l00174"></a>00174         <span class="comment">// __TBB_CompareAndSwap4 presumed to have full fence. </span>
+<a name="l00175"></a>00175         result = __TBB_CompareAndSwap4( base, new_value, old_value );
+<a name="l00176"></a>00176         <span class="keywordflow">if</span>(  result==old_value               <span class="comment">// CAS succeeded</span>
+<a name="l00177"></a>00177           || ((result^old_value)&mask)!=0 )  <span class="comment">// CAS failed and the bits of interest have changed</span>
+<a name="l00178"></a>00178             <span class="keywordflow">break</span>;
+<a name="l00179"></a>00179         <span class="keywordflow">else</span>                                 <span class="comment">// CAS failed but the bits of interest left unchanged</span>
+<a name="l00180"></a>00180             b.pause();
+<a name="l00181"></a>00181     }
+<a name="l00182"></a>00182     <span class="keywordflow">return</span> T((result & mask) >> bitoffset);
+<a name="l00183"></a>00183 }
+<a name="l00184"></a>00184 
+<a name="l00185"></a>00185 <span class="keyword">template</span><size_t S, <span class="keyword">typename</span> T>
+<a name="l00186"></a>00186 <span class="keyword">inline</span> T __TBB_CompareAndSwapGeneric (<span class="keyword">volatile</span> <span class="keywordtype">void</span> *ptr, T value, T comparand ) { 
+<a name="l00187"></a>00187     <span class="keywordflow">return</span> __TBB_CompareAndSwapW((T *)ptr,value,comparand);
+<a name="l00188"></a>00188 }
+<a name="l00189"></a>00189 
+<a name="l00190"></a>00190 <span class="keyword">template</span><>
+<a name="l00191"></a>00191 <span class="keyword">inline</span> uint8_t __TBB_CompareAndSwapGeneric <1,uint8_t> (<span class="keyword">volatile</span> <span class="keywordtype">void</span> *ptr, uint8_t value, uint8_t comparand ) {
+<a name="l00192"></a>00192 #ifdef __TBB_CompareAndSwap1
+<a name="l00193"></a>00193     <span class="keywordflow">return</span> __TBB_CompareAndSwap1(ptr,value,comparand);
+<a name="l00194"></a>00194 <span class="preprocessor">#else</span>
+<a name="l00195"></a>00195 <span class="preprocessor"></span>    <span class="keywordflow">return</span> __TBB_MaskedCompareAndSwap<1,uint8_t>((<span class="keyword">volatile</span> uint8_t *)ptr,value,comparand);
+<a name="l00196"></a>00196 <span class="preprocessor">#endif</span>
+<a name="l00197"></a>00197 <span class="preprocessor"></span>}
+<a name="l00198"></a>00198 
+<a name="l00199"></a>00199 <span class="keyword">template</span><>
+<a name="l00200"></a>00200 <span class="keyword">inline</span> uint16_t __TBB_CompareAndSwapGeneric <2,uint16_t> (<span class="keyword">volatile</span> <span class="keywordtype">void</span> *ptr, uint16_t value, uint16_t comparand ) {
+<a name="l00201"></a>00201 #ifdef __TBB_CompareAndSwap2
+<a name="l00202"></a>00202     <span class="keywordflow">return</span> __TBB_CompareAndSwap2(ptr,value,comparand);
+<a name="l00203"></a>00203 <span class="preprocessor">#else</span>
+<a name="l00204"></a>00204 <span class="preprocessor"></span>    <span class="keywordflow">return</span> __TBB_MaskedCompareAndSwap<2,uint16_t>((<span class="keyword">volatile</span> uint16_t *)ptr,value,comparand);
+<a name="l00205"></a>00205 <span class="preprocessor">#endif</span>
+<a name="l00206"></a>00206 <span class="preprocessor"></span>}
+<a name="l00207"></a>00207 
+<a name="l00208"></a>00208 <span class="keyword">template</span><>
+<a name="l00209"></a>00209 <span class="keyword">inline</span> uint32_t __TBB_CompareAndSwapGeneric <4,uint32_t> (<span class="keyword">volatile</span> <span class="keywordtype">void</span> *ptr, uint32_t value, uint32_t comparand ) { 
+<a name="l00210"></a>00210     <span class="keywordflow">return</span> __TBB_CompareAndSwap4(ptr,value,comparand);
+<a name="l00211"></a>00211 }
+<a name="l00212"></a>00212 
+<a name="l00213"></a>00213 <span class="keyword">template</span><>
+<a name="l00214"></a>00214 <span class="keyword">inline</span> uint64_t __TBB_CompareAndSwapGeneric <8,uint64_t> (<span class="keyword">volatile</span> <span class="keywordtype">void</span> *ptr, uint64_t value, uint64_t comparand ) { 
+<a name="l00215"></a>00215     <span class="keywordflow">return</span> __TBB_CompareAndSwap8(ptr,value,comparand);
+<a name="l00216"></a>00216 }
+<a name="l00217"></a>00217 
+<a name="l00218"></a>00218 <span class="keyword">template</span><size_t S, <span class="keyword">typename</span> T>
+<a name="l00219"></a>00219 <span class="keyword">inline</span> T __TBB_FetchAndAddGeneric (<span class="keyword">volatile</span> <span class="keywordtype">void</span> *ptr, T addend) {
+<a name="l00220"></a>00220     AtomicBackoff b;
+<a name="l00221"></a>00221     T result;
+<a name="l00222"></a>00222     <span class="keywordflow">for</span>(;;) {
+<a name="l00223"></a>00223         result = *reinterpret_cast<volatile T *>(ptr);
+<a name="l00224"></a>00224         <span class="comment">// __TBB_CompareAndSwapGeneric presumed to have full fence. </span>
+<a name="l00225"></a>00225         <span class="keywordflow">if</span>( __TBB_CompareAndSwapGeneric<S,T> ( ptr, result+addend, result )==result ) 
+<a name="l00226"></a>00226             <span class="keywordflow">break</span>;
+<a name="l00227"></a>00227         b.pause();
+<a name="l00228"></a>00228     }
+<a name="l00229"></a>00229     <span class="keywordflow">return</span> result;
+<a name="l00230"></a>00230 }
+<a name="l00231"></a>00231 
+<a name="l00232"></a>00232 <span class="keyword">template</span><size_t S, <span class="keyword">typename</span> T>
+<a name="l00233"></a>00233 <span class="keyword">inline</span> T __TBB_FetchAndStoreGeneric (<span class="keyword">volatile</span> <span class="keywordtype">void</span> *ptr, T value) {
+<a name="l00234"></a>00234     AtomicBackoff b;
+<a name="l00235"></a>00235     T result;
+<a name="l00236"></a>00236     <span class="keywordflow">for</span>(;;) {
+<a name="l00237"></a>00237         result = *reinterpret_cast<volatile T *>(ptr);
+<a name="l00238"></a>00238         <span class="comment">// __TBB_CompareAndSwapGeneric presumed to have full fence.</span>
+<a name="l00239"></a>00239         <span class="keywordflow">if</span>( __TBB_CompareAndSwapGeneric<S,T> ( ptr, value, result )==result ) 
+<a name="l00240"></a>00240             <span class="keywordflow">break</span>;
+<a name="l00241"></a>00241         b.pause();
+<a name="l00242"></a>00242     }
+<a name="l00243"></a>00243     <span class="keywordflow">return</span> result;
+<a name="l00244"></a>00244 }
+<a name="l00245"></a>00245 
+<a name="l00246"></a>00246 <span class="comment">// Macro __TBB_TypeWithAlignmentAtLeastAsStrict(T) should be a type with alignment at least as </span>
+<a name="l00247"></a>00247 <span class="comment">// strict as type T.  Type type should have a trivial default constructor and destructor, so that</span>
+<a name="l00248"></a>00248 <span class="comment">// arrays of that type can be declared without initializers.  </span>
+<a name="l00249"></a>00249 <span class="comment">// It is correct (but perhaps a waste of space) if __TBB_TypeWithAlignmentAtLeastAsStrict(T) expands</span>
+<a name="l00250"></a>00250 <span class="comment">// to a type bigger than T.</span>
+<a name="l00251"></a>00251 <span class="comment">// The default definition here works on machines where integers are naturally aligned and the</span>
+<a name="l00252"></a>00252 <span class="comment">// strictest alignment is 16.</span>
+<a name="l00253"></a>00253 <span class="preprocessor">#ifndef __TBB_TypeWithAlignmentAtLeastAsStrict</span>
+<a name="l00254"></a>00254 <span class="preprocessor"></span>
+<a name="l00255"></a>00255 <span class="preprocessor">#if __GNUC__ || __SUNPRO_CC</span>
+<a name="l00256"></a>00256 <span class="preprocessor"></span><span class="keyword">struct </span>__TBB_machine_type_with_strictest_alignment {
+<a name="l00257"></a>00257     <span class="keywordtype">int</span> member[4];
+<a name="l00258"></a>00258 } __attribute__((aligned(16)));
+<a name="l00259"></a>00259 <span class="preprocessor">#elif _MSC_VER</span>
+<a name="l00260"></a>00260 <span class="preprocessor"></span>__declspec(align(16)) struct __TBB_machine_type_with_strictest_alignment {
+<a name="l00261"></a>00261     <span class="keywordtype">int</span> member[4];
+<a name="l00262"></a>00262 };
+<a name="l00263"></a>00263 <span class="preprocessor">#else</span>
+<a name="l00264"></a>00264 <span class="preprocessor"></span><span class="preprocessor">#error Must define __TBB_TypeWithAlignmentAtLeastAsStrict(T) or __TBB_machine_type_with_strictest_alignment</span>
+<a name="l00265"></a>00265 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00266"></a>00266 <span class="preprocessor"></span>
+<a name="l00267"></a>00267 <span class="keyword">template</span><size_t N> <span class="keyword">struct </span>type_with_alignment {__TBB_machine_type_with_strictest_alignment member;};
+<a name="l00268"></a>00268 <span class="keyword">template</span><> <span class="keyword">struct </span>type_with_alignment<1> { <span class="keywordtype">char</span> member; };
+<a name="l00269"></a>00269 <span class="keyword">template</span><> <span class="keyword">struct </span>type_with_alignment<2> { uint16_t member; };
+<a name="l00270"></a>00270 <span class="keyword">template</span><> <span class="keyword">struct </span>type_with_alignment<4> { uint32_t member; };
+<a name="l00271"></a>00271 <span class="keyword">template</span><> <span class="keyword">struct </span>type_with_alignment<8> { uint64_t member; };
+<a name="l00272"></a>00272 
+<a name="l00273"></a>00273 <span class="preprocessor">#if _MSC_VER||defined(__GNUC__)&&__GNUC__==3 && __GNUC_MINOR__<=2  </span>
+<a name="l00275"></a>00275 <span class="preprocessor"></span>
+<a name="l00277"></a>00277 <span class="preprocessor">template<size_t Size, typename T> </span>
+<a name="l00278"></a><a class="code" href="a00142.html">00278</a> <span class="preprocessor"></span><span class="keyword">struct </span><a class="code" href="a00142.html">work_around_alignment_bug</a> {
+<a name="l00279"></a>00279 <span class="preprocessor">#if _MSC_VER</span>
+<a name="l00280"></a>00280 <span class="preprocessor"></span>    <span class="keyword">static</span> <span class="keyword">const</span> size_t alignment = __alignof(T);
+<a name="l00281"></a>00281 <span class="preprocessor">#else</span>
+<a name="l00282"></a>00282 <span class="preprocessor"></span>    <span class="keyword">static</span> <span class="keyword">const</span> size_t alignment = __alignof__(T);
+<a name="l00283"></a>00283 <span class="preprocessor">#endif</span>
+<a name="l00284"></a>00284 <span class="preprocessor"></span>};
+<a name="l00285"></a>00285 <span class="preprocessor">#define __TBB_TypeWithAlignmentAtLeastAsStrict(T) tbb::internal::type_with_alignment<tbb::internal::work_around_alignment_bug<sizeof(T),T>::alignment></span>
+<a name="l00286"></a>00286 <span class="preprocessor"></span><span class="preprocessor">#elif __GNUC__ || __SUNPRO_CC</span>
+<a name="l00287"></a>00287 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_TypeWithAlignmentAtLeastAsStrict(T) tbb::internal::type_with_alignment<__alignof__(T)></span>
+<a name="l00288"></a>00288 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00289"></a>00289 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_TypeWithAlignmentAtLeastAsStrict(T) __TBB_machine_type_with_strictest_alignment</span>
+<a name="l00290"></a>00290 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00291"></a>00291 <span class="preprocessor"></span><span class="preprocessor">#endif  </span><span class="comment">/* ____TBB_TypeWithAlignmentAtLeastAsStrict */</span>
+<a name="l00292"></a>00292 
+<a name="l00293"></a>00293 } <span class="comment">// namespace internal</span>
+<a name="l00294"></a>00294 } <span class="comment">// namespace tbb</span>
+<a name="l00295"></a>00295 
+<a name="l00296"></a>00296 <span class="preprocessor">#ifndef __TBB_CompareAndSwap1</span>
+<a name="l00297"></a>00297 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap1 tbb::internal::__TBB_CompareAndSwapGeneric<1,uint8_t></span>
+<a name="l00298"></a>00298 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00299"></a>00299 <span class="preprocessor"></span>
+<a name="l00300"></a>00300 <span class="preprocessor">#ifndef __TBB_CompareAndSwap2 </span>
+<a name="l00301"></a>00301 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap2 tbb::internal::__TBB_CompareAndSwapGeneric<2,uint16_t></span>
+<a name="l00302"></a>00302 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00303"></a>00303 <span class="preprocessor"></span>
+<a name="l00304"></a>00304 <span class="preprocessor">#ifndef __TBB_CompareAndSwapW</span>
+<a name="l00305"></a>00305 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwapW tbb::internal::__TBB_CompareAndSwapGeneric<sizeof(ptrdiff_t),ptrdiff_t></span>
+<a name="l00306"></a>00306 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00307"></a>00307 <span class="preprocessor"></span>
+<a name="l00308"></a>00308 <span class="preprocessor">#ifndef __TBB_FetchAndAdd1</span>
+<a name="l00309"></a>00309 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd1 tbb::internal::__TBB_FetchAndAddGeneric<1,uint8_t></span>
+<a name="l00310"></a>00310 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00311"></a>00311 <span class="preprocessor"></span>
+<a name="l00312"></a>00312 <span class="preprocessor">#ifndef __TBB_FetchAndAdd2</span>
+<a name="l00313"></a>00313 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd2 tbb::internal::__TBB_FetchAndAddGeneric<2,uint16_t></span>
+<a name="l00314"></a>00314 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00315"></a>00315 <span class="preprocessor"></span>
+<a name="l00316"></a>00316 <span class="preprocessor">#ifndef __TBB_FetchAndAdd4</span>
+<a name="l00317"></a>00317 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd4 tbb::internal::__TBB_FetchAndAddGeneric<4,uint32_t></span>
+<a name="l00318"></a>00318 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00319"></a>00319 <span class="preprocessor"></span>
+<a name="l00320"></a>00320 <span class="preprocessor">#ifndef __TBB_FetchAndAdd8</span>
+<a name="l00321"></a>00321 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd8 tbb::internal::__TBB_FetchAndAddGeneric<8,uint64_t></span>
+<a name="l00322"></a>00322 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00323"></a>00323 <span class="preprocessor"></span>
+<a name="l00324"></a>00324 <span class="preprocessor">#ifndef __TBB_FetchAndAddW</span>
+<a name="l00325"></a>00325 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAddW tbb::internal::__TBB_FetchAndAddGeneric<sizeof(ptrdiff_t),ptrdiff_t></span>
+<a name="l00326"></a>00326 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00327"></a>00327 <span class="preprocessor"></span>
+<a name="l00328"></a>00328 <span class="preprocessor">#ifndef __TBB_FetchAndStore1</span>
+<a name="l00329"></a>00329 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore1 tbb::internal::__TBB_FetchAndStoreGeneric<1,uint8_t></span>
+<a name="l00330"></a>00330 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00331"></a>00331 <span class="preprocessor"></span>
+<a name="l00332"></a>00332 <span class="preprocessor">#ifndef __TBB_FetchAndStore2</span>
+<a name="l00333"></a>00333 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore2 tbb::internal::__TBB_FetchAndStoreGeneric<2,uint16_t></span>
+<a name="l00334"></a>00334 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00335"></a>00335 <span class="preprocessor"></span>
+<a name="l00336"></a>00336 <span class="preprocessor">#ifndef __TBB_FetchAndStore4</span>
+<a name="l00337"></a>00337 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore4 tbb::internal::__TBB_FetchAndStoreGeneric<4,uint32_t></span>
+<a name="l00338"></a>00338 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00339"></a>00339 <span class="preprocessor"></span>
+<a name="l00340"></a>00340 <span class="preprocessor">#ifndef __TBB_FetchAndStore8</span>
+<a name="l00341"></a>00341 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore8 tbb::internal::__TBB_FetchAndStoreGeneric<8,uint64_t></span>
+<a name="l00342"></a>00342 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00343"></a>00343 <span class="preprocessor"></span>
+<a name="l00344"></a>00344 <span class="preprocessor">#ifndef __TBB_FetchAndStoreW</span>
+<a name="l00345"></a>00345 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStoreW tbb::internal::__TBB_FetchAndStoreGeneric<sizeof(ptrdiff_t),ptrdiff_t></span>
+<a name="l00346"></a>00346 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00347"></a>00347 <span class="preprocessor"></span>
+<a name="l00348"></a>00348 <span class="preprocessor">#if __TBB_DECL_FENCED_ATOMICS</span>
+<a name="l00349"></a>00349 <span class="preprocessor"></span>
+<a name="l00350"></a>00350 <span class="preprocessor">#ifndef __TBB_CompareAndSwap1__TBB_full_fence</span>
+<a name="l00351"></a>00351 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap1__TBB_full_fence __TBB_CompareAndSwap1</span>
+<a name="l00352"></a>00352 <span class="preprocessor"></span><span class="preprocessor">#endif </span>
+<a name="l00353"></a>00353 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_CompareAndSwap1acquire</span>
+<a name="l00354"></a>00354 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap1acquire __TBB_CompareAndSwap1__TBB_full_fence</span>
+<a name="l00355"></a>00355 <span class="preprocessor"></span><span class="preprocessor">#endif </span>
+<a name="l00356"></a>00356 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_CompareAndSwap1release</span>
+<a name="l00357"></a>00357 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap1release __TBB_CompareAndSwap1__TBB_full_fence</span>
+<a name="l00358"></a>00358 <span class="preprocessor"></span><span class="preprocessor">#endif </span>
+<a name="l00359"></a>00359 <span class="preprocessor"></span>
+<a name="l00360"></a>00360 <span class="preprocessor">#ifndef __TBB_CompareAndSwap2__TBB_full_fence</span>
+<a name="l00361"></a>00361 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap2__TBB_full_fence __TBB_CompareAndSwap2</span>
+<a name="l00362"></a>00362 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00363"></a>00363 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_CompareAndSwap2acquire</span>
+<a name="l00364"></a>00364 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap2acquire __TBB_CompareAndSwap2__TBB_full_fence</span>
+<a name="l00365"></a>00365 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00366"></a>00366 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_CompareAndSwap2release</span>
+<a name="l00367"></a>00367 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap2release __TBB_CompareAndSwap2__TBB_full_fence</span>
+<a name="l00368"></a>00368 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00369"></a>00369 <span class="preprocessor"></span>
+<a name="l00370"></a>00370 <span class="preprocessor">#ifndef __TBB_CompareAndSwap4__TBB_full_fence</span>
+<a name="l00371"></a>00371 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap4__TBB_full_fence __TBB_CompareAndSwap4</span>
+<a name="l00372"></a>00372 <span class="preprocessor"></span><span class="preprocessor">#endif </span>
+<a name="l00373"></a>00373 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_CompareAndSwap4acquire</span>
+<a name="l00374"></a>00374 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap4acquire __TBB_CompareAndSwap4__TBB_full_fence</span>
+<a name="l00375"></a>00375 <span class="preprocessor"></span><span class="preprocessor">#endif </span>
+<a name="l00376"></a>00376 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_CompareAndSwap4release</span>
+<a name="l00377"></a>00377 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap4release __TBB_CompareAndSwap4__TBB_full_fence</span>
+<a name="l00378"></a>00378 <span class="preprocessor"></span><span class="preprocessor">#endif </span>
+<a name="l00379"></a>00379 <span class="preprocessor"></span>
+<a name="l00380"></a>00380 <span class="preprocessor">#ifndef __TBB_CompareAndSwap8__TBB_full_fence</span>
+<a name="l00381"></a>00381 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap8__TBB_full_fence __TBB_CompareAndSwap8</span>
+<a name="l00382"></a>00382 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00383"></a>00383 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_CompareAndSwap8acquire</span>
+<a name="l00384"></a>00384 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap8acquire __TBB_CompareAndSwap8__TBB_full_fence</span>
+<a name="l00385"></a>00385 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00386"></a>00386 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_CompareAndSwap8release</span>
+<a name="l00387"></a>00387 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap8release __TBB_CompareAndSwap8__TBB_full_fence</span>
+<a name="l00388"></a>00388 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00389"></a>00389 <span class="preprocessor"></span>
+<a name="l00390"></a>00390 <span class="preprocessor">#ifndef __TBB_FetchAndAdd1__TBB_full_fence</span>
+<a name="l00391"></a>00391 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd1__TBB_full_fence __TBB_FetchAndAdd1</span>
+<a name="l00392"></a>00392 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00393"></a>00393 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndAdd1acquire</span>
+<a name="l00394"></a>00394 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd1acquire __TBB_FetchAndAdd1__TBB_full_fence</span>
+<a name="l00395"></a>00395 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00396"></a>00396 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndAdd1release</span>
+<a name="l00397"></a>00397 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd1release __TBB_FetchAndAdd1__TBB_full_fence</span>
+<a name="l00398"></a>00398 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00399"></a>00399 <span class="preprocessor"></span>
+<a name="l00400"></a>00400 <span class="preprocessor">#ifndef __TBB_FetchAndAdd2__TBB_full_fence</span>
+<a name="l00401"></a>00401 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd2__TBB_full_fence __TBB_FetchAndAdd2</span>
+<a name="l00402"></a>00402 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00403"></a>00403 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndAdd2acquire</span>
+<a name="l00404"></a>00404 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd2acquire __TBB_FetchAndAdd2__TBB_full_fence</span>
+<a name="l00405"></a>00405 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00406"></a>00406 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndAdd2release</span>
+<a name="l00407"></a>00407 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd2release __TBB_FetchAndAdd2__TBB_full_fence</span>
+<a name="l00408"></a>00408 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00409"></a>00409 <span class="preprocessor"></span>
+<a name="l00410"></a>00410 <span class="preprocessor">#ifndef __TBB_FetchAndAdd4__TBB_full_fence</span>
+<a name="l00411"></a>00411 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd4__TBB_full_fence __TBB_FetchAndAdd4</span>
+<a name="l00412"></a>00412 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00413"></a>00413 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndAdd4acquire</span>
+<a name="l00414"></a>00414 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd4acquire __TBB_FetchAndAdd4__TBB_full_fence</span>
+<a name="l00415"></a>00415 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00416"></a>00416 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndAdd4release</span>
+<a name="l00417"></a>00417 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd4release __TBB_FetchAndAdd4__TBB_full_fence</span>
+<a name="l00418"></a>00418 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00419"></a>00419 <span class="preprocessor"></span>
+<a name="l00420"></a>00420 <span class="preprocessor">#ifndef __TBB_FetchAndAdd8__TBB_full_fence</span>
+<a name="l00421"></a>00421 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd8__TBB_full_fence __TBB_FetchAndAdd8</span>
+<a name="l00422"></a>00422 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00423"></a>00423 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndAdd8acquire</span>
+<a name="l00424"></a>00424 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd8acquire __TBB_FetchAndAdd8__TBB_full_fence</span>
+<a name="l00425"></a>00425 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00426"></a>00426 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndAdd8release</span>
+<a name="l00427"></a>00427 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd8release __TBB_FetchAndAdd8__TBB_full_fence</span>
+<a name="l00428"></a>00428 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00429"></a>00429 <span class="preprocessor"></span>
+<a name="l00430"></a>00430 <span class="preprocessor">#ifndef __TBB_FetchAndStore1__TBB_full_fence</span>
+<a name="l00431"></a>00431 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore1__TBB_full_fence __TBB_FetchAndStore1</span>
+<a name="l00432"></a>00432 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00433"></a>00433 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndStore1acquire</span>
+<a name="l00434"></a>00434 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore1acquire __TBB_FetchAndStore1__TBB_full_fence</span>
+<a name="l00435"></a>00435 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00436"></a>00436 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndStore1release</span>
+<a name="l00437"></a>00437 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore1release __TBB_FetchAndStore1__TBB_full_fence</span>
+<a name="l00438"></a>00438 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00439"></a>00439 <span class="preprocessor"></span>
+<a name="l00440"></a>00440 <span class="preprocessor">#ifndef __TBB_FetchAndStore2__TBB_full_fence</span>
+<a name="l00441"></a>00441 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore2__TBB_full_fence __TBB_FetchAndStore2</span>
+<a name="l00442"></a>00442 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00443"></a>00443 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndStore2acquire</span>
+<a name="l00444"></a>00444 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore2acquire __TBB_FetchAndStore2__TBB_full_fence</span>
+<a name="l00445"></a>00445 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00446"></a>00446 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndStore2release</span>
+<a name="l00447"></a>00447 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore2release __TBB_FetchAndStore2__TBB_full_fence</span>
+<a name="l00448"></a>00448 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00449"></a>00449 <span class="preprocessor"></span>
+<a name="l00450"></a>00450 <span class="preprocessor">#ifndef __TBB_FetchAndStore4__TBB_full_fence</span>
+<a name="l00451"></a>00451 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore4__TBB_full_fence __TBB_FetchAndStore4</span>
+<a name="l00452"></a>00452 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00453"></a>00453 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndStore4acquire</span>
+<a name="l00454"></a>00454 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore4acquire __TBB_FetchAndStore4__TBB_full_fence</span>
+<a name="l00455"></a>00455 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00456"></a>00456 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndStore4release</span>
+<a name="l00457"></a>00457 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore4release __TBB_FetchAndStore4__TBB_full_fence</span>
+<a name="l00458"></a>00458 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00459"></a>00459 <span class="preprocessor"></span>
+<a name="l00460"></a>00460 <span class="preprocessor">#ifndef __TBB_FetchAndStore8__TBB_full_fence</span>
+<a name="l00461"></a>00461 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore8__TBB_full_fence __TBB_FetchAndStore8</span>
+<a name="l00462"></a>00462 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00463"></a>00463 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndStore8acquire</span>
+<a name="l00464"></a>00464 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore8acquire __TBB_FetchAndStore8__TBB_full_fence</span>
+<a name="l00465"></a>00465 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00466"></a>00466 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndStore8release</span>
+<a name="l00467"></a>00467 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore8release __TBB_FetchAndStore8__TBB_full_fence</span>
+<a name="l00468"></a>00468 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00469"></a>00469 <span class="preprocessor"></span>
+<a name="l00470"></a>00470 <span class="preprocessor">#endif // __TBB_DECL_FENCED_ATOMICS</span>
+<a name="l00471"></a>00471 <span class="preprocessor"></span>
+<a name="l00472"></a>00472 <span class="comment">// Special atomic functions</span>
+<a name="l00473"></a>00473 <span class="preprocessor">#ifndef __TBB_FetchAndAddWrelease</span>
+<a name="l00474"></a>00474 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAddWrelease __TBB_FetchAndAddW</span>
+<a name="l00475"></a>00475 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00476"></a>00476 <span class="preprocessor"></span>
+<a name="l00477"></a>00477 <span class="preprocessor">#ifndef __TBB_FetchAndIncrementWacquire</span>
+<a name="l00478"></a>00478 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndIncrementWacquire(P) __TBB_FetchAndAddW(P,1)</span>
+<a name="l00479"></a>00479 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00480"></a>00480 <span class="preprocessor"></span>
+<a name="l00481"></a>00481 <span class="preprocessor">#ifndef __TBB_FetchAndDecrementWrelease</span>
+<a name="l00482"></a>00482 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndDecrementWrelease(P) __TBB_FetchAndAddW(P,(-1))</span>
+<a name="l00483"></a>00483 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00484"></a>00484 <span class="preprocessor"></span>
+<a name="l00485"></a>00485 <span class="preprocessor">#if __TBB_WORDSIZE==4</span>
+<a name="l00486"></a>00486 <span class="preprocessor"></span><span class="comment">// On 32-bit platforms, "atomic.h" requires definition of __TBB_Store8 and __TBB_Load8</span>
+<a name="l00487"></a>00487 <span class="preprocessor">#ifndef __TBB_Store8</span>
+<a name="l00488"></a>00488 <span class="preprocessor"></span><span class="keyword">inline</span> <span class="keywordtype">void</span> __TBB_Store8 (<span class="keyword">volatile</span> <span class="keywordtype">void</span> *ptr, int64_t value) {
+<a name="l00489"></a>00489     <a class="code" href="a00094.html">tbb::internal::AtomicBackoff</a> b;
+<a name="l00490"></a>00490     <span class="keywordflow">for</span>(;;) {
+<a name="l00491"></a>00491         int64_t result = *(int64_t *)ptr;
+<a name="l00492"></a>00492         <span class="keywordflow">if</span>( __TBB_CompareAndSwap8(ptr,value,result)==result ) <span class="keywordflow">break</span>;
+<a name="l00493"></a>00493         b.<a class="code" href="a00094.html#cb1ca420dfc4aa21eca699d3fa4711c7">pause</a>();
+<a name="l00494"></a>00494     }
+<a name="l00495"></a>00495 }
+<a name="l00496"></a>00496 <span class="preprocessor">#endif</span>
+<a name="l00497"></a>00497 <span class="preprocessor"></span>
+<a name="l00498"></a>00498 <span class="preprocessor">#ifndef __TBB_Load8</span>
+<a name="l00499"></a>00499 <span class="preprocessor"></span><span class="keyword">inline</span> int64_t __TBB_Load8 (<span class="keyword">const</span> <span class="keyword">volatile</span> <span class="keywordtype">void</span> *ptr) {
+<a name="l00500"></a>00500     int64_t result = *(int64_t *)ptr;
+<a name="l00501"></a>00501     result = __TBB_CompareAndSwap8((<span class="keyword">volatile</span> <span class="keywordtype">void</span> *)ptr,result,result);
+<a name="l00502"></a>00502     <span class="keywordflow">return</span> result;
+<a name="l00503"></a>00503 }
+<a name="l00504"></a>00504 <span class="preprocessor">#endif</span>
+<a name="l00505"></a>00505 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* __TBB_WORDSIZE==4 */</span>
+<a name="l00506"></a>00506 
+<a name="l00507"></a>00507 <span class="preprocessor">#ifndef __TBB_Log2</span>
+<a name="l00508"></a>00508 <span class="preprocessor"></span><span class="keyword">inline</span> intptr_t __TBB_Log2( uintptr_t x ) {
+<a name="l00509"></a>00509     <span class="keywordflow">if</span>( x==0 ) <span class="keywordflow">return</span> -1;
+<a name="l00510"></a>00510     intptr_t result = 0;
+<a name="l00511"></a>00511     uintptr_t tmp;
+<a name="l00512"></a>00512 <span class="preprocessor">#if __TBB_WORDSIZE>=8</span>
+<a name="l00513"></a>00513 <span class="preprocessor"></span>    <span class="keywordflow">if</span>( (tmp = x>>32) ) { x=tmp; result += 32; }
+<a name="l00514"></a>00514 <span class="preprocessor">#endif</span>
+<a name="l00515"></a>00515 <span class="preprocessor"></span>    <span class="keywordflow">if</span>( (tmp = x>>16) ) { x=tmp; result += 16; }
+<a name="l00516"></a>00516     <span class="keywordflow">if</span>( (tmp = x>>8) )  { x=tmp; result += 8; }
+<a name="l00517"></a>00517     <span class="keywordflow">if</span>( (tmp = x>>4) )  { x=tmp; result += 4; }
+<a name="l00518"></a>00518     <span class="keywordflow">if</span>( (tmp = x>>2) )  { x=tmp; result += 2; }
+<a name="l00519"></a>00519     <span class="keywordflow">return</span> (x&2)? result+1: result;
+<a name="l00520"></a>00520 }
+<a name="l00521"></a>00521 <span class="preprocessor">#endif</span>
+<a name="l00522"></a>00522 <span class="preprocessor"></span>
+<a name="l00523"></a>00523 <span class="preprocessor">#ifndef __TBB_AtomicOR</span>
+<a name="l00524"></a>00524 <span class="preprocessor"></span><span class="keyword">inline</span> <span class="keywordtype">void</span> __TBB_AtomicOR( <span class="keyword">volatile</span> <span class="keywordtype">void</span> *operand, uintptr_t addend ) {
+<a name="l00525"></a>00525     <a class="code" href="a00094.html">tbb::internal::AtomicBackoff</a> b;
+<a name="l00526"></a>00526     <span class="keywordflow">for</span>(;;) {
+<a name="l00527"></a>00527         uintptr_t tmp = *(<span class="keyword">volatile</span> uintptr_t *)operand;
+<a name="l00528"></a>00528         uintptr_t result = __TBB_CompareAndSwapW(operand, tmp|addend, tmp);
+<a name="l00529"></a>00529         <span class="keywordflow">if</span>( result==tmp ) <span class="keywordflow">break</span>;
+<a name="l00530"></a>00530         b.<a class="code" href="a00094.html#cb1ca420dfc4aa21eca699d3fa4711c7">pause</a>();
+<a name="l00531"></a>00531     }
+<a name="l00532"></a>00532 }
+<a name="l00533"></a>00533 <span class="preprocessor">#endif</span>
+<a name="l00534"></a>00534 <span class="preprocessor"></span>
+<a name="l00535"></a>00535 <span class="preprocessor">#ifndef __TBB_AtomicAND</span>
+<a name="l00536"></a>00536 <span class="preprocessor"></span><span class="keyword">inline</span> <span class="keywordtype">void</span> __TBB_AtomicAND( <span class="keyword">volatile</span> <span class="keywordtype">void</span> *operand, uintptr_t addend ) {
+<a name="l00537"></a>00537     <a class="code" href="a00094.html">tbb::internal::AtomicBackoff</a> b;
+<a name="l00538"></a>00538     <span class="keywordflow">for</span>(;;) {
+<a name="l00539"></a>00539         uintptr_t tmp = *(<span class="keyword">volatile</span> uintptr_t *)operand;
+<a name="l00540"></a>00540         uintptr_t result = __TBB_CompareAndSwapW(operand, tmp&addend, tmp);
+<a name="l00541"></a>00541         <span class="keywordflow">if</span>( result==tmp ) <span class="keywordflow">break</span>;
+<a name="l00542"></a>00542         b.<a class="code" href="a00094.html#cb1ca420dfc4aa21eca699d3fa4711c7">pause</a>();
+<a name="l00543"></a>00543     }
+<a name="l00544"></a>00544 }
+<a name="l00545"></a>00545 <span class="preprocessor">#endif</span>
+<a name="l00546"></a>00546 <span class="preprocessor"></span>
+<a name="l00547"></a>00547 <span class="preprocessor">#ifndef __TBB_TryLockByte</span>
+<a name="l00548"></a>00548 <span class="preprocessor"></span><span class="keyword">inline</span> <span class="keywordtype">bool</span> __TBB_TryLockByte( <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> &flag ) {
+<a name="l00549"></a>00549     <span class="keywordflow">return</span> __TBB_CompareAndSwap1(&flag,1,0)==0;
+<a name="l00550"></a>00550 }
+<a name="l00551"></a>00551 <span class="preprocessor">#endif</span>
+<a name="l00552"></a>00552 <span class="preprocessor"></span>
+<a name="l00553"></a>00553 <span class="preprocessor">#ifndef __TBB_LockByte</span>
+<a name="l00554"></a>00554 <span class="preprocessor"></span><span class="keyword">inline</span> uintptr_t __TBB_LockByte( <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>& flag ) {
+<a name="l00555"></a>00555     <span class="keywordflow">if</span> ( !__TBB_TryLockByte(flag) ) {
+<a name="l00556"></a>00556         <a class="code" href="a00094.html">tbb::internal::AtomicBackoff</a> b;
+<a name="l00557"></a>00557         <span class="keywordflow">do</span> {
+<a name="l00558"></a>00558             b.<a class="code" href="a00094.html#cb1ca420dfc4aa21eca699d3fa4711c7">pause</a>();
+<a name="l00559"></a>00559         } <span class="keywordflow">while</span> ( !__TBB_TryLockByte(flag) );
+<a name="l00560"></a>00560     }
+<a name="l00561"></a>00561     <span class="keywordflow">return</span> 0;
+<a name="l00562"></a>00562 }
+<a name="l00563"></a>00563 <span class="preprocessor">#endif</span>
+<a name="l00564"></a>00564 <span class="preprocessor"></span>
+<a name="l00565"></a>00565 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_machine_H */</span>
+</pre></div><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00293.html b/doc/html/a00293.html
new file mode 100644
index 0000000..3b4f5ec
--- /dev/null
+++ b/doc/html/a00293.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb_profiling.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>tbb_profiling.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_profiling_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_profiling_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="comment">// Check if the tools support is enabled</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#if (_WIN32||_WIN64||__linux__) && TBB_USE_THREADING_TOOLS && __TBB_NAMING_API_SUPPORT</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span>
+<a name="l00027"></a>00027 <span class="preprocessor">#if _WIN32||_WIN64</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#include <stdlib.h></span>  <span class="comment">/* mbstowcs_s */</span>
+<a name="l00029"></a>00029 <span class="preprocessor">#endif</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#include "tbb/tbb_stddef.h"</span>
+<a name="l00031"></a>00031 
+<a name="l00032"></a>00032 <span class="keyword">namespace </span>tbb {
+<a name="l00033"></a>00033     <span class="keyword">namespace </span>internal {
+<a name="l00034"></a>00034 <span class="preprocessor">#if _WIN32||_WIN64</span>
+<a name="l00035"></a>00035 <span class="preprocessor"></span>        <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC itt_set_sync_name_v3( <span class="keywordtype">void</span> *obj, <span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* name ); 
+<a name="l00036"></a>00036         <span class="keyword">inline</span> size_t multibyte_to_widechar( <span class="keywordtype">wchar_t</span>* wcs, <span class="keyword">const</span> <span class="keywordtype">char</span>* mbs, size_t bufsize) {
+<a name="l00037"></a>00037 <span class="preprocessor">#if _MSC_VER>=1400</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span>            size_t len;
+<a name="l00039"></a>00039             mbstowcs_s( &len, wcs, bufsize, mbs, _TRUNCATE );
+<a name="l00040"></a>00040             <span class="keywordflow">return</span> len;   <span class="comment">// mbstowcs_s counts null terminator</span>
+<a name="l00041"></a>00041 <span class="preprocessor">#else</span>
+<a name="l00042"></a>00042 <span class="preprocessor"></span>            size_t len = mbstowcs( wcs, mbs, bufsize );
+<a name="l00043"></a>00043             <span class="keywordflow">if</span>(wcs && len!=size_t(-1) )
+<a name="l00044"></a>00044                 wcs[len<bufsize-1? len: bufsize-1] = wchar_t(<span class="charliteral">'\0'</span>);
+<a name="l00045"></a>00045             <span class="keywordflow">return</span> len+1; <span class="comment">// mbstowcs does not count null terminator</span>
+<a name="l00046"></a>00046 <span class="preprocessor">#endif</span>
+<a name="l00047"></a>00047 <span class="preprocessor"></span>        }
+<a name="l00048"></a>00048 <span class="preprocessor">#else</span>
+<a name="l00049"></a>00049 <span class="preprocessor"></span>        <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC itt_set_sync_name_v3( <span class="keywordtype">void</span> *obj, <span class="keyword">const</span> <span class="keywordtype">char</span>* name ); 
+<a name="l00050"></a>00050 <span class="preprocessor">#endif</span>
+<a name="l00051"></a>00051 <span class="preprocessor"></span>    } <span class="comment">// namespace internal</span>
+<a name="l00052"></a>00052 } <span class="comment">// namespace tbb</span>
+<a name="l00053"></a>00053 
+<a name="l00055"></a>00055 
+<a name="l00057"></a>00057 <span class="preprocessor">#if _WIN32||_WIN64</span>
+<a name="l00058"></a>00058 <span class="preprocessor"></span><span class="preprocessor">    #define __TBB_DEFINE_PROFILING_SET_NAME(sync_object_type)    \</span>
+<a name="l00059"></a>00059 <span class="preprocessor">        namespace profiling {                                                       \</span>
+<a name="l00060"></a>00060 <span class="preprocessor">            inline void set_name( sync_object_type& obj, const wchar_t* name ) {    \</span>
+<a name="l00061"></a>00061 <span class="preprocessor">                tbb::internal::itt_set_sync_name_v3( &obj, name );                  \</span>
+<a name="l00062"></a>00062 <span class="preprocessor">            }                                                                       \</span>
+<a name="l00063"></a>00063 <span class="preprocessor">            inline void set_name( sync_object_type& obj, const char* name ) {       \</span>
+<a name="l00064"></a>00064 <span class="preprocessor">                size_t len = tbb::internal::multibyte_to_widechar(NULL, name, 0);   \</span>
+<a name="l00065"></a>00065 <span class="preprocessor">                wchar_t *wname = new wchar_t[len];                                  \</span>
+<a name="l00066"></a>00066 <span class="preprocessor">                tbb::internal::multibyte_to_widechar(wname, name, len);             \</span>
+<a name="l00067"></a>00067 <span class="preprocessor">                set_name( obj, wname );                                             \</span>
+<a name="l00068"></a>00068 <span class="preprocessor">                delete[] wname;                                                     \</span>
+<a name="l00069"></a>00069 <span class="preprocessor">            }                                                                       \</span>
+<a name="l00070"></a>00070 <span class="preprocessor">        }</span>
+<a name="l00071"></a>00071 <span class="preprocessor"></span><span class="preprocessor">#else </span><span class="comment">/* !WIN */</span>
+<a name="l00072"></a>00072 <span class="preprocessor">    #define __TBB_DEFINE_PROFILING_SET_NAME(sync_object_type)    \</span>
+<a name="l00073"></a>00073 <span class="preprocessor">        namespace profiling {                                                       \</span>
+<a name="l00074"></a>00074 <span class="preprocessor">            inline void set_name( sync_object_type& obj, const char* name ) {       \</span>
+<a name="l00075"></a>00075 <span class="preprocessor">                tbb::internal::itt_set_sync_name_v3( &obj, name );                  \</span>
+<a name="l00076"></a>00076 <span class="preprocessor">            }                                                                       \</span>
+<a name="l00077"></a>00077 <span class="preprocessor">        }</span>
+<a name="l00078"></a>00078 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* !WIN */</span>
+<a name="l00079"></a>00079 
+<a name="l00080"></a>00080 <span class="preprocessor">#else </span><span class="comment">/* no tools support */</span>
+<a name="l00081"></a>00081 
+<a name="l00082"></a>00082 <span class="preprocessor">#if _WIN32||_WIN64</span>
+<a name="l00083"></a>00083 <span class="preprocessor"></span><span class="preprocessor">    #define __TBB_DEFINE_PROFILING_SET_NAME(sync_object_type)    \</span>
+<a name="l00084"></a>00084 <span class="preprocessor">        namespace profiling {                                               \</span>
+<a name="l00085"></a>00085 <span class="preprocessor">            inline void set_name( sync_object_type&, const wchar_t* ) {}    \</span>
+<a name="l00086"></a>00086 <span class="preprocessor">            inline void set_name( sync_object_type&, const char* ) {}       \</span>
+<a name="l00087"></a>00087 <span class="preprocessor">        }</span>
+<a name="l00088"></a>00088 <span class="preprocessor"></span><span class="preprocessor">#else </span><span class="comment">/* !WIN */</span>
+<a name="l00089"></a>00089 <span class="preprocessor">    #define __TBB_DEFINE_PROFILING_SET_NAME(sync_object_type)    \</span>
+<a name="l00090"></a>00090 <span class="preprocessor">        namespace profiling {                                               \</span>
+<a name="l00091"></a>00091 <span class="preprocessor">            inline void set_name( sync_object_type&, const char* ) {}       \</span>
+<a name="l00092"></a>00092 <span class="preprocessor">        }</span>
+<a name="l00093"></a>00093 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* !WIN */</span>
+<a name="l00094"></a>00094 
+<a name="l00095"></a>00095 <span class="preprocessor">#endif </span><span class="comment">/* no tools support */</span>
+<a name="l00096"></a>00096 
+<a name="l00097"></a>00097 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_profiling_H */</span>
+</pre></div><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00294.html b/doc/html/a00294.html
new file mode 100644
index 0000000..a8091b3
--- /dev/null
+++ b/doc/html/a00294.html
@@ -0,0 +1,273 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb_stddef.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>tbb_stddef.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_tbb_stddef_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_tbb_stddef_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="comment">// Marketing-driven product version</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#define TBB_VERSION_MAJOR 2</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define TBB_VERSION_MINOR 1</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span>
+<a name="l00028"></a>00028 <span class="comment">// Engineering-focused interface version</span>
+<a name="l00029"></a>00029 <span class="preprocessor">#define TBB_INTERFACE_VERSION 3016</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#define TBB_INTERFACE_VERSION_MAJOR TBB_INTERFACE_VERSION/1000</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span>
+<a name="l00032"></a>00032 <span class="comment">// The oldest major interface version still supported</span>
+<a name="l00033"></a>00033 <span class="comment">// To be used in SONAME, manifests, etc.</span>
+<a name="l00034"></a>00034 <span class="preprocessor">#define TBB_COMPATIBLE_INTERFACE_VERSION 2</span>
+<a name="l00035"></a>00035 <span class="preprocessor"></span>
+<a name="l00036"></a>00036 <span class="preprocessor">#define __TBB_STRING_AUX(x) #x</span>
+<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_STRING(x) __TBB_STRING_AUX(x)</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span>
+<a name="l00039"></a>00039 <span class="comment">// We do not need defines below for resource processing on windows</span>
+<a name="l00040"></a>00040 <span class="preprocessor">#if !defined RC_INVOKED</span>
+<a name="l00041"></a>00041 <span class="preprocessor"></span>
+<a name="l00042"></a>00042 <span class="comment">// Define groups for Doxygen documentation</span>
+<a name="l00052"></a>00052 <span class="comment"></span><span class="comment">// Simple text that is displayed on the main page of Doxygen documentation.</span>
+<a name="l00094"></a>00094 <span class="comment"></span><span class="comment">// Define preprocessor symbols used to determine architecture</span>
+<a name="l00095"></a>00095 <span class="preprocessor">#if _WIN32||_WIN64</span>
+<a name="l00096"></a>00096 <span class="preprocessor"></span><span class="preprocessor">#   if defined(_M_AMD64)</span>
+<a name="l00097"></a>00097 <span class="preprocessor"></span><span class="preprocessor">#       define __TBB_x86_64 1</span>
+<a name="l00098"></a>00098 <span class="preprocessor"></span><span class="preprocessor">#   elif defined(_M_IA64)</span>
+<a name="l00099"></a>00099 <span class="preprocessor"></span><span class="preprocessor">#       define __TBB_ipf 1</span>
+<a name="l00100"></a>00100 <span class="preprocessor"></span><span class="preprocessor">#   elif defined(_M_IX86)</span>
+<a name="l00101"></a>00101 <span class="preprocessor"></span><span class="preprocessor">#       define __TBB_x86_32 1</span>
+<a name="l00102"></a>00102 <span class="preprocessor"></span><span class="preprocessor">#   endif</span>
+<a name="l00103"></a>00103 <span class="preprocessor"></span><span class="preprocessor">#else </span><span class="comment">/* Assume generic Unix */</span>
+<a name="l00104"></a>00104 <span class="preprocessor">#   if !__linux__ && !__APPLE__</span>
+<a name="l00105"></a>00105 <span class="preprocessor"></span><span class="preprocessor">#       define __TBB_generic_os 1</span>
+<a name="l00106"></a>00106 <span class="preprocessor"></span><span class="preprocessor">#   endif</span>
+<a name="l00107"></a>00107 <span class="preprocessor"></span><span class="preprocessor">#   if __x86_64__</span>
+<a name="l00108"></a>00108 <span class="preprocessor"></span><span class="preprocessor">#       define __TBB_x86_64 1</span>
+<a name="l00109"></a>00109 <span class="preprocessor"></span><span class="preprocessor">#   elif __ia64__</span>
+<a name="l00110"></a>00110 <span class="preprocessor"></span><span class="preprocessor">#       define __TBB_ipf 1</span>
+<a name="l00111"></a>00111 <span class="preprocessor"></span><span class="preprocessor">#   elif __i386__||__i386  // __i386 is for Sun OS</span>
+<a name="l00112"></a>00112 <span class="preprocessor"></span><span class="preprocessor">#       define __TBB_x86_32 1</span>
+<a name="l00113"></a>00113 <span class="preprocessor"></span><span class="preprocessor">#   else</span>
+<a name="l00114"></a>00114 <span class="preprocessor"></span><span class="preprocessor">#       define __TBB_generic_arch 1</span>
+<a name="l00115"></a>00115 <span class="preprocessor"></span><span class="preprocessor">#   endif</span>
+<a name="l00116"></a>00116 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00117"></a>00117 <span class="preprocessor"></span>
+<a name="l00118"></a>00118 <span class="preprocessor">#if _WIN32||_WIN64</span>
+<a name="l00119"></a>00119 <span class="preprocessor"></span><span class="comment">// define the parts of stdint.h that are needed, but put them inside tbb::internal</span>
+<a name="l00120"></a>00120 <span class="keyword">namespace </span>tbb {
+<a name="l00121"></a>00121 <span class="keyword">namespace </span>internal {
+<a name="l00122"></a>00122     <span class="keyword">typedef</span> __int8 int8_t;
+<a name="l00123"></a>00123     <span class="keyword">typedef</span> __int16 int16_t;
+<a name="l00124"></a>00124     <span class="keyword">typedef</span> __int32 int32_t;
+<a name="l00125"></a>00125     <span class="keyword">typedef</span> __int64 int64_t;
+<a name="l00126"></a>00126     <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> __int8 uint8_t;
+<a name="l00127"></a>00127     <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> __int16 uint16_t;
+<a name="l00128"></a>00128     <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> __int32 uint32_t;
+<a name="l00129"></a>00129     <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> __int64 uint64_t;
+<a name="l00130"></a>00130 } <span class="comment">// namespace internal</span>
+<a name="l00131"></a>00131 } <span class="comment">// namespace tbb</span>
+<a name="l00132"></a>00132 <span class="preprocessor">#else</span>
+<a name="l00133"></a>00133 <span class="preprocessor"></span><span class="preprocessor">#include <stdint.h></span>
+<a name="l00134"></a>00134 <span class="preprocessor">#endif</span>
+<a name="l00135"></a>00135 <span class="preprocessor"></span>
+<a name="l00136"></a>00136 <span class="preprocessor">#if _MSC_VER >=1400</span>
+<a name="l00137"></a>00137 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_EXPORTED_FUNC   __cdecl</span>
+<a name="l00138"></a>00138 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_EXPORTED_METHOD __thiscall</span>
+<a name="l00139"></a>00139 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00140"></a>00140 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_EXPORTED_FUNC</span>
+<a name="l00141"></a>00141 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_EXPORTED_METHOD</span>
+<a name="l00142"></a>00142 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00143"></a>00143 <span class="preprocessor"></span>
+<a name="l00144"></a>00144 <span class="preprocessor">#include <cstddef></span>      <span class="comment">/* Need size_t and ptrdiff_t (the latter on Windows only) from here. */</span>
+<a name="l00145"></a>00145 
+<a name="l00146"></a>00146 <span class="preprocessor">#if _WIN32||_WIN64</span>
+<a name="l00147"></a>00147 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_tbb_windef_H</span>
+<a name="l00148"></a>00148 <span class="preprocessor"></span><span class="preprocessor">#include "_tbb_windef.h"</span>
+<a name="l00149"></a>00149 <span class="preprocessor">#undef __TBB_tbb_windef_H</span>
+<a name="l00150"></a>00150 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
+<a name="l00151"></a>00151 
+<a name="l00152"></a>00152 <span class="preprocessor">#ifndef TBB_USE_DEBUG</span>
+<a name="l00153"></a>00153 <span class="preprocessor"></span><span class="preprocessor">#ifdef TBB_DO_ASSERT</span>
+<a name="l00154"></a>00154 <span class="preprocessor"></span><span class="preprocessor">#define TBB_USE_DEBUG TBB_DO_ASSERT</span>
+<a name="l00155"></a>00155 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00156"></a>00156 <span class="preprocessor"></span><span class="preprocessor">#define TBB_USE_DEBUG 0</span>
+<a name="l00157"></a>00157 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* TBB_DO_ASSERT */</span>
+<a name="l00158"></a>00158 <span class="preprocessor">#else</span>
+<a name="l00159"></a>00159 <span class="preprocessor"></span><span class="preprocessor">#define TBB_DO_ASSERT TBB_USE_DEBUG</span>
+<a name="l00160"></a>00160 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_DEBUG */</span>
+<a name="l00161"></a>00161 
+<a name="l00162"></a>00162 <span class="preprocessor">#ifndef TBB_USE_ASSERT</span>
+<a name="l00163"></a>00163 <span class="preprocessor"></span><span class="preprocessor">#ifdef TBB_DO_ASSERT</span>
+<a name="l00164"></a>00164 <span class="preprocessor"></span><span class="preprocessor">#define TBB_USE_ASSERT TBB_DO_ASSERT</span>
+<a name="l00165"></a>00165 <span class="preprocessor"></span><span class="preprocessor">#else </span>
+<a name="l00166"></a>00166 <span class="preprocessor"></span><span class="preprocessor">#define TBB_USE_ASSERT TBB_USE_DEBUG</span>
+<a name="l00167"></a>00167 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* TBB_DO_ASSERT */</span>
+<a name="l00168"></a>00168 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
+<a name="l00169"></a>00169 
+<a name="l00170"></a>00170 <span class="preprocessor">#ifndef TBB_USE_THREADING_TOOLS</span>
+<a name="l00171"></a>00171 <span class="preprocessor"></span><span class="preprocessor">#ifdef TBB_DO_THREADING_TOOLS</span>
+<a name="l00172"></a>00172 <span class="preprocessor"></span><span class="preprocessor">#define TBB_USE_THREADING_TOOLS TBB_DO_THREADING_TOOLS</span>
+<a name="l00173"></a>00173 <span class="preprocessor"></span><span class="preprocessor">#else </span>
+<a name="l00174"></a>00174 <span class="preprocessor"></span><span class="preprocessor">#define TBB_USE_THREADING_TOOLS TBB_USE_DEBUG</span>
+<a name="l00175"></a>00175 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* TBB_DO_THREADING_TOOLS */</span>
+<a name="l00176"></a>00176 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS */</span>
+<a name="l00177"></a>00177 
+<a name="l00178"></a>00178 <span class="preprocessor">#ifndef TBB_USE_PERFORMANCE_WARNINGS</span>
+<a name="l00179"></a>00179 <span class="preprocessor"></span><span class="preprocessor">#ifdef TBB_PERFORMANCE_WARNINGS</span>
+<a name="l00180"></a>00180 <span class="preprocessor"></span><span class="preprocessor">#define TBB_USE_PERFORMANCE_WARNINGS TBB_PERFORMANCE_WARNINGS</span>
+<a name="l00181"></a>00181 <span class="preprocessor"></span><span class="preprocessor">#else </span>
+<a name="l00182"></a>00182 <span class="preprocessor"></span><span class="preprocessor">#define TBB_USE_PERFORMANCE_WARNINGS TBB_USE_DEBUG</span>
+<a name="l00183"></a>00183 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* TBB_PEFORMANCE_WARNINGS */</span>
+<a name="l00184"></a>00184 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_PERFORMANCE_WARNINGS */</span>
+<a name="l00185"></a>00185 
+<a name="l00186"></a>00186 <span class="keyword">namespace </span>tbb {
+<a name="l00188"></a><a class="code" href="a00181.html#ed375248ff6019a70ca0f9da528e5d0b">00188</a>     <span class="keyword">typedef</span> void(*<a class="code" href="a00181.html#ed375248ff6019a70ca0f9da528e5d0b">assertion_handler_type</a>)( <span class="keyword">const</span> <span class="keywordtype">char</span>* filename, <span class="keywordtype">int</span> line, <span class="keyword">const</span> <span class="keywordtype">char</span>* expression, <span class="keyword">const</span> < [...]
+<a name="l00189"></a>00189 }
+<a name="l00190"></a>00190 
+<a name="l00191"></a>00191 <span class="preprocessor">#if TBB_USE_ASSERT</span>
+<a name="l00192"></a>00192 <span class="preprocessor"></span>
+<a name="l00194"></a>00194 
+<a name="l00197"></a>00197 <span class="preprocessor">#define __TBB_ASSERT(predicate,message) ((predicate)?((void)0):tbb::assertion_failure(__FILE__,__LINE__,#predicate,message))</span>
+<a name="l00198"></a>00198 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_ASSERT_EX __TBB_ASSERT</span>
+<a name="l00199"></a>00199 <span class="preprocessor"></span>
+<a name="l00200"></a>00200 <span class="keyword">namespace </span>tbb {
+<a name="l00202"></a>00202     <a class="code" href="a00181.html#ed375248ff6019a70ca0f9da528e5d0b">assertion_handler_type</a> __TBB_EXPORTED_FUNC <a class="code" href="a00181.html#823fa1c15dd829d1d9167157450ddcd9">set_assertion_handler</a>( <a class="code" href="a00181.html#ed375248ff6019a70ca0f9da528e5d0b">assertion_handler_type</a> new_handler );
+<a name="l00203"></a>00203 
+<a name="l00205"></a>00205 
+<a name="l00208"></a>00208     <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC <a class="code" href="a00181.html#3d1252787be39b4aef311f1cadaff9e8">assertion_failure</a>( <span class="keyword">const</span> <span class="keywordtype">char</span>* filename, <span class="keywordtype">int</span> line, <span class="keyword">const</span> <span class="keywordtype">char</span>* expression, <span class="keyword">const</span> <span class="keywordtype">char</span>* comment );
+<a name="l00209"></a>00209 } <span class="comment">// namespace tbb</span>
+<a name="l00210"></a>00210 
+<a name="l00211"></a>00211 <span class="preprocessor">#else</span>
+<a name="l00212"></a>00212 <span class="preprocessor"></span>
+<a name="l00214"></a>00214 <span class="preprocessor">#define __TBB_ASSERT(predicate,comment) ((void)0)</span>
+<a name="l00216"></a>00216 <span class="preprocessor">#define __TBB_ASSERT_EX(predicate,comment) ((void)(1 && (predicate)))</span>
+<a name="l00217"></a>00217 <span class="preprocessor"></span>
+<a name="l00218"></a>00218 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
+<a name="l00219"></a>00219 
+<a name="l00221"></a>00221 <span class="keyword">namespace </span>tbb {
+<a name="l00222"></a>00222 
+<a name="l00224"></a>00224 
+<a name="l00228"></a>00228 <span class="keyword">extern</span> <span class="stringliteral">"C"</span> <span class="keywordtype">int</span> __TBB_EXPORTED_FUNC <a class="code" href="a00181.html#a6858b22e90041c9c4669674ff39b056">TBB_runtime_interface_version</a>();
+<a name="l00229"></a>00229 
+<a name="l00231"></a>00231 
+<a name="l00235"></a><a class="code" href="a00131.html">00235</a> <span class="keyword">class </span><a class="code" href="a00131.html">split</a> {
+<a name="l00236"></a>00236 };
+<a name="l00237"></a>00237 
+<a name="l00242"></a>00242 <span class="keyword">namespace </span>internal {
+<a name="l00243"></a>00243 
+<a name="l00244"></a>00244 <span class="keyword">using</span> std::size_t;
+<a name="l00245"></a>00245 
+<a name="l00247"></a>00247 
+<a name="l00249"></a>00249 <span class="keyword">typedef</span> size_t uintptr;
+<a name="l00250"></a>00250 
+<a name="l00252"></a>00252 
+<a name="l00254"></a>00254 <span class="keyword">typedef</span> std::ptrdiff_t intptr;
+<a name="l00255"></a>00255 
+<a name="l00257"></a>00257 <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC runtime_warning( <span class="keyword">const</span> <span class="keywordtype">char</span>* format, ... );
+<a name="l00258"></a>00258 
+<a name="l00259"></a>00259 <span class="preprocessor">#if TBB_USE_ASSERT</span>
+<a name="l00261"></a>00261 <span class="preprocessor">template<typename T></span>
+<a name="l00262"></a>00262 <span class="preprocessor"></span><span class="keyword">inline</span> <span class="keywordtype">void</span> poison_pointer( T* & p ) {
+<a name="l00263"></a>00263     p = reinterpret_cast<T*>(-1);
+<a name="l00264"></a>00264 }
+<a name="l00265"></a>00265 <span class="preprocessor">#else</span>
+<a name="l00266"></a>00266 <span class="preprocessor"></span><span class="keyword">template</span><<span class="keyword">typename</span> T>
+<a name="l00267"></a>00267 <span class="keyword">inline</span> <span class="keywordtype">void</span> poison_pointer( T* ) {<span class="comment">/*do nothing*/</span>}
+<a name="l00268"></a>00268 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
+<a name="l00269"></a>00269 
+<a name="l00271"></a>00271 <span class="keyword">class </span>no_assign {
+<a name="l00272"></a>00272     <span class="comment">// Deny assignment</span>
+<a name="l00273"></a>00273     <span class="keywordtype">void</span> operator=( <span class="keyword">const</span> no_assign& );
+<a name="l00274"></a>00274 <span class="keyword">public</span>:
+<a name="l00275"></a>00275 <span class="preprocessor">#if __GNUC__</span>
+<a name="l00277"></a>00277 <span class="preprocessor">    no_assign() {}</span>
+<a name="l00278"></a>00278 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* __GNUC__ */</span>
+<a name="l00279"></a>00279 };
+<a name="l00280"></a>00280 
+<a name="l00282"></a>00282 <span class="keyword">class </span>no_copy: no_assign {
+<a name="l00284"></a>00284     no_copy( <span class="keyword">const</span> no_copy& );
+<a name="l00285"></a>00285 <span class="keyword">public</span>:
+<a name="l00287"></a>00287     no_copy() {}
+<a name="l00288"></a>00288 };
+<a name="l00289"></a>00289 
+<a name="l00291"></a>00291 <span class="keyword">template</span><<span class="keyword">typename</span> T>
+<a name="l00292"></a>00292 <span class="keyword">struct </span>allocator_type {
+<a name="l00293"></a>00293     <span class="keyword">typedef</span> T value_type;
+<a name="l00294"></a>00294 };
+<a name="l00295"></a>00295 
+<a name="l00296"></a>00296 <span class="preprocessor">#if _WIN32||_WIN64</span>
+<a name="l00298"></a>00298 <span class="preprocessor">template<typename T></span>
+<a name="l00299"></a>00299 <span class="preprocessor"></span><span class="keyword">struct </span>allocator_type<const T> {
+<a name="l00300"></a>00300     <span class="keyword">typedef</span> T value_type;
+<a name="l00301"></a>00301 };
+<a name="l00302"></a>00302 <span class="preprocessor">#endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
+<a name="l00303"></a>00303 
+<a name="l00304"></a>00304 <span class="comment">// Struct to be used as a version tag for inline functions.</span>
+<a name="l00307"></a>00307 <span class="comment"></span><span class="keyword">struct </span>version_tag_v3 {};
+<a name="l00308"></a>00308 
+<a name="l00309"></a>00309 <span class="keyword">typedef</span> version_tag_v3 version_tag;
+<a name="l00310"></a>00310 
+<a name="l00311"></a>00311 } <span class="comment">// internal</span>
+<a name="l00313"></a>00313 <span class="comment"></span>
+<a name="l00314"></a>00314 } <span class="comment">// tbb</span>
+<a name="l00315"></a>00315 
+<a name="l00316"></a>00316 <span class="preprocessor">#if defined(__EXCEPTIONS) || defined(_CPPUNWIND) || defined(__SUNPRO_CC)</span>
+<a name="l00317"></a>00317 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_EXCEPTIONS</span>
+<a name="l00318"></a>00318 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_EXCEPTIONS 1</span>
+<a name="l00319"></a>00319 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
+<a name="l00320"></a>00320 <span class="preprocessor">#endif</span>
+<a name="l00321"></a>00321 <span class="preprocessor"></span>
+<a name="l00322"></a>00322 <span class="preprocessor">#ifndef __TBB_SCHEDULER_OBSERVER</span>
+<a name="l00323"></a>00323 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_SCHEDULER_OBSERVER 1</span>
+<a name="l00324"></a>00324 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* __TBB_SCHEDULER_OBSERVER */</span>
+<a name="l00325"></a>00325 
+<a name="l00326"></a>00326 <span class="preprocessor">#ifndef __TBB_NAMING_API_SUPPORT</span>
+<a name="l00327"></a>00327 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_NAMING_API_SUPPORT 1</span>
+<a name="l00328"></a>00328 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* __TBB_NAMING_API_SUPPORT */</span>
+<a name="l00329"></a>00329 
+<a name="l00330"></a>00330 
+<a name="l00331"></a>00331 <span class="preprocessor">#endif </span><span class="comment">/* RC_INVOKED */</span>
+<a name="l00332"></a>00332 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_tbb_stddef_H */</span>
+</pre></div><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00299.html b/doc/html/a00299.html
new file mode 100644
index 0000000..18637fa
--- /dev/null
+++ b/doc/html/a00299.html
@@ -0,0 +1,298 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbb_thread.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>tbb_thread.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_tbb_thread_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_tbb_thread_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#if _WIN32||_WIN64</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#include <windows.h></span>
+<a name="l00026"></a>00026 <span class="preprocessor">#define __TBB_NATIVE_THREAD_ROUTINE unsigned WINAPI</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_NATIVE_THREAD_ROUTINE_PTR(r) unsigned (WINAPI* r)( void* )</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_NATIVE_THREAD_ROUTINE void*</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_NATIVE_THREAD_ROUTINE_PTR(r) void* (*r)( void* )</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#include <pthread.h></span>
+<a name="l00032"></a>00032 <span class="preprocessor">#endif // _WIN32||_WIN64</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include <iosfwd></span>
+<a name="l00035"></a>00035 <span class="preprocessor">#include <exception></span>             <span class="comment">// Need std::terminate from here.</span>
+<a name="l00036"></a>00036 <span class="preprocessor">#include "tbb_stddef.h"</span>
+<a name="l00037"></a>00037 <span class="preprocessor">#include "tick_count.h"</span>
+<a name="l00038"></a>00038 
+<a name="l00039"></a>00039 <span class="keyword">namespace </span>tbb {
+<a name="l00040"></a>00040 
+<a name="l00042"></a>00042 <span class="keyword">namespace </span>internal {
+<a name="l00043"></a>00043     
+<a name="l00044"></a>00044     <span class="keyword">class </span>tbb_thread_v3;
+<a name="l00045"></a>00045 
+<a name="l00046"></a>00046 } <span class="comment">// namespace internal</span>
+<a name="l00047"></a>00047 
+<a name="l00048"></a>00048 <span class="keywordtype">void</span> swap( internal::tbb_thread_v3& t1, internal::tbb_thread_v3& t2 ); 
+<a name="l00049"></a>00049 
+<a name="l00050"></a>00050 <span class="keyword">namespace </span>internal {
+<a name="l00051"></a>00051 
+<a name="l00053"></a>00053     <span class="keywordtype">void</span>* __TBB_EXPORTED_FUNC allocate_closure_v3( size_t size );
+<a name="l00055"></a>00055     <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC free_closure_v3( <span class="keywordtype">void</span>* );
+<a name="l00056"></a>00056    
+<a name="l00057"></a>00057     <span class="keyword">struct </span>thread_closure_base {
+<a name="l00058"></a>00058         <span class="keywordtype">void</span>* operator new( size_t size ) {<span class="keywordflow">return</span> allocate_closure_v3(size);}
+<a name="l00059"></a>00059         <span class="keywordtype">void</span> operator delete( <span class="keywordtype">void</span>* ptr ) {free_closure_v3(ptr);}
+<a name="l00060"></a>00060     };
+<a name="l00061"></a>00061 
+<a name="l00062"></a>00062     <span class="keyword">template</span><<span class="keyword">class</span> F> <span class="keyword">struct </span>thread_closure_0: thread_closure_base {
+<a name="l00063"></a>00063         F function;
+<a name="l00064"></a>00064 
+<a name="l00065"></a>00065         <span class="keyword">static</span> __TBB_NATIVE_THREAD_ROUTINE start_routine( <span class="keywordtype">void</span>* c ) {
+<a name="l00066"></a>00066             thread_closure_0 *<span class="keyword">self</span> = static_cast<thread_closure_0*>(c);
+<a name="l00067"></a>00067             <span class="keywordflow">try</span> {
+<a name="l00068"></a>00068                 <span class="keyword">self</span>->function();
+<a name="l00069"></a>00069             } <span class="keywordflow">catch</span> ( ... ) {
+<a name="l00070"></a>00070                 std::terminate();
+<a name="l00071"></a>00071             }
+<a name="l00072"></a>00072             <span class="keyword">delete</span> <span class="keyword">self</span>;
+<a name="l00073"></a>00073             <span class="keywordflow">return</span> 0;
+<a name="l00074"></a>00074         }
+<a name="l00075"></a>00075         thread_closure_0( <span class="keyword">const</span> F& f ) : function(f) {}
+<a name="l00076"></a>00076     };
+<a name="l00078"></a>00078     <span class="keyword">template</span><<span class="keyword">class</span> F, <span class="keyword">class</span> X> <span class="keyword">struct </span>thread_closure_1: thread_closure_base {
+<a name="l00079"></a>00079         F function;
+<a name="l00080"></a>00080         X arg1;
+<a name="l00082"></a>00082         <span class="keyword">static</span> __TBB_NATIVE_THREAD_ROUTINE start_routine( <span class="keywordtype">void</span>* c ) {
+<a name="l00083"></a>00083             thread_closure_1 *<span class="keyword">self</span> = static_cast<thread_closure_1*>(c);
+<a name="l00084"></a>00084             <span class="keywordflow">try</span> {
+<a name="l00085"></a>00085                 <span class="keyword">self</span>->function(self->arg1);
+<a name="l00086"></a>00086             } <span class="keywordflow">catch</span> ( ... ) {
+<a name="l00087"></a>00087                 std::terminate();
+<a name="l00088"></a>00088             }
+<a name="l00089"></a>00089             <span class="keyword">delete</span> <span class="keyword">self</span>;
+<a name="l00090"></a>00090             <span class="keywordflow">return</span> 0;
+<a name="l00091"></a>00091         }
+<a name="l00092"></a>00092         thread_closure_1( <span class="keyword">const</span> F& f, <span class="keyword">const</span> X& x ) : function(f), arg1(x) {}
+<a name="l00093"></a>00093     };
+<a name="l00094"></a>00094     <span class="keyword">template</span><<span class="keyword">class</span> F, <span class="keyword">class</span> X, <span class="keyword">class</span> Y> <span class="keyword">struct </span>thread_closure_2: thread_closure_base {
+<a name="l00095"></a>00095         F function;
+<a name="l00096"></a>00096         X arg1;
+<a name="l00097"></a>00097         Y arg2;
+<a name="l00099"></a>00099         <span class="keyword">static</span> __TBB_NATIVE_THREAD_ROUTINE start_routine( <span class="keywordtype">void</span>* c ) {
+<a name="l00100"></a>00100             thread_closure_2 *<span class="keyword">self</span> = static_cast<thread_closure_2*>(c);
+<a name="l00101"></a>00101             <span class="keywordflow">try</span> {
+<a name="l00102"></a>00102                 <span class="keyword">self</span>->function(self->arg1, self->arg2);
+<a name="l00103"></a>00103             } <span class="keywordflow">catch</span> ( ... ) {
+<a name="l00104"></a>00104                 std::terminate();
+<a name="l00105"></a>00105             }
+<a name="l00106"></a>00106             <span class="keyword">delete</span> <span class="keyword">self</span>;
+<a name="l00107"></a>00107             <span class="keywordflow">return</span> 0;
+<a name="l00108"></a>00108         }
+<a name="l00109"></a>00109         thread_closure_2( <span class="keyword">const</span> F& f, <span class="keyword">const</span> X& x, <span class="keyword">const</span> Y& y ) : function(f), arg1(x), arg2(y) {}
+<a name="l00110"></a>00110     };
+<a name="l00111"></a>00111 
+<a name="l00113"></a>00113     <span class="keyword">class </span>tbb_thread_v3 {
+<a name="l00114"></a>00114         tbb_thread_v3(<span class="keyword">const</span> tbb_thread_v3&); <span class="comment">// = delete;   // Deny access</span>
+<a name="l00115"></a>00115     <span class="keyword">public</span>:
+<a name="l00116"></a>00116 <span class="preprocessor">#if _WIN32||_WIN64</span>
+<a name="l00117"></a>00117 <span class="preprocessor"></span>        <span class="keyword">typedef</span> HANDLE native_handle_type; 
+<a name="l00118"></a>00118 <span class="preprocessor">#else</span>
+<a name="l00119"></a>00119 <span class="preprocessor"></span>        <span class="keyword">typedef</span> pthread_t native_handle_type; 
+<a name="l00120"></a>00120 <span class="preprocessor">#endif // _WIN32||_WIN64</span>
+<a name="l00121"></a>00121 <span class="preprocessor"></span>
+<a name="l00122"></a>00122         <span class="keyword">class </span>id;
+<a name="l00124"></a>00124         tbb_thread_v3() : my_handle(0)
+<a name="l00125"></a>00125 #if _WIN32||_WIN64
+<a name="l00126"></a>00126             , my_thread_id(0)
+<a name="l00127"></a>00127 #endif <span class="comment">// _WIN32||_WIN64</span>
+<a name="l00128"></a>00128         {}
+<a name="l00129"></a>00129         
+<a name="l00131"></a>00131         <span class="keyword">template</span> <<span class="keyword">class</span> F> <span class="keyword">explicit</span> tbb_thread_v3(F f) {
+<a name="l00132"></a>00132             <span class="keyword">typedef</span> internal::thread_closure_0<F> closure_type;
+<a name="l00133"></a>00133             internal_start(closure_type::start_routine, <span class="keyword">new</span> closure_type(f));
+<a name="l00134"></a>00134         }
+<a name="l00136"></a>00136         <span class="keyword">template</span> <<span class="keyword">class</span> F, <span class="keyword">class</span> X> tbb_thread_v3(F f, X x) {
+<a name="l00137"></a>00137             <span class="keyword">typedef</span> internal::thread_closure_1<F,X> closure_type;
+<a name="l00138"></a>00138             internal_start(closure_type::start_routine, <span class="keyword">new</span> closure_type(f,x));
+<a name="l00139"></a>00139         }
+<a name="l00141"></a>00141         <span class="keyword">template</span> <<span class="keyword">class</span> F, <span class="keyword">class</span> X, <span class="keyword">class</span> Y> tbb_thread_v3(F f, X x, Y y) {
+<a name="l00142"></a>00142             <span class="keyword">typedef</span> internal::thread_closure_2<F,X,Y> closure_type;
+<a name="l00143"></a>00143             internal_start(closure_type::start_routine, <span class="keyword">new</span> closure_type(f,x,y));
+<a name="l00144"></a>00144         }
+<a name="l00145"></a>00145 
+<a name="l00146"></a>00146         tbb_thread_v3& operator=(tbb_thread_v3& x) {
+<a name="l00147"></a>00147             <span class="keywordflow">if</span> (joinable()) detach();
+<a name="l00148"></a>00148             my_handle = x.my_handle;
+<a name="l00149"></a>00149             x.my_handle = 0;
+<a name="l00150"></a>00150 <span class="preprocessor">#if _WIN32||_WIN64</span>
+<a name="l00151"></a>00151 <span class="preprocessor"></span>            my_thread_id = x.my_thread_id;
+<a name="l00152"></a>00152             x.my_thread_id = 0;
+<a name="l00153"></a>00153 <span class="preprocessor">#endif // _WIN32||_WIN64</span>
+<a name="l00154"></a>00154 <span class="preprocessor"></span>            <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00155"></a>00155         }
+<a name="l00156"></a>00156         <span class="keywordtype">bool</span> joinable()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_handle!=0; }
+<a name="l00158"></a>00158         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD join();
+<a name="l00160"></a>00160         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD detach();
+<a name="l00161"></a>00161         ~tbb_thread_v3() {<span class="keywordflow">if</span>( joinable() ) detach();}
+<a name="l00162"></a>00162         <span class="keyword">inline</span> <span class="keywordtype">id</span> get_id() <span class="keyword">const</span>;
+<a name="l00163"></a>00163         native_handle_type native_handle() { <span class="keywordflow">return</span> my_handle; }
+<a name="l00164"></a>00164     
+<a name="l00166"></a>00166         <span class="keyword">static</span> <span class="keywordtype">unsigned</span> __TBB_EXPORTED_FUNC hardware_concurrency();
+<a name="l00167"></a>00167     <span class="keyword">private</span>:
+<a name="l00168"></a>00168         native_handle_type my_handle; 
+<a name="l00169"></a>00169 <span class="preprocessor">#if _WIN32||_WIN64</span>
+<a name="l00170"></a>00170 <span class="preprocessor"></span>        DWORD my_thread_id;
+<a name="l00171"></a>00171 <span class="preprocessor">#endif // _WIN32||_WIN64</span>
+<a name="l00172"></a>00172 <span class="preprocessor"></span>
+<a name="l00174"></a>00174         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_start( __TBB_NATIVE_THREAD_ROUTINE_PTR(start_routine), 
+<a name="l00175"></a>00175                              <span class="keywordtype">void</span>* closure );
+<a name="l00176"></a>00176         <span class="keyword">friend</span> <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC move_v3( tbb_thread_v3& t1, tbb_thread_v3& t2 );
+<a name="l00177"></a>00177         <span class="keyword">friend</span> <span class="keywordtype">void</span> tbb::swap( tbb_thread_v3& t1, tbb_thread_v3& t2 ); 
+<a name="l00178"></a>00178     };
+<a name="l00179"></a>00179         
+<a name="l00180"></a>00180     <span class="keyword">class </span>tbb_thread_v3::id { 
+<a name="l00181"></a>00181 <span class="preprocessor">#if _WIN32||_WIN64</span>
+<a name="l00182"></a>00182 <span class="preprocessor"></span>        DWORD my_id;
+<a name="l00183"></a>00183         id( DWORD my_id ) : my_id(my_id) {}
+<a name="l00184"></a>00184 <span class="preprocessor">#else</span>
+<a name="l00185"></a>00185 <span class="preprocessor"></span>        pthread_t my_id;
+<a name="l00186"></a>00186         id( pthread_t my_id ) : my_id(my_id) {}
+<a name="l00187"></a>00187 <span class="preprocessor">#endif // _WIN32||_WIN64</span>
+<a name="l00188"></a>00188 <span class="preprocessor"></span>        <span class="keyword">friend</span> <span class="keyword">class </span>tbb_thread_v3;
+<a name="l00189"></a>00189     <span class="keyword">public</span>:
+<a name="l00190"></a>00190         id() : my_id(0) {}
+<a name="l00191"></a>00191 
+<a name="l00192"></a>00192         <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator==( tbb_thread_v3::id x, tbb_thread_v3::id y );
+<a name="l00193"></a>00193         <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator!=( tbb_thread_v3::id x, tbb_thread_v3::id y );
+<a name="l00194"></a>00194         <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator<( tbb_thread_v3::id x, tbb_thread_v3::id y );
+<a name="l00195"></a>00195         <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator<=( tbb_thread_v3::id x, tbb_thread_v3::id y );
+<a name="l00196"></a>00196         <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator>( tbb_thread_v3::id x, tbb_thread_v3::id y );
+<a name="l00197"></a>00197         <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator>=( tbb_thread_v3::id x, tbb_thread_v3::id y );
+<a name="l00198"></a>00198         
+<a name="l00199"></a>00199         <span class="keyword">template</span><<span class="keyword">class</span> <span class="keywordtype">char</span>T, <span class="keyword">class</span> traits>
+<a name="l00200"></a>00200         <span class="keyword">friend</span> std::basic_ostream<charT, traits>&
+<a name="l00201"></a>00201         operator<< (std::basic_ostream<charT, traits> &out, 
+<a name="l00202"></a>00202                     tbb_thread_v3::id id)
+<a name="l00203"></a>00203         {
+<a name="l00204"></a>00204             out << <span class="keywordtype">id</span>.my_id;
+<a name="l00205"></a>00205             <span class="keywordflow">return</span> out;
+<a name="l00206"></a>00206         }
+<a name="l00207"></a>00207         <span class="keyword">friend</span> tbb_thread_v3::id __TBB_EXPORTED_FUNC thread_get_id_v3();
+<a name="l00208"></a>00208     }; <span class="comment">// tbb_thread_v3::id</span>
+<a name="l00209"></a>00209 
+<a name="l00210"></a>00210     tbb_thread_v3::id tbb_thread_v3::get_id()<span class="keyword"> const </span>{
+<a name="l00211"></a>00211 <span class="preprocessor">#if _WIN32||_WIN64</span>
+<a name="l00212"></a>00212 <span class="preprocessor"></span>        <span class="keywordflow">return</span> id(my_thread_id);
+<a name="l00213"></a>00213 <span class="preprocessor">#else</span>
+<a name="l00214"></a>00214 <span class="preprocessor"></span>        <span class="keywordflow">return</span> id(my_handle);
+<a name="l00215"></a>00215 <span class="preprocessor">#endif // _WIN32||_WIN64</span>
+<a name="l00216"></a>00216 <span class="preprocessor"></span>    }
+<a name="l00217"></a>00217     <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC move_v3( tbb_thread_v3& t1, tbb_thread_v3& t2 );
+<a name="l00218"></a>00218     tbb_thread_v3::id __TBB_EXPORTED_FUNC thread_get_id_v3();
+<a name="l00219"></a>00219     <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC thread_yield_v3();
+<a name="l00220"></a>00220     <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC thread_sleep_v3(<span class="keyword">const</span> tick_count::interval_t &i);
+<a name="l00221"></a>00221 
+<a name="l00222"></a>00222     <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator==(tbb_thread_v3::id x, tbb_thread_v3::id y)
+<a name="l00223"></a>00223     {
+<a name="l00224"></a>00224         <span class="keywordflow">return</span> x.my_id == y.my_id;
+<a name="l00225"></a>00225     }
+<a name="l00226"></a>00226     <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator!=(tbb_thread_v3::id x, tbb_thread_v3::id y)
+<a name="l00227"></a>00227     {
+<a name="l00228"></a>00228         <span class="keywordflow">return</span> x.my_id != y.my_id;
+<a name="l00229"></a>00229     }
+<a name="l00230"></a>00230     <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator<(tbb_thread_v3::id x, tbb_thread_v3::id y)
+<a name="l00231"></a>00231     {
+<a name="l00232"></a>00232         <span class="keywordflow">return</span> x.my_id < y.my_id;
+<a name="l00233"></a>00233     }
+<a name="l00234"></a>00234     <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator<=(tbb_thread_v3::id x, tbb_thread_v3::id y)
+<a name="l00235"></a>00235     {
+<a name="l00236"></a>00236         <span class="keywordflow">return</span> x.my_id <= y.my_id;
+<a name="l00237"></a>00237     }
+<a name="l00238"></a>00238     <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator>(tbb_thread_v3::id x, tbb_thread_v3::id y)
+<a name="l00239"></a>00239     {
+<a name="l00240"></a>00240         <span class="keywordflow">return</span> x.my_id > y.my_id;
+<a name="l00241"></a>00241     }
+<a name="l00242"></a>00242     <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator>=(tbb_thread_v3::id x, tbb_thread_v3::id y)
+<a name="l00243"></a>00243     {
+<a name="l00244"></a>00244         <span class="keywordflow">return</span> x.my_id >= y.my_id;
+<a name="l00245"></a>00245     }
+<a name="l00246"></a>00246 
+<a name="l00247"></a>00247 } <span class="comment">// namespace internal;</span>
+<a name="l00248"></a>00248 
+<a name="l00250"></a>00250 <span class="keyword">typedef</span> internal::tbb_thread_v3 tbb_thread;
+<a name="l00251"></a>00251 
+<a name="l00252"></a>00252 <span class="keyword">using</span> internal::operator==;
+<a name="l00253"></a>00253 <span class="keyword">using</span> internal::operator!=;
+<a name="l00254"></a>00254 <span class="keyword">using</span> internal::operator<;
+<a name="l00255"></a>00255 <span class="keyword">using</span> internal::operator>;
+<a name="l00256"></a>00256 <span class="keyword">using</span> internal::operator<=;
+<a name="l00257"></a>00257 <span class="keyword">using</span> internal::operator>=;
+<a name="l00258"></a>00258 
+<a name="l00259"></a>00259 <span class="keyword">inline</span> <span class="keywordtype">void</span> move( tbb_thread& t1, tbb_thread& t2 ) {
+<a name="l00260"></a>00260     internal::move_v3(t1, t2);
+<a name="l00261"></a>00261 }
+<a name="l00262"></a>00262 
+<a name="l00263"></a>00263 <span class="keyword">inline</span> <span class="keywordtype">void</span> swap( internal::tbb_thread_v3& t1, internal::tbb_thread_v3& t2 ) {
+<a name="l00264"></a>00264     tbb::tbb_thread::native_handle_type h = t1.my_handle;
+<a name="l00265"></a>00265     t1.my_handle = t2.my_handle;
+<a name="l00266"></a>00266     t2.my_handle = h;
+<a name="l00267"></a>00267 <span class="preprocessor">#if _WIN32||_WIN64</span>
+<a name="l00268"></a>00268 <span class="preprocessor"></span>    DWORD i = t1.my_thread_id;
+<a name="l00269"></a>00269     t1.my_thread_id = t2.my_thread_id;
+<a name="l00270"></a>00270     t2.my_thread_id = i;
+<a name="l00271"></a>00271 <span class="preprocessor">#endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
+<a name="l00272"></a>00272 }
+<a name="l00273"></a>00273 
+<a name="l00274"></a>00274 <span class="keyword">namespace </span>this_tbb_thread {
+<a name="l00275"></a>00275     <span class="keyword">inline</span> tbb_thread::id get_id() { <span class="keywordflow">return</span> internal::thread_get_id_v3(); }
+<a name="l00277"></a>00277     <span class="keyword">inline</span> <span class="keywordtype">void</span> yield() { internal::thread_yield_v3(); }
+<a name="l00279"></a>00279     <span class="keyword">inline</span> <span class="keywordtype">void</span> sleep(<span class="keyword">const</span> tick_count::interval_t &i) { 
+<a name="l00280"></a>00280         internal::thread_sleep_v3(i);  
+<a name="l00281"></a>00281     }
+<a name="l00282"></a>00282 }  <span class="comment">// namespace this_tbb_thread</span>
+<a name="l00283"></a>00283 
+<a name="l00284"></a>00284 } <span class="comment">// namespace tbb</span>
+<a name="l00285"></a>00285 
+<a name="l00286"></a>00286 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_tbb_thread_H */</span>
+</pre></div><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00304.html b/doc/html/a00304.html
deleted file mode 100644
index 49d6d69..0000000
--- a/doc/html/a00304.html
+++ /dev/null
@@ -1,343 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>scalable_allocator.h File Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>scalable_allocator.h File Reference</h1>
-<p>
-<a href="a00346.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00318.html">tbb</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00247.html">tbb::scalable_allocator< T ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00247.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::scalable_allocator< T >::rebind< U ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00248.html">tbb::scalable_allocator< void ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00248.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::scalable_allocator< void >::rebind< U ></b></td></tr>
-
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#a0">scalable_malloc</a> (size_t size)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#a1">scalable_free</a> (void *ptr)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#a2">scalable_realloc</a> (void *ptr, size_t size)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#a3">scalable_calloc</a> (size_t nobj, size_t size)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#a4">scalable_posix_memalign</a> (void **memptr, size_t alignment, size_t size)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#a5">scalable_aligned_malloc</a> (size_t size, size_t alignment)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#a6">scalable_aligned_realloc</a> (void *ptr, size_t size, size_t alignment)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#a7">scalable_aligned_free</a> (void *ptr)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a47" doxytag="scalable_allocator.h::operator=="></a>
-template<typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const scalable_allocator< T > &, const scalable_allocator< U > &)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a48" doxytag="scalable_allocator.h::operator!="></a>
-template<typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const scalable_allocator< T > &, const scalable_allocator< U > &)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a7" doxytag="scalable_allocator.h::scalable_aligned_free"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void __TBB_EXPORTED_FUNC scalable_aligned_free           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">void * </td>
-          <td class="mdname1" valign="top" nowrap> <em>ptr</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-The "_aligned_free" analogue.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a5" doxytag="scalable_allocator.h::scalable_aligned_malloc"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void* __TBB_EXPORTED_FUNC scalable_aligned_malloc           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">size_t </td>
-          <td class="mdname" nowrap> <em>size</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>size_t </td>
-          <td class="mdname" nowrap> <em>alignment</em></td>
-        </tr>
-        <tr>
-          <td class="md"></td>
-          <td class="md">) </td>
-          <td class="md" colspan="2"></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-The "_aligned_malloc" analogue.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a6" doxytag="scalable_allocator.h::scalable_aligned_realloc"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void* __TBB_EXPORTED_FUNC scalable_aligned_realloc           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">void * </td>
-          <td class="mdname" nowrap> <em>ptr</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>size_t </td>
-          <td class="mdname" nowrap> <em>size</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>size_t </td>
-          <td class="mdname" nowrap> <em>alignment</em></td>
-        </tr>
-        <tr>
-          <td class="md"></td>
-          <td class="md">) </td>
-          <td class="md" colspan="2"></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-The "_aligned_realloc" analogue.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a3" doxytag="scalable_allocator.h::scalable_calloc"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void* __TBB_EXPORTED_FUNC scalable_calloc           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">size_t </td>
-          <td class="mdname" nowrap> <em>nobj</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>size_t </td>
-          <td class="mdname" nowrap> <em>size</em></td>
-        </tr>
-        <tr>
-          <td class="md"></td>
-          <td class="md">) </td>
-          <td class="md" colspan="2"></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-The "calloc" analogue complementing scalable_malloc.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a1" doxytag="scalable_allocator.h::scalable_free"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void __TBB_EXPORTED_FUNC scalable_free           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">void * </td>
-          <td class="mdname1" valign="top" nowrap> <em>ptr</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-The "free" analogue to discard a previously allocated piece of memory.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a0" doxytag="scalable_allocator.h::scalable_malloc"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void* __TBB_EXPORTED_FUNC scalable_malloc           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">size_t </td>
-          <td class="mdname1" valign="top" nowrap> <em>size</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-The "malloc" analogue to allocate block of memory of size bytes.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a4" doxytag="scalable_allocator.h::scalable_posix_memalign"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">int __TBB_EXPORTED_FUNC scalable_posix_memalign           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">void ** </td>
-          <td class="mdname" nowrap> <em>memptr</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>size_t </td>
-          <td class="mdname" nowrap> <em>alignment</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>size_t </td>
-          <td class="mdname" nowrap> <em>size</em></td>
-        </tr>
-        <tr>
-          <td class="md"></td>
-          <td class="md">) </td>
-          <td class="md" colspan="2"></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-The "posix_memalign" analogue.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a2" doxytag="scalable_allocator.h::scalable_realloc"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void* __TBB_EXPORTED_FUNC scalable_realloc           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">void * </td>
-          <td class="mdname" nowrap> <em>ptr</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>size_t </td>
-          <td class="mdname" nowrap> <em>size</em></td>
-        </tr>
-        <tr>
-          <td class="md"></td>
-          <td class="md">) </td>
-          <td class="md" colspan="2"></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-The "realloc" analogue complementing scalable_malloc.     </td>
-  </tr>
-</table>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00307.html b/doc/html/a00307.html
new file mode 100644
index 0000000..cb9b531
--- /dev/null
+++ b/doc/html/a00307.html
@@ -0,0 +1,164 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tick_count.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<h1>tick_count.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
+<a name="l00003"></a>00003 <span class="comment"></span>
+<a name="l00004"></a>00004 <span class="comment">    The source code contained or described herein and all documents related</span>
+<a name="l00005"></a>00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
+<a name="l00006"></a>00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
+<a name="l00007"></a>00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
+<a name="l00008"></a>00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
+<a name="l00009"></a>00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
+<a name="l00010"></a>00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
+<a name="l00011"></a>00011 <span class="comment">    Intel's prior express written permission.</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
+<a name="l00014"></a>00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
+<a name="l00015"></a>00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
+<a name="l00016"></a>00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
+<a name="l00017"></a>00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
+<a name="l00018"></a>00018 <span class="comment">    writing.</span>
+<a name="l00019"></a>00019 <span class="comment">*/</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __TBB_tick_count_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_tick_count_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "tbb_stddef.h"</span>
+<a name="l00025"></a>00025 
+<a name="l00026"></a>00026 <span class="preprocessor">#if _WIN32||_WIN64</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#include <windows.h></span>
+<a name="l00028"></a>00028 <span class="preprocessor">#elif __linux__</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#include <ctime></span>
+<a name="l00030"></a>00030 <span class="preprocessor">#else </span><span class="comment">/* generic Unix */</span>
+<a name="l00031"></a>00031 <span class="preprocessor">#include <sys/time.h></span>
+<a name="l00032"></a>00032 <span class="preprocessor">#endif </span><span class="comment">/* (choice of OS) */</span>
+<a name="l00033"></a>00033 
+<a name="l00034"></a>00034 <span class="keyword">namespace </span>tbb {
+<a name="l00035"></a>00035 
+<a name="l00037"></a>00037 
+<a name="l00038"></a><a class="code" href="a00140.html">00038</a> <span class="keyword">class </span><a class="code" href="a00140.html">tick_count</a> {
+<a name="l00039"></a>00039 <span class="keyword">public</span>:
+<a name="l00041"></a><a class="code" href="a00141.html">00041</a>     <span class="keyword">class </span><a class="code" href="a00141.html">interval_t</a> {
+<a name="l00042"></a>00042         <span class="keywordtype">long</span> <span class="keywordtype">long</span> value;
+<a name="l00043"></a>00043         <span class="keyword">explicit</span> <a class="code" href="a00141.html#75a9a0949f8a8a84d6758835f1b48dad">interval_t</a>( <span class="keywordtype">long</span> <span class="keywordtype">long</span> value_ ) : value(value_) {}
+<a name="l00044"></a>00044     <span class="keyword">public</span>:
+<a name="l00046"></a><a class="code" href="a00141.html#75a9a0949f8a8a84d6758835f1b48dad">00046</a>         <a class="code" href="a00141.html#75a9a0949f8a8a84d6758835f1b48dad">interval_t</a>() : value(0) {};
+<a name="l00047"></a>00047 
+<a name="l00049"></a>00049         <span class="keyword">explicit</span> <a class="code" href="a00141.html#75a9a0949f8a8a84d6758835f1b48dad">interval_t</a>( <span class="keywordtype">double</span> sec );
+<a name="l00050"></a>00050 
+<a name="l00052"></a>00052         <span class="keywordtype">double</span> <a class="code" href="a00141.html#d5d8429c0bc59cf6131b2abc7929fa59">seconds</a>() <span class="keyword">const</span>;
+<a name="l00053"></a>00053 
+<a name="l00054"></a>00054         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00140.html">tbb::tick_count</a>;
+<a name="l00055"></a>00055 
+<a name="l00057"></a>00057         <span class="keyword">friend</span> <a class="code" href="a00141.html">interval_t</a> <a class="code" href="a00141.html#09dde78a4100800c11bb883d6204b586">operator-</a>( <span class="keyword">const</span> <a class="code" href="a00140.html">tick_count</a>& t1, <span class="keyword">const</span> <a class="code" href="a00140.html">tick_count</a>& t0 );
+<a name="l00058"></a>00058 
+<a name="l00060"></a><a class="code" href="a00141.html#5871ead1ca230efbe52a5008470e6428">00060</a>         <span class="keyword">friend</span> <a class="code" href="a00141.html">interval_t</a> <a class="code" href="a00141.html#5871ead1ca230efbe52a5008470e6428">operator+</a>( <span class="keyword">const</span> <a class="code" href="a00141.html">interval_t</a>& i, <span class="keyword">const</span> <a class="code" href="a00141.html">interval_t</a>& j ) {
+<a name="l00061"></a>00061             <span class="keywordflow">return</span> <a class="code" href="a00141.html#75a9a0949f8a8a84d6758835f1b48dad">interval_t</a>(i.<a class="code" href="a00141.html#beea71acda120af3e3e29f10e8cb5c10">value</a>+j.<a class="code" href="a00141.html#beea71acda120af3e3e29f10e8cb5c10">value</a>);
+<a name="l00062"></a>00062         }
+<a name="l00063"></a>00063 
+<a name="l00065"></a><a class="code" href="a00141.html#fa509691e1d689830931e36edd274f76">00065</a>         <span class="keyword">friend</span> <a class="code" href="a00141.html">interval_t</a> <a class="code" href="a00141.html#09dde78a4100800c11bb883d6204b586">operator-</a>( <span class="keyword">const</span> <a class="code" href="a00141.html">interval_t</a>& i, <span class="keyword">const</span> <a class="code" href="a00141.html">interval_t</a>& j ) {
+<a name="l00066"></a>00066             <span class="keywordflow">return</span> <a class="code" href="a00141.html#75a9a0949f8a8a84d6758835f1b48dad">interval_t</a>(i.<a class="code" href="a00141.html#beea71acda120af3e3e29f10e8cb5c10">value</a>-j.<a class="code" href="a00141.html#beea71acda120af3e3e29f10e8cb5c10">value</a>);
+<a name="l00067"></a>00067         }
+<a name="l00068"></a>00068 
+<a name="l00070"></a><a class="code" href="a00141.html#cd9814947902e26463a69a111530f81b">00070</a>         <a class="code" href="a00141.html">interval_t</a>& <a class="code" href="a00141.html#cd9814947902e26463a69a111530f81b">operator+=</a>( <span class="keyword">const</span> <a class="code" href="a00141.html">interval_t</a>& i ) {value += i.<a class="code" href="a00141.html#beea71acda120af3e3e29f10e8cb5c10">value</a>; <span class="keywordflow">return</span> *<span class="keyword [...]
+<a name="l00071"></a>00071 
+<a name="l00073"></a><a class="code" href="a00141.html#35ff7eaf7c2031b4a991402ac9ecb940">00073</a>         <a class="code" href="a00141.html">interval_t</a>& <a class="code" href="a00141.html#35ff7eaf7c2031b4a991402ac9ecb940">operator-=</a>( <span class="keyword">const</span> <a class="code" href="a00141.html">interval_t</a>& i ) {value -= i.<a class="code" href="a00141.html#beea71acda120af3e3e29f10e8cb5c10">value</a>; <span class="keywordflow">return</span> *<span class="keyword [...]
+<a name="l00074"></a>00074     };
+<a name="l00075"></a>00075     
+<a name="l00077"></a><a class="code" href="a00140.html#34593326ae4191e02a13c7cbdab9de4c">00077</a>     <a class="code" href="a00140.html#34593326ae4191e02a13c7cbdab9de4c">tick_count</a>() : my_count(0) {};
+<a name="l00078"></a>00078 
+<a name="l00080"></a>00080     <span class="keyword">static</span> <a class="code" href="a00140.html">tick_count</a> <a class="code" href="a00140.html#fb7f78ca61cf28398645ace66e284473">now</a>();
+<a name="l00081"></a>00081     
+<a name="l00083"></a>00083     <span class="keyword">friend</span> interval_t <a class="code" href="a00140.html#09dde78a4100800c11bb883d6204b586">operator-</a>( <span class="keyword">const</span> <a class="code" href="a00140.html">tick_count</a>& t1, <span class="keyword">const</span> <a class="code" href="a00140.html">tick_count</a>& t0 );
+<a name="l00084"></a>00084 
+<a name="l00085"></a>00085 <span class="keyword">private</span>:
+<a name="l00086"></a>00086     <span class="keywordtype">long</span> <span class="keywordtype">long</span> my_count;
+<a name="l00087"></a>00087 };
+<a name="l00088"></a>00088 
+<a name="l00089"></a><a class="code" href="a00140.html#fb7f78ca61cf28398645ace66e284473">00089</a> <span class="keyword">inline</span> <a class="code" href="a00140.html">tick_count</a> <a class="code" href="a00140.html#fb7f78ca61cf28398645ace66e284473">tick_count::now</a>() {
+<a name="l00090"></a>00090     <a class="code" href="a00140.html">tick_count</a> result;
+<a name="l00091"></a>00091 <span class="preprocessor">#if _WIN32||_WIN64</span>
+<a name="l00092"></a>00092 <span class="preprocessor"></span>    LARGE_INTEGER qpcnt;
+<a name="l00093"></a>00093     QueryPerformanceCounter(&qpcnt);
+<a name="l00094"></a>00094     result.<a class="code" href="a00140.html#1ba05ad46dc08bc1bf34bd6cc94e36ec">my_count</a> = qpcnt.QuadPart;
+<a name="l00095"></a>00095 <span class="preprocessor">#elif __linux__</span>
+<a name="l00096"></a>00096 <span class="preprocessor"></span>    <span class="keyword">struct </span>timespec ts;
+<a name="l00097"></a>00097 <span class="preprocessor">#if TBB_USE_ASSERT</span>
+<a name="l00098"></a>00098 <span class="preprocessor"></span>    <span class="keywordtype">int</span> status = 
+<a name="l00099"></a>00099 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
+<a name="l00100"></a>00100         clock_gettime( CLOCK_REALTIME, &ts );
+<a name="l00101"></a>00101     __TBB_ASSERT( status==0, <span class="stringliteral">"CLOCK_REALTIME not supported"</span> );
+<a name="l00102"></a>00102     result.<a class="code" href="a00140.html#1ba05ad46dc08bc1bf34bd6cc94e36ec">my_count</a> = static_cast<long long>(1000000000UL)*static_cast<long long>(ts.tv_sec) + static_cast<long long>(ts.tv_nsec);
+<a name="l00103"></a>00103 <span class="preprocessor">#else </span><span class="comment">/* generic Unix */</span>
+<a name="l00104"></a>00104     <span class="keyword">struct </span>timeval tv;
+<a name="l00105"></a>00105 <span class="preprocessor">#if TBB_USE_ASSERT</span>
+<a name="l00106"></a>00106 <span class="preprocessor"></span>    <span class="keywordtype">int</span> status = 
+<a name="l00107"></a>00107 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
+<a name="l00108"></a>00108         gettimeofday(&tv, NULL);
+<a name="l00109"></a>00109     __TBB_ASSERT( status==0, <span class="stringliteral">"gettimeofday failed"</span> );
+<a name="l00110"></a>00110     result.<a class="code" href="a00140.html#1ba05ad46dc08bc1bf34bd6cc94e36ec">my_count</a> = static_cast<long long>(1000000)*static_cast<long long>(tv.tv_sec) + static_cast<long long>(tv.tv_usec);
+<a name="l00111"></a>00111 <span class="preprocessor">#endif </span><span class="comment">/*(choice of OS) */</span>
+<a name="l00112"></a>00112     <span class="keywordflow">return</span> result;
+<a name="l00113"></a>00113 }
+<a name="l00114"></a>00114 
+<a name="l00115"></a><a class="code" href="a00141.html#1a21a428e00cced2e6a49e0f5f2258bf">00115</a> <span class="keyword">inline</span> <a class="code" href="a00141.html#75a9a0949f8a8a84d6758835f1b48dad">tick_count::interval_t::interval_t</a>( <span class="keywordtype">double</span> sec )
+<a name="l00116"></a>00116 {
+<a name="l00117"></a>00117 <span class="preprocessor">#if _WIN32||_WIN64</span>
+<a name="l00118"></a>00118 <span class="preprocessor"></span>    LARGE_INTEGER qpfreq;
+<a name="l00119"></a>00119     QueryPerformanceFrequency(&qpfreq);
+<a name="l00120"></a>00120     value = static_cast<long long>(sec*qpfreq.QuadPart);
+<a name="l00121"></a>00121 <span class="preprocessor">#elif __linux__</span>
+<a name="l00122"></a>00122 <span class="preprocessor"></span>    value = static_cast<long long>(sec*1E9);
+<a name="l00123"></a>00123 <span class="preprocessor">#else </span><span class="comment">/* generic Unix */</span>
+<a name="l00124"></a>00124     value = static_cast<long long>(sec*1E6);
+<a name="l00125"></a>00125 <span class="preprocessor">#endif </span><span class="comment">/* (choice of OS) */</span>
+<a name="l00126"></a>00126 }
+<a name="l00127"></a>00127 
+<a name="l00128"></a><a class="code" href="a00140.html#09dde78a4100800c11bb883d6204b586">00128</a> <span class="keyword">inline</span> <a class="code" href="a00141.html">tick_count::interval_t</a> <a class="code" href="a00140.html#09dde78a4100800c11bb883d6204b586">operator-</a>( <span class="keyword">const</span> <a class="code" href="a00140.html">tick_count</a>& t1, <span class="keyword">const</span> <a class="code" href="a00140.html">tick_count</a>& t0 ) {
+<a name="l00129"></a>00129     <span class="keywordflow">return</span> <a class="code" href="a00141.html">tick_count::interval_t</a>( t1.<a class="code" href="a00140.html#1ba05ad46dc08bc1bf34bd6cc94e36ec">my_count</a>-t0.<a class="code" href="a00140.html#1ba05ad46dc08bc1bf34bd6cc94e36ec">my_count</a> );
+<a name="l00130"></a>00130 }
+<a name="l00131"></a>00131 
+<a name="l00132"></a><a class="code" href="a00141.html#d5d8429c0bc59cf6131b2abc7929fa59">00132</a> <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="a00141.html#d5d8429c0bc59cf6131b2abc7929fa59">tick_count::interval_t::seconds</a>()<span class="keyword"> const </span>{
+<a name="l00133"></a>00133 <span class="preprocessor">#if _WIN32||_WIN64</span>
+<a name="l00134"></a>00134 <span class="preprocessor"></span>    LARGE_INTEGER qpfreq;
+<a name="l00135"></a>00135     QueryPerformanceFrequency(&qpfreq);
+<a name="l00136"></a>00136     <span class="keywordflow">return</span> value/(double)qpfreq.QuadPart;
+<a name="l00137"></a>00137 #elif __linux__
+<a name="l00138"></a>00138     <span class="keywordflow">return</span> value*1E-9;
+<a name="l00139"></a>00139 #<span class="keywordflow">else</span> <span class="comment">/* generic Unix */</span>
+<a name="l00140"></a>00140     <span class="keywordflow">return</span> value*1E-6;
+<a name="l00141"></a>00141 #endif <span class="comment">/* (choice of OS) */</span>
+<a name="l00142"></a>00142 }
+<a name="l00143"></a>00143 
+<a name="l00144"></a>00144 } <span class="comment">// namespace tbb</span>
+<a name="l00145"></a>00145 
+<a name="l00146"></a>00146 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_tick_count_H */</span>
+<a name="l00147"></a>00147 
+</pre></div><hr>
+<p></p>
+Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
+<p></p>
+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.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00318.html b/doc/html/a00318.html
deleted file mode 100644
index 79d3dd1..0000000
--- a/doc/html/a00318.html
+++ /dev/null
@@ -1,585 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb Namespace Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb Namespace Reference</h1>The namespace tbb contains all components of the library.  
-<a href="#_details">More...</a>
-<p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00190.html">tbb::aligned_space< T, N ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Block of space aligned sufficiently to construct an array T with N elements.  <a href="a00190.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00191.html">tbb::atomic< T ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Primary template for atomic.  <a href="a00191.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::atomic< void * ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::atomic< bool ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00195.html">tbb::blocked_range< Value ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A range over which to iterate.  <a href="a00195.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00196.html">tbb::blocked_range2d< RowValue, ColValue ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A 2-dimensional range that models the Range concept.  <a href="a00196.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00197.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A 3-dimensional range that models the Range concept.  <a href="a00197.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00198.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::cache_aligned_allocator< T >::rebind< U ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00199.html">tbb::cache_aligned_allocator< void ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00199.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::cache_aligned_allocator< void >::rebind< U ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00269.html">tbb::tbb_hash_compare< T ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">hash_compare - default argument  <a href="a00269.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Unordered map from Key to T.  <a href="a00201.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00203.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Combines data access, locking, and garbage collection.  <a href="a00203.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00202.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allows write access to elements and combines data access, locking, and garbage collection.  <a href="a00202.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::concurrent_hash_map< Key, T, HashCompare, A >::node</b></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Basic unit of storage used in chain. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::concurrent_hash_map< Key, T, HashCompare, A >::chain</b></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A linked-list of nodes. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::concurrent_hash_map< Key, T, HashCompare, A >::segment</b></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Segment of the table. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A high-performance thread-safe queue.  <a href="a00204.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>tbb::concurrent_queue< T, A >::destroyer</b></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Class used to ensure exception-safety of method "pop". <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Concurrent vector container  <a href="a00209.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>tbb::concurrent_vector< T, A >::generic_range_type< I ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>tbb::concurrent_vector< T, A >::internal_loop_guide</b></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception-aware helper class for filling a segment by exception-danger operators of user class. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00227.html">tbb::mutex</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Wrapper around the platform's native reader-writer lock.  <a href="a00227.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00228.html">tbb::mutex::scoped_lock</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The scoped locking pattern.  <a href="a00228.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>tbb::null_mutex</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>tbb::null_mutex::scoped_lock</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>tbb::null_rw_mutex</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>tbb::null_rw_mutex::scoped_lock</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00231.html">tbb::parallel_do_feeder< Item ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Class the user supplied algorithm body uses to add new tasks  <a href="a00231.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00237.html">tbb::pre_scan_tag</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Used to indicate that the initial scan is being performed.  <a href="a00237.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00217.html">tbb::final_scan_tag</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Used to indicate that the final scan is being performed.  <a href="a00217.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00234.html">tbb::parallel_while< Body ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over a stream, with optional addition of more work.  <a href="a00234.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00249.html">tbb::simple_partitioner</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A simple partitioner  <a href="a00249.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>tbb::simple_partitioner::partition_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00193.html">tbb::auto_partitioner</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">An auto partitioner.  <a href="a00193.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>tbb::auto_partitioner::partition_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00188.html">tbb::affinity_partitioner</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">An affinity partitioner.  <a href="a00188.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00216.html">tbb::filter</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A stage in a pipeline.  <a href="a00216.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html">tbb::pipeline</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A processing pipeling that applies filters to items.  <a href="a00236.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00238.html">tbb::queuing_mutex</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Queuing lock with local-only spinning.  <a href="a00238.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00239.html">tbb::queuing_mutex::scoped_lock</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The scoped locking pattern.  <a href="a00239.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html">tbb::queuing_rw_mutex</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Reader-writer lock with local-only spinning.  <a href="a00240.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00241.html">tbb::queuing_rw_mutex::scoped_lock</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The scoped locking pattern.  <a href="a00241.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00245.html">tbb::recursive_mutex</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Mutex that allows recursive mutex acquisition.  <a href="a00245.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00246.html">tbb::recursive_mutex::scoped_lock</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The scoped locking pattern.  <a href="a00246.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00247.html">tbb::scalable_allocator< T ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00247.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::scalable_allocator< T >::rebind< U ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00248.html">tbb::scalable_allocator< void ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00248.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::scalable_allocator< void >::rebind< U ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00250.html">tbb::spin_mutex</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A lock that occupies a single byte.  <a href="a00250.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00251.html">tbb::spin_mutex::scoped_lock</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Represents acquisition of a mutex.  <a href="a00251.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00252.html">tbb::spin_rw_mutex_v3</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Fast, unfair, spinning reader-writer lock with backoff and writer-preference.  <a href="a00252.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00253.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The scoped locking pattern.  <a href="a00253.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00262.html">tbb::task_group_context</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Used to form groups of tasks.  <a href="a00262.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00261.html">tbb::task</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Base class for user-defined tasks.  <a href="a00261.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00215.html">tbb::empty_task</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">task that does nothing. Useful for synchronization.  <a href="a00215.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00263.html">tbb::task_list</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A list of children.  <a href="a00263.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00265.html">tbb::task_scheduler_init</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Class representing reference to tbb scheduler.  <a href="a00265.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00266.html">tbb::tbb_allocator< T ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00266.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::tbb_allocator< T >::rebind< U ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00267.html">tbb::tbb_allocator< void ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00267.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::tbb_allocator< void >::rebind< U ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00194.html">tbb::bad_last_alloc</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception for concurrent containers.  <a href="a00194.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00268.html">tbb::tbb_exception</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Interface to be implemented by all exceptions TBB recognizes and propagates across the threads.  <a href="a00268.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00200.html">tbb::captured_exception</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">This class is used by TBB to propagate information about unhandled exceptions into the root thread.  <a href="a00200.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00226.html">tbb::movable_exception< ExceptionData ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Template that can be used to implement exception that transfers arbitrary ExceptionData to the root thread.  <a href="a00226.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00254.html">tbb::split</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Dummy type that distinguishes splitting constructor from copy constructor.  <a href="a00254.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00272.html">tbb::tick_count</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Absolute timestamp.  <a href="a00272.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00273.html">tbb::tick_count::interval_t</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Relative time interval.  <a href="a00273.html#_details">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>parallel_do</h2></td></tr>
-<tr><td colspan="2">See also requirements on <a class="el" href="parallel_do_body_req.html">parallel_do Body</a>. * <br><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga3" doxytag="tbb::parallel_do"></a>
-template<typename Iterator, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga3">parallel_do</a> (Iterator first, Iterator last, const Body &body)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over a range, with optional addition of more work. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga4" doxytag="tbb::parallel_do"></a>
-template<typename Iterator, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga4">parallel_do</a> (Iterator first, Iterator last, const Body &body, <a class="el" href="a00262.html">task_group_context</a> &context)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over a range, with optional addition of more work and user-supplied context. <br></td></tr>
-<tr><td colspan="2"><br><h2>parallel_for</h2></td></tr>
-<tr><td colspan="2">See also requirements on <a class="el" href="range_req.html">Range</a> and <a class="el" href="parallel_for_body_req.html">parallel_for Body</a>. * <br><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga5" doxytag="tbb::parallel_for"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga5">parallel_for</a> (const Range &range, const Body &body, const <a class="el" href="a00249.html">simple_partitioner</a> &partitioner=<a class="el" href="a00249.html">simple_partitioner</a>())</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with simple partitioner, or default partitioner if no partitioner is specified. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga6" doxytag="tbb::parallel_for"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga6">parallel_for</a> (const Range &range, const Body &body, const <a class="el" href="a00193.html">auto_partitioner</a> &partitioner)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with <a class="el" href="a00193.html">auto_partitioner</a>. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga7" doxytag="tbb::parallel_for"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga7">parallel_for</a> (const Range &range, const Body &body, <a class="el" href="a00188.html">affinity_partitioner</a> &partitioner)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with <a class="el" href="a00188.html">affinity_partitioner</a>. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga8" doxytag="tbb::parallel_for"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga8">parallel_for</a> (const Range &range, const Body &body, const <a class="el" href="a00249.html">simple_partitioner</a> &partitioner, <a class="el" href="a00262.html">task_group_context</a> &context)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with simple partitioner and user-supplied context. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga9" doxytag="tbb::parallel_for"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga9">parallel_for</a> (const Range &range, const Body &body, const <a class="el" href="a00193.html">auto_partitioner</a> &partitioner, <a class="el" href="a00262.html">task_group_context</a> &context)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with <a class="el" href="a00193.html">auto_partitioner</a> and user-supplied context. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga10" doxytag="tbb::parallel_for"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga10">parallel_for</a> (const Range &range, const Body &body, <a class="el" href="a00188.html">affinity_partitioner</a> &partitioner, <a class="el" href="a00262.html">task_group_context</a> &context)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with <a class="el" href="a00188.html">affinity_partitioner</a> and user-supplied context. <br></td></tr>
-<tr><td colspan="2"><br><h2>parallel_reduce</h2></td></tr>
-<tr><td colspan="2">See also requirements on <a class="el" href="range_req.html">Range</a> and <a class="el" href="parallel_reduce_body_req.html">parallel_reduce Body</a>. * <br><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga11" doxytag="tbb::parallel_reduce"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga11">parallel_reduce</a> (const Range &range, Body &body, const <a class="el" href="a00249.html">simple_partitioner</a> &partitioner=<a class="el" href="a00249.html">simple_partitioner</a>())</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and <a class="el" href="a00249.html">simple_partitioner</a>, or no partitioner specified. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga12" doxytag="tbb::parallel_reduce"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga12">parallel_reduce</a> (const Range &range, Body &body, const <a class="el" href="a00193.html">auto_partitioner</a> &partitioner)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and <a class="el" href="a00193.html">auto_partitioner</a>. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga13" doxytag="tbb::parallel_reduce"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga13">parallel_reduce</a> (const Range &range, Body &body, <a class="el" href="a00188.html">affinity_partitioner</a> &partitioner)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and <a class="el" href="a00188.html">affinity_partitioner</a>. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga14" doxytag="tbb::parallel_reduce"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga14">parallel_reduce</a> (const Range &range, Body &body, const <a class="el" href="a00249.html">simple_partitioner</a> &partitioner, <a class="el" href="a00262.html">task_group_context</a> &context)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, simple partitioner and user-supplied context. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga15" doxytag="tbb::parallel_reduce"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga15">parallel_reduce</a> (const Range &range, Body &body, const <a class="el" href="a00193.html">auto_partitioner</a> &partitioner, <a class="el" href="a00262.html">task_group_context</a> &context)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, <a class="el" href="a00193.html">auto_partitioner</a> and user-supplied context. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga16" doxytag="tbb::parallel_reduce"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga16">parallel_reduce</a> (const Range &range, Body &body, <a class="el" href="a00188.html">affinity_partitioner</a> &partitioner, <a class="el" href="a00262.html">task_group_context</a> &context)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, <a class="el" href="a00188.html">affinity_partitioner</a> and user-supplied context. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga17" doxytag="tbb::parallel_reduce"></a>
-template<typename Range, typename Value, typename RealBody, typename Reduction> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga17">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const <a class="el" href="a00249.html">simple_partitioner</a> &partitioner=<a class="el" href="a00249.html">simple_partitioner</a>())</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and <a class="el" href="a00249.html">simple_partitioner</a>, or no partitioner specified. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga18" doxytag="tbb::parallel_reduce"></a>
-template<typename Range, typename Value, typename RealBody, typename Reduction> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga18">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const <a class="el" href="a00193.html">auto_partitioner</a> &partitioner)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and <a class="el" href="a00193.html">auto_partitioner</a>. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga19" doxytag="tbb::parallel_reduce"></a>
-template<typename Range, typename Value, typename RealBody, typename Reduction> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga19">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, <a class="el" href="a00188.html">affinity_partitioner</a> &partitioner)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and <a class="el" href="a00188.html">affinity_partitioner</a>. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga20" doxytag="tbb::parallel_reduce"></a>
-template<typename Range, typename Value, typename RealBody, typename Reduction> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga20">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const <a class="el" href="a00249.html">simple_partitioner</a> &partitioner, <a class="el" href="a00262.html">task_group_context</a> &context)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, simple partitioner and user-supplied context. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga21" doxytag="tbb::parallel_reduce"></a>
-template<typename Range, typename Value, typename RealBody, typename Reduction> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga21">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const <a class="el" href="a00193.html">auto_partitioner</a> &partitioner, <a class="el" href="a00262.html">task_group_context</a> &context)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, <a class="el" href="a00193.html">auto_partitioner</a> and user-supplied context. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga22" doxytag="tbb::parallel_reduce"></a>
-template<typename Range, typename Value, typename RealBody, typename Reduction> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga22">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, <a class="el" href="a00188.html">affinity_partitioner</a> &partitioner, <a class="el" href="a00262.html">task_group_context</a> &context)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, <a class="el" href="a00188.html">affinity_partitioner</a> and user-supplied context. <br></td></tr>
-<tr><td colspan="2"><br><h2>parallel_scan</h2></td></tr>
-<tr><td colspan="2">See also requirements on <a class="el" href="range_req.html">Range</a> and <a class="el" href="parallel_scan_body_req.html">parallel_scan Body</a>. * <br><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga23" doxytag="tbb::parallel_scan"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga23">parallel_scan</a> (const Range &range, Body &body, const <a class="el" href="a00249.html">simple_partitioner</a> &partitioner=<a class="el" href="a00249.html">simple_partitioner</a>())</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel prefix with <a class="el" href="a00249.html">simple_partitioner</a>. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga24" doxytag="tbb::parallel_scan"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga24">parallel_scan</a> (const Range &range, Body &body, const <a class="el" href="a00193.html">auto_partitioner</a> &partitioner)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel prefix with <a class="el" href="a00193.html">auto_partitioner</a>. <br></td></tr>
-<tr><td colspan="2"><br><h2>parallel_sort</h2></td></tr>
-<tr><td colspan="2">See also requirements on <a class="el" href="parallel_sort_iter_req.html">iterators for parallel_sort</a>. * <br><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template<typename RandomAccessIterator, typename Compare> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga26">parallel_sort</a> (RandomAccessIterator begin, RandomAccessIterator end, const Compare &comp)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in [begin,end) using the given comparator.  <a href="a00321.html#ga26"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga27" doxytag="tbb::parallel_sort"></a>
-template<typename RandomAccessIterator> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga27">parallel_sort</a> (RandomAccessIterator begin, RandomAccessIterator end)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in [begin,end) with a default comparator <code>std::less<RandomAccessIterator></code>. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga28" doxytag="tbb::parallel_sort"></a>
-template<typename T> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga28">parallel_sort</a> (T *begin, T *end)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in the range <code></code>[begin,end) with a default comparator <code>std::less<T></code>. <br></td></tr>
-<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::spin_rw_mutex"></a>
-typedef <a class="el" href="a00252.html">spin_rw_mutex_v3</a> </td><td class="memItemRight" valign="bottom"><b>spin_rw_mutex</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::stack_size_type"></a>
-typedef std::size_t </td><td class="memItemRight" valign="bottom"><b>stack_size_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::task_scheduler_observer"></a>
-typedef internal::task_scheduler_observer_v3 </td><td class="memItemRight" valign="bottom"><b>task_scheduler_observer</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a6" doxytag="tbb::assertion_handler_type"></a>
-typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="a00318.html#a6">assertion_handler_type</a> )(const char *filename, int line, const char *expression, const char *comment)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Type for an assertion handler. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a7" doxytag="tbb::tbb_thread"></a>
-typedef <a class="el" href="a00270.html">internal::tbb_thread_v3</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00318.html#a7">tbb_thread</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Users reference thread class by name tbb_thread. <br></td></tr>
-<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00318.html#a57">memory_semantics</a> { <a class="el" href="a00318.html#a57a0">__TBB_full_fence</a>, 
-<a class="el" href="a00318.html#a57a1">acquire</a>, 
-<a class="el" href="a00318.html#a57a2">release</a>
- }</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Specifies memory fencing.  <a href="#a57">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a8" doxytag="tbb::__TBB_DECL_ATOMIC"></a>
- </td><td class="memItemRight" valign="bottom"><b>__TBB_DECL_ATOMIC</b> (__TBB_LONG_LONG) __TBB_DECL_ATOMIC(unsigned __TBB_LONG_LONG) __TBB_DECL_ATOMIC(long) __TBB_DECL_ATOMIC(unsigned long) __TBB_DECL_ATOMIC_ALT(unsigned</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a9" doxytag="tbb::__TBB_DECL_ATOMIC_ALT"></a>
-size_t </td><td class="memItemRight" valign="bottom"><b>__TBB_DECL_ATOMIC_ALT</b> (int, ptrdiff_t) __TBB_DECL_ATOMIC(unsigned) __TBB_DECL_ATOMIC(int) __TBB_DECL_ATOMIC(unsigned short) __TBB_DECL_ATOMIC(short) __TBB_DECL_ATOMIC(char) __TBB_DECL_ATOMIC(signed char) __TBB_DECL_ATOMIC(unsigned char) __TBB_DECL_ATOMIC(wchar_t) template< typename T > struct <a class="el" href="a00191.html">atomic</a>< T * ></td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a10" doxytag="tbb::operator=="></a>
-template<typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00198.html">cache_aligned_allocator</a>< T > &, const <a class="el" href="a00198.html">cache_aligned_allocator</a>< U > &)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a11" doxytag="tbb::operator!="></a>
-template<typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00198.html">cache_aligned_allocator</a>< T > &, const <a class="el" href="a00198.html">cache_aligned_allocator</a>< U > &)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a12" doxytag="tbb::operator=="></a>
-template<typename Key, typename T, typename HashCompare, typename A1, typename A2> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00201.html">concurrent_hash_map</a>< Key, T, HashCompare, A1 > &a, const <a class="el" href="a00201.html">concurrent_hash_map</a>< Key, T, HashCompare, A2 > &b)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a13" doxytag="tbb::operator!="></a>
-template<typename Key, typename T, typename HashCompare, typename A1, typename A2> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00201.html">concurrent_hash_map</a>< Key, T, HashCompare, A1 > &a, const <a class="el" href="a00201.html">concurrent_hash_map</a>< Key, T, HashCompare, A2 > &b)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a14" doxytag="tbb::swap"></a>
-template<typename Key, typename T, typename HashCompare, typename A> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>swap</b> (<a class="el" href="a00201.html">concurrent_hash_map</a>< Key, T, HashCompare, A > &a, <a class="el" href="a00201.html">concurrent_hash_map</a>< Key, T, HashCompare, A > &b)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a15" doxytag="tbb::operator=="></a>
-template<typename T, class A1, class A2> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00209.html">concurrent_vector</a>< T, A1 > &a, const <a class="el" href="a00209.html">concurrent_vector</a>< T, A2 > &b)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a16" doxytag="tbb::operator!="></a>
-template<typename T, class A1, class A2> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00209.html">concurrent_vector</a>< T, A1 > &a, const <a class="el" href="a00209.html">concurrent_vector</a>< T, A2 > &b)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a17" doxytag="tbb::operator<"></a>
-template<typename T, class A1, class A2> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator<</b> (const <a class="el" href="a00209.html">concurrent_vector</a>< T, A1 > &a, const <a class="el" href="a00209.html">concurrent_vector</a>< T, A2 > &b)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a18" doxytag="tbb::operator>"></a>
-template<typename T, class A1, class A2> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator></b> (const <a class="el" href="a00209.html">concurrent_vector</a>< T, A1 > &a, const <a class="el" href="a00209.html">concurrent_vector</a>< T, A2 > &b)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a19" doxytag="tbb::operator<="></a>
-template<typename T, class A1, class A2> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator<=</b> (const <a class="el" href="a00209.html">concurrent_vector</a>< T, A1 > &a, const <a class="el" href="a00209.html">concurrent_vector</a>< T, A2 > &b)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a20" doxytag="tbb::operator>="></a>
-template<typename T, class A1, class A2> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator>=</b> (const <a class="el" href="a00209.html">concurrent_vector</a>< T, A1 > &a, const <a class="el" href="a00209.html">concurrent_vector</a>< T, A2 > &b)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a21" doxytag="tbb::swap"></a>
-template<typename T, class A> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>swap</b> (<a class="el" href="a00209.html">concurrent_vector</a>< T, A > &a, <a class="el" href="a00209.html">concurrent_vector</a>< T, A > &b)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a47" doxytag="tbb::operator=="></a>
-template<typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00247.html">scalable_allocator</a>< T > &, const <a class="el" href="a00247.html">scalable_allocator</a>< U > &)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a48" doxytag="tbb::operator!="></a>
-template<typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00247.html">scalable_allocator</a>< T > &, const <a class="el" href="a00247.html">scalable_allocator</a>< U > &)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a49" doxytag="tbb::operator=="></a>
-template<typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00266.html">tbb_allocator</a>< T > &, const <a class="el" href="a00266.html">tbb_allocator</a>< U > &)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a50" doxytag="tbb::operator!="></a>
-template<typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00266.html">tbb_allocator</a>< T > &, const <a class="el" href="a00266.html">tbb_allocator</a>< U > &)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a51" doxytag="tbb::set_assertion_handler"></a>
-<a class="el" href="a00318.html#a6">assertion_handler_type</a> __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00318.html#a51">set_assertion_handler</a> (<a class="el" href="a00318.html#a6">assertion_handler_type</a> new_handler)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set assertion handler and return previous value of it. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00318.html#a52">assertion_failure</a> (const char *filename, int line, const char *expression, const char *comment)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Process an assertion failure.  <a href="#a52"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00318.html#a53">TBB_runtime_interface_version</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The function returns the interface version of the TBB shared library being used.  <a href="#a53"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a54" doxytag="tbb::swap"></a>
-void </td><td class="memItemRight" valign="bottom"><b>swap</b> (<a class="el" href="a00270.html">internal::tbb_thread_v3</a> &t1, <a class="el" href="a00270.html">internal::tbb_thread_v3</a> &t2)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a55" doxytag="tbb::move"></a>
-void </td><td class="memItemRight" valign="bottom"><b>move</b> (<a class="el" href="a00270.html">tbb_thread</a> &t1, <a class="el" href="a00270.html">tbb_thread</a> &t2)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a56" doxytag="tbb::operator-"></a>
-<a class="el" href="a00273.html">tick_count::interval_t</a> </td><td class="memItemRight" valign="bottom"><b>operator-</b> (const <a class="el" href="a00272.html">tick_count</a> &t1, const <a class="el" href="a00272.html">tick_count</a> &t0)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-The namespace tbb contains all components of the library. <hr><h2>Enumeration Type Documentation</h2>
-<a class="anchor" name="a57" doxytag="tbb::memory_semantics"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">enum <a class="el" href="a00318.html#a57">memory_semantics</a>          </td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Specifies memory fencing. 
-<p>
-<dl compact><dt><b>Enumeration values: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="a57a0" doxytag="__TBB_full_fence"></a>__TBB_full_fence</em> </td><td>
-For internal use only. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="a57a1" doxytag="acquire"></a>acquire</em> </td><td>
-Acquire fence. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="a57a2" doxytag="release"></a>release</em> </td><td>
-Release fence. </td></tr>
-</table>
-</dl>
-    </td>
-  </tr>
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a52" doxytag="tbb::assertion_failure"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void __TBB_EXPORTED_FUNC assertion_failure           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">const char * </td>
-          <td class="mdname" nowrap> <em>filename</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>int </td>
-          <td class="mdname" nowrap> <em>line</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>const char * </td>
-          <td class="mdname" nowrap> <em>expression</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>const char * </td>
-          <td class="mdname" nowrap> <em>comment</em></td>
-        </tr>
-        <tr>
-          <td class="md"></td>
-          <td class="md">) </td>
-          <td class="md" colspan="2"></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Process an assertion failure. 
-<p>
-Normally called from __TBB_ASSERT macro. If assertion handler is null, print message for assertion failure and abort. Otherwise call the assertion handler.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a53" doxytag="tbb::TBB_runtime_interface_version"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">int __TBB_EXPORTED_FUNC TBB_runtime_interface_version           </td>
-          <td class="md" valign="top">( </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-The function returns the interface version of the TBB shared library being used. 
-<p>
-The version it returns is determined at runtime, not at compile/link time. So it can be different than the value of TBB_INTERFACE_VERSION obtained at compile time.     </td>
-  </tr>
-</table>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00319.html b/doc/html/a00319.html
deleted file mode 100644
index 75c645f..0000000
--- a/doc/html/a00319.html
+++ /dev/null
@@ -1,812 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb::internal Namespace Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb::internal Namespace Reference</h1>INTERNAL  
-<a href="#_details">More...</a>
-<p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::atomic_traits< Size, M ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::atomic_word< Size ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::atomic_base< I ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::atomic_word< 8 ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::atomic_word< 1 ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::atomic_word< 2 ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::atomic_word< 4 ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::atomic_base< uint64_t ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::atomic_base< int64_t ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::atomic_impl</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00222.html">tbb::internal::hash_map_base</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">base class of <a class="el" href="a00201.html">concurrent_hash_map</a>  <a href="a00222.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::hash_map_segment_base</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meets requirements of a forward iterator for STL */.  <a href="a00223.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Range class used with <a class="el" href="a00201.html">concurrent_hash_map</a>.  <a href="a00224.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For internal use only.  <a href="a00205.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00206.html">tbb::internal::concurrent_queue_base_v3::page</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Prefix on a page.  <a href="a00206.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00208.html">tbb::internal::concurrent_queue_iterator_base_v3</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Type-independent portion of <a class="el" href="a00207.html">concurrent_queue_iterator</a>.  <a href="a00208.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00207.html">tbb::internal::concurrent_queue_iterator< Container, Value ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meets requirements of a forward iterator for STL.  <a href="a00207.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Base class of concurrent vector implementation.  <a href="a00210.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::concurrent_vector_base_v3::segment_t</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00211.html">tbb::internal::concurrent_vector_base_v3::internal_segments_table</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Internal structure for compact().  <a href="a00211.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meets requirements of a forward iterator for STL and a Value for a <a class="el" href="a00195.html">blocked_range</a>.*/.  <a href="a00274.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::allocator_base< T, A ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00259.html">tbb::internal::strip< T ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Strips its template type argument from 'cv' and '&' qualifiers.  <a href="a00259.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::strip< T & ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::strip< const T & ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::strip< volatile T & ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::strip< const volatile T & ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::strip< const T ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::strip< volatile T ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::strip< const volatile T ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00233.html">tbb::internal::parallel_do_operator_selector< Body, Item ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For internal use only.  <a href="a00233.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00213.html">tbb::internal::do_iteration_task< Body, Item ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For internal use only.  <a href="a00213.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::do_iteration_task_iter< Iterator, Body, Item ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00232.html">tbb::internal::parallel_do_feeder_impl< Body, Item ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For internal use only.  <a href="a00232.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00212.html">tbb::internal::do_group_task_forward< Iterator, Body, Item ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For internal use only.  <a href="a00212.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::do_group_task_input< Body, Item ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00214.html">tbb::internal::do_task_iter< Iterator, Body, Item ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For internal use only.  <a href="a00214.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00255.html">tbb::internal::start_for< Range, Body, Partitioner ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Task type used in parallel_for.  <a href="a00255.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00219.html">tbb::internal::finish_reduce< Body ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Task type use to combine the partial results of parallel_reduce.  <a href="a00219.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00256.html">tbb::internal::start_reduce< Range, Body, Partitioner ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Task type used to split the work of parallel_reduce.  <a href="a00256.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00220.html">tbb::internal::finish_reduce_with_affinity< Body ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Task type use to combine the partial results of parallel_reduce with <a class="el" href="a00188.html">affinity_partitioner</a>.  <a href="a00220.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html">tbb::internal::start_reduce_with_affinity< Range, Body ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Task type used to split the work of parallel_reduce with <a class="el" href="a00188.html">affinity_partitioner</a>.  <a href="a00257.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00225.html">tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Auxiliary class for parallel_reduce; for internal use only.  <a href="a00225.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00218.html">tbb::internal::final_sum< Range, Body ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Performs final scan for a leaf.  <a href="a00218.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00260.html">tbb::internal::sum_node< Range, Body ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Split work to be done in the scan.  <a href="a00260.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00221.html">tbb::internal::finish_scan< Range, Body ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine partial results.  <a href="a00221.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00258.html">tbb::internal::start_scan< Range, Body, Partitioner ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Initial task to split the work.  <a href="a00258.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00244.html">tbb::internal::quick_sort_range< RandomAccessIterator, Compare ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Range used in quicksort to split elements into subranges based on a value.  <a href="a00244.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00243.html">tbb::internal::quick_sort_pretest_body< RandomAccessIterator, Compare ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Body class used to test if elements in a range are presorted.  <a href="a00243.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00242.html">tbb::internal::quick_sort_body< RandomAccessIterator, Compare ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Body class used to sort elements in a range that is smaller than the grainsize.  <a href="a00242.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00277.html">tbb::internal::while_iteration_task< Body ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For internal use only.  <a href="a00277.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00276.html">tbb::internal::while_group_task< Body ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For internal use only.  <a href="a00276.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00278.html">tbb::internal::while_task< Stream, Body ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For internal use only.  <a href="a00278.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00189.html">tbb::internal::affinity_partitioner_base_v3</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Defines entry points into tbb run-time library;.  <a href="a00189.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00235.html">tbb::internal::partition_type_base</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Provides default methods for partition objects without affinity.  <a href="a00235.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::affinity_partition_type</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::scheduler</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::context_list_node_t</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::allocate_root_with_context_proxy</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::allocate_root_proxy</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::allocate_continuation_proxy</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::allocate_child_proxy</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::allocate_additional_child_of_proxy</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00264.html">tbb::internal::task_prefix</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Memory prefix to a task object.  <a href="a00264.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::task_scheduler_observer_v3</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html">tbb::internal::AtomicBackoff</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Class that implements exponential backoff.  <a href="a00192.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::__TBB_machine_type_with_strictest_alignment</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::type_with_alignment< N ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::type_with_alignment< 1 ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::type_with_alignment< 2 ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::type_with_alignment< 4 ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::type_with_alignment< 8 ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00279.html">tbb::internal::work_around_alignment_bug< Size, T ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Work around for bug in GNU 3.2 and MSVC compilers.  <a href="a00279.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00229.html">tbb::internal::no_assign</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Base class for types that should not be assigned.  <a href="a00229.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00230.html">tbb::internal::no_copy</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Base class for types that should not be copied or assigned.  <a href="a00230.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00275.html">tbb::internal::version_tag_v3</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::thread_closure_base</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::thread_closure_0< F ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00271.html">tbb::internal::thread_closure_1< F, X ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Structure used to pass user function with 1 argument to thread.  <a href="a00271.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::thread_closure_2< F, X, Y ></b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Versioned thread class.  <a href="a00270.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><b>tbb::internal::tbb_thread_v3::id</b></td></tr>
-
-<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2" doxytag="tbb::internal::hashcode_t"></a>
-typedef size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00319.html#a2">hashcode_t</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Type of a hash code. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="tbb::internal::concurrent_queue_base"></a>
-typedef <a class="el" href="a00205.html">concurrent_queue_base_v3</a> </td><td class="memItemRight" valign="bottom"><b>concurrent_queue_base</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="tbb::internal::concurrent_queue_iterator_base"></a>
-typedef <a class="el" href="a00208.html">concurrent_queue_iterator_base_v3</a> </td><td class="memItemRight" valign="bottom"><b>concurrent_queue_iterator_base</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a6" doxytag="tbb::internal::concurrent_vector_base"></a>
-typedef <a class="el" href="a00210.html">concurrent_vector_base_v3</a> </td><td class="memItemRight" valign="bottom"><b>concurrent_vector_base</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef char </td><td class="memItemRight" valign="bottom"><a class="el" href="a00319.html#a7">reduction_context</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">0 if root, 1 if a left child, 2 if a right child.  <a href="#a7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a8" doxytag="tbb::internal::Token"></a>
-typedef unsigned long </td><td class="memItemRight" valign="bottom"><b>Token</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a9" doxytag="tbb::internal::tokendiff_t"></a>
-typedef long </td><td class="memItemRight" valign="bottom"><b>tokendiff_t</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="a00319.html#a22">intptr</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00319.html#a10">reference_count</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A reference count.  <a href="#a10"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a11" doxytag="tbb::internal::affinity_id"></a>
-typedef unsigned short </td><td class="memItemRight" valign="bottom"><a class="el" href="a00319.html#a11">affinity_id</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">An id as used for specifying affinity. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a13" doxytag="tbb::internal::int8_t"></a>
-typedef __int8 </td><td class="memItemRight" valign="bottom"><b>int8_t</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a14" doxytag="tbb::internal::int16_t"></a>
-typedef __int16 </td><td class="memItemRight" valign="bottom"><b>int16_t</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a15" doxytag="tbb::internal::int32_t"></a>
-typedef __int32 </td><td class="memItemRight" valign="bottom"><b>int32_t</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a16" doxytag="tbb::internal::int64_t"></a>
-typedef __int64 </td><td class="memItemRight" valign="bottom"><b>int64_t</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a17" doxytag="tbb::internal::uint8_t"></a>
-typedef unsigned __int8 </td><td class="memItemRight" valign="bottom"><b>uint8_t</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a18" doxytag="tbb::internal::uint16_t"></a>
-typedef unsigned __int16 </td><td class="memItemRight" valign="bottom"><b>uint16_t</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a19" doxytag="tbb::internal::uint32_t"></a>
-typedef unsigned __int32 </td><td class="memItemRight" valign="bottom"><b>uint32_t</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a20" doxytag="tbb::internal::uint64_t"></a>
-typedef unsigned __int64 </td><td class="memItemRight" valign="bottom"><b>uint64_t</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00319.html#a21">uintptr</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">An unsigned integral type big enough to hold a pointer.  <a href="#a21"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::ptrdiff_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00319.html#a22">intptr</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A signed integral type big enough to hold a pointer.  <a href="#a22"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a23" doxytag="tbb::internal::version_tag"></a>
-typedef <a class="el" href="a00275.html">version_tag_v3</a> </td><td class="memItemRight" valign="bottom"><b>version_tag</b></td></tr>
-
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a24" doxytag="tbb::internal::__TBB_DECL_FENCED_ATOMIC_PRIMITIVES"></a>
- </td><td class="memItemRight" valign="bottom"><b>__TBB_DECL_FENCED_ATOMIC_PRIMITIVES</b> (1, __TBB_full_fence) __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(2</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a25" doxytag="tbb::internal::__TBB_DECL_FENCED_ATOMIC_PRIMITIVES"></a>
-__TBB_full_fence </td><td class="memItemRight" valign="bottom"><b>__TBB_DECL_FENCED_ATOMIC_PRIMITIVES</b> (4, __TBB_full_fence) __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(8</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a26" doxytag="tbb::internal::__TBB_DECL_FENCED_ATOMIC_PRIMITIVES"></a>
-__TBB_full_fence __TBB_full_fence </td><td class="memItemRight" valign="bottom"><b>__TBB_DECL_FENCED_ATOMIC_PRIMITIVES</b> (1, acquire) __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(2</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a27" doxytag="tbb::internal::__TBB_DECL_FENCED_ATOMIC_PRIMITIVES"></a>
-__TBB_full_fence __TBB_full_fence <br>
-acquire </td><td class="memItemRight" valign="bottom"><b>__TBB_DECL_FENCED_ATOMIC_PRIMITIVES</b> (4, acquire) __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(8</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a28" doxytag="tbb::internal::__TBB_DECL_FENCED_ATOMIC_PRIMITIVES"></a>
-__TBB_full_fence __TBB_full_fence <br>
-acquire acquire </td><td class="memItemRight" valign="bottom"><b>__TBB_DECL_FENCED_ATOMIC_PRIMITIVES</b> (1, release) __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(2</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a29" doxytag="tbb::internal::__TBB_DECL_FENCED_ATOMIC_PRIMITIVES"></a>
-__TBB_full_fence __TBB_full_fence <br>
-acquire acquire release </td><td class="memItemRight" valign="bottom"><b>__TBB_DECL_FENCED_ATOMIC_PRIMITIVES</b> (4, release) __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(8</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">__TBB_full_fence __TBB_full_fence <br>
-acquire acquire release release </td><td class="memItemRight" valign="bottom"><a class="el" href="a00319.html#a30">__TBB_DECL_ATOMIC_PRIMITIVES</a> (1) __TBB_DECL_ATOMIC_PRIMITIVES(2) __TBB_DECL_ATOMIC_PRIMITIVES(4) __TBB_DECL_ATOMIC_PRIMITIVES(8) template< typename I</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Base class that provides basic functionality for atomic<T>.  <a href="#a30"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a31" doxytag="tbb::internal::NFS_GetLineSize"></a>
-size_t __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00319.html#a31">NFS_GetLineSize</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Cache/sector line size. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a32" doxytag="tbb::internal::NFS_Allocate"></a>
-void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00319.html#a32">NFS_Allocate</a> (size_t n_element, size_t element_size, void *hint)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allocate memory on cache/sector line boundary. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00319.html#a33">NFS_Free</a> (void *)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Free memory allocated by NFS_Allocate.  <a href="#a33"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a34" doxytag="tbb::internal::operator=="></a>
-template<typename Container, typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00223.html">hash_map_iterator</a>< Container, T > &i, const <a class="el" href="a00223.html">hash_map_iterator</a>< Container, U > &j)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a35" doxytag="tbb::internal::operator!="></a>
-template<typename Container, typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00223.html">hash_map_iterator</a>< Container, T > &i, const <a class="el" href="a00223.html">hash_map_iterator</a>< Container, U > &j)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a36" doxytag="tbb::internal::hasher"></a>
-template<typename T> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"><a class="el" href="a00319.html#a2">hashcode_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00319.html#a36">hasher</a> (const T &t)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Hasher functions. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a37" doxytag="tbb::internal::hasher"></a>
-template<typename P> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"><a class="el" href="a00319.html#a2">hashcode_t</a> </td><td class="memTemplItemRight" valign="bottom"><b>hasher</b> (P *ptr)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a38" doxytag="tbb::internal::hasher"></a>
-template<typename E, typename S, typename A> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"><a class="el" href="a00319.html#a2">hashcode_t</a> </td><td class="memTemplItemRight" valign="bottom"><b>hasher</b> (const std::basic_string< E, S, A > &s)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a39" doxytag="tbb::internal::hasher"></a>
-template<typename F, typename S> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"><a class="el" href="a00319.html#a2">hashcode_t</a> </td><td class="memTemplItemRight" valign="bottom"><b>hasher</b> (const std::pair< F, S > &p)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a40" doxytag="tbb::internal::operator=="></a>
-template<typename C, typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00207.html">concurrent_queue_iterator</a>< C, T > &i, const <a class="el" href="a00207.html">concurrent_queue_iterator</a>< C, U > &j)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a41" doxytag="tbb::internal::operator!="></a>
-template<typename C, typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00207.html">concurrent_queue_iterator</a>< C, T > &i, const <a class="el" href="a00207.html">concurrent_queue_iterator</a>< C, U > &j)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a42" doxytag="tbb::internal::itt_load_pointer_v3"></a>
-void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00319.html#a42">itt_load_pointer_v3</a> (const void *src)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Routine that loads pointer from location pointed to by src without any fence, without causing ITT to report a race. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a43" doxytag="tbb::internal::operator+"></a>
-template<typename Container, typename T> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"><a class="el" href="a00274.html">vector_iterator</a>< Container,<br>
- T > </td><td class="memTemplItemRight" valign="bottom"><b>operator+</b> (ptrdiff_t offset, const <a class="el" href="a00274.html">vector_iterator</a>< Container, T > &v)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a44" doxytag="tbb::internal::operator=="></a>
-template<typename Container, typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00274.html">vector_iterator</a>< Container, T > &i, const <a class="el" href="a00274.html">vector_iterator</a>< Container, U > &j)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a45" doxytag="tbb::internal::operator!="></a>
-template<typename Container, typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00274.html">vector_iterator</a>< Container, T > &i, const <a class="el" href="a00274.html">vector_iterator</a>< Container, U > &j)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a46" doxytag="tbb::internal::operator<"></a>
-template<typename Container, typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator<</b> (const <a class="el" href="a00274.html">vector_iterator</a>< Container, T > &i, const <a class="el" href="a00274.html">vector_iterator</a>< Container, U > &j)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a47" doxytag="tbb::internal::operator>"></a>
-template<typename Container, typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator></b> (const <a class="el" href="a00274.html">vector_iterator</a>< Container, T > &i, const <a class="el" href="a00274.html">vector_iterator</a>< Container, U > &j)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a48" doxytag="tbb::internal::operator>="></a>
-template<typename Container, typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator>=</b> (const <a class="el" href="a00274.html">vector_iterator</a>< Container, T > &i, const <a class="el" href="a00274.html">vector_iterator</a>< Container, U > &j)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a49" doxytag="tbb::internal::operator<="></a>
-template<typename Container, typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator<=</b> (const <a class="el" href="a00274.html">vector_iterator</a>< Container, T > &i, const <a class="el" href="a00274.html">vector_iterator</a>< Container, U > &j)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a50" doxytag="tbb::internal::operator-"></a>
-template<typename Container, typename T, typename U> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">ptrdiff_t </td><td class="memTemplItemRight" valign="bottom"><b>operator-</b> (const <a class="el" href="a00274.html">vector_iterator</a>< Container, T > &i, const <a class="el" href="a00274.html">vector_iterator</a>< Container, U > &j)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a51" doxytag="tbb::internal::handle_perror"></a>
-void </td><td class="memItemRight" valign="bottom"><b>handle_perror</b> (int error_code, const char *what)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2">template<typename Iterator, typename Body, typename Item> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga0">run_parallel_do</a> (Iterator first, Iterator last, const Body &body#if __TBB_EXCEPTIONS, <a class="el" href="a00262.html">task_group_context</a> &context#endif)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For internal use only.  <a href="a00321.html#ga0"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template<typename Iterator, typename Body, typename Item> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga1">select_parallel_do</a> (Iterator first, Iterator last, const Body &body, void(Body::*)(Item) const #if __TBB_EXCEPTIONS, <a class="el" href="a00262.html">task_group_context</a> &context#endif)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For internal use only.  <a href="a00321.html#ga1"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template<typename Iterator, typename Body, typename Item, typename _Item> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga2">select_parallel_do</a> (Iterator first, Iterator last, const Body &body, void(Body::*)(Item, <a class="el" href="a00231.html">parallel_do_feeder</a>< _Item > &) const #if __TBB_EXCEPTIONS, <a class="el" href="a00262.html">task_group_context</a> &context#endif)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For internal use only.  <a href="a00321.html#ga2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a55" doxytag="tbb::internal::itt_store_pointer_with_release_v3"></a>
-void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00319.html#a55">itt_store_pointer_with_release_v3</a> (void *dst, void *src)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">ITT instrumented routine that stores src into location pointed to by dst. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a56" doxytag="tbb::internal::itt_load_pointer_with_acquire_v3"></a>
-void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00319.html#a56">itt_load_pointer_with_acquire_v3</a> (const void *src)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">ITT instrumented routine that loads pointer from location pointed to by src. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a57" doxytag="tbb::internal::parallel_reduce_store_body"></a>
-template<typename T> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_reduce_store_body</b> (T *&dst, T *src)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a58" doxytag="tbb::internal::parallel_reduce_load_body"></a>
-template<typename T> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">T * </td><td class="memTemplItemRight" valign="bottom"><b>parallel_reduce_load_body</b> (T *&src)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga25" doxytag="tbb::internal::parallel_quick_sort"></a>
-template<typename RandomAccessIterator, typename Compare> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga25">parallel_quick_sort</a> (RandomAccessIterator begin, RandomAccessIterator end, const Compare &comp)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Wrapper method to initiate the sort by calling parallel_for. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a60" doxytag="tbb::internal::get_initial_auto_partitioner_divisor"></a>
-size_t __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><b>get_initial_auto_partitioner_divisor</b> ()</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00319.html#a61">deallocate_via_handler_v3</a> (void *p)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Deallocates memory using FreeHandler.  <a href="#a61"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00319.html#a62">allocate_via_handler_v3</a> (size_t n)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allocates memory using MallocHandler.  <a href="#a62"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a63" doxytag="tbb::internal::is_malloc_used_v3"></a>
-bool __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00319.html#a63">is_malloc_used_v3</a> ()</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if standard malloc/free are used to work with memory. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a64" doxytag="tbb::internal::__TBB_MaskedCompareAndSwap"></a>
-template<size_t S, typename T> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><b>__TBB_MaskedCompareAndSwap</b> (volatile T *ptr, T value, T comparand)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a65" doxytag="tbb::internal::__TBB_CompareAndSwapGeneric"></a>
-template<size_t S, typename T> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><b>__TBB_CompareAndSwapGeneric</b> (volatile void *ptr, T value, T comparand)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a66" doxytag="tbb::internal::__TBB_CompareAndSwapGeneric< 1, uint8_t >"></a>
-template<> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">uint8_t </td><td class="memTemplItemRight" valign="bottom"><b>__TBB_CompareAndSwapGeneric< 1, uint8_t ></b> (volatile void *ptr, uint8_t value, uint8_t comparand)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a67" doxytag="tbb::internal::__TBB_CompareAndSwapGeneric< 2, uint16_t >"></a>
-template<> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">uint16_t </td><td class="memTemplItemRight" valign="bottom"><b>__TBB_CompareAndSwapGeneric< 2, uint16_t ></b> (volatile void *ptr, uint16_t value, uint16_t comparand)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a68" doxytag="tbb::internal::__TBB_CompareAndSwapGeneric< 4, uint32_t >"></a>
-template<> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">uint32_t </td><td class="memTemplItemRight" valign="bottom"><b>__TBB_CompareAndSwapGeneric< 4, uint32_t ></b> (volatile void *ptr, uint32_t value, uint32_t comparand)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a69" doxytag="tbb::internal::__TBB_CompareAndSwapGeneric< 8, uint64_t >"></a>
-template<> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">uint64_t </td><td class="memTemplItemRight" valign="bottom"><b>__TBB_CompareAndSwapGeneric< 8, uint64_t ></b> (volatile void *ptr, uint64_t value, uint64_t comparand)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a70" doxytag="tbb::internal::__TBB_FetchAndAddGeneric"></a>
-template<size_t S, typename T> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><b>__TBB_FetchAndAddGeneric</b> (volatile void *ptr, T addend)</td></tr>
-
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a71" doxytag="tbb::internal::__TBB_FetchAndStoreGeneric"></a>
-template<size_t S, typename T> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><b>__TBB_FetchAndStoreGeneric</b> (volatile void *ptr, T value)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a72" doxytag="tbb::internal::__declspec"></a>
- </td><td class="memItemRight" valign="bottom"><b>__declspec</b> (align(16)) struct __TBB_machine_type_with_strictest_alignment</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a73" doxytag="tbb::internal::itt_set_sync_name_v3"></a>
-void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><b>itt_set_sync_name_v3</b> (void *obj, const wchar_t *name)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a74" doxytag="tbb::internal::multibyte_to_widechar"></a>
-size_t </td><td class="memItemRight" valign="bottom"><b>multibyte_to_widechar</b> (wchar_t *wcs, const char *mbs, size_t bufsize)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a75" doxytag="tbb::internal::itt_set_sync_name_v3"></a>
-void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><b>itt_set_sync_name_v3</b> (void *obj, const char *name)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a76" doxytag="tbb::internal::runtime_warning"></a>
-void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00319.html#a76">runtime_warning</a> (const char *format,...)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Report a runtime warning. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a77" doxytag="tbb::internal::poison_pointer"></a>
-template<typename T> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00319.html#a77">poison_pointer</a> (T *&p)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set p to invalid pointer value. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a78" doxytag="tbb::internal::poison_pointer"></a>
-template<typename T> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>poison_pointer</b> (T *)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a79" doxytag="tbb::internal::allocate_closure_v3"></a>
-void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00319.html#a79">allocate_closure_v3</a> (size_t size)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allocate a closure. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a80" doxytag="tbb::internal::free_closure_v3"></a>
-void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00319.html#a80">free_closure_v3</a> (void *)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Free a closure allocated by allocate_closure_v3. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a81" doxytag="tbb::internal::move_v3"></a>
-void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><b>move_v3</b> (<a class="el" href="a00270.html">tbb_thread_v3</a> &t1, <a class="el" href="a00270.html">tbb_thread_v3</a> &t2)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a82" doxytag="tbb::internal::thread_get_id_v3"></a>
-tbb_thread_v3::id __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><b>thread_get_id_v3</b> ()</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a83" doxytag="tbb::internal::thread_yield_v3"></a>
-void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><b>thread_yield_v3</b> ()</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a84" doxytag="tbb::internal::thread_sleep_v3"></a>
-void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><b>thread_sleep_v3</b> (const <a class="el" href="a00273.html">tick_count::interval_t</a> &i)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a85" doxytag="tbb::internal::operator=="></a>
-bool </td><td class="memItemRight" valign="bottom"><b>operator==</b> (tbb_thread_v3::id x, tbb_thread_v3::id y)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a86" doxytag="tbb::internal::operator!="></a>
-bool </td><td class="memItemRight" valign="bottom"><b>operator!=</b> (tbb_thread_v3::id x, tbb_thread_v3::id y)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a87" doxytag="tbb::internal::operator<"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>operator<</b> (tbb_thread_v3::id x, tbb_thread_v3::id y)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a88" doxytag="tbb::internal::operator<="></a>
-bool </td><td class="memItemRight" valign="bottom"><b>operator<=</b> (tbb_thread_v3::id x, tbb_thread_v3::id y)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a89" doxytag="tbb::internal::operator>"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>operator></b> (tbb_thread_v3::id x, tbb_thread_v3::id y)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a90" doxytag="tbb::internal::operator>="></a>
-bool </td><td class="memItemRight" valign="bottom"><b>operator>=</b> (tbb_thread_v3::id x, tbb_thread_v3::id y)</td></tr>
-
-<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0" doxytag="tbb::internal::D"></a>
-__TBB_full_fence __TBB_full_fence <br>
-acquire acquire release release </td><td class="memItemRight" valign="bottom"><b>D</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00319.html#a1">NFS_MaxLineSize</a> = 128</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Compile-time constant that is upper bound on cache line/sector size.  <a href="#a1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3" doxytag="tbb::internal::hash_multiplier"></a>
-const <a class="el" href="a00319.html#a2">hashcode_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00319.html#a3">hash_multiplier</a> = sizeof(<a class="el" href="a00319.html#a2">hashcode_t</a>)==4? 2654435769U : 11400714819323198485ULL</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Hash multiplier. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a12" doxytag="tbb::internal::aligned"></a>
-tbb::internal::__TBB_machine_type_with_strictest_alignment </td><td class="memItemRight" valign="bottom"><b>aligned</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-INTERNAL 
-<p>
-INTERNAL 
-<p>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="a22" doxytag="tbb::internal::intptr"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">typedef std::ptrdiff_t <a class="el" href="a00319.html#a22">tbb::internal::intptr</a>          </td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-A signed integral type big enough to hold a pointer. 
-<p>
-There's no guarantee by the C++ standard that a ptrdiff_t is really big enough, but it happens to be for all platforms of interest.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a7" doxytag="tbb::internal::reduction_context"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">typedef char <a class="el" href="a00319.html#a7">tbb::internal::reduction_context</a>          </td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-0 if root, 1 if a left child, 2 if a right child. 
-<p>
-Represented as a char, not enum, for compactness.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a10" doxytag="tbb::internal::reference_count"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">typedef <a class="el" href="a00319.html#a22">intptr</a> <a class="el" href="a00319.html#a10">tbb::internal::reference_count</a>          </td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-A reference count. 
-<p>
-Should always be non-negative. A signed type is used so that underflow can be detected.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a21" doxytag="tbb::internal::uintptr"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">typedef size_t <a class="el" href="a00319.html#a21">tbb::internal::uintptr</a>          </td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-An unsigned integral type big enough to hold a pointer. 
-<p>
-There's no guarantee by the C++ standard that a size_t is really big enough, but it happens to be for all platforms of interest.     </td>
-  </tr>
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a30" doxytag="tbb::internal::__TBB_DECL_ATOMIC_PRIMITIVES"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">__TBB_full_fence __TBB_full_fence acquire acquire release release __TBB_DECL_ATOMIC_PRIMITIVES           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">1 </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Base class that provides basic functionality for atomic<T>. 
-<p>
-I is the underlying type. D is the difference type. StepType should be char if I is an integral type, and T if I is a T*.     </td>
-  </tr>
-</table>
-<a class="anchor" name="a62" doxytag="tbb::internal::allocate_via_handler_v3"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void* __TBB_EXPORTED_FUNC allocate_via_handler_v3           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">size_t </td>
-          <td class="mdname1" valign="top" nowrap> <em>n</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Allocates memory using MallocHandler. 
-<p>
-The function uses scalable_malloc if scalable allocator is available and malloc if not     </td>
-  </tr>
-</table>
-<a class="anchor" name="a61" doxytag="tbb::internal::deallocate_via_handler_v3"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void __TBB_EXPORTED_FUNC deallocate_via_handler_v3           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">void * </td>
-          <td class="mdname1" valign="top" nowrap> <em>p</em>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Deallocates memory using FreeHandler. 
-<p>
-The function uses scalable_free if scalable allocator is available and free if not     </td>
-  </tr>
-</table>
-<a class="anchor" name="a33" doxytag="tbb::internal::NFS_Free"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void __TBB_EXPORTED_FUNC NFS_Free           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">void * </td>
-          <td class="mdname1" valign="top" nowrap>          </td>
-          <td class="md" valign="top"> ) </td>
-          <td class="md" nowrap></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Free memory allocated by NFS_Allocate. 
-<p>
-Freeing a NULL pointer is allowed, but has no effect.     </td>
-  </tr>
-</table>
-<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="a1" doxytag="tbb::internal::NFS_MaxLineSize"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">const size_t <a class="el" href="a00319.html#a1">tbb::internal::NFS_MaxLineSize</a> = 128          </td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Compile-time constant that is upper bound on cache line/sector size. 
-<p>
-It should be used only in situations where having a compile-time upper bound is more useful than a run-time exact answer.     </td>
-  </tr>
-</table>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00321.html b/doc/html/a00321.html
deleted file mode 100644
index d9e9f13..0000000
--- a/doc/html/a00321.html
+++ /dev/null
@@ -1,496 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Algorithms</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>Algorithms</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00195.html">tbb::blocked_range< Value ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A range over which to iterate.  <a href="a00195.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00196.html">tbb::blocked_range2d< RowValue, ColValue ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A 2-dimensional range that models the Range concept.  <a href="a00196.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00197.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A 3-dimensional range that models the Range concept.  <a href="a00197.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00233.html">tbb::internal::parallel_do_operator_selector< Body, Item ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For internal use only.  <a href="a00233.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00213.html">tbb::internal::do_iteration_task< Body, Item ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For internal use only.  <a href="a00213.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00232.html">tbb::internal::parallel_do_feeder_impl< Body, Item ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For internal use only.  <a href="a00232.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00212.html">tbb::internal::do_group_task_forward< Iterator, Body, Item ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For internal use only.  <a href="a00212.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00214.html">tbb::internal::do_task_iter< Iterator, Body, Item ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For internal use only.  <a href="a00214.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00255.html">tbb::internal::start_for< Range, Body, Partitioner ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Task type used in parallel_for.  <a href="a00255.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00219.html">tbb::internal::finish_reduce< Body ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Task type use to combine the partial results of parallel_reduce.  <a href="a00219.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00256.html">tbb::internal::start_reduce< Range, Body, Partitioner ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Task type used to split the work of parallel_reduce.  <a href="a00256.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00220.html">tbb::internal::finish_reduce_with_affinity< Body ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Task type use to combine the partial results of parallel_reduce with <a class="el" href="a00188.html">affinity_partitioner</a>.  <a href="a00220.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html">tbb::internal::start_reduce_with_affinity< Range, Body ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Task type used to split the work of parallel_reduce with <a class="el" href="a00188.html">affinity_partitioner</a>.  <a href="a00257.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00225.html">tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Auxiliary class for parallel_reduce; for internal use only.  <a href="a00225.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00237.html">tbb::pre_scan_tag</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Used to indicate that the initial scan is being performed.  <a href="a00237.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00217.html">tbb::final_scan_tag</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Used to indicate that the final scan is being performed.  <a href="a00217.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00218.html">tbb::internal::final_sum< Range, Body ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Performs final scan for a leaf.  <a href="a00218.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00260.html">tbb::internal::sum_node< Range, Body ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Split work to be done in the scan.  <a href="a00260.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00221.html">tbb::internal::finish_scan< Range, Body ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine partial results.  <a href="a00221.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00258.html">tbb::internal::start_scan< Range, Body, Partitioner ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Initial task to split the work.  <a href="a00258.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00244.html">tbb::internal::quick_sort_range< RandomAccessIterator, Compare ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Range used in quicksort to split elements into subranges based on a value.  <a href="a00244.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00243.html">tbb::internal::quick_sort_pretest_body< RandomAccessIterator, Compare ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Body class used to test if elements in a range are presorted.  <a href="a00243.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00242.html">tbb::internal::quick_sort_body< RandomAccessIterator, Compare ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Body class used to sort elements in a range that is smaller than the grainsize.  <a href="a00242.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00277.html">tbb::internal::while_iteration_task< Body ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For internal use only.  <a href="a00277.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00276.html">tbb::internal::while_group_task< Body ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For internal use only.  <a href="a00276.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00278.html">tbb::internal::while_task< Stream, Body ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For internal use only.  <a href="a00278.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00234.html">tbb::parallel_while< Body ></a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over a stream, with optional addition of more work.  <a href="a00234.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00249.html">tbb::simple_partitioner</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A simple partitioner  <a href="a00249.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00193.html">tbb::auto_partitioner</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">An auto partitioner.  <a href="a00193.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00216.html">tbb::filter</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A stage in a pipeline.  <a href="a00216.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html">tbb::pipeline</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A processing pipeling that applies filters to items.  <a href="a00236.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00254.html">tbb::split</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Dummy type that distinguishes splitting constructor from copy constructor.  <a href="a00254.html#_details">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>parallel_do</h2></td></tr>
-<tr><td colspan="2">See also requirements on <a class="el" href="parallel_do_body_req.html">parallel_do Body</a>. * <br><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga3" doxytag="algorithms::parallel_do"></a>
-template<typename Iterator, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga3">tbb::parallel_do</a> (Iterator first, Iterator last, const Body &body)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over a range, with optional addition of more work. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga4" doxytag="algorithms::parallel_do"></a>
-template<typename Iterator, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga4">tbb::parallel_do</a> (Iterator first, Iterator last, const Body &body, task_group_context &context)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over a range, with optional addition of more work and user-supplied context. <br></td></tr>
-<tr><td colspan="2"><br><h2>parallel_for</h2></td></tr>
-<tr><td colspan="2">See also requirements on <a class="el" href="range_req.html">Range</a> and <a class="el" href="parallel_for_body_req.html">parallel_for Body</a>. * <br><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga5" doxytag="algorithms::parallel_for"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga5">tbb::parallel_for</a> (const Range &range, const Body &body, const simple_partitioner &partitioner=simple_partitioner())</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with simple partitioner, or default partitioner if no partitioner is specified. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga6" doxytag="algorithms::parallel_for"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga6">tbb::parallel_for</a> (const Range &range, const Body &body, const auto_partitioner &partitioner)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with <a class="el" href="a00193.html">auto_partitioner</a>. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga7" doxytag="algorithms::parallel_for"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga7">tbb::parallel_for</a> (const Range &range, const Body &body, affinity_partitioner &partitioner)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with <a class="el" href="a00188.html">affinity_partitioner</a>. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga8" doxytag="algorithms::parallel_for"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga8">tbb::parallel_for</a> (const Range &range, const Body &body, const simple_partitioner &partitioner, task_group_context &context)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with simple partitioner and user-supplied context. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga9" doxytag="algorithms::parallel_for"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga9">tbb::parallel_for</a> (const Range &range, const Body &body, const auto_partitioner &partitioner, task_group_context &context)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with <a class="el" href="a00193.html">auto_partitioner</a> and user-supplied context. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga10" doxytag="algorithms::parallel_for"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga10">tbb::parallel_for</a> (const Range &range, const Body &body, affinity_partitioner &partitioner, task_group_context &context)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with <a class="el" href="a00188.html">affinity_partitioner</a> and user-supplied context. <br></td></tr>
-<tr><td colspan="2"><br><h2>parallel_reduce</h2></td></tr>
-<tr><td colspan="2">See also requirements on <a class="el" href="range_req.html">Range</a> and <a class="el" href="parallel_reduce_body_req.html">parallel_reduce Body</a>. * <br><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga11" doxytag="algorithms::parallel_reduce"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga11">tbb::parallel_reduce</a> (const Range &range, Body &body, const simple_partitioner &partitioner=simple_partitioner())</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and <a class="el" href="a00249.html">simple_partitioner</a>, or no partitioner specified. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga12" doxytag="algorithms::parallel_reduce"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga12">tbb::parallel_reduce</a> (const Range &range, Body &body, const auto_partitioner &partitioner)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and <a class="el" href="a00193.html">auto_partitioner</a>. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga13" doxytag="algorithms::parallel_reduce"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga13">tbb::parallel_reduce</a> (const Range &range, Body &body, affinity_partitioner &partitioner)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and <a class="el" href="a00188.html">affinity_partitioner</a>. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga14" doxytag="algorithms::parallel_reduce"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga14">tbb::parallel_reduce</a> (const Range &range, Body &body, const simple_partitioner &partitioner, task_group_context &context)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, simple partitioner and user-supplied context. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga15" doxytag="algorithms::parallel_reduce"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga15">tbb::parallel_reduce</a> (const Range &range, Body &body, const auto_partitioner &partitioner, task_group_context &context)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, <a class="el" href="a00193.html">auto_partitioner</a> and user-supplied context. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga16" doxytag="algorithms::parallel_reduce"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga16">tbb::parallel_reduce</a> (const Range &range, Body &body, affinity_partitioner &partitioner, task_group_context &context)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, <a class="el" href="a00188.html">affinity_partitioner</a> and user-supplied context. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga17" doxytag="algorithms::parallel_reduce"></a>
-template<typename Range, typename Value, typename RealBody, typename Reduction> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga17">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner=simple_partitioner())</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and <a class="el" href="a00249.html">simple_partitioner</a>, or no partitioner specified. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga18" doxytag="algorithms::parallel_reduce"></a>
-template<typename Range, typename Value, typename RealBody, typename Reduction> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga18">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const auto_partitioner &partitioner)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and <a class="el" href="a00193.html">auto_partitioner</a>. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga19" doxytag="algorithms::parallel_reduce"></a>
-template<typename Range, typename Value, typename RealBody, typename Reduction> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga19">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, affinity_partitioner &partitioner)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and <a class="el" href="a00188.html">affinity_partitioner</a>. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga20" doxytag="algorithms::parallel_reduce"></a>
-template<typename Range, typename Value, typename RealBody, typename Reduction> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga20">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner, task_group_context &context)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, simple partitioner and user-supplied context. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga21" doxytag="algorithms::parallel_reduce"></a>
-template<typename Range, typename Value, typename RealBody, typename Reduction> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga21">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const auto_partitioner &partitioner, task_group_context &context)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, <a class="el" href="a00193.html">auto_partitioner</a> and user-supplied context. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga22" doxytag="algorithms::parallel_reduce"></a>
-template<typename Range, typename Value, typename RealBody, typename Reduction> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga22">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, affinity_partitioner &partitioner, task_group_context &context)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, <a class="el" href="a00188.html">affinity_partitioner</a> and user-supplied context. <br></td></tr>
-<tr><td colspan="2"><br><h2>parallel_scan</h2></td></tr>
-<tr><td colspan="2">See also requirements on <a class="el" href="range_req.html">Range</a> and <a class="el" href="parallel_scan_body_req.html">parallel_scan Body</a>. * <br><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga23" doxytag="algorithms::parallel_scan"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga23">tbb::parallel_scan</a> (const Range &range, Body &body, const simple_partitioner &partitioner=simple_partitioner())</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel prefix with <a class="el" href="a00249.html">simple_partitioner</a>. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga24" doxytag="algorithms::parallel_scan"></a>
-template<typename Range, typename Body> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga24">tbb::parallel_scan</a> (const Range &range, Body &body, const auto_partitioner &partitioner)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parallel prefix with <a class="el" href="a00193.html">auto_partitioner</a>. <br></td></tr>
-<tr><td colspan="2"><br><h2>parallel_sort</h2></td></tr>
-<tr><td colspan="2">See also requirements on <a class="el" href="parallel_sort_iter_req.html">iterators for parallel_sort</a>. * <br><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template<typename RandomAccessIterator, typename Compare> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga26">tbb::parallel_sort</a> (RandomAccessIterator begin, RandomAccessIterator end, const Compare &comp)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in [begin,end) using the given comparator.  <a href="#ga26"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga27" doxytag="algorithms::parallel_sort"></a>
-template<typename RandomAccessIterator> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga27">tbb::parallel_sort</a> (RandomAccessIterator begin, RandomAccessIterator end)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in [begin,end) with a default comparator <code>std::less<RandomAccessIterator></code>. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga28" doxytag="algorithms::parallel_sort"></a>
-template<typename T> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga28">tbb::parallel_sort</a> (T *begin, T *end)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in the range <code></code>[begin,end) with a default comparator <code>std::less<T></code>. <br></td></tr>
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template<typename Iterator, typename Body, typename Item> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga0">tbb::internal::run_parallel_do</a> (Iterator first, Iterator last, const Body &body#if __TBB_EXCEPTIONS, task_group_context &context#endif)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For internal use only.  <a href="#ga0"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template<typename Iterator, typename Body, typename Item> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga1">tbb::internal::select_parallel_do</a> (Iterator first, Iterator last, const Body &body, void(Body::*)(Item) const #if __TBB_EXCEPTIONS, task_group_context &context#endif)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For internal use only.  <a href="#ga1"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template<typename Iterator, typename Body, typename Item, typename _Item> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga2">tbb::internal::select_parallel_do</a> (Iterator first, Iterator last, const Body &body, void(Body::*)(Item, parallel_do_feeder< _Item > &) const #if __TBB_EXCEPTIONS, task_group_context &context#endif)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For internal use only.  <a href="#ga2"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="ga25" doxytag="algorithms::parallel_quick_sort"></a>
-template<typename RandomAccessIterator, typename Compare> </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00321.html#ga25">tbb::internal::parallel_quick_sort</a> (RandomAccessIterator begin, RandomAccessIterator end, const Compare &comp)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Wrapper method to initiate the sort by calling parallel_for. <br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-containers Containers  memory_allocation Memory Allocation  synchronization Synchronization  timing Timing  task_scheduling Task Scheduling <hr><h2>Function Documentation</h2>
-<a class="anchor" name="ga26" doxytag="tbb::parallel_sort"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename RandomAccessIterator, typename Compare> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">void parallel_sort           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">RandomAccessIterator </td>
-          <td class="mdname" nowrap> <em>begin</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>RandomAccessIterator </td>
-          <td class="mdname" nowrap> <em>end</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>const Compare & </td>
-          <td class="mdname" nowrap> <em>comp</em></td>
-        </tr>
-        <tr>
-          <td class="md"></td>
-          <td class="md">) </td>
-          <td class="md" colspan="2"></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-Sorts the data in [begin,end) using the given comparator. 
-<p>
-The compare function object is used for all comparisons between elements during sorting. The compare object must define a bool operator() function.     </td>
-  </tr>
-</table>
-<a class="anchor" name="ga0" doxytag="tbb::internal::run_parallel_do"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename Iterator, typename Body, typename Item> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">void run_parallel_do           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">Iterator </td>
-          <td class="mdname" nowrap> <em>first</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>Iterator </td>
-          <td class="mdname" nowrap> <em>last</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>const Body &body#if </td>
-          <td class="mdname" nowrap> <em>__TBB_EXCEPTIONS</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>task_group_context &context# </td>
-          <td class="mdname" nowrap> <em>endif</em></td>
-        </tr>
-        <tr>
-          <td class="md"></td>
-          <td class="md">) </td>
-          <td class="md" colspan="2"></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-For internal use only. 
-<p>
-Implements parallel iteration over a range.     </td>
-  </tr>
-</table>
-<a class="anchor" name="ga2" doxytag="tbb::internal::select_parallel_do"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename Iterator, typename Body, typename Item, typename _Item> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">void select_parallel_do           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">Iterator </td>
-          <td class="mdname" nowrap> <em>first</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>Iterator </td>
-          <td class="mdname" nowrap> <em>last</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>const Body & </td>
-          <td class="mdname" nowrap> <em>body</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>void(Body::*)(Item, parallel_do_feeder< _Item > &) const #if </td>
-          <td class="mdname" nowrap> <em>__TBB_EXCEPTIONS</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>task_group_context &context# </td>
-          <td class="mdname" nowrap> <em>endif</em></td>
-        </tr>
-        <tr>
-          <td class="md"></td>
-          <td class="md">) </td>
-          <td class="md" colspan="2"></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-For internal use only. 
-<p>
-Detects types of Body's operator function arguments.     </td>
-  </tr>
-</table>
-<a class="anchor" name="ga1" doxytag="tbb::internal::select_parallel_do"></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" colspan="4">
-template<typename Iterator, typename Body, typename Item> </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap valign="top">void select_parallel_do           </td>
-          <td class="md" valign="top">( </td>
-          <td class="md" nowrap valign="top">Iterator </td>
-          <td class="mdname" nowrap> <em>first</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>Iterator </td>
-          <td class="mdname" nowrap> <em>last</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>const Body & </td>
-          <td class="mdname" nowrap> <em>body</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>void(Body::*)(Item) const #if </td>
-          <td class="mdname" nowrap> <em>__TBB_EXCEPTIONS</em>, </td>
-        </tr>
-        <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>task_group_context &context# </td>
-          <td class="mdname" nowrap> <em>endif</em></td>
-        </tr>
-        <tr>
-          <td class="md"></td>
-          <td class="md">) </td>
-          <td class="md" colspan="2"></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-       
-    </td>
-    <td>
-
-<p>
-For internal use only. 
-<p>
-Detects types of Body's operator function arguments.     </td>
-  </tr>
-</table>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00322.html b/doc/html/a00322.html
deleted file mode 100644
index d97cee3..0000000
--- a/doc/html/a00322.html
+++ /dev/null
@@ -1,92 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>_tbb_windef.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>_tbb_windef.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_tbb_windef_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#error Do not #include this file directly.  Use "#include tbb/tbb_stddef.h" instead.</span>
-00023 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* __TBB_tbb_windef_H */</span>
-00024 
-00025 <span class="comment">// Check that the target Windows version has all API calls requried for TBB.</span>
-00026 <span class="comment">// Do not increase the version in condition beyond 0x0500 without prior discussion!</span>
-00027 <span class="preprocessor">#if defined(_WIN32_WINNT) && _WIN32_WINNT<0x0400</span>
-00028 <span class="preprocessor"></span><span class="preprocessor">#error TBB is unable to run on old Windows versions; _WIN32_WINNT must be 0x0400 or greater.</span>
-00029 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00030 <span class="preprocessor"></span>
-00031 <span class="preprocessor">#if !defined(_MT)</span>
-00032 <span class="preprocessor"></span><span class="preprocessor">#error TBB requires linkage with multithreaded C/C++ runtime library. \</span>
-00033 <span class="preprocessor">       Choose multithreaded DLL runtime in project settings, or use /MD[d] compiler switch.</span>
-00034 <span class="preprocessor"></span><span class="preprocessor">#elif !defined(_DLL)</span>
-00035 <span class="preprocessor"></span><span class="preprocessor">#pragma message("Warning: Using TBB together with static C/C++ runtime library is not recommended. " \</span>
-00036 <span class="preprocessor">                "Consider switching your project to multithreaded DLL runtime used by TBB.")</span>
-00037 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00038 <span class="preprocessor"></span>
-00039 <span class="comment">// Workaround for the problem with MVSC headers failing to define namespace std</span>
-00040 <span class="keyword">namespace </span>std {
-00041   using ::size_t; using ::ptrdiff_t;
-00042 }
-00043 
-00044 <span class="preprocessor">#define __TBB_STRING_AUX(x) #x</span>
-00045 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_STRING(x) __TBB_STRING_AUX(x)</span>
-00046 <span class="preprocessor"></span>
-00047 <span class="comment">// Default setting of TBB_USE_DEBUG</span>
-00048 <span class="preprocessor">#ifdef TBB_USE_DEBUG</span>
-00049 <span class="preprocessor"></span><span class="preprocessor">#    if TBB_USE_DEBUG </span>
-00050 <span class="preprocessor"></span><span class="preprocessor">#        if !defined(_DEBUG)</span>
-00051 <span class="preprocessor"></span><span class="preprocessor">#            pragma message(__FILE__ "(" __TBB_STRING(__LINE__) ") : Warning: Recommend using /MDd if compiling with TBB_USE_DEBUG!=0")</span>
-00052 <span class="preprocessor"></span><span class="preprocessor">#        endif</span>
-00053 <span class="preprocessor"></span><span class="preprocessor">#    else</span>
-00054 <span class="preprocessor"></span><span class="preprocessor">#        if defined(_DEBUG)</span>
-00055 <span class="preprocessor"></span><span class="preprocessor">#            pragma message(__FILE__ "(" __TBB_STRING(__LINE__) ") : Warning: Recommend using /MD if compiling with TBB_USE_DEBUG==0")</span>
-00056 <span class="preprocessor"></span><span class="preprocessor">#        endif</span>
-00057 <span class="preprocessor"></span><span class="preprocessor">#    endif</span>
-00058 <span class="preprocessor"></span><span class="preprocessor">#else</span>
-00059 <span class="preprocessor"></span><span class="preprocessor">#    ifdef _DEBUG</span>
-00060 <span class="preprocessor"></span><span class="preprocessor">#        define TBB_USE_DEBUG 1</span>
-00061 <span class="preprocessor"></span><span class="preprocessor">#    endif</span>
-00062 <span class="preprocessor"></span><span class="preprocessor">#endif </span>
-00063 <span class="preprocessor"></span>
-00064 <span class="preprocessor">#if __TBB_BUILD && !defined(__TBB_NO_IMPLICIT_LINKAGE)</span>
-00065 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_NO_IMPLICIT_LINKAGE 1</span>
-00066 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00067 <span class="preprocessor"></span>
-00068 <span class="preprocessor">#if _MSC_VER</span>
-00069 <span class="preprocessor"></span><span class="preprocessor">    #if !__TBB_NO_IMPLICIT_LINKAGE</span>
-00070 <span class="preprocessor"></span><span class="preprocessor">        #ifdef _DEBUG</span>
-00071 <span class="preprocessor"></span><span class="preprocessor">            #pragma comment(lib, "tbb_debug.lib")</span>
-00072 <span class="preprocessor"></span><span class="preprocessor">        #else</span>
-00073 <span class="preprocessor"></span><span class="preprocessor">            #pragma comment(lib, "tbb.lib")</span>
-00074 <span class="preprocessor"></span><span class="preprocessor">        #endif</span>
-00075 <span class="preprocessor"></span><span class="preprocessor">    #endif</span>
-00076 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00323.html b/doc/html/a00323.html
deleted file mode 100644
index 6d84a03..0000000
--- a/doc/html/a00323.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>aligned_space.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>aligned_space.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_aligned_space_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_aligned_space_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include "tbb_stddef.h"</span>
-00025 <span class="preprocessor">#include "tbb_machine.h"</span>
-00026 
-<a name="l00027"></a><a class="code" href="a00318.html">00027</a> <span class="keyword">namespace </span>tbb {
-00028 
-00030 
-00032 <span class="keyword">template</span><<span class="keyword">typename</span> T,size_t N>
-<a name="l00033"></a><a class="code" href="a00190.html">00033</a> <span class="keyword">class </span><a class="code" href="a00190.html">aligned_space</a> {
-00034 <span class="keyword">private</span>:
-00035     <span class="keyword">typedef</span> __TBB_TypeWithAlignmentAtLeastAsStrict(T) element_type;
-00036     element_type array[(<span class="keyword">sizeof</span>(T)*N+<span class="keyword">sizeof</span>(element_type)-1)/<span class="keyword">sizeof</span>(element_type)];
-00037 <span class="keyword">public</span>:
-<a name="l00039"></a><a class="code" href="a00190.html#a0">00039</a>     T* begin() {<span class="keywordflow">return</span> reinterpret_cast<T*>(<span class="keyword">this</span>);}
-00040 
-<a name="l00042"></a><a class="code" href="a00190.html#a1">00042</a>     T* end() {<span class="keywordflow">return</span> begin()+N;}
-00043 };
-00044 
-00045 } <span class="comment">// namespace tbb </span>
-00046 
-00047 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_aligned_space_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00324.html b/doc/html/a00324.html
deleted file mode 100644
index d799f3b..0000000
--- a/doc/html/a00324.html
+++ /dev/null
@@ -1,443 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>atomic.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>atomic.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_atomic_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_atomic_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include <cstddef></span>
-00025 <span class="preprocessor">#include "tbb_stddef.h"</span>
-00026 
-00027 <span class="preprocessor">#if _MSC_VER </span>
-00028 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_LONG_LONG __int64</span>
-00029 <span class="preprocessor"></span><span class="preprocessor">#else</span>
-00030 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_LONG_LONG long long</span>
-00031 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* _MSC_VER */</span>
-00032 
-00033 <span class="preprocessor">#include "tbb_machine.h"</span>
-00034 
-00035 <span class="preprocessor">#if defined(_MSC_VER) && !defined(__INTEL_COMPILER)</span>
-00036 <span class="preprocessor"></span>    <span class="comment">// Workaround for overzealous compiler warnings </span>
-00037 <span class="preprocessor">    #pragma warning (push)</span>
-00038 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (disable: 4244 4267)</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00040 <span class="preprocessor"></span>
-00041 <span class="keyword">namespace </span>tbb {
-00042 
-<a name="l00044"></a><a class="code" href="a00318.html#a57">00044</a> <span class="keyword">enum</span> <a class="code" href="a00318.html#a57">memory_semantics</a> {
-00046     __TBB_full_fence,
-00048     acquire,
-00050     <a class="code" href="a00318.html#a57a2">release</a>
-00051 };
-00052 
-<a name="l00054"></a><a class="code" href="a00319.html">00054</a> <span class="keyword">namespace </span>internal {
-00055 
-00056 <span class="keyword">template</span><size_t Size, memory_semantics M>
-00057 <span class="keyword">struct </span>atomic_traits {       <span class="comment">// Primary template</span>
-00058 };
-00059 
-00060 <span class="keyword">template</span><size_t Size>
-00061 <span class="keyword">struct </span>atomic_word {             <span class="comment">// Primary template</span>
-00062     <span class="keyword">typedef</span> <a class="code" href="a00319.html#a22">intptr</a> word;
-00063 };
-00064 
-00065 <span class="keyword">template</span><<span class="keyword">typename</span> I>            <span class="comment">// Primary template</span>
-00066 <span class="keyword">struct </span>atomic_base {
-00067     I my_value;
-00068 };
-00069 
-00070 <span class="preprocessor">#if __GNUC__ || __SUNPRO_CC</span>
-00071 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_DECL_ATOMIC_FIELD(t,f,a) t f  __attribute__ ((aligned(a)));</span>
-00072 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__INTEL_COMPILER)||_MSC_VER >= 1300</span>
-00073 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_DECL_ATOMIC_FIELD(t,f,a) __declspec(align(a)) t f;</span>
-00074 <span class="preprocessor"></span><span class="preprocessor">#else </span>
-00075 <span class="preprocessor"></span><span class="preprocessor">#error Do not know syntax for forcing alignment.</span>
-00076 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* __GNUC__ */</span>
-00077 
-00078 <span class="keyword">template</span><>
-00079 <span class="keyword">struct </span>atomic_word<8> {          <span class="comment">// Specialization</span>
-00080     <span class="keyword">typedef</span> int64_t word;
-00081 };
-00082 
-00083 <span class="preprocessor">#if _WIN32 && __TBB_x86_64</span>
-00084 <span class="preprocessor"></span><span class="comment">// ATTENTION: On 64-bit Windows, we currently have to specialize atomic_word</span>
-00085 <span class="comment">// for every size to avoid type conversion warnings</span>
-00086 <span class="comment">// See declarations of atomic primitives in machine/windows_em64t.h</span>
-00087 <span class="keyword">template</span><>
-00088 <span class="keyword">struct </span>atomic_word<1> {          <span class="comment">// Specialization</span>
-00089     <span class="keyword">typedef</span> int8_t word;
-00090 };
-00091 <span class="keyword">template</span><>
-00092 <span class="keyword">struct </span>atomic_word<2> {          <span class="comment">// Specialization</span>
-00093     <span class="keyword">typedef</span> int16_t word;
-00094 };
-00095 <span class="keyword">template</span><>
-00096 <span class="keyword">struct </span>atomic_word<4> {          <span class="comment">// Specialization</span>
-00097     <span class="keyword">typedef</span> int32_t word;
-00098 };
-00099 <span class="preprocessor">#endif</span>
-00100 <span class="preprocessor"></span>
-00101 <span class="keyword">template</span><>
-00102 <span class="keyword">struct </span>atomic_base<uint64_t> {   <span class="comment">// Specialization</span>
-00103     __TBB_DECL_ATOMIC_FIELD(uint64_t,my_value,8)
-00104 };
-00105 
-00106 <span class="keyword">template</span><>
-00107 <span class="keyword">struct </span>atomic_base<int64_t> {    <span class="comment">// Specialization</span>
-00108     __TBB_DECL_ATOMIC_FIELD(int64_t,my_value,8)
-00109 };
-00110 
-00111 <span class="preprocessor">#define __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(S,M)                         \</span>
-00112 <span class="preprocessor">    template<> struct atomic_traits<S,M> {                               \</span>
-00113 <span class="preprocessor">        typedef atomic_word<S>::word word;                               \</span>
-00114 <span class="preprocessor">        inline static word compare_and_swap( volatile void* location, word new_value, word comparand ) {\</span>
-00115 <span class="preprocessor">            return __TBB_CompareAndSwap##S##M(location,new_value,comparand);    \</span>
-00116 <span class="preprocessor">        }                                                                       \</span>
-00117 <span class="preprocessor">        inline static word fetch_and_add( volatile void* location, word addend ) { \</span>
-00118 <span class="preprocessor">            return __TBB_FetchAndAdd##S##M(location,addend);                    \</span>
-00119 <span class="preprocessor">        }                                                                       \</span>
-00120 <span class="preprocessor">        inline static word fetch_and_store( volatile void* location, word value ) {\</span>
-00121 <span class="preprocessor">            return __TBB_FetchAndStore##S##M(location,value);                   \</span>
-00122 <span class="preprocessor">        }                                                                       \</span>
-00123 <span class="preprocessor">    };</span>
-00124 <span class="preprocessor"></span>
-00125 <span class="preprocessor">#define __TBB_DECL_ATOMIC_PRIMITIVES(S)                                  \</span>
-00126 <span class="preprocessor">    template<memory_semantics M>                                         \</span>
-00127 <span class="preprocessor">    struct atomic_traits<S,M> {                                          \</span>
-00128 <span class="preprocessor">        typedef atomic_word<S>::word word;                               \</span>
-00129 <span class="preprocessor">        inline static word compare_and_swap( volatile void* location, word new_value, word comparand ) {\</span>
-00130 <span class="preprocessor">            return __TBB_CompareAndSwap##S(location,new_value,comparand);       \</span>
-00131 <span class="preprocessor">        }                                                                       \</span>
-00132 <span class="preprocessor">        inline static word fetch_and_add( volatile void* location, word addend ) { \</span>
-00133 <span class="preprocessor">            return __TBB_FetchAndAdd##S(location,addend);                       \</span>
-00134 <span class="preprocessor">        }                                                                       \</span>
-00135 <span class="preprocessor">        inline static word fetch_and_store( volatile void* location, word value ) {\</span>
-00136 <span class="preprocessor">            return __TBB_FetchAndStore##S(location,value);                      \</span>
-00137 <span class="preprocessor">        }                                                                       \</span>
-00138 <span class="preprocessor">    };</span>
-00139 <span class="preprocessor"></span>
-00140 <span class="preprocessor">#if __TBB_DECL_FENCED_ATOMICS</span>
-00141 <span class="preprocessor"></span>__TBB_DECL_FENCED_ATOMIC_PRIMITIVES(1,<a class="code" href="a00318.html#a57a0">__TBB_full_fence</a>)
-00142 __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(2,<a class="code" href="a00318.html#a57a0">__TBB_full_fence</a>)
-00143 __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(4,<a class="code" href="a00318.html#a57a0">__TBB_full_fence</a>)
-00144 __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(8,<a class="code" href="a00318.html#a57a0">__TBB_full_fence</a>)
-00145 __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(1,<a class="code" href="a00318.html#a57a1">acquire</a>)
-00146 __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(2,<a class="code" href="a00318.html#a57a1">acquire</a>)
-00147 __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(4,<a class="code" href="a00318.html#a57a1">acquire</a>)
-00148 __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(8,<a class="code" href="a00318.html#a57a1">acquire</a>)
-00149 __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(1,<a class="code" href="a00318.html#a57a2">release</a>)
-00150 __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(2,<a class="code" href="a00318.html#a57a2">release</a>)
-00151 __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(4,<a class="code" href="a00318.html#a57a2">release</a>)
-00152 __TBB_DECL_FENCED_ATOMIC_PRIMITIVES(8,<a class="code" href="a00318.html#a57a2">release</a>)
-00153 #<span class="keywordflow">else</span>
-00154 <a class="code" href="a00319.html#a30">__TBB_DECL_ATOMIC_PRIMITIVES</a>(1)
-00155 <a class="code" href="a00319.html#a30">__TBB_DECL_ATOMIC_PRIMITIVES</a>(2)
-00156 <a class="code" href="a00319.html#a30">__TBB_DECL_ATOMIC_PRIMITIVES</a>(4)
-00157 <a class="code" href="a00319.html#a30">__TBB_DECL_ATOMIC_PRIMITIVES</a>(8)
-00158 #endif
-00159 
-00161 
-00163 <span class="preprocessor">#define __TBB_MINUS_ONE(T) (T(T(0)-T(1)))</span>
-00164 <span class="preprocessor"></span>
-00166 
-00169 <span class="keyword">template</span><<span class="keyword">typename</span> I, <span class="keyword">typename</span> D, <span class="keyword">typename</span> StepType>
-00170 <span class="keyword">struct </span>atomic_impl: <span class="keyword">private</span> atomic_base<I> {
-00171 <span class="keyword">private</span>:
-00172     <span class="keyword">typedef</span> <span class="keyword">typename</span> atomic_word<sizeof(I)>::word word;
-00173 <span class="keyword">public</span>:
-00174     <span class="keyword">typedef</span> I value_type;
-00175 
-00176     <span class="keyword">template</span><memory_semantics M>
-00177     value_type fetch_and_add( D addend ) {
-00178         <span class="keywordflow">return</span> value_type(internal::atomic_traits<sizeof(value_type),M>::fetch_and_add( &this->my_value, addend*<span class="keyword">sizeof</span>(StepType) ));
-00179     }
-00180 
-00181     value_type fetch_and_add( D addend ) {
-00182         <span class="keywordflow">return</span> fetch_and_add<__TBB_full_fence>(addend);
-00183     }
-00184 
-00185     <span class="keyword">template</span><memory_semantics M>
-00186     value_type fetch_and_increment() {
-00187         <span class="keywordflow">return</span> fetch_and_add<M>(1);
-00188     }
-00189 
-00190     value_type fetch_and_increment() {
-00191         <span class="keywordflow">return</span> fetch_and_add(1);
-00192     }
-00193 
-00194     <span class="keyword">template</span><memory_semantics M>
-00195     value_type fetch_and_decrement() {
-00196         <span class="keywordflow">return</span> fetch_and_add<M>(__TBB_MINUS_ONE(D));
-00197     }
-00198 
-00199     value_type fetch_and_decrement() {
-00200         <span class="keywordflow">return</span> fetch_and_add(__TBB_MINUS_ONE(D));
-00201     }
-00202 
-00203     <span class="keyword">template</span><memory_semantics M>
-00204     value_type fetch_and_store( value_type value ) {
-00205         <span class="keywordflow">return</span> value_type(internal::atomic_traits<sizeof(value_type),M>::fetch_and_store(&this->my_value,word(value)));
-00206     }
-00207 
-00208     value_type fetch_and_store( value_type value ) {
-00209         <span class="keywordflow">return</span> fetch_and_store<__TBB_full_fence>(value);
-00210     }
-00211 
-00212     <span class="keyword">template</span><memory_semantics M>
-00213     value_type compare_and_swap( value_type value, value_type comparand ) {
-00214         <span class="keywordflow">return</span> value_type(internal::atomic_traits<sizeof(value_type),M>::compare_and_swap(&this->my_value,word(value),word(comparand)));
-00215     }
-00216 
-00217     value_type compare_and_swap( value_type value, value_type comparand ) {
-00218         <span class="keywordflow">return</span> compare_and_swap<__TBB_full_fence>(value,comparand);
-00219     }
-00220 
-00221     operator value_type()<span class="keyword"> const volatile </span>{                <span class="comment">// volatile qualifier here for backwards compatibility </span>
-00222         <span class="keywordflow">return</span> __TBB_load_with_acquire( this->my_value );
-00223     }
-00224 
-00225 <span class="keyword">protected</span>:
-00226     value_type store_with_release( value_type rhs ) {
-00227         __TBB_store_with_release(this->my_value,rhs);
-00228         <span class="keywordflow">return</span> rhs;
-00229     }
-00230 
-00231 <span class="keyword">public</span>:
-00232     value_type operator+=( D addend ) {
-00233         <span class="keywordflow">return</span> fetch_and_add(addend)+addend;
-00234     }
-00235 
-00236     value_type operator-=( D addend ) {
-00237         <span class="comment">// Additive inverse of addend computed using binary minus,</span>
-00238         <span class="comment">// instead of unary minus, for sake of avoiding compiler warnings.</span>
-00239         <span class="keywordflow">return</span> operator+=(D(0)-addend);    
-00240     }
-00241 
-00242     value_type operator++() {
-00243         <span class="keywordflow">return</span> fetch_and_add(1)+1;
-00244     }
-00245 
-00246     value_type operator--() {
-00247         <span class="keywordflow">return</span> fetch_and_add(__TBB_MINUS_ONE(D))-1;
-00248     }
-00249 
-00250     value_type operator++(<span class="keywordtype">int</span>) {
-00251         <span class="keywordflow">return</span> fetch_and_add(1);
-00252     }
-00253 
-00254     value_type operator--(<span class="keywordtype">int</span>) {
-00255         <span class="keywordflow">return</span> fetch_and_add(__TBB_MINUS_ONE(D));
-00256     }
-00257 };
-00258 
-00259 <span class="preprocessor">#if __TBB_WORDSIZE == 4</span>
-00260 <span class="preprocessor"></span><span class="comment">// Plaforms with 32-bit hardware require special effort for 64-bit loads and stores.</span>
-00261 <span class="preprocessor">#if defined(__INTEL_COMPILER)||!defined(_MSC_VER)||_MSC_VER>=1400</span>
-00262 <span class="preprocessor"></span>
-00263 <span class="keyword">template</span><>
-00264 <span class="keyword">inline</span> atomic_impl<__TBB_LONG_LONG,__TBB_LONG_LONG,char>::operator atomic_impl<__TBB_LONG_LONG,__TBB_LONG_LONG,char>::value_type()<span class="keyword"> const volatile </span>{
-00265     <span class="keywordflow">return</span> __TBB_Load8(&this->my_value);
-00266 }
-00267 
-00268 <span class="keyword">template</span><>
-00269 <span class="keyword">inline</span> atomic_impl<unsigned __TBB_LONG_LONG,unsigned __TBB_LONG_LONG,char>::operator atomic_impl<unsigned __TBB_LONG_LONG,unsigned __TBB_LONG_LONG,char>::value_type()<span class="keyword"> const volatile </span>{
-00270     <span class="keywordflow">return</span> __TBB_Load8(&this->my_value);
-00271 }
-00272 
-00273 <span class="keyword">template</span><>
-00274 <span class="keyword">inline</span> atomic_impl<__TBB_LONG_LONG,__TBB_LONG_LONG,char>::value_type atomic_impl<__TBB_LONG_LONG,__TBB_LONG_LONG,char>::store_with_release( value_type rhs ) {
-00275     __TBB_Store8(&this->my_value,rhs);
-00276     <span class="keywordflow">return</span> rhs;
-00277 }
-00278 
-00279 <span class="keyword">template</span><>
-00280 <span class="keyword">inline</span> atomic_impl<unsigned __TBB_LONG_LONG,unsigned __TBB_LONG_LONG,char>::value_type atomic_impl<unsigned __TBB_LONG_LONG,unsigned __TBB_LONG_LONG,char>::store_with_release( value_type rhs ) {
-00281     __TBB_Store8(&this->my_value,rhs);
-00282     <span class="keywordflow">return</span> rhs;
-00283 }
-00284 
-00285 <span class="preprocessor">#endif </span><span class="comment">/* defined(__INTEL_COMPILER)||!defined(_MSC_VER)||_MSC_VER>=1400 */</span>
-00286 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_WORDSIZE==4 */</span>
-00287 
-00288 } <span class="comment">/* Internal */</span>
-00290 
-00292 
-00294 <span class="keyword">template</span><<span class="keyword">typename</span> T>
-<a name="l00295"></a><a class="code" href="a00191.html">00295</a> <span class="keyword">struct </span><a class="code" href="a00191.html">atomic</a> {
-00296 };
-00297 
-00298 <span class="preprocessor">#define __TBB_DECL_ATOMIC(T) \</span>
-00299 <span class="preprocessor">    template<> struct atomic<T>: internal::atomic_impl<T,T,char> {  \</span>
-00300 <span class="preprocessor">        T operator=( T rhs ) {return store_with_release(rhs);}  \</span>
-00301 <span class="preprocessor">        atomic<T>& operator=( const atomic<T>& rhs ) {store_with_release(rhs); return *this;}  \</span>
-00302 <span class="preprocessor">    };</span>
-00303 <span class="preprocessor"></span>
-00304 <span class="preprocessor">#if defined(__INTEL_COMPILER)||!defined(_MSC_VER)||_MSC_VER>=1400</span>
-00305 <span class="preprocessor"></span>__TBB_DECL_ATOMIC(__TBB_LONG_LONG)
-00306 __TBB_DECL_ATOMIC(<span class="keywordtype">unsigned</span> __TBB_LONG_LONG)
-00307 #else
-00308 <span class="comment">// Some old versions of MVSC cannot correctly compile templates with "long long".</span>
-00309 #endif <span class="comment">/* defined(__INTEL_COMPILER)||!defined(_MSC_VER)||_MSC_VER>=1400 */</span>
-00310 
-00311 __TBB_DECL_ATOMIC(<span class="keywordtype">long</span>)
-00312 __TBB_DECL_ATOMIC(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)
-00313 
-00314 #if defined(_MSC_VER) && __TBB_WORDSIZE==4
-00315 <span class="comment">/* Special version of __TBB_DECL_ATOMIC that avoids gratuitous warnings from cl /Wp64 option. </span>
-00316 <span class="comment">   It is identical to __TBB_DECL_ATOMIC(unsigned) except that it replaces operator=(T) </span>
-00317 <span class="comment">   with an operator=(U) that explicitly converts the U to a T.  Types T and U should be</span>
-00318 <span class="comment">   type synonyms on the platform.  Type U should be the wider variant of T from the</span>
-00319 <span class="comment">   perspective of /Wp64. */</span>
-00320 #define __TBB_DECL_ATOMIC_ALT(T,U) \
-00321     template<> struct <a class="code" href="a00191.html">atomic</a><T>: internal::atomic_impl<T,T,<span class="keywordtype">char</span>> {  \
-00322         T operator=( U rhs ) {<span class="keywordflow">return</span> store_with_release(T(rhs));}  \
-00323         atomic<T>& operator=( <span class="keyword">const</span> atomic<T>& rhs ) {store_with_release(rhs); <span class="keywordflow">return</span> *<span class="keyword">this</span>;}  \
-00324     };
-00325 __TBB_DECL_ATOMIC_ALT(<span class="keywordtype">unsigned</span>,size_t)
-00326 __TBB_DECL_ATOMIC_ALT(<span class="keywordtype">int</span>,ptrdiff_t)
-00327 #else
-00328 __TBB_DECL_ATOMIC(<span class="keywordtype">unsigned</span>)
-00329 __TBB_DECL_ATOMIC(<span class="keywordtype">int</span>)
-00330 #endif <span class="comment">/* defined(_MSC_VER) && __TBB_WORDSIZE==4 */</span>
-00331 
-00332 __TBB_DECL_ATOMIC(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span>)
-00333 __TBB_DECL_ATOMIC(<span class="keywordtype">short</span>)
-00334 __TBB_DECL_ATOMIC(<span class="keywordtype">char</span>)
-00335 __TBB_DECL_ATOMIC(<span class="keywordtype">signed</span> <span class="keywordtype">char</span>)
-00336 __TBB_DECL_ATOMIC(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)
-00337 
-00338 #if !defined(_MSC_VER)||defined(_NATIVE_WCHAR_T_DEFINED) 
-00339 __TBB_DECL_ATOMIC(<span class="keywordtype">wchar_t</span>)
-00340 #endif <span class="comment">/* _MSC_VER||!defined(_NATIVE_WCHAR_T_DEFINED) */</span>
-00341 
-00342 template<typename T> struct atomic<T*>: internal::atomic_impl<T*,ptrdiff_t,T> {
-00343     T* operator=( T* rhs ) {
-00344         <span class="comment">// "this" required here in strict ISO C++ because store_with_release is a dependent name</span>
-00345         <span class="keywordflow">return</span> this->store_with_release(rhs);
-00346     }
-00347     atomic<T*>& operator=( <span class="keyword">const</span> atomic<T*>& rhs ) {this->store_with_release(rhs); <span class="keywordflow">return</span> *<span class="keyword">this</span>;}
-00348     T* operator->()<span class="keyword"> const </span>{
-00349         <span class="keywordflow">return</span> (*this);
-00350     }
-00351 };
-00352 
-00353 <span class="keyword">template</span><>
-00354 <span class="keyword">struct </span>atomic<void*> {
-00355 <span class="keyword">private</span>:
-00356     <span class="keywordtype">void</span>* my_value;
-00357 
-00358 <span class="keyword">public</span>:
-00359     <span class="keyword">typedef</span> <span class="keywordtype">void</span>* value_type;
-00360 
-00361     <span class="keyword">template</span><memory_semantics M>
-00362     value_type compare_and_swap( value_type value, value_type comparand ) {
-00363         <span class="keywordflow">return</span> value_type(internal::atomic_traits<sizeof(value_type),M>::compare_and_swap(&my_value,internal::intptr(value),internal::intptr(comparand)));
-00364     }
-00365 
-00366     value_type compare_and_swap( value_type value, value_type comparand ) {
-00367         <span class="keywordflow">return</span> compare_and_swap<__TBB_full_fence>(value,comparand);
-00368     }
-00369 
-00370     <span class="keyword">template</span><memory_semantics M>
-00371     value_type fetch_and_store( value_type value ) {
-00372         <span class="keywordflow">return</span> value_type(internal::atomic_traits<sizeof(value_type),M>::fetch_and_store(&my_value,internal::intptr(value)));
-00373     }
-00374 
-00375     value_type fetch_and_store( value_type value ) {
-00376         <span class="keywordflow">return</span> fetch_and_store<__TBB_full_fence>(value);
-00377     }
-00378 
-00379     operator value_type()<span class="keyword"> const </span>{
-00380         <span class="keywordflow">return</span> __TBB_load_with_acquire(my_value);
-00381     }
-00382 
-00383     value_type operator=( value_type rhs ) {
-00384         __TBB_store_with_release(my_value,rhs);
-00385         <span class="keywordflow">return</span> rhs;
-00386     }
-00387 
-00388     atomic<void*>& operator=( <span class="keyword">const</span> atomic<void*>& rhs ) {
-00389         __TBB_store_with_release(my_value,rhs);
-00390         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-00391     }
-00392 };
-00393 
-00394 <span class="keyword">template</span><>
-00395 <span class="keyword">struct </span>atomic<bool> {
-00396 <span class="keyword">private</span>:
-00397     <span class="keywordtype">bool</span> my_value;
-00398     <span class="keyword">typedef</span> internal::atomic_word<sizeof(bool)>::word word;
-00399 <span class="keyword">public</span>:
-00400     <span class="keyword">typedef</span> <span class="keywordtype">bool</span> value_type;
-00401     <span class="keyword">template</span><memory_semantics M>
-00402     value_type compare_and_swap( value_type value, value_type comparand ) {
-00403         <span class="keywordflow">return</span> internal::atomic_traits<sizeof(value_type),M>::compare_and_swap(&my_value,word(value),word(comparand))!=0;
-00404     }
-00405 
-00406     value_type compare_and_swap( value_type value, value_type comparand ) {
-00407         <span class="keywordflow">return</span> compare_and_swap<__TBB_full_fence>(value,comparand);
-00408     }
-00409 
-00410     <span class="keyword">template</span><memory_semantics M>
-00411     value_type fetch_and_store( value_type value ) {
-00412         <span class="keywordflow">return</span> internal::atomic_traits<sizeof(value_type),M>::fetch_and_store(&my_value,word(value))!=0;
-00413     }
-00414 
-00415     value_type fetch_and_store( value_type value ) {
-00416         <span class="keywordflow">return</span> fetch_and_store<__TBB_full_fence>(value);
-00417     }
-00418 
-00419     operator value_type()<span class="keyword"> const </span>{
-00420         <span class="keywordflow">return</span> __TBB_load_with_acquire(my_value);
-00421     }
-00422 
-00423     value_type operator=( value_type rhs ) {
-00424         __TBB_store_with_release(my_value,rhs);
-00425         <span class="keywordflow">return</span> rhs;
-00426     }
-00427 
-00428     atomic<bool>& operator=( <span class="keyword">const</span> atomic<bool>& rhs ) {
-00429         __TBB_store_with_release(my_value,rhs);
-00430         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-00431     }
-00432 };
-00433 
-00434 } <span class="comment">// namespace tbb</span>
-00435 
-00436 <span class="preprocessor">#if defined(_MSC_VER) && !defined(__INTEL_COMPILER)</span>
-00437 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (pop)</span>
-00438 <span class="preprocessor"></span><span class="preprocessor">#endif // warnings 4244, 4267 are back</span>
-00439 <span class="preprocessor"></span>
-00440 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_atomic_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00325.html b/doc/html/a00325.html
deleted file mode 100644
index 6891545..0000000
--- a/doc/html/a00325.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>blocked_range.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>blocked_range.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_blocked_range_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_blocked_range_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include "tbb_stddef.h"</span>
-00025 
-00026 <span class="keyword">namespace </span>tbb {
-00027 
-00037 
-00038 
-00039 <span class="keyword">template</span><<span class="keyword">typename</span> Value>
-<a name="l00040"></a><a class="code" href="a00195.html">00040</a> <span class="keyword">class </span><a class="code" href="a00195.html">blocked_range</a> {
-00041 <span class="keyword">public</span>:
-00043 
-<a name="l00045"></a><a class="code" href="a00195.html#w0">00045</a>     <span class="keyword">typedef</span> Value <a class="code" href="a00195.html#w0">const_iterator</a>;
-00046 
-<a name="l00048"></a><a class="code" href="a00195.html#w1">00048</a>     <span class="keyword">typedef</span> std::size_t size_type;
-00049 
-00051 
-<a name="l00052"></a><a class="code" href="a00195.html#a0">00052</a>     <a class="code" href="a00195.html">blocked_range</a>() : my_begin(), my_end() {}
-00053 
-<a name="l00055"></a><a class="code" href="a00195.html#a1">00055</a>     <a class="code" href="a00195.html">blocked_range</a>( Value begin_, Value end_, size_type grainsize_=1 ) : 
-00056         my_end(end_), my_begin(begin_), my_grainsize(grainsize_) 
-00057     {
-00058         __TBB_ASSERT( my_grainsize>0, <span class="stringliteral">"grainsize must be positive"</span> );
-00059     }
-00060 
-<a name="l00062"></a><a class="code" href="a00195.html#a2">00062</a>     const_iterator begin()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_begin;}
-00063 
-<a name="l00065"></a><a class="code" href="a00195.html#a3">00065</a>     const_iterator end()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_end;}
-00066 
-00068 
-<a name="l00069"></a><a class="code" href="a00195.html#a4">00069</a>     size_type size()<span class="keyword"> const </span>{
-00070         __TBB_ASSERT( !(end()<begin()), <span class="stringliteral">"size() unspecified if end()<begin()"</span> );
-00071         <span class="keywordflow">return</span> size_type(my_end-my_begin);
-00072     }
-00073 
-<a name="l00075"></a><a class="code" href="a00195.html#a5">00075</a>     size_type grainsize()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_grainsize;}
-00076 
-00077     <span class="comment">//------------------------------------------------------------------------</span>
-00078     <span class="comment">// Methods that implement Range concept</span>
-00079     <span class="comment">//------------------------------------------------------------------------</span>
-00080 
-<a name="l00082"></a><a class="code" href="a00195.html#a6">00082</a>     <span class="keywordtype">bool</span> empty()<span class="keyword"> const </span>{<span class="keywordflow">return</span> !(my_begin<my_end);}
-00083 
-00085 
-<a name="l00086"></a><a class="code" href="a00195.html#a7">00086</a>     <span class="keywordtype">bool</span> is_divisible()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_grainsize<size();}
-00087 
-00089 
-<a name="l00091"></a><a class="code" href="a00195.html#a8">00091</a>     <a class="code" href="a00195.html">blocked_range</a>( <a class="code" href="a00195.html">blocked_range</a>& r, <a class="code" href="a00254.html">split</a> ) : 
-00092         my_end(r.my_end),
-00093         my_begin(do_split(r)),
-00094         my_grainsize(r.my_grainsize)
-00095     {}
-00096 
-00097 <span class="keyword">private</span>:
-00099     Value my_end;
-00100     Value my_begin;
-00101     size_type my_grainsize;
-00102 
-00104 
-00105     <span class="keyword">static</span> Value do_split( <a class="code" href="a00195.html">blocked_range</a>& r ) {
-00106         __TBB_ASSERT( r.<a class="code" href="a00195.html#a7">is_divisible</a>(), <span class="stringliteral">"cannot split blocked_range that is not divisible"</span> );
-00107         Value middle = r.<a class="code" href="a00195.html#r1">my_begin</a> + (r.<a class="code" href="a00195.html#r0">my_end</a>-r.<a class="code" href="a00195.html#r1">my_begin</a>)/2u;
-00108         r.<a class="code" href="a00195.html#r0">my_end</a> = middle;
-00109         <span class="keywordflow">return</span> middle;
-00110     }
-00111 
-00112     <span class="keyword">template</span><<span class="keyword">typename</span> RowValue, <span class="keyword">typename</span> ColValue>
-00113     <span class="keyword">friend</span> <span class="keyword">class </span>blocked_range2d;
-00114 
-00115     <span class="keyword">template</span><<span class="keyword">typename</span> RowValue, <span class="keyword">typename</span> ColValue, <span class="keyword">typename</span> PageValue>
-00116     <span class="keyword">friend</span> <span class="keyword">class </span>blocked_range3d;
-00117 };
-00118 
-00119 } <span class="comment">// namespace tbb </span>
-00120 
-00121 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_blocked_range_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00326.html b/doc/html/a00326.html
deleted file mode 100644
index b508dd5..0000000
--- a/doc/html/a00326.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>blocked_range2d.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>blocked_range2d.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_blocked_range2d_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_blocked_range2d_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include "tbb_stddef.h"</span>
-00025 <span class="preprocessor">#include "blocked_range.h"</span>
-00026 
-00027 <span class="keyword">namespace </span>tbb {
-00028 
-00030 
-00031 <span class="keyword">template</span><<span class="keyword">typename</span> RowValue, <span class="keyword">typename</span> ColValue=RowValue>
-<a name="l00032"></a><a class="code" href="a00196.html">00032</a> <span class="keyword">class </span><a class="code" href="a00196.html">blocked_range2d</a> {
-00033 <span class="keyword">public</span>:
-<a name="l00035"></a><a class="code" href="a00196.html#w0">00035</a>     <span class="keyword">typedef</span> <a class="code" href="a00195.html">blocked_range<RowValue></a> <a class="code" href="a00195.html">row_range_type</a>;
-00036     <span class="keyword">typedef</span> <a class="code" href="a00195.html">blocked_range<ColValue></a> <a class="code" href="a00195.html">col_range_type</a>;
-00037  
-00038 <span class="keyword">private</span>:
-00039     row_range_type my_rows;
-00040     col_range_type my_cols;
-00041 
-00042 <span class="keyword">public</span>:
-00043 
-00044     <a class="code" href="a00196.html">blocked_range2d</a>( RowValue row_begin, RowValue row_end, <span class="keyword">typename</span> row_range_type::size_type row_grainsize,
-00045                      ColValue col_begin, ColValue col_end, <span class="keyword">typename</span> col_range_type::size_type col_grainsize ) : 
-00046         my_rows(row_begin,row_end,row_grainsize),
-00047         my_cols(col_begin,col_end,col_grainsize)
-00048     {
-00049     }
-00050 
-00051     <a class="code" href="a00196.html">blocked_range2d</a>( RowValue row_begin, RowValue row_end,
-00052                      ColValue col_begin, ColValue col_end ) : 
-00053         my_rows(row_begin,row_end),
-00054         my_cols(col_begin,col_end)
-00055     {
-00056     }
-00057 
-<a name="l00059"></a><a class="code" href="a00196.html#a2">00059</a>     <span class="keywordtype">bool</span> empty()<span class="keyword"> const </span>{
-00060         <span class="comment">// Yes, it is a logical OR here, not AND.</span>
-00061         <span class="keywordflow">return</span> my_rows.<a class="code" href="a00195.html#a6">empty</a>() || my_cols.<a class="code" href="a00195.html#a6">empty</a>();
-00062     }
-00063 
-<a name="l00065"></a><a class="code" href="a00196.html#a3">00065</a>     <span class="keywordtype">bool</span> is_divisible()<span class="keyword"> const </span>{
-00066         <span class="keywordflow">return</span> my_rows.<a class="code" href="a00195.html#a7">is_divisible</a>() || my_cols.<a class="code" href="a00195.html#a7">is_divisible</a>();
-00067     }
-00068 
-00069     <a class="code" href="a00196.html">blocked_range2d</a>( <a class="code" href="a00196.html">blocked_range2d</a>& r, <a class="code" href="a00254.html">split</a> ) : 
-00070         my_rows(r.my_rows),
-00071         my_cols(r.my_cols)
-00072     {
-00073         <span class="keywordflow">if</span>( my_rows.<a class="code" href="a00195.html#a4">size</a>()*double(my_cols.<a class="code" href="a00195.html#a5">grainsize</a>()) < my_cols.<a class="code" href="a00195.html#a4">size</a>()*double(my_rows.<a class="code" href="a00195.html#a5">grainsize</a>()) ) {
-00074             my_cols.<a class="code" href="a00195.html#r1">my_begin</a> = col_range_type::do_split(r.<a class="code" href="a00196.html#r1">my_cols</a>);
-00075         } <span class="keywordflow">else</span> {
-00076             my_rows.<a class="code" href="a00195.html#r1">my_begin</a> = row_range_type::do_split(r.<a class="code" href="a00196.html#r0">my_rows</a>);
-00077         }
-00078     }
-00079 
-<a name="l00081"></a><a class="code" href="a00196.html#a5">00081</a>     <span class="keyword">const</span> row_range_type& rows()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_rows;}
-00082 
-<a name="l00084"></a><a class="code" href="a00196.html#a6">00084</a>     <span class="keyword">const</span> col_range_type& cols()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_cols;}
-00085 };
-00086 
-00087 } <span class="comment">// namespace tbb </span>
-00088 
-00089 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_blocked_range2d_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00327.html b/doc/html/a00327.html
deleted file mode 100644
index 803628d..0000000
--- a/doc/html/a00327.html
+++ /dev/null
@@ -1,117 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>blocked_range3d.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>blocked_range3d.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_blocked_range3d_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_blocked_range3d_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include "tbb_stddef.h"</span>
-00025 <span class="preprocessor">#include "blocked_range.h"</span>
-00026 
-00027 <span class="keyword">namespace </span>tbb {
-00028 
-00030 
-00031 <span class="keyword">template</span><<span class="keyword">typename</span> PageValue, <span class="keyword">typename</span> RowValue=PageValue, <span class="keyword">typename</span> ColValue=RowValue>
-<a name="l00032"></a><a class="code" href="a00197.html">00032</a> <span class="keyword">class </span><a class="code" href="a00197.html">blocked_range3d</a> {
-00033 <span class="keyword">public</span>:
-<a name="l00035"></a><a class="code" href="a00197.html#w0">00035</a>     <span class="keyword">typedef</span> <a class="code" href="a00195.html">blocked_range<PageValue></a> <a class="code" href="a00195.html">page_range_type</a>;
-00036     <span class="keyword">typedef</span> <a class="code" href="a00195.html">blocked_range<RowValue></a>  <a class="code" href="a00195.html">row_range_type</a>;
-00037     <span class="keyword">typedef</span> <a class="code" href="a00195.html">blocked_range<ColValue></a>  <a class="code" href="a00195.html">col_range_type</a>;
-00038  
-00039 <span class="keyword">private</span>:
-00040     page_range_type my_pages;
-00041     row_range_type  my_rows;
-00042     col_range_type  my_cols;
-00043 
-00044 <span class="keyword">public</span>:
-00045 
-00046     <a class="code" href="a00197.html">blocked_range3d</a>( PageValue page_begin, PageValue page_end,
-00047                      RowValue  row_begin,  RowValue row_end,
-00048                      ColValue  col_begin,  ColValue col_end ) : 
-00049         my_pages(page_begin,page_end),
-00050         my_rows(row_begin,row_end),
-00051         my_cols(col_begin,col_end)
-00052     {
-00053     }
-00054 
-00055     <a class="code" href="a00197.html">blocked_range3d</a>( PageValue page_begin, PageValue page_end, <span class="keyword">typename</span> page_range_type::size_type page_grainsize, 
-00056                      RowValue  row_begin,  RowValue row_end,   <span class="keyword">typename</span> row_range_type::size_type row_grainsize,
-00057                      ColValue  col_begin,  ColValue col_end,   <span class="keyword">typename</span> col_range_type::size_type col_grainsize ) :  
-00058         my_pages(page_begin,page_end,page_grainsize),
-00059         my_rows(row_begin,row_end,row_grainsize),
-00060         my_cols(col_begin,col_end,col_grainsize)
-00061     {
-00062     }
-00063 
-<a name="l00065"></a><a class="code" href="a00197.html#a2">00065</a>     <span class="keywordtype">bool</span> empty()<span class="keyword"> const </span>{
-00066         <span class="comment">// Yes, it is a logical OR here, not AND.</span>
-00067         <span class="keywordflow">return</span> my_pages.<a class="code" href="a00195.html#a6">empty</a>() || my_rows.<a class="code" href="a00195.html#a6">empty</a>() || my_cols.<a class="code" href="a00195.html#a6">empty</a>();
-00068     }
-00069 
-<a name="l00071"></a><a class="code" href="a00197.html#a3">00071</a>     <span class="keywordtype">bool</span> is_divisible()<span class="keyword"> const </span>{
-00072         <span class="keywordflow">return</span>  my_pages.<a class="code" href="a00195.html#a7">is_divisible</a>() || my_rows.<a class="code" href="a00195.html#a7">is_divisible</a>() || my_cols.<a class="code" href="a00195.html#a7">is_divisible</a>();
-00073     }
-00074 
-00075     <a class="code" href="a00197.html">blocked_range3d</a>( <a class="code" href="a00197.html">blocked_range3d</a>& r, <a class="code" href="a00254.html">split</a> ) : 
-00076         my_pages(r.my_pages),
-00077         my_rows(r.my_rows),
-00078         my_cols(r.my_cols)
-00079     {
-00080         <span class="keywordflow">if</span>( my_pages.<a class="code" href="a00195.html#a4">size</a>()*double(my_rows.<a class="code" href="a00195.html#a5">grainsize</a>()) < my_rows.<a class="code" href="a00195.html#a4">size</a>()*double(my_pages.<a class="code" href="a00195.html#a5">grainsize</a>()) ) {
-00081             <span class="keywordflow">if</span> ( my_rows.<a class="code" href="a00195.html#a4">size</a>()*double(my_cols.<a class="code" href="a00195.html#a5">grainsize</a>()) < my_cols.<a class="code" href="a00195.html#a4">size</a>()*double(my_rows.<a class="code" href="a00195.html#a5">grainsize</a>()) ) {
-00082                 my_cols.<a class="code" href="a00195.html#r1">my_begin</a> = col_range_type::do_split(r.<a class="code" href="a00197.html#r2">my_cols</a>);
-00083             } <span class="keywordflow">else</span> {
-00084                 my_rows.<a class="code" href="a00195.html#r1">my_begin</a> = row_range_type::do_split(r.<a class="code" href="a00197.html#r1">my_rows</a>);
-00085             }
-00086         } <span class="keywordflow">else</span> {
-00087             <span class="keywordflow">if</span> ( my_pages.<a class="code" href="a00195.html#a4">size</a>()*double(my_cols.<a class="code" href="a00195.html#a5">grainsize</a>()) < my_cols.<a class="code" href="a00195.html#a4">size</a>()*double(my_pages.<a class="code" href="a00195.html#a5">grainsize</a>()) ) {
-00088                 my_cols.<a class="code" href="a00195.html#r1">my_begin</a> = col_range_type::do_split(r.<a class="code" href="a00197.html#r2">my_cols</a>);
-00089             } <span class="keywordflow">else</span> {
-00090                     my_pages.<a class="code" href="a00195.html#r1">my_begin</a> = page_range_type::do_split(r.<a class="code" href="a00197.html#r0">my_pages</a>);
-00091             }
-00092         }
-00093     }
-00094 
-<a name="l00096"></a><a class="code" href="a00197.html#a5">00096</a>     <span class="keyword">const</span> page_range_type& pages()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_pages;}
-00097 
-<a name="l00099"></a><a class="code" href="a00197.html#a6">00099</a>     <span class="keyword">const</span> row_range_type& rows()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_rows;}
-00100 
-<a name="l00102"></a><a class="code" href="a00197.html#a7">00102</a>     <span class="keyword">const</span> col_range_type& cols()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_cols;}
-00103 
-00104 };
-00105 
-00106 } <span class="comment">// namespace tbb </span>
-00107 
-00108 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_blocked_range3d_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00328.html b/doc/html/a00328.html
deleted file mode 100644
index 998f736..0000000
--- a/doc/html/a00328.html
+++ /dev/null
@@ -1,129 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>cache_aligned_allocator.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>cache_aligned_allocator.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_cache_aligned_allocator_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_cache_aligned_allocator_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include <new></span>
-00025 <span class="preprocessor">#include "tbb_stddef.h"</span>
-00026 
-00027 <span class="keyword">namespace </span>tbb {
-00028 
-00030 <span class="keyword">namespace </span>internal {
-00032 
-<a name="l00035"></a><a class="code" href="a00319.html#a1">00035</a>     <span class="keyword">const</span> size_t <a class="code" href="a00319.html#a1">NFS_MaxLineSize</a> = 128;
-00036 
-00038 
-00039     size_t __TBB_EXPORTED_FUNC <a class="code" href="a00319.html#a31">NFS_GetLineSize</a>();
-00040 
-00042 
-00043     <span class="keywordtype">void</span>* __TBB_EXPORTED_FUNC <a class="code" href="a00319.html#a32">NFS_Allocate</a>( size_t n_element, size_t element_size, <span class="keywordtype">void</span>* hint );
-00044 
-00046 
-00048     <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC <a class="code" href="a00319.html#a33">NFS_Free</a>( <span class="keywordtype">void</span>* );
-00049 }
-00051 
-00052 <span class="preprocessor">#if _MSC_VER && !defined(__INTEL_COMPILER)</span>
-00053 <span class="preprocessor"></span>    <span class="comment">// Workaround for erroneous "unreferenced parameter" warning in method destroy.</span>
-00054 <span class="preprocessor">    #pragma warning (push)</span>
-00055 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (disable: 4100)</span>
-00056 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00057 <span class="preprocessor"></span>
-00059 
-00062 <span class="keyword">template</span><<span class="keyword">typename</span> T>
-<a name="l00063"></a><a class="code" href="a00198.html">00063</a> <span class="keyword">class </span><a class="code" href="a00198.html">cache_aligned_allocator</a> {
-00064 <span class="keyword">public</span>:
-00065     <span class="keyword">typedef</span> T* pointer;
-00066     <span class="keyword">typedef</span> <span class="keyword">const</span> T* const_pointer;
-00067     <span class="keyword">typedef</span> T& reference;
-00068     <span class="keyword">typedef</span> <span class="keyword">const</span> T& const_reference;
-00069     <span class="keyword">typedef</span> T value_type;
-00070     <span class="keyword">typedef</span> size_t size_type;
-00071     <span class="keyword">typedef</span> ptrdiff_t difference_type;
-00072     <span class="keyword">template</span><<span class="keyword">typename</span> U> <span class="keyword">struct </span>rebind {
-00073         <span class="keyword">typedef</span> <a class="code" href="a00198.html">cache_aligned_allocator<U></a> other;
-00074     };
-00075 
-00076     <a class="code" href="a00198.html">cache_aligned_allocator</a>() <span class="keywordflow">throw</span>() {}
-00077     <a class="code" href="a00198.html">cache_aligned_allocator</a>( <span class="keyword">const</span> <a class="code" href="a00198.html">cache_aligned_allocator</a>& ) <span class="keywordflow">throw</span>() {}
-00078     <span class="keyword">template</span><<span class="keyword">typename</span> U> <a class="code" href="a00198.html">cache_aligned_allocator</a>(<span class="keyword">const</span> <a class="code" href="a00198.html">cache_aligned_allocator<U></a>&) <span class="keywordflow">throw</span>() {}
-00079 
-00080     pointer address(reference x)<span class="keyword"> const </span>{<span class="keywordflow">return</span> &x;}
-00081     const_pointer address(const_reference x)<span class="keyword"> const </span>{<span class="keywordflow">return</span> &x;}
-00082     
-<a name="l00084"></a><a class="code" href="a00198.html#a5">00084</a>     pointer allocate( size_type n, <span class="keyword">const</span> <span class="keywordtype">void</span>* hint=0 ) {
-00085         <span class="comment">// The "hint" argument is always ignored in NFS_Allocate thus const_cast shouldn't hurt</span>
-00086         <span class="keywordflow">return</span> pointer(internal::NFS_Allocate( n, <span class="keyword">sizeof</span>(T), const_cast<void*>(hint) ));
-00087     }
-00088 
-<a name="l00090"></a><a class="code" href="a00198.html#a6">00090</a>     <span class="keywordtype">void</span> deallocate( pointer p, size_type ) {
-00091         internal::NFS_Free(p);
-00092     }
-00093 
-<a name="l00095"></a><a class="code" href="a00198.html#a7">00095</a>     size_type max_size() const throw() {
-00096         <span class="keywordflow">return</span> (~size_t(0)-internal::NFS_MaxLineSize)/<span class="keyword">sizeof</span>(T);
-00097     }
-00098 
-<a name="l00100"></a><a class="code" href="a00198.html#a8">00100</a>     <span class="keywordtype">void</span> construct( pointer p, <span class="keyword">const</span> T& value ) {<span class="keyword">new</span>(static_cast<void*>(p)) T(value);}
-00101 
-<a name="l00103"></a><a class="code" href="a00198.html#a9">00103</a>     <span class="keywordtype">void</span> destroy( pointer p ) {p->~T();}
-00104 };
-00105 
-00106 <span class="preprocessor">#if _MSC_VER && !defined(__INTEL_COMPILER)</span>
-00107 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (pop)</span>
-00108 <span class="preprocessor"></span><span class="preprocessor">#endif // warning 4100 is back</span>
-00109 <span class="preprocessor"></span>
-00111 
-00112 <span class="keyword">template</span><> 
-<a name="l00113"></a><a class="code" href="a00199.html">00113</a> <span class="keyword">class </span><a class="code" href="a00198.html">cache_aligned_allocator</a><void> {
-00114 <span class="keyword">public</span>:
-00115     <span class="keyword">typedef</span> <span class="keywordtype">void</span>* pointer;
-00116     <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="keywordtype">void</span>* const_pointer;
-00117     <span class="keyword">typedef</span> <span class="keywordtype">void</span> value_type;
-00118     <span class="keyword">template</span><<span class="keyword">typename</span> U> <span class="keyword">struct </span>rebind {
-00119         <span class="keyword">typedef</span> <a class="code" href="a00198.html">cache_aligned_allocator<U></a> other;
-00120     };
-00121 };
-00122 
-00123 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00124 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator==( <span class="keyword">const</span> <a class="code" href="a00198.html">cache_aligned_allocator<T></a>&, <span class="keyword">const</span> <a class="code" href="a00198.html">cache_aligned_allocator<U></a>& ) {<span class="keywordflow">return</span> <span class="keyword">true</span>;}
-00125 
-00126 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00127 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator!=( <span class="keyword">const</span> cache_aligned_allocator<T>&, <span class="keyword">const</span> cache_aligned_allocator<U>& ) {<span class="keywordflow">return</span> <span class="keyword">false</span>;}
-00128 
-00129 } <span class="comment">// namespace tbb</span>
-00130 
-00131 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_cache_aligned_allocator_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00329.html b/doc/html/a00329.html
deleted file mode 100644
index 0f1b4d4..0000000
--- a/doc/html/a00329.html
+++ /dev/null
@@ -1,931 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>concurrent_hash_map.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>concurrent_hash_map.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_concurrent_hash_map_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_concurrent_hash_map_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include <stdexcept></span>
-00025 <span class="preprocessor">#include <iterator></span>
-00026 <span class="preprocessor">#include <utility></span>      <span class="comment">// Need std::pair</span>
-00027 <span class="preprocessor">#include <cstring></span>      <span class="comment">// Need std::memset</span>
-00028 <span class="preprocessor">#include <string></span>
-00029 <span class="preprocessor">#include "tbb_stddef.h"</span>
-00030 <span class="preprocessor">#include "cache_aligned_allocator.h"</span>
-00031 <span class="preprocessor">#include "tbb_allocator.h"</span>
-00032 <span class="preprocessor">#include "spin_rw_mutex.h"</span>
-00033 <span class="preprocessor">#include "atomic.h"</span>
-00034 <span class="preprocessor">#if TBB_USE_PERFORMANCE_WARNINGS</span>
-00035 <span class="preprocessor"></span><span class="preprocessor">#include <typeinfo></span>
-00036 <span class="preprocessor">#endif</span>
-00037 <span class="preprocessor"></span>
-00038 <span class="keyword">namespace </span>tbb {
-00039 
-00040 <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">struct </span>tbb_hash_compare;
-00041 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare = tbb_hash_compare<Key>, <span class="keyword">typename</span> A = tbb_allocator<std::pair<Key, T> > >
-00042 <span class="keyword">class </span>concurrent_hash_map;
-00043 
-00045 <span class="keyword">namespace </span>internal {
-<a name="l00047"></a><a class="code" href="a00319.html#a2">00047</a>     <span class="keyword">typedef</span> size_t hashcode_t;
-<a name="l00049"></a><a class="code" href="a00222.html">00049</a>     <span class="keyword">class </span><a class="code" href="a00222.html">hash_map_base</a> {
-00050     <span class="keyword">public</span>:
-00051         <span class="comment">// Mutex types for each layer of the container</span>
-00052         <span class="keyword">typedef</span> <a class="code" href="a00252.html">spin_rw_mutex</a> <a class="code" href="a00252.html">node_mutex_t</a>;
-00053         <span class="keyword">typedef</span> <a class="code" href="a00252.html">spin_rw_mutex</a> <a class="code" href="a00252.html">chain_mutex_t</a>;
-00054         <span class="keyword">typedef</span> <a class="code" href="a00252.html">spin_rw_mutex</a> <a class="code" href="a00252.html">segment_mutex_t</a>;
-00055 
-<a name="l00057"></a><a class="code" href="a00222.html#w3">00057</a>         <span class="keyword">typedef</span> <a class="code" href="a00319.html#a2">internal::hashcode_t</a> hashcode_t;
-<a name="l00059"></a><a class="code" href="a00222.html#s0">00059</a>         <span class="keyword">static</span> <span class="keyword">const</span> size_t n_segment_bits = 6;
-<a name="l00061"></a><a class="code" href="a00222.html#s1">00061</a>         <span class="keyword">static</span> <span class="keyword">const</span> size_t n_segment = size_t(1)<<n_segment_bits; 
-<a name="l00063"></a><a class="code" href="a00222.html#s2">00063</a>         <span class="keyword">static</span> <span class="keyword">const</span> size_t max_physical_size = size_t(1)<<(8*<span class="keyword">sizeof</span>(hashcode_t)-n_segment_bits);
-00064     };
-00065 
-00066     <span class="keyword">template</span><<span class="keyword">typename</span> Iterator>
-00067     <span class="keyword">class </span><a class="code" href="a00224.html">hash_map_range</a>;
-00068 
-00069     <span class="keyword">struct </span>hash_map_segment_base {
-00071         <a class="code" href="a00252.html">hash_map_base::segment_mutex_t</a> my_mutex;
-00072 
-00073         <span class="comment">// Number of nodes</span>
-00074         <a class="code" href="a00191.html">atomic<size_t></a> my_logical_size;
-00075 
-00076         <span class="comment">// Size of chains</span>
-00078 <span class="comment"></span>        size_t my_physical_size;
-00079 
-00081 
-00082         <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD internal_grow_predicate() <span class="keyword">const</span>;
-00083     };
-00084 
-00086 
-00088     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> Value>
-<a name="l00089"></a><a class="code" href="a00223.html">00089</a>     <span class="keyword">class </span><a class="code" href="a00223.html">hash_map_iterator</a>
-00090         : <span class="keyword">public</span> std::iterator<std::forward_iterator_tag,Value>
-00091     {
-00092         <span class="keyword">typedef</span> <span class="keyword">typename</span> Container::node node;
-00093         <span class="keyword">typedef</span> <span class="keyword">typename</span> Container::chain chain;
-00094         <span class="keyword">typedef</span> <span class="keyword">typename</span> Container::segment segment;
-00095 
-00097         Container* my_table;
-00098 
-00100         node* my_node;
-00101 
-00103         size_t my_array_index;
-00104 
-00106         size_t my_segment_index;
-00107 
-00108         <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00109         <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator==( <span class="keyword">const</span> <a class="code" href="a00223.html">hash_map_iterator<C,T></a>& i, <span class="keyword">const</span> <a class="code" href="a00223.html">hash_map_iterator<C,U></a>& j );
-00110 
-00111         <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00112         <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator!=( <span class="keyword">const</span> <a class="code" href="a00223.html">hash_map_iterator<C,T></a>& i, <span class="keyword">const</span> <a class="code" href="a00223.html">hash_map_iterator<C,U></a>& j );
-00113 
-00114         <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00115         <span class="keyword">friend</span> ptrdiff_t operator-( <span class="keyword">const</span> <a class="code" href="a00223.html">hash_map_iterator<C,T></a>& i, <span class="keyword">const</span> <a class="code" href="a00223.html">hash_map_iterator<C,U></a>& j );
-00116     
-00117         <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> U>
-00118         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00223.html">internal::hash_map_iterator</a>;
-00119 
-00120         <span class="keyword">template</span><<span class="keyword">typename</span> I>
-00121         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00224.html">internal::hash_map_range</a>;
-00122 
-00123         <span class="keywordtype">void</span> advance_to_next_node() {
-00124             size_t i = my_array_index+1;
-00125             <span class="keywordflow">do</span> {
-00126                 segment &s = my_table->my_segment[my_segment_index];
-00127                 <span class="keywordflow">while</span>( i<s.my_physical_size ) {
-00128                     my_node = s.my_array[i].node_list;
-00129                     <span class="keywordflow">if</span>( my_node ) <span class="keywordflow">goto</span> done;
-00130                     ++i;
-00131                 }
-00132                 i = 0;
-00133             } <span class="keywordflow">while</span>( ++my_segment_index<my_table->n_segment );
-00134         done:
-00135             my_array_index = i;
-00136         }
-00137 <span class="preprocessor">#if !defined(_MSC_VER) || defined(__INTEL_COMPILER)</span>
-00138 <span class="preprocessor"></span>        <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
-00139         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00201.html">tbb::concurrent_hash_map</a>;
-00140 <span class="preprocessor">#else</span>
-00141 <span class="preprocessor"></span>    <span class="keyword">public</span>: <span class="comment">// workaround</span>
-00142 <span class="preprocessor">#endif</span>
-00143 <span class="preprocessor"></span>        <a class="code" href="a00223.html">hash_map_iterator</a>( <span class="keyword">const</span> Container& table, size_t segment_index, size_t array_index=0, node* b=NULL );
-00144     <span class="keyword">public</span>:
-<a name="l00146"></a><a class="code" href="a00223.html#a1">00146</a>         <a class="code" href="a00223.html">hash_map_iterator</a>() {}
-00147         <a class="code" href="a00223.html">hash_map_iterator</a>( <span class="keyword">const</span> <a class="code" href="a00223.html">hash_map_iterator<Container,typename Container::value_type></a>& other ) :
-00148             my_table(other.my_table),
-00149             my_node(other.my_node),
-00150             my_array_index(other.my_array_index),
-00151             my_segment_index(other.my_segment_index)
-00152         {}
-00153         Value& operator*()<span class="keyword"> const </span>{
-00154             __TBB_ASSERT( my_node, <span class="stringliteral">"iterator uninitialized or at end of container?"</span> );
-00155             <span class="keywordflow">return</span> my_node->item;
-00156         }
-00157         Value* operator->()<span class="keyword"> const </span>{<span class="keywordflow">return</span> &operator*();}
-00158         hash_map_iterator& operator++();
-00159         
-<a name="l00161"></a><a class="code" href="a00223.html#a6">00161</a>         Value* operator++(<span class="keywordtype">int</span>) {
-00162             Value* result = &operator*();
-00163             operator++();
-00164             <span class="keywordflow">return</span> result;
-00165         }
-00166     };
-00167 
-00168     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> Value>
-00169     hash_map_iterator<Container,Value>::hash_map_iterator( <span class="keyword">const</span> Container& table, size_t segment_index, size_t array_index, node* b ) : 
-00170         my_table(const_cast<Container*>(&table)),
-00171         my_node(b),
-00172         my_array_index(array_index),
-00173         my_segment_index(segment_index)
-00174     {
-00175         <span class="keywordflow">if</span>( segment_index<my_table->n_segment ) {
-00176             <span class="keywordflow">if</span>( !my_node ) {
-00177                 segment &s = my_table->my_segment[segment_index];
-00178                 chain* first_chain = s.my_array;
-00179                 <span class="keywordflow">if</span>( first_chain && my_array_index < s.my_physical_size)
-00180                     my_node = first_chain[my_array_index].node_list;
-00181             }
-00182             <span class="keywordflow">if</span>( !my_node ) advance_to_next_node();
-00183         }
-00184     }
-00185 
-00186     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> Value>
-00187     hash_map_iterator<Container,Value>& hash_map_iterator<Container,Value>::operator++() {
-00188         my_node=my_node->next;
-00189         <span class="keywordflow">if</span>( !my_node ) advance_to_next_node();
-00190         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-00191     }
-00192 
-00193     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00194     <span class="keywordtype">bool</span> operator==( <span class="keyword">const</span> hash_map_iterator<Container,T>& i, <span class="keyword">const</span> hash_map_iterator<Container,U>& j ) {
-00195         <span class="keywordflow">return</span> i.<a class="code" href="a00223.html#r1">my_node</a>==j.<a class="code" href="a00223.html#r1">my_node</a>;
-00196     }
-00197 
-00198     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00199     <span class="keywordtype">bool</span> operator!=( <span class="keyword">const</span> hash_map_iterator<Container,T>& i, <span class="keyword">const</span> hash_map_iterator<Container,U>& j ) {
-00200         <span class="keywordflow">return</span> i.<a class="code" href="a00223.html#r1">my_node</a>!=j.<a class="code" href="a00223.html#r1">my_node</a>;
-00201     }
-00202 
-00204 
-00205     <span class="keyword">template</span><<span class="keyword">typename</span> Iterator>
-<a name="l00206"></a><a class="code" href="a00224.html">00206</a>     <span class="keyword">class </span><a class="code" href="a00224.html">hash_map_range</a> {
-00207     <span class="keyword">private</span>:
-00208         Iterator my_begin;
-00209         Iterator my_end;
-00210         <span class="keyword">mutable</span> Iterator my_midpoint;
-00211         size_t my_grainsize;
-00213         <span class="keywordtype">void</span> set_midpoint() <span class="keyword">const</span>;
-00214         <span class="keyword">template</span><<span class="keyword">typename</span> U> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00224.html">hash_map_range</a>;
-00215     <span class="keyword">public</span>:
-<a name="l00217"></a><a class="code" href="a00224.html#w0">00217</a>         <span class="keyword">typedef</span> std::size_t size_type;
-00218         <span class="keyword">typedef</span> <span class="keyword">typename</span> Iterator::value_type value_type;
-00219         <span class="keyword">typedef</span> <span class="keyword">typename</span> Iterator::reference reference;
-00220         <span class="keyword">typedef</span> <span class="keyword">typename</span> Iterator::difference_type difference_type;
-00221         <span class="keyword">typedef</span> Iterator iterator;
-00222 
-<a name="l00224"></a><a class="code" href="a00224.html#a0">00224</a>         <span class="keywordtype">bool</span> empty()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_begin==my_end;}
-00225 
-<a name="l00227"></a><a class="code" href="a00224.html#a1">00227</a>         <span class="keywordtype">bool</span> is_divisible()<span class="keyword"> const </span>{
-00228             <span class="keywordflow">return</span> my_midpoint!=my_end;
-00229         }
-<a name="l00231"></a><a class="code" href="a00224.html#a2">00231</a>         <a class="code" href="a00224.html">hash_map_range</a>( <a class="code" href="a00224.html">hash_map_range</a>& r, <a class="code" href="a00254.html">split</a> ) : 
-00232             my_end(r.my_end),
-00233             my_grainsize(r.my_grainsize)
-00234         {
-00235             r.<a class="code" href="a00224.html#r1">my_end</a> = my_begin = r.<a class="code" href="a00224.html#r2">my_midpoint</a>;
-00236             __TBB_ASSERT( my_begin!=my_end, <span class="stringliteral">"Splitting despite the range is not divisible"</span> );
-00237             __TBB_ASSERT( r.<a class="code" href="a00224.html#r0">my_begin</a>!=r.<a class="code" href="a00224.html#r1">my_end</a>, <span class="stringliteral">"Splitting despite the range is not divisible"</span> );
-00238             set_midpoint();
-00239             r.<a class="code" href="a00224.html#d0">set_midpoint</a>();
-00240         }
-00242         <span class="keyword">template</span><<span class="keyword">typename</span> U>
-<a name="l00243"></a><a class="code" href="a00224.html#a3">00243</a>         <a class="code" href="a00224.html">hash_map_range</a>( <a class="code" href="a00224.html">hash_map_range<U></a>& r) : 
-00244             my_begin(r.my_begin),
-00245             my_end(r.my_end),
-00246             my_midpoint(r.my_midpoint),
-00247             my_grainsize(r.my_grainsize)
-00248         {}
-<a name="l00250"></a><a class="code" href="a00224.html#a4">00250</a>         <a class="code" href="a00224.html">hash_map_range</a>( <span class="keyword">const</span> Iterator& begin_, <span class="keyword">const</span> Iterator& end_, size_type grainsize = 1 ) : 
-00251             my_begin(begin_), 
-00252             my_end(end_), 
-00253             my_grainsize(grainsize) 
-00254         {
-00255             set_midpoint();
-00256             __TBB_ASSERT( grainsize>0, <span class="stringliteral">"grainsize must be positive"</span> );
-00257         }
-00258         <span class="keyword">const</span> Iterator& begin()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_begin;}
-00259         <span class="keyword">const</span> Iterator& end()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_end;}
-<a name="l00261"></a><a class="code" href="a00224.html#a7">00261</a>         size_type grainsize()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_grainsize;}
-00262     };
-00263 
-00264     <span class="keyword">template</span><<span class="keyword">typename</span> Iterator>
-00265     <span class="keywordtype">void</span> hash_map_range<Iterator>::set_midpoint()<span class="keyword"> const </span>{
-00266         size_t n = my_end.my_segment_index - my_begin.my_segment_index;
-00267         <span class="keywordflow">if</span>( n > 1 || (n == 1 && my_end.my_array_index > my_grainsize/2) ) {
-00268             <span class="comment">// Split by groups of segments</span>
-00269             my_midpoint = Iterator(*my_begin.my_table,(my_end.my_segment_index+my_begin.my_segment_index+1)/2u);
-00270         } <span class="keywordflow">else</span> {
-00271             <span class="comment">// Split by groups of nodes</span>
-00272             size_t m = my_end.my_array_index-my_begin.my_array_index;
-00273             <span class="keywordflow">if</span>( n ) m += my_begin.my_table->my_segment[my_begin.my_segment_index].my_physical_size;
-00274             <span class="keywordflow">if</span>( m > my_grainsize ) {
-00275                 my_midpoint = Iterator(*my_begin.my_table,my_begin.my_segment_index,my_begin.my_array_index + m/2u);
-00276             } <span class="keywordflow">else</span> {
-00277                 my_midpoint = my_end;
-00278             }
-00279         }
-00280         __TBB_ASSERT( my_begin.my_segment_index < my_midpoint.my_segment_index
-00281             || (my_begin.my_segment_index == my_midpoint.my_segment_index
-00282             && my_begin.my_array_index <= my_midpoint.my_array_index),
-00283             <span class="stringliteral">"my_begin is after my_midpoint"</span> );
-00284         __TBB_ASSERT( my_midpoint.my_segment_index < my_end.my_segment_index
-00285             || (my_midpoint.my_segment_index == my_end.my_segment_index
-00286             && my_midpoint.my_array_index <= my_end.my_array_index),
-00287             <span class="stringliteral">"my_midpoint is after my_end"</span> );
-00288         __TBB_ASSERT( my_begin != my_midpoint || my_begin == my_end,
-00289             <span class="stringliteral">"[my_begin, my_midpoint) range should not be empty"</span> );
-00290     }
-<a name="l00292"></a><a class="code" href="a00319.html#a3">00292</a>     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="a00319.html#a2">hashcode_t</a> <a class="code" href="a00319.html#a3">hash_multiplier</a> = <span class="keyword">sizeof</span>(hashcode_t)==4? 2654435769U : 11400714819323198485ULL;
-00294     <span class="keyword">template</span><<span class="keyword">typename</span> T>
-<a name="l00295"></a><a class="code" href="a00319.html#a36">00295</a>     <span class="keyword">inline</span> <span class="keyword">static</span> <a class="code" href="a00319.html#a2">hashcode_t</a> <a class="code" href="a00319.html#a36">hasher</a>( <span class="keyword">const</span> T& t ) {
-00296         <span class="keywordflow">return</span> static_cast<hashcode_t>( t ) * hash_multiplier;
-00297     }
-00298     <span class="keyword">template</span><<span class="keyword">typename</span> P>
-00299     <span class="keyword">inline</span> <span class="keyword">static</span> hashcode_t <a class="code" href="a00319.html#a36">hasher</a>( P* ptr ) {
-00300         hashcode_t <span class="keyword">const</span> h = reinterpret_cast<hashcode_t>( ptr );
-00301         <span class="keywordflow">return</span> (h >> 3) ^ h;
-00302     }
-00303     <span class="keyword">template</span><<span class="keyword">typename</span> E, <span class="keyword">typename</span> S, <span class="keyword">typename</span> A>
-00304     <span class="keyword">inline</span> <span class="keyword">static</span> hashcode_t <a class="code" href="a00319.html#a36">hasher</a>( <span class="keyword">const</span> std::basic_string<E,S,A>& s ) {
-00305         hashcode_t h = 0;
-00306         <span class="keywordflow">for</span>( <span class="keyword">const</span> E* c = s.c_str(); *c; c++ )
-00307             h = static_cast<hashcode_t>(*c) ^ (h * hash_multiplier);
-00308         <span class="keywordflow">return</span> h;
-00309     }
-00310     <span class="keyword">template</span><<span class="keyword">typename</span> F, <span class="keyword">typename</span> S>
-00311     <span class="keyword">inline</span> <span class="keyword">static</span> <a class="code" href="a00319.html#a2">hashcode_t</a> <a class="code" href="a00319.html#a36">hasher</a>( <span class="keyword">const</span> std::pair<F,S>& p ) {
-00312         <span class="keywordflow">return</span> <a class="code" href="a00319.html#a36">hasher</a>(p.first) ^ <a class="code" href="a00319.html#a36">hasher</a>(p.second);
-00313     }
-00314 } <span class="comment">// namespace internal</span>
-00316 <span class="comment"></span>
-00318 <span class="keyword">template</span><<span class="keyword">typename</span> T>
-<a name="l00319"></a><a class="code" href="a00269.html">00319</a> <span class="keyword">struct </span><a class="code" href="a00269.html">tbb_hash_compare</a> {
-00320     <span class="keyword">static</span> <a class="code" href="a00319.html#a2">internal::hashcode_t</a> hash( <span class="keyword">const</span> T& t ) { <span class="keywordflow">return</span> internal::hasher(t); }
-00321     <span class="keyword">static</span> <span class="keywordtype">bool</span> equal( <span class="keyword">const</span> T& a, <span class="keyword">const</span> T& b ) { <span class="keywordflow">return</span> a == b; }
-00322 };
-00323 
-00325 
-00350 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
-<a name="l00351"></a><a class="code" href="a00201.html">00351</a> <span class="keyword">class </span><a class="code" href="a00201.html">concurrent_hash_map</a> : <span class="keyword">protected</span> internal::hash_map_base {
-00352     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> Value>
-00353     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00223.html">internal::hash_map_iterator</a>;
-00354 
-00355     <span class="keyword">template</span><<span class="keyword">typename</span> I>
-00356     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00224.html">internal::hash_map_range</a>;
-00357 
-00358     <span class="keyword">struct </span>node;
-00359     <span class="keyword">friend</span> <span class="keyword">struct </span>node;
-00360     <span class="keyword">typedef</span> <span class="keyword">typename</span> A::template rebind<node>::other node_allocator_type;
-00361 
-00362 <span class="keyword">public</span>:
-00363     <span class="keyword">class </span><a class="code" href="a00203.html">const_accessor</a>;
-00364     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00203.html">const_accessor</a>;
-00365     <span class="keyword">class </span><a class="code" href="a00202.html">accessor</a>;
-00366 
-00367     <span class="keyword">typedef</span> Key key_type;
-00368     <span class="keyword">typedef</span> T mapped_type;
-00369     <span class="keyword">typedef</span> std::pair<const Key,T> value_type;
-00370     <span class="keyword">typedef</span> size_t size_type;
-00371     <span class="keyword">typedef</span> ptrdiff_t difference_type;
-00372     <span class="keyword">typedef</span> value_type *pointer;
-00373     <span class="keyword">typedef</span> <span class="keyword">const</span> value_type *const_pointer;
-00374     <span class="keyword">typedef</span> value_type &reference;
-00375     <span class="keyword">typedef</span> <span class="keyword">const</span> value_type &const_reference;
-00376     <span class="keyword">typedef</span> <a class="code" href="a00223.html">internal::hash_map_iterator<concurrent_hash_map,value_type></a> <a class="code" href="a00223.html">iterator</a>;
-00377     <span class="keyword">typedef</span> <a class="code" href="a00223.html">internal::hash_map_iterator<concurrent_hash_map,const value_type></a> <a class="code" href="a00223.html">const_iterator</a>;
-00378     <span class="keyword">typedef</span> <a class="code" href="a00224.html">internal::hash_map_range<iterator></a> <a class="code" href="a00224.html">range_type</a>;
-00379     <span class="keyword">typedef</span> <a class="code" href="a00224.html">internal::hash_map_range<const_iterator></a> <a class="code" href="a00224.html">const_range_type</a>;
-00380     <span class="keyword">typedef</span> A allocator_type;
-00381 
-<a name="l00383"></a><a class="code" href="a00203.html">00383</a>     <span class="keyword">class </span><a class="code" href="a00203.html">const_accessor</a> {
-00384         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00201.html">concurrent_hash_map</a><Key,T,HashCompare,A>;
-00385         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00202.html">accessor</a>;
-00386         <span class="keywordtype">void</span> operator=( <span class="keyword">const</span> <a class="code" href="a00202.html">accessor</a>& ) <span class="keyword">const</span>; <span class="comment">// Deny access</span>
-00387         <a class="code" href="a00203.html">const_accessor</a>( <span class="keyword">const</span> <a class="code" href="a00202.html">accessor</a>& );       <span class="comment">// Deny access</span>
-00388     <span class="keyword">public</span>:
-<a name="l00390"></a><a class="code" href="a00203.html#w0">00390</a>         <span class="keyword">typedef</span> <span class="keyword">const</span> std::pair<const Key,T> value_type;
-00391 
-<a name="l00393"></a><a class="code" href="a00203.html#a0">00393</a>         <span class="keywordtype">bool</span> empty()<span class="keyword"> const </span>{<span class="keywordflow">return</span> !my_node;}
-00394 
-<a name="l00396"></a><a class="code" href="a00203.html#a1">00396</a>         <span class="keywordtype">void</span> <a class="code" href="a00318.html#a57a2">release</a>() {
-00397             <span class="keywordflow">if</span>( my_node ) {
-00398                 my_lock.release();
-00399                 my_node = NULL;
-00400             }
-00401         }
-00402 
-<a name="l00404"></a><a class="code" href="a00203.html#a2">00404</a>         const_reference operator*()<span class="keyword"> const </span>{
-00405             __TBB_ASSERT( my_node, <span class="stringliteral">"attempt to dereference empty accessor"</span> );
-00406             <span class="keywordflow">return</span> my_node->item;
-00407         }
-00408 
-<a name="l00410"></a><a class="code" href="a00203.html#a3">00410</a>         const_pointer operator->()<span class="keyword"> const </span>{
-00411             <span class="keywordflow">return</span> &operator*();
-00412         }
-00413 
-<a name="l00415"></a><a class="code" href="a00203.html#a4">00415</a>         <a class="code" href="a00203.html">const_accessor</a>() : my_node(NULL) {}
-00416 
-<a name="l00418"></a><a class="code" href="a00203.html#a5">00418</a>         ~<a class="code" href="a00203.html">const_accessor</a>() {
-00419             my_node = NULL; <span class="comment">// my_lock.release() is called in scoped_lock destructor</span>
-00420         }
-00421     <span class="keyword">private</span>:
-00422         node* my_node;
-00423         node_mutex_t::scoped_lock my_lock;
-00424         hashcode_t my_hash;
-00425     };
-00426 
-<a name="l00428"></a><a class="code" href="a00202.html">00428</a>     <span class="keyword">class </span><a class="code" href="a00202.html">accessor</a>: <span class="keyword">public</span> <a class="code" href="a00203.html">const_accessor</a> {
-00429     <span class="keyword">public</span>:
-<a name="l00431"></a><a class="code" href="a00202.html#w0">00431</a>         <span class="keyword">typedef</span> std::pair<const Key,T> value_type;
-00432 
-<a name="l00434"></a><a class="code" href="a00202.html#a0">00434</a>         reference operator*()<span class="keyword"> const </span>{
-00435             __TBB_ASSERT( this->my_node, <span class="stringliteral">"attempt to dereference empty accessor"</span> );
-00436             <span class="keywordflow">return</span> this->my_node->item;
-00437         }
-00438 
-<a name="l00440"></a><a class="code" href="a00202.html#a1">00440</a>         pointer operator->()<span class="keyword"> const </span>{
-00441             <span class="keywordflow">return</span> &operator*();
-00442         }       
-00443     };
-00444 
-<a name="l00446"></a><a class="code" href="a00201.html#a0">00446</a>     <a class="code" href="a00201.html">concurrent_hash_map</a>(<span class="keyword">const</span> allocator_type &a = allocator_type())
-00447         : my_allocator(a)
-00448 
-00449     {
-00450         initialize();
-00451     }
-00452 
-<a name="l00454"></a><a class="code" href="a00201.html#a1">00454</a>     <a class="code" href="a00201.html">concurrent_hash_map</a>( <span class="keyword">const</span> <a class="code" href="a00201.html">concurrent_hash_map</a>& table, <span class="keyword">const</span> allocator_type &a = allocator_type())
-00455         : my_allocator(a)
-00456     {
-00457         initialize();
-00458         internal_copy(table);
-00459     }
-00460 
-00462     <span class="keyword">template</span><<span class="keyword">typename</span> I>
-<a name="l00463"></a><a class="code" href="a00201.html#a2">00463</a>     <a class="code" href="a00201.html">concurrent_hash_map</a>(I first, I last, <span class="keyword">const</span> allocator_type &a = allocator_type())
-00464         : my_allocator(a)
-00465     {
-00466         initialize();
-00467         internal_copy(first, last);
-00468     }
-00469 
-<a name="l00471"></a><a class="code" href="a00201.html#a3">00471</a>     <a class="code" href="a00201.html">concurrent_hash_map</a>& operator=( <span class="keyword">const</span> <a class="code" href="a00201.html">concurrent_hash_map</a>& table ) {
-00472         <span class="keywordflow">if</span>( <span class="keyword">this</span>!=&table ) {
-00473             clear();
-00474             internal_copy(table);
-00475         } 
-00476         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-00477     }
-00478 
-00479 
-00481     <span class="keywordtype">void</span> clear();
-00482 
-00484     ~<a class="code" href="a00201.html">concurrent_hash_map</a>();
-00485 
-00486     <span class="comment">//------------------------------------------------------------------------</span>
-00487     <span class="comment">// Parallel algorithm support</span>
-00488     <span class="comment">//------------------------------------------------------------------------</span>
-00489     range_type range( size_type grainsize=1 ) {
-00490         <span class="keywordflow">return</span> range_type( begin(), end(), grainsize );
-00491     }
-00492     const_range_type range( size_type grainsize=1 )<span class="keyword"> const </span>{
-00493         <span class="keywordflow">return</span> const_range_type( begin(), end(), grainsize );
-00494     }
-00495 
-00496     <span class="comment">//------------------------------------------------------------------------</span>
-00497     <span class="comment">// STL support - not thread-safe methods</span>
-00498     <span class="comment">//------------------------------------------------------------------------</span>
-00499     iterator begin() {<span class="keywordflow">return</span> iterator(*<span class="keyword">this</span>,0);}
-00500     iterator end() {<span class="keywordflow">return</span> iterator(*<span class="keyword">this</span>,n_segment);}
-00501     const_iterator begin()<span class="keyword"> const </span>{<span class="keywordflow">return</span> const_iterator(*<span class="keyword">this</span>,0);}
-00502     const_iterator end()<span class="keyword"> const </span>{<span class="keywordflow">return</span> const_iterator(*<span class="keyword">this</span>,n_segment);}
-00503     std::pair<iterator, iterator> equal_range( <span class="keyword">const</span> Key& key ) { <span class="keywordflow">return</span> internal_equal_range(key, end()); }
-00504     std::pair<const_iterator, const_iterator> equal_range( <span class="keyword">const</span> Key& key )<span class="keyword"> const </span>{ <span class="keywordflow">return</span> internal_equal_range(key, end()); }
-00505     
-00507 
-00509     size_type size() <span class="keyword">const</span>;
-00510 
-00512     <span class="keywordtype">bool</span> empty() <span class="keyword">const</span>;
-00513 
-<a name="l00515"></a><a class="code" href="a00201.html#a16">00515</a>     size_type max_size()<span class="keyword"> const </span>{<span class="keywordflow">return</span> (~size_type(0))/<span class="keyword">sizeof</span>(node);}
-00516 
-<a name="l00518"></a><a class="code" href="a00201.html#a17">00518</a>     allocator_type get_allocator()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this->my_allocator; }
-00519 
-00521     <span class="keywordtype">void</span> swap(<a class="code" href="a00201.html">concurrent_hash_map</a> &table);
-00522 
-00523     <span class="comment">//------------------------------------------------------------------------</span>
-00524     <span class="comment">// concurrent map operations</span>
-00525     <span class="comment">//------------------------------------------------------------------------</span>
-00526 
-<a name="l00528"></a><a class="code" href="a00201.html#a19">00528</a>     size_type count( <span class="keyword">const</span> Key& key )<span class="keyword"> const </span>{
-00529         <span class="keywordflow">return</span> const_cast<concurrent_hash_map*>(<span class="keyword">this</span>)-><a class="code" href="a00201.html#d7">lookup</a><<span class="comment">/*insert*/</span><span class="keyword">false</span>>(NULL, key, <span class="comment">/*write=*/</span><span class="keyword">false</span>, NULL );
-00530     }
-00531 
-00533 
-<a name="l00534"></a><a class="code" href="a00201.html#a20">00534</a>     <span class="keywordtype">bool</span> find( <a class="code" href="a00203.html">const_accessor</a>& result, <span class="keyword">const</span> Key& key )<span class="keyword"> const </span>{
-00535         <span class="keywordflow">return</span> const_cast<concurrent_hash_map*>(<span class="keyword">this</span>)-><a class="code" href="a00201.html#d7">lookup</a><<span class="comment">/*insert*/</span><span class="keyword">false</span>>(&result, key, <span class="comment">/*write=*/</span><span class="keyword">false</span>, NULL );
-00536     }
-00537 
-00539 
-<a name="l00540"></a><a class="code" href="a00201.html#a21">00540</a>     <span class="keywordtype">bool</span> find( <a class="code" href="a00202.html">accessor</a>& result, <span class="keyword">const</span> Key& key ) {
-00541         <span class="keywordflow">return</span> lookup<<span class="comment">/*insert*/</span><span class="keyword">false</span>>(&result, key, <span class="comment">/*write=*/</span><span class="keyword">true</span>, NULL );
-00542     }
-00543         
-00545 
-<a name="l00546"></a><a class="code" href="a00201.html#a22">00546</a>     <span class="keywordtype">bool</span> insert( <a class="code" href="a00203.html">const_accessor</a>& result, <span class="keyword">const</span> Key& key ) {
-00547         <span class="keywordflow">return</span> lookup<<span class="comment">/*insert*/</span><span class="keyword">true</span>>(&result, key, <span class="comment">/*write=*/</span><span class="keyword">false</span>, NULL );
-00548     }
-00549 
-00551 
-<a name="l00552"></a><a class="code" href="a00201.html#a23">00552</a>     <span class="keywordtype">bool</span> insert( <a class="code" href="a00202.html">accessor</a>& result, <span class="keyword">const</span> Key& key ) {
-00553         <span class="keywordflow">return</span> lookup<<span class="comment">/*insert*/</span><span class="keyword">true</span>>(&result, key, <span class="comment">/*write=*/</span><span class="keyword">true</span>, NULL );
-00554     }
-00555 
-00557 
-<a name="l00558"></a><a class="code" href="a00201.html#a24">00558</a>     <span class="keywordtype">bool</span> insert( <a class="code" href="a00203.html">const_accessor</a>& result, <span class="keyword">const</span> value_type& value ) {
-00559         <span class="keywordflow">return</span> lookup<<span class="comment">/*insert*/</span><span class="keyword">true</span>>(&result, value.first, <span class="comment">/*write=*/</span><span class="keyword">false</span>, &value.second );
-00560     }
-00561 
-00563 
-<a name="l00564"></a><a class="code" href="a00201.html#a25">00564</a>     <span class="keywordtype">bool</span> insert( <a class="code" href="a00202.html">accessor</a>& result, <span class="keyword">const</span> value_type& value ) {
-00565         <span class="keywordflow">return</span> lookup<<span class="comment">/*insert*/</span><span class="keyword">true</span>>(&result, value.first, <span class="comment">/*write=*/</span><span class="keyword">true</span>, &value.second );
-00566     }
-00567 
-00569 
-<a name="l00570"></a><a class="code" href="a00201.html#a26">00570</a>     <span class="keywordtype">bool</span> insert( <span class="keyword">const</span> value_type& value ) {
-00571         <span class="keywordflow">return</span> lookup<<span class="comment">/*insert*/</span><span class="keyword">true</span>>(NULL, value.first, <span class="comment">/*write=*/</span><span class="keyword">false</span>, &value.second );
-00572     }
-00573 
-00575     <span class="keyword">template</span><<span class="keyword">typename</span> I>
-<a name="l00576"></a><a class="code" href="a00201.html#a27">00576</a>     <span class="keywordtype">void</span> insert(I first, I last) {
-00577         <span class="keywordflow">for</span>(; first != last; ++first)
-00578             insert( *first );
-00579     }
-00580 
-00582 
-00583     <span class="keywordtype">bool</span> erase( <span class="keyword">const</span> Key& key );
-00584 
-00586 
-<a name="l00587"></a><a class="code" href="a00201.html#a29">00587</a>     <span class="keywordtype">bool</span> erase( <a class="code" href="a00203.html">const_accessor</a>& item_accessor ) {
-00588         <span class="keywordflow">return</span> exclude( item_accessor, <span class="comment">/*readonly=*/</span> <span class="keyword">true</span> );
-00589     }
-00590 
-00592 
-<a name="l00593"></a><a class="code" href="a00201.html#a30">00593</a>     <span class="keywordtype">bool</span> erase( <a class="code" href="a00202.html">accessor</a>& item_accessor ) {
-00594         <span class="keywordflow">return</span> exclude( item_accessor, <span class="comment">/*readonly=*/</span> <span class="keyword">false</span> );
-00595     }
-00596 
-00597 <span class="keyword">private</span>:
-00599     <span class="keyword">struct </span>node: internal::no_copy {
-00601         node* next;
-00602         node_mutex_t <a class="code" href="a00227.html">mutex</a>;
-00603         value_type item;
-00604         node( <span class="keyword">const</span> Key& key ) : item(key, T()) {}
-00605         node( <span class="keyword">const</span> Key& key, <span class="keyword">const</span> T& t ) : item(key, t) {}
-00606         <span class="comment">// exception-safe allocation, see C++ Standard 2003, clause 5.3.4p17</span>
-00607         <span class="keywordtype">void</span>* operator new( size_t <span class="comment">/*size*/</span>, node_allocator_type& a ) {
-00608             <span class="keywordtype">void</span> *ptr = a.allocate(1);
-00609             <span class="keywordflow">if</span>(!ptr) <span class="keywordflow">throw</span> std::bad_alloc();
-00610             <span class="keywordflow">return</span> ptr;
-00611         }
-00612         <span class="comment">// match placement-new form above to be called if exception thrown in constructor</span>
-00613         <span class="keywordtype">void</span> operator delete( <span class="keywordtype">void</span>* ptr, node_allocator_type& a ) {<span class="keywordflow">return</span> a.deallocate(static_cast<node*>(ptr),1); }
-00614     };
-00615 
-00616     <span class="keyword">struct </span>chain;
-00617     <span class="keyword">friend</span> <span class="keyword">struct </span>chain;
-00618 
-00620 
-00621     <span class="keyword">struct </span>chain {
-00622         <span class="keywordtype">void</span> push_front( node& b ) {
-00623             b.next = node_list;
-00624             node_list = &b;
-00625         }
-00626         chain_mutex_t mutex;
-00627         node* node_list;
-00628     };
-00629 
-00630     <span class="keyword">struct </span>segment;
-00631     <span class="keyword">friend</span> <span class="keyword">struct </span>segment;
-00632 
-00634 
-00636     <span class="keyword">struct </span>segment: internal::hash_map_segment_base {
-00637 <span class="preprocessor">#if TBB_USE_ASSERT</span>
-00638 <span class="preprocessor"></span>        ~segment() {
-00639             __TBB_ASSERT( !my_array, <span class="stringliteral">"should have been cleared earlier"</span> );
-00640         }
-00641 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
-00642 
-00643         <span class="comment">// Pointer to array of chains</span>
-00644         chain* my_array;
-00645 
-00646         <span class="comment">// Get chain in this segment that corresponds to given hash code.</span>
-00647         chain& get_chain( hashcode_t hashcode, size_t n_segment_bits ) {
-00648             <span class="keywordflow">return</span> my_array[(hashcode>>n_segment_bits)&(my_physical_size-1)];
-00649         }
-00650      
-00652 
-00654         <span class="keywordtype">void</span> allocate_array( size_t new_size ) {
-00655             size_t n=(internal::NFS_GetLineSize()+<span class="keyword">sizeof</span>(chain)-1)/<span class="keyword">sizeof</span>(chain);
-00656             __TBB_ASSERT((n&(n-1))==0, NULL);
-00657             <span class="keywordflow">while</span>( n<new_size ) n<<=1;
-00658             chain* array = cache_aligned_allocator<chain>().allocate( n );
-00659             <span class="comment">// storing earlier might help overcome false positives of in deducing "bool grow" in concurrent threads</span>
-00660             __TBB_store_with_release(my_physical_size, n);
-00661             std::memset( array, 0, n*<span class="keyword">sizeof</span>(chain) );
-00662             my_array = array;
-00663         }
-00664     };
-00665 
-00666     segment& get_segment( hashcode_t hashcode ) {
-00667         <span class="keywordflow">return</span> my_segment[hashcode&(n_segment-1)];
-00668     }
-00669 
-00670     node_allocator_type my_allocator;
-00671 
-00672     HashCompare my_hash_compare;
-00673 
-00674     segment* my_segment;
-00675 
-00676     node* create_node(<span class="keyword">const</span> Key& key, <span class="keyword">const</span> T* t) {
-00677         <span class="comment">// exception-safe allocation and construction</span>
-00678         <span class="keywordflow">if</span>(t) <span class="keywordflow">return</span> <span class="keyword">new</span>( my_allocator ) node(key, *t);
-00679         <span class="keywordflow">else</span>  <span class="keywordflow">return</span> <span class="keyword">new</span>( my_allocator ) node(key);
-00680     }
-00681 
-00682     <span class="keywordtype">void</span> delete_node(node* b) {
-00683         my_allocator.destroy(b);
-00684         my_allocator.deallocate(b, 1);
-00685     }
-00686 
-00687     node* search_list( <span class="keyword">const</span> Key& key, chain& c )<span class="keyword"> const </span>{
-00688         node* b = c.node_list;
-00689         <span class="keywordflow">while</span>( b && !my_hash_compare.equal(key, b->item.first) )
-00690             b = b->next;
-00691         <span class="keywordflow">return</span> b;
-00692     }
-00694     <span class="keyword">template</span><<span class="keyword">typename</span> I>
-00695     std::pair<I, I> internal_equal_range( <span class="keyword">const</span> Key& key, I end ) <span class="keyword">const</span>;
-00696 
-00698     <span class="keywordtype">bool</span> exclude( const_accessor& item_accessor, <span class="keywordtype">bool</span> readonly );
-00699 
-00701     <span class="keywordtype">void</span> grow_segment( segment_mutex_t::scoped_lock& segment_lock, segment& s );
-00702 
-00704     <span class="keyword">template</span><<span class="keywordtype">bool</span> op_insert>
-00705     <span class="keywordtype">bool</span> lookup( const_accessor* result, <span class="keyword">const</span> Key& key, <span class="keywordtype">bool</span> write, <span class="keyword">const</span> T* t );
-00706 
-00708     <span class="keywordtype">void</span> initialize() {
-00709         my_segment = cache_aligned_allocator<segment>().allocate(n_segment);
-00710         std::memset( my_segment, 0, <span class="keyword">sizeof</span>(segment)*n_segment );
-00711      }
-00712 
-00714     <span class="keywordtype">void</span> internal_copy( <span class="keyword">const</span> concurrent_hash_map& source );
-00715 
-00716     <span class="keyword">template</span><<span class="keyword">typename</span> I>
-00717     <span class="keywordtype">void</span> internal_copy(I first, I last);
-00718 };
-00719 
-00720 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
-<a name="l00721"></a><a class="code" href="a00201.html#a5">00721</a> <a class="code" href="a00201.html">concurrent_hash_map<Key,T,HashCompare,A>::~concurrent_hash_map</a>() {
-00722     <a class="code" href="a00201.html#a4">clear</a>();
-00723     <a class="code" href="a00198.html">cache_aligned_allocator<segment></a>().deallocate( my_segment, n_segment );
-00724 }
-00725 
-00726 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
-<a name="l00727"></a><a class="code" href="a00201.html#a14">00727</a> <span class="keyword">typename</span> <a class="code" href="a00201.html">concurrent_hash_map<Key,T,HashCompare,A></a>::size_type <a class="code" href="a00201.html">concurrent_hash_map<Key,T,HashCompare,A>::size</a>()<span class="keyword"> const </span>{
-00728     size_type result = 0;
-00729     <span class="keywordflow">for</span>( size_t k=0; k<n_segment; ++k )
-00730         result += my_segment[k].my_logical_size;
-00731     <span class="keywordflow">return</span> result;
-00732 }
-00733 
-00734 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
-<a name="l00735"></a><a class="code" href="a00201.html#a15">00735</a> <span class="keywordtype">bool</span> <a class="code" href="a00201.html">concurrent_hash_map<Key,T,HashCompare,A>::empty</a>()<span class="keyword"> const </span>{
-00736     <span class="keywordflow">for</span>( size_t k=0; k<n_segment; ++k )
-00737         <span class="keywordflow">if</span>( my_segment[k].my_logical_size )
-00738             <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00739     <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00740 }
-00741 
-00742 <span class="preprocessor">#if _MSC_VER && !defined(__INTEL_COMPILER)</span>
-00743 <span class="preprocessor"></span>    <span class="comment">// Suppress "conditional expression is constant" warning.</span>
-00744 <span class="preprocessor">    #pragma warning( push )</span>
-00745 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning( disable: 4127 )</span>
-00746 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00747 <span class="preprocessor"></span>
-00748 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
-00749 <span class="keyword">template</span><<span class="keywordtype">bool</span> op_insert>
-00750 <span class="keywordtype">bool</span> <a class="code" href="a00201.html">concurrent_hash_map<Key,T,HashCompare,A>::lookup</a>( const_accessor* result, <span class="keyword">const</span> Key& key, <span class="keywordtype">bool</span> write, <span class="keyword">const</span> T* t ) {
-00751     <span class="keywordflow">if</span>( result )
-00752         result->release();
-00753     <span class="keyword">const</span> hashcode_t h = my_hash_compare.hash( key );
-00754     segment& s = get_segment(h);
-00755 restart:
-00756     <span class="keywordtype">bool</span> return_value = <span class="keyword">false</span>;
-00757     <span class="comment">// first check in double-check sequence</span>
-00758 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS</span>
-00759 <span class="preprocessor"></span>    <span class="keywordtype">bool</span> grow = op_insert && s.internal_grow_predicate();
-00760 <span class="preprocessor">#else</span>
-00761 <span class="preprocessor"></span>    <span class="keywordtype">bool</span> grow = op_insert && s.my_logical_size >= s.my_physical_size
-00762         && s.my_physical_size < max_physical_size; <span class="comment">// check whether there are free bits</span>
-00763 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS */</span>
-00764     segment_mutex_t::scoped_lock segment_lock( s.my_mutex, <span class="comment">/*write=*/</span>grow );
-00765     <span class="keywordflow">if</span>( grow ) { <span class="comment">// Load factor is too high  </span>
-00766         grow_segment( segment_lock, s );
-00767     }
-00768     <span class="keywordflow">if</span>( !s.my_array ) {
-00769         __TBB_ASSERT( !op_insert, NULL );
-00770         <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00771     }
-00772     __TBB_ASSERT( (s.my_physical_size&(s.my_physical_size-1))==0, NULL );
-00773     chain& c = s.get_chain( h, n_segment_bits );
-00774     chain_mutex_t::scoped_lock chain_lock( c.mutex, <span class="comment">/*write=*/</span><span class="keyword">false</span> );
-00775 
-00776     node* b = search_list( key, c );
-00777     <span class="keywordflow">if</span>( op_insert ) {
-00778         <span class="keywordflow">if</span>( !b ) {
-00779             b = create_node(key, t);
-00780             <span class="comment">// Search failed</span>
-00781             <span class="keywordflow">if</span>( !chain_lock.upgrade_to_writer() ) {
-00782                 <span class="comment">// Rerun search_list, in case another thread inserted the item during the upgrade.</span>
-00783                 node* b_temp = search_list( key, c );
-00784                 <span class="keywordflow">if</span>( b_temp ) { <span class="comment">// unfortunately, it did</span>
-00785                     chain_lock.downgrade_to_reader();
-00786                     delete_node( b );
-00787                     b = b_temp;
-00788                     <span class="keywordflow">goto</span> done;
-00789                 }
-00790             }
-00791             ++s.my_logical_size; <span class="comment">// we can't change it earlier due to correctness of size() and exception safety of equal()</span>
-00792             return_value = <span class="keyword">true</span>;
-00793             c.push_front( *b );
-00794         }
-00795     } <span class="keywordflow">else</span> { <span class="comment">// find or count</span>
-00796         <span class="keywordflow">if</span>( !b )      <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00797         return_value = <span class="keyword">true</span>;
-00798     }
-00799 done:
-00800     <span class="keywordflow">if</span>( !result ) <span class="keywordflow">return</span> return_value;
-00801     <span class="keywordflow">if</span>( !result->my_lock.try_acquire( b->mutex, write ) ) {
-00802         <span class="comment">// we are unlucky, prepare for longer wait</span>
-00803         internal::AtomicBackoff trials;
-00804         <span class="keywordflow">do</span> {
-00805             <span class="keywordflow">if</span>( !trials.bounded_pause() ) {
-00806                 <span class="comment">// the wait takes really long, restart the operation</span>
-00807                 chain_lock.release(); segment_lock.release();
-00808                 __TBB_Yield();
-00809                 <span class="keywordflow">goto</span> restart;
-00810             }
-00811         } <span class="keywordflow">while</span>( !result->my_lock.try_acquire( b->mutex, write ) );
-00812     }
-00813     result->my_node = b;
-00814     result->my_hash = h;
-00815     <span class="keywordflow">return</span> return_value;
-00816 }
-00817 
-00818 <span class="preprocessor">#if _MSC_VER && !defined(__INTEL_COMPILER)</span>
-00819 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning( pop )</span>
-00820 <span class="preprocessor"></span><span class="preprocessor">#endif // warning 4127 is back</span>
-00821 <span class="preprocessor"></span>
-00822 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
-00823 <span class="keyword">template</span><<span class="keyword">typename</span> I>
-00824 std::pair<I, I> concurrent_hash_map<Key,T,HashCompare,A>::internal_equal_range( <span class="keyword">const</span> Key& key, I end )<span class="keyword"> const </span>{
-00825     <a class="code" href="a00222.html#w3">hashcode_t</a> h = my_hash_compare.hash( key );
-00826     size_t segment_index = h&(<a class="code" href="a00222.html#s1">n_segment</a>-1);
-00827     segment& s = my_segment[segment_index ];
-00828     size_t chain_index = (h>>n_segment_bits)&(s.my_physical_size-1);
-00829     <span class="keywordflow">if</span>( !s.my_array )
-00830         <span class="keywordflow">return</span> std::make_pair(end, end);
-00831     chain& c = s.my_array[chain_index];
-00832     node* b = search_list( key, c );
-00833     <span class="keywordflow">if</span>( !b )
-00834         <span class="keywordflow">return</span> std::make_pair(end, end);
-00835     iterator lower(*<span class="keyword">this</span>, segment_index, chain_index, b), upper(lower);
-00836     <span class="keywordflow">return</span> std::make_pair(lower, ++upper);
-00837 }
-00838 
-00839 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
-<a name="l00840"></a><a class="code" href="a00201.html#a28">00840</a> <span class="keywordtype">bool</span> <a class="code" href="a00201.html">concurrent_hash_map<Key,T,HashCompare,A>::erase</a>( <span class="keyword">const</span> Key &key ) {
-00841     hashcode_t h = my_hash_compare.hash( key );
-00842     segment& s = get_segment( h );
-00843     node* b=NULL; <span class="comment">// explicitly initialized to prevent compiler warnings</span>
-00844     {
-00845         <span class="keywordtype">bool</span> chain_locked_for_write = <span class="keyword">false</span>;
-00846         segment_mutex_t::scoped_lock segment_lock( s.my_mutex, <span class="comment">/*write=*/</span><span class="keyword">false</span> );
-00847         <span class="keywordflow">if</span>( !s.my_array ) <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00848         __TBB_ASSERT( (s.my_physical_size&(s.my_physical_size-1))==0, NULL );
-00849         chain& c = s.get_chain( h, n_segment_bits );
-00850         chain_mutex_t::scoped_lock chain_lock( c.mutex, <span class="comment">/*write=*/</span><span class="keyword">false</span> );
-00851     search:
-00852         node** p = &c.node_list;
-00853         b = *p;
-00854         <span class="keywordflow">while</span>( b && !my_hash_compare.equal(key, b->item.first ) ) {
-00855             p = &b->next;
-00856             b = *p;
-00857         }
-00858         <span class="keywordflow">if</span>( !b ) <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00859         <span class="keywordflow">if</span>( !chain_locked_for_write && !chain_lock.upgrade_to_writer() ) {
-00860             chain_locked_for_write = <span class="keyword">true</span>;
-00861             <span class="keywordflow">goto</span> search;
-00862         }
-00863         *p = b->next;
-00864         --s.my_logical_size;
-00865     }
-00866     {
-00867         node_mutex_t::scoped_lock item_locker( b->mutex, <span class="comment">/*write=*/</span><span class="keyword">true</span> );
-00868     }
-00869     <span class="comment">// note: there should be no threads pretending to acquire this mutex again, do not try to upgrade const_accessor!</span>
-00870     delete_node( b ); <span class="comment">// Only one thread can delete it due to write lock on the chain_mutex</span>
-00871     <span class="keywordflow">return</span> <span class="keyword">true</span>;        
-00872 }
-00873 
-00874 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
-00875 <span class="keywordtype">bool</span> <a class="code" href="a00201.html">concurrent_hash_map<Key,T,HashCompare,A>::exclude</a>( const_accessor &item_accessor, <span class="keywordtype">bool</span> readonly ) {
-00876     __TBB_ASSERT( item_accessor.my_node, NULL );
-00877     <span class="keyword">const</span> hashcode_t h = item_accessor.my_hash;
-00878     node *<span class="keyword">const</span> b = item_accessor.my_node;
-00879     item_accessor.my_node = NULL; <span class="comment">// we ought release accessor anyway</span>
-00880     segment& s = get_segment( h );
-00881     {
-00882         segment_mutex_t::scoped_lock segment_lock( s.my_mutex, <span class="comment">/*write=*/</span><span class="keyword">false</span> );
-00883         __TBB_ASSERT( s.my_array, NULL );
-00884         __TBB_ASSERT( (s.my_physical_size&(s.my_physical_size-1))==0, NULL );
-00885         chain& c = s.get_chain( h, n_segment_bits );
-00886         chain_mutex_t::scoped_lock chain_lock( c.mutex, <span class="comment">/*write=*/</span><span class="keyword">true</span> );
-00887         node** p = &c.node_list;
-00888         <span class="keywordflow">while</span>( *p && *p != b )
-00889             p = &(*p)->next;
-00890         <span class="keywordflow">if</span>( !*p ) { <span class="comment">// someone else was the first</span>
-00891             item_accessor.my_lock.release();
-00892             <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00893         }
-00894         __TBB_ASSERT( *p == b, NULL );
-00895         *p = b->next;
-00896         --s.my_logical_size;
-00897     }
-00898     <span class="keywordflow">if</span>( readonly ) <span class="comment">// need to get exclusive lock</span>
-00899         item_accessor.my_lock.upgrade_to_writer(); <span class="comment">// return value means nothing here</span>
-00900     item_accessor.my_lock.release();
-00901     delete_node( b ); <span class="comment">// Only one thread can delete it due to write lock on the chain_mutex</span>
-00902     <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00903 }
-00904 
-00905 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
-<a name="l00906"></a><a class="code" href="a00201.html#a18">00906</a> <span class="keywordtype">void</span> <a class="code" href="a00201.html">concurrent_hash_map<Key,T,HashCompare,A>::swap</a>(<a class="code" href="a00201.html">concurrent_hash_map<Key,T,HashCompare,A></a> &table) {
-00907     std::swap(this->my_allocator, table.<a class="code" href="a00201.html#r0">my_allocator</a>);
-00908     std::swap(this->my_hash_compare, table.<a class="code" href="a00201.html#r1">my_hash_compare</a>);
-00909     std::swap(this->my_segment, table.<a class="code" href="a00201.html#r2">my_segment</a>);
-00910 }
-00911 
-00912 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
-<a name="l00913"></a><a class="code" href="a00201.html#a4">00913</a> <span class="keywordtype">void</span> <a class="code" href="a00201.html">concurrent_hash_map<Key,T,HashCompare,A>::clear</a>() {
-00914 <span class="preprocessor">#if TBB_USE_PERFORMANCE_WARNINGS</span>
-00915 <span class="preprocessor"></span>    size_t total_physical_size = 0, min_physical_size = size_t(-1L), max_physical_size = 0; <span class="comment">//< usage statistics</span>
-00916     <span class="keyword">static</span> <span class="keywordtype">bool</span> reported = <span class="keyword">false</span>;
-00917 <span class="preprocessor">#endif</span>
-00918 <span class="preprocessor"></span>    <span class="keywordflow">for</span>( size_t i=0; i<n_segment; ++i ) {
-00919         segment& s = my_segment[i];
-00920         size_t n = s.my_physical_size;
-00921         <span class="keywordflow">if</span>( chain* array = s.my_array ) {
-00922             s.my_array = NULL;
-00923             s.my_physical_size = 0;
-00924             s.my_logical_size = 0;
-00925             <span class="keywordflow">for</span>( size_t j=0; j<n; ++j ) {
-00926                 <span class="keywordflow">while</span>( node* b = array[j].node_list ) {
-00927                     array[j].node_list = b->next;
-00928                     delete_node(b);
-00929                 }
-00930             }
-00931             <a class="code" href="a00198.html">cache_aligned_allocator<chain></a>().deallocate( array, n );
-00932         }
-00933 <span class="preprocessor">#if TBB_USE_PERFORMANCE_WARNINGS</span>
-00934 <span class="preprocessor"></span>        total_physical_size += n;
-00935         <span class="keywordflow">if</span>(min_physical_size > n) min_physical_size = n;
-00936         <span class="keywordflow">if</span>(max_physical_size < n) max_physical_size = n;
-00937     }
-00938     <span class="keywordflow">if</span>( !reported
-00939         && ( (total_physical_size >= n_segment*48 && min_physical_size < total_physical_size/n_segment/2)
-00940          || (total_physical_size >= n_segment*128 && max_physical_size > total_physical_size/n_segment*2) ) )
-00941     {
-00942         reported = <span class="keyword">true</span>;
-00943         internal::runtime_warning(
-00944             <span class="stringliteral">"Performance is not optimal because the hash function produces bad randomness in lower bits in %s"</span>,
-00945             <span class="keyword">typeid</span>(*this).name() );
-00946 <span class="preprocessor">#endif</span>
-00947 <span class="preprocessor"></span>    }
-00948 }
-00949 
-00950 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
-00951 <span class="keywordtype">void</span> <a class="code" href="a00201.html">concurrent_hash_map<Key,T,HashCompare,A>::grow_segment</a>( segment_mutex_t::scoped_lock& segment_lock, segment& s ) {
-00952     <span class="comment">// Following is second check in a double-check.</span>
-00953     <span class="keywordflow">if</span>( s.my_logical_size >= s.my_physical_size ) {
-00954         chain* old_array = s.my_array;
-00955         size_t old_size = s.my_physical_size;
-00956         s.allocate_array( s.my_logical_size+1 );
-00957         <span class="keywordflow">for</span>( size_t k=0; k<old_size; ++k )
-00958             <span class="keywordflow">while</span>( node* b = old_array[k].node_list ) {
-00959                 old_array[k].node_list = b->next;
-00960                 hashcode_t h = my_hash_compare.hash( b->item.first );
-00961                 __TBB_ASSERT( &get_segment(h)==&s, <span class="stringliteral">"hash function changed?"</span> );
-00962                 s.get_chain(h,n_segment_bits).push_front(*b);
-00963             }
-00964         cache_aligned_allocator<chain>().deallocate( old_array, old_size );
-00965     }
-00966     segment_lock.downgrade_to_reader();
-00967 }
-00968 
-00969 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
-00970 <span class="keywordtype">void</span> concurrent_hash_map<Key,T,HashCompare,A>::internal_copy( <span class="keyword">const</span> concurrent_hash_map& source ) {
-00971     <span class="keywordflow">for</span>( size_t i=0; i<n_segment; ++i ) {
-00972         segment& s = source.my_segment[i];
-00973         __TBB_ASSERT( !my_segment[i].my_array, <span class="stringliteral">"caller should have cleared"</span> );
-00974         <span class="keywordflow">if</span>( s.my_logical_size ) {
-00975             segment& d = my_segment[i];
-00976             d.allocate_array( s.my_logical_size );
-00977             d.my_logical_size = s.my_logical_size;
-00978             size_t s_size = s.my_physical_size;
-00979             chain* s_array = s.my_array;
-00980             chain* d_array = d.my_array;
-00981             <span class="keywordflow">for</span>( size_t k=0; k<s_size; ++k )
-00982                 <span class="keywordflow">for</span>( node* b = s_array[k].node_list; b; b=b->next ) {
-00983                     __TBB_ASSERT( &get_segment(my_hash_compare.hash( b->item.first ))==&d, <span class="stringliteral">"hash function changed?"</span> );
-00984                     node* b_new = create_node(b->item.first, &b->item.second);
-00985                     d_array[k].push_front(*b_new); <span class="comment">// hashcode is the same and segment and my_physical sizes are the same</span>
-00986                 }
-00987         }
-00988     }
-00989 }
-00990 
-00991 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
-00992 <span class="keyword">template</span><<span class="keyword">typename</span> I>
-00993 <span class="keywordtype">void</span> concurrent_hash_map<Key,T,HashCompare,A>::internal_copy(I first, I last) {
-00994     <span class="keywordflow">for</span>(; first != last; ++first)
-00995         <a class="code" href="a00201.html#a22">insert</a>( *first );
-00996 }
-00997 
-00998 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2>
-00999 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> concurrent_hash_map<Key, T, HashCompare, A1> &a, <span class="keyword">const</span> concurrent_hash_map<Key, T, HashCompare, A2> &b) {
-01000     <span class="keywordflow">if</span>(a.size() != b.size()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
-01001     <span class="keyword">typename</span> concurrent_hash_map<Key, T, HashCompare, A1>::const_iterator i(a.begin()), i_end(a.end());
-01002     <span class="keyword">typename</span> concurrent_hash_map<Key, T, HashCompare, A2>::const_iterator j, j_end(b.end());
-01003     <span class="keywordflow">for</span>(; i != i_end; ++i) {
-01004         j = b.equal_range(i->first).first;
-01005         <span class="keywordflow">if</span>( j == j_end || !(i->second == j->second) ) <span class="keywordflow">return</span> <span class="keyword">false</span>;
-01006     }
-01007     <span class="keywordflow">return</span> <span class="keyword">true</span>;
-01008 }
-01009 
-01010 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2>
-01011 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> concurrent_hash_map<Key, T, HashCompare, A1> &a, <span class="keyword">const</span> concurrent_hash_map<Key, T, HashCompare, A2> &b)
-01012 {    <span class="keywordflow">return</span> !(a == b); }
-01013 
-01014 <span class="keyword">template</span><<span class="keyword">typename</span> Key, <span class="keyword">typename</span> T, <span class="keyword">typename</span> HashCompare, <span class="keyword">typename</span> A>
-01015 <span class="keyword">inline</span> <span class="keywordtype">void</span> swap(concurrent_hash_map<Key, T, HashCompare, A> &a, concurrent_hash_map<Key, T, HashCompare, A> &b)
-01016 {    a.swap( b ); }
-01017 
-01018 } <span class="comment">// namespace tbb</span>
-01019 
-01020 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_concurrent_hash_map_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00330.html b/doc/html/a00330.html
deleted file mode 100644
index 21ceca2..0000000
--- a/doc/html/a00330.html
+++ /dev/null
@@ -1,350 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>concurrent_queue.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>concurrent_queue.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_concurrent_queue_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_concurrent_queue_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include "tbb_stddef.h"</span>
-00025 <span class="preprocessor">#include "cache_aligned_allocator.h"</span>
-00026 <span class="preprocessor">#include <iterator></span>
-00027 <span class="preprocessor">#include <new></span>
-00028 
-00029 <span class="keyword">namespace </span>tbb {
-00030 
-00031 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A = cache_aligned_allocator<T> > 
-00032 <span class="keyword">class </span>concurrent_queue;
-00033 
-00035 <span class="keyword">namespace </span>internal {
-00036 
-00037 <span class="keyword">class </span>concurrent_queue_rep;
-00038 <span class="keyword">class </span>concurrent_queue_iterator_rep;
-00039 <span class="keyword">class </span>concurrent_queue_iterator_base_v3;
-00040 <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> Value> <span class="keyword">class </span>concurrent_queue_iterator;
-00041 
-00043 
-<a name="l00045"></a><a class="code" href="a00205.html">00045</a> <span class="keyword">class </span><a class="code" href="a00205.html">concurrent_queue_base_v3</a>: <a class="code" href="a00230.html">no_copy</a> {
-00047     concurrent_queue_rep* my_rep;
-00048 
-00049     <span class="keyword">friend</span> <span class="keyword">class </span>concurrent_queue_rep;
-00050     <span class="keyword">friend</span> <span class="keyword">struct </span>micro_queue;
-00051     <span class="keyword">friend</span> <span class="keyword">class </span>micro_queue_pop_finalizer;
-00052     <span class="keyword">friend</span> <span class="keyword">class </span>concurrent_queue_iterator_rep;
-00053     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00208.html">concurrent_queue_iterator_base_v3</a>;
-00054 <span class="keyword">protected</span>:
-<a name="l00056"></a><a class="code" href="a00206.html">00056</a>     <span class="keyword">struct </span><a class="code" href="a00206.html">page</a> {
-00057         <a class="code" href="a00206.html">page</a>* next;
-00058         <a class="code" href="a00319.html#a21">uintptr</a> mask; 
-00059     };
-00060 
-<a name="l00062"></a><a class="code" href="a00205.html#p0">00062</a>     ptrdiff_t my_capacity;
-00063    
-<a name="l00065"></a><a class="code" href="a00205.html#p1">00065</a>     size_t items_per_page;
-00066 
-<a name="l00068"></a><a class="code" href="a00205.html#p2">00068</a>     size_t item_size;
-00069 
-00070 <span class="keyword">private</span>:
-00071     <span class="keyword">virtual</span> <span class="keywordtype">void</span> copy_item( <a class="code" href="a00206.html">page</a>& dst, size_t index, <span class="keyword">const</span> <span class="keywordtype">void</span>* src ) = 0;
-00072     <span class="keyword">virtual</span> <span class="keywordtype">void</span> assign_and_destroy_item( <span class="keywordtype">void</span>* dst, <a class="code" href="a00206.html">page</a>& src, size_t index ) = 0;
-00073 <span class="keyword">protected</span>:
-00074     __TBB_EXPORTED_METHOD <a class="code" href="a00205.html">concurrent_queue_base_v3</a>( size_t item_size );
-00075     <span class="keyword">virtual</span> __TBB_EXPORTED_METHOD ~<a class="code" href="a00205.html">concurrent_queue_base_v3</a>();
-00076 
-00078     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_push( <span class="keyword">const</span> <span class="keywordtype">void</span>* src );
-00079 
-00081     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_pop( <span class="keywordtype">void</span>* dst );
-00082 
-00084     <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD internal_push_if_not_full( <span class="keyword">const</span> <span class="keywordtype">void</span>* src );
-00085 
-00087 
-00088     <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD internal_pop_if_present( <span class="keywordtype">void</span>* dst );
-00089 
-00091     ptrdiff_t __TBB_EXPORTED_METHOD internal_size() <span class="keyword">const</span>;
-00092 
-00094     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_set_capacity( ptrdiff_t capacity, size_t element_size );
-00095 
-00097     <span class="keyword">virtual</span> <a class="code" href="a00206.html">page</a> *allocate_page() = 0;
-00098 
-00100     <span class="keyword">virtual</span> <span class="keywordtype">void</span> deallocate_page( <a class="code" href="a00206.html">page</a> *p ) = 0;
-00101 
-00103     <span class="comment">/* note that the name may be misleading, but it remains so due to a historical accident. */</span>
-00104     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_finish_clear() ;
-00105 
-00107     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_throw_exception() <span class="keyword">const</span>;
-00108 
-00110     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD assign( <span class="keyword">const</span> <a class="code" href="a00205.html">concurrent_queue_base_v3</a>& src ) ;
-00111 
-00112 <span class="keyword">private</span>:
-00113     <span class="keyword">virtual</span> <span class="keywordtype">void</span> copy_item( <a class="code" href="a00206.html">page</a>& dst, size_t dindex, <span class="keyword">const</span> <a class="code" href="a00206.html">page</a>& src, size_t sindex ) = 0;
-00114 };
-00115 
-00116 <span class="keyword">typedef</span> <a class="code" href="a00205.html">concurrent_queue_base_v3</a> <a class="code" href="a00205.html">concurrent_queue_base</a> ;
-00117 
-00119 
-<a name="l00120"></a><a class="code" href="a00208.html">00120</a> <span class="keyword">class </span><a class="code" href="a00208.html">concurrent_queue_iterator_base_v3</a> {
-00122 
-00123     concurrent_queue_iterator_rep* my_rep;
-00124 
-00125     <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00126     <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator==( <span class="keyword">const</span> <a class="code" href="a00207.html">concurrent_queue_iterator<C,T></a>& i, <span class="keyword">const</span> <a class="code" href="a00207.html">concurrent_queue_iterator<C,U></a>& j );
-00127 
-00128     <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00129     <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator!=( <span class="keyword">const</span> <a class="code" href="a00207.html">concurrent_queue_iterator<C,T></a>& i, <span class="keyword">const</span> <a class="code" href="a00207.html">concurrent_queue_iterator<C,U></a>& j );
-00130 <span class="keyword">protected</span>:
-<a name="l00132"></a><a class="code" href="a00208.html#p0">00132</a>     <span class="keyword">mutable</span> <span class="keywordtype">void</span>* my_item;
-00133 
-<a name="l00135"></a><a class="code" href="a00208.html#b0">00135</a>     <a class="code" href="a00208.html">concurrent_queue_iterator_base_v3</a>() : my_rep(NULL), my_item(NULL) {}
-00136 
-<a name="l00138"></a><a class="code" href="a00208.html#b1">00138</a>     <a class="code" href="a00208.html">concurrent_queue_iterator_base_v3</a>( <span class="keyword">const</span> <a class="code" href="a00208.html">concurrent_queue_iterator_base_v3</a>& i ) : my_rep(NULL), my_item(NULL) {
-00139         assign(i);
-00140     }
-00141 
-00143     __TBB_EXPORTED_METHOD <a class="code" href="a00208.html">concurrent_queue_iterator_base_v3</a>( <span class="keyword">const</span> concurrent_queue_base& queue );
-00144 
-00146     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD assign( <span class="keyword">const</span> <a class="code" href="a00208.html">concurrent_queue_iterator_base_v3</a>& i );
-00147 
-00149     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD advance();
-00150 
-00152     __TBB_EXPORTED_METHOD ~<a class="code" href="a00208.html">concurrent_queue_iterator_base_v3</a>();
-00153 };
-00154 
-00155 <span class="keyword">typedef</span> concurrent_queue_iterator_base_v3 concurrent_queue_iterator_base;
-00156 
-00158 
-00160 <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> Value>
-<a name="l00161"></a><a class="code" href="a00207.html">00161</a> <span class="keyword">class </span><a class="code" href="a00207.html">concurrent_queue_iterator</a>: <span class="keyword">public</span> concurrent_queue_iterator_base,
-00162         <span class="keyword">public</span> std::iterator<std::forward_iterator_tag,Value> {
-00163 <span class="preprocessor">#if !defined(_MSC_VER) || defined(__INTEL_COMPILER)</span>
-00164 <span class="preprocessor"></span>    <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
-00165     <span class="keyword">friend</span> class ::tbb::concurrent_queue;
-00166 <span class="preprocessor">#else</span>
-00167 <span class="preprocessor"></span><span class="keyword">public</span>: <span class="comment">// workaround for MSVC</span>
-00168 <span class="preprocessor">#endif </span>
-00169 <span class="preprocessor"></span>
-<a name="l00170"></a><a class="code" href="a00207.html#a0">00170</a>     <a class="code" href="a00207.html">concurrent_queue_iterator</a>( <span class="keyword">const</span> concurrent_queue_base& queue ) :
-00171         <a class="code" href="a00208.html">concurrent_queue_iterator_base_v3</a>(queue)
-00172     {
-00173     }
-00174 <span class="keyword">public</span>:
-00175     <a class="code" href="a00207.html">concurrent_queue_iterator</a>() {}
-00176 
-<a name="l00179"></a><a class="code" href="a00207.html#a2">00179</a>     <a class="code" href="a00207.html">concurrent_queue_iterator</a>( <span class="keyword">const</span> <a class="code" href="a00207.html">concurrent_queue_iterator<Container,typename Container::value_type></a>& other ) :
-00180         <a class="code" href="a00208.html">concurrent_queue_iterator_base_v3</a>(other)
-00181     {}
-00182 
-<a name="l00184"></a><a class="code" href="a00207.html#a3">00184</a>     <a class="code" href="a00207.html">concurrent_queue_iterator</a>& operator=( <span class="keyword">const</span> <a class="code" href="a00207.html">concurrent_queue_iterator</a>& other ) {
-00185         assign(other);
-00186         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-00187     }
-00188 
-<a name="l00190"></a><a class="code" href="a00207.html#a4">00190</a>     Value& operator*()<span class="keyword"> const </span>{
-00191         <span class="keywordflow">return</span> *static_cast<Value*>(my_item);
-00192     }
-00193 
-00194     Value* operator->()<span class="keyword"> const </span>{<span class="keywordflow">return</span> &operator*();}
-00195 
-<a name="l00197"></a><a class="code" href="a00207.html#a6">00197</a>     <a class="code" href="a00207.html">concurrent_queue_iterator</a>& operator++() {
-00198         advance();
-00199         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-00200     }
-00201 
-<a name="l00203"></a><a class="code" href="a00207.html#a7">00203</a>     Value* operator++(<span class="keywordtype">int</span>) {
-00204         Value* result = &operator*();
-00205         operator++();
-00206         <span class="keywordflow">return</span> result;
-00207     }
-00208 }; <span class="comment">// concurrent_queue_iterator</span>
-00209 
-00210 
-00211 <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00212 <span class="keywordtype">bool</span> operator==( <span class="keyword">const</span> concurrent_queue_iterator<C,T>& i, <span class="keyword">const</span> concurrent_queue_iterator<C,U>& j ) {
-00213     <span class="keywordflow">return</span> i.<a class="code" href="a00208.html#p0">my_item</a>==j.<a class="code" href="a00208.html#p0">my_item</a>;
-00214 }
-00215 
-00216 <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00217 <span class="keywordtype">bool</span> operator!=( <span class="keyword">const</span> concurrent_queue_iterator<C,T>& i, <span class="keyword">const</span> concurrent_queue_iterator<C,U>& j ) {
-00218     <span class="keywordflow">return</span> i.<a class="code" href="a00208.html#p0">my_item</a>!=j.<a class="code" href="a00208.html#p0">my_item</a>;
-00219 }
-00220 
-00221 } <span class="comment">// namespace internal;</span>
-00222 
-00224 
-00226 
-00229 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
-<a name="l00230"></a><a class="code" href="a00204.html">00230</a> <span class="keyword">class </span><a class="code" href="a00204.html">concurrent_queue</a>: <span class="keyword">public</span> internal::concurrent_queue_base_v3 {
-00231     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> Value> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00207.html">internal::concurrent_queue_iterator</a>;
-00232 
-00234     <span class="keyword">typedef</span> <span class="keyword">typename</span> A::template rebind<char>::other page_allocator_type;
-00235     page_allocator_type my_allocator;
-00236 
-00238     <span class="keyword">class </span>destroyer: internal::no_copy {
-00239         T& my_value;
-00240     <span class="keyword">public</span>:
-00241         destroyer( T& value ) : my_value(value) {}
-00242         ~destroyer() {my_value.~T();}          
-00243     };
-00244 
-00245     T& get_ref( page& page, size_t index ) {
-00246         __TBB_ASSERT( index<items_per_page, NULL );
-00247         <span class="keywordflow">return</span> static_cast<T*>(static_cast<void*>(&page+1))[index];
-00248     }
-00249 
-00250     <span class="comment">/*override*/</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> copy_item( page& dst, size_t index, <span class="keyword">const</span> <span class="keywordtype">void</span>* src ) {
-00251         <span class="keyword">new</span>( &get_ref(dst,index) ) T(*static_cast<const T*>(src)); 
-00252     }
-00253 
-00254     <span class="comment">/*override*/</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> copy_item( page& dst, size_t dindex, <span class="keyword">const</span> page& src, size_t sindex ) {
-00255         <span class="keyword">new</span>( &get_ref(dst,dindex) ) T( static_cast<const T*>(static_cast<const void*>(&src+1))[sindex] );
-00256     }
-00257 
-00258     <span class="comment">/*override*/</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> assign_and_destroy_item( <span class="keywordtype">void</span>* dst, page& src, size_t index ) {
-00259         T& from = get_ref(src,index);
-00260         destroyer d(from);
-00261         *static_cast<T*>(dst) = from;
-00262     }
-00263 
-00264     <span class="comment">/*overide*/</span> <span class="keyword">virtual</span> page *allocate_page() {
-00265         size_t n = <span class="keyword">sizeof</span>(page) + items_per_page*item_size;
-00266         page *p = reinterpret_cast<page*>(my_allocator.allocate( n ));
-00267         <span class="keywordflow">if</span>( !p ) internal_throw_exception(); 
-00268         <span class="keywordflow">return</span> p;
-00269     }
-00270 
-00271     <span class="comment">/*override*/</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> deallocate_page( page *p ) {
-00272         size_t n = <span class="keyword">sizeof</span>(page) + items_per_page*item_size;
-00273         my_allocator.deallocate( reinterpret_cast<char*>(p), n );
-00274     }
-00275 
-00276 <span class="keyword">public</span>:
-<a name="l00278"></a><a class="code" href="a00204.html#w0">00278</a>     <span class="keyword">typedef</span> T value_type;
-00279 
-<a name="l00281"></a><a class="code" href="a00204.html#w1">00281</a>     <span class="keyword">typedef</span> A allocator_type;
-00282 
-<a name="l00284"></a><a class="code" href="a00204.html#w2">00284</a>     <span class="keyword">typedef</span> T& reference;
-00285 
-<a name="l00287"></a><a class="code" href="a00204.html#w3">00287</a>     <span class="keyword">typedef</span> <span class="keyword">const</span> T& const_reference;
-00288 
-00290 
-<a name="l00292"></a><a class="code" href="a00204.html#w4">00292</a>     <span class="keyword">typedef</span> std::ptrdiff_t size_type;
-00293 
-<a name="l00295"></a><a class="code" href="a00204.html#w5">00295</a>     <span class="keyword">typedef</span> std::ptrdiff_t difference_type;
-00296 
-<a name="l00298"></a><a class="code" href="a00204.html#a0">00298</a>     <span class="keyword">explicit</span> <a class="code" href="a00204.html">concurrent_queue</a>(<span class="keyword">const</span> allocator_type  &a = allocator_type()) : 
-00299         concurrent_queue_base_v3( sizeof(T) ), my_allocator( a )
-00300     {
-00301     }
-00302 
-00304     ~<a class="code" href="a00204.html">concurrent_queue</a>();
-00305 
-<a name="l00307"></a><a class="code" href="a00204.html#a2">00307</a>     <span class="keywordtype">void</span> push( <span class="keyword">const</span> T& source ) {
-00308         internal_push( &source );
-00309     }
-00310 
-00312 
-<a name="l00313"></a><a class="code" href="a00204.html#a3">00313</a>     <span class="keywordtype">void</span> pop( T& destination ) {
-00314         internal_pop( &destination );
-00315     }
-00316 
-00318 
-<a name="l00320"></a><a class="code" href="a00204.html#a4">00320</a>     <span class="keywordtype">bool</span> push_if_not_full( <span class="keyword">const</span> T& source ) {
-00321         <span class="keywordflow">return</span> internal_push_if_not_full( &source );
-00322     }
-00323 
-00325 
-<a name="l00327"></a><a class="code" href="a00204.html#a5">00327</a>     <span class="keywordtype">bool</span> pop_if_present( T& destination ) {
-00328         <span class="keywordflow">return</span> internal_pop_if_present( &destination );
-00329     }
-00330 
-00332 
-<a name="l00335"></a><a class="code" href="a00204.html#a6">00335</a>     size_type size()<span class="keyword"> const </span>{<span class="keywordflow">return</span> internal_size();}
-00336 
-<a name="l00338"></a><a class="code" href="a00204.html#a7">00338</a>     <span class="keywordtype">bool</span> empty()<span class="keyword"> const </span>{<span class="keywordflow">return</span> size()<=0;}
-00339 
-<a name="l00341"></a><a class="code" href="a00204.html#a8">00341</a>     size_type capacity()<span class="keyword"> const </span>{
-00342         <span class="keywordflow">return</span> my_capacity;
-00343     }
-00344 
-00346 
-<a name="l00348"></a><a class="code" href="a00204.html#a9">00348</a>     <span class="keywordtype">void</span> set_capacity( size_type capacity ) {
-00349         internal_set_capacity( capacity, <span class="keyword">sizeof</span>(T) );
-00350     }
-00351 
-<a name="l00353"></a><a class="code" href="a00204.html#a10">00353</a>     allocator_type get_allocator()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this->my_allocator; }
-00354 
-00356     <span class="keywordtype">void</span> clear() ;
-00357 
-00358     <span class="keyword">typedef</span> <a class="code" href="a00207.html">internal::concurrent_queue_iterator<concurrent_queue,T></a> iterator;
-00359     <span class="keyword">typedef</span> <a class="code" href="a00207.html">internal::concurrent_queue_iterator<concurrent_queue,const T></a> const_iterator;
-00360 
-00361     <span class="comment">//------------------------------------------------------------------------</span>
-00362     <span class="comment">// The iterators are intended only for debugging.  They are slow and not thread safe.</span>
-00363     <span class="comment">//------------------------------------------------------------------------</span>
-00364     iterator begin() {<span class="keywordflow">return</span> iterator(*<span class="keyword">this</span>);}
-00365     iterator end() {<span class="keywordflow">return</span> iterator();}
-00366     const_iterator begin()<span class="keyword"> const </span>{<span class="keywordflow">return</span> const_iterator(*<span class="keyword">this</span>);}
-00367     const_iterator end()<span class="keyword"> const </span>{<span class="keywordflow">return</span> const_iterator();}
-00368     
-<a name="l00370"></a><a class="code" href="a00204.html#a16">00370</a>     <a class="code" href="a00204.html">concurrent_queue</a>( <span class="keyword">const</span> <a class="code" href="a00204.html">concurrent_queue</a>& src, <span class="keyword">const</span> allocator_type &a = allocator_type()) : 
-00371         concurrent_queue_base_v3( sizeof(T) ), my_allocator( a )
-00372     {
-00373         assign( src );
-00374     }
-00375 
-00377     <span class="keyword">template</span><<span class="keyword">typename</span> InputIterator>
-<a name="l00378"></a><a class="code" href="a00204.html#a17">00378</a>     <a class="code" href="a00204.html">concurrent_queue</a>( InputIterator begin, InputIterator end, <span class="keyword">const</span> allocator_type &a = allocator_type()) :
-00379         concurrent_queue_base_v3( sizeof(T) ), my_allocator( a )
-00380     {
-00381         <span class="keywordflow">for</span>( ; begin != end; ++begin )
-00382             internal_push_if_not_full(&*begin);
-00383     }
-00384 }; 
-00385 
-00386 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
-<a name="l00387"></a><a class="code" href="a00204.html#a1">00387</a> <a class="code" href="a00204.html">concurrent_queue<T,A>::~concurrent_queue</a>() {
-00388     <a class="code" href="a00204.html#a11">clear</a>();
-00389     <a class="code" href="a00205.html#b10">internal_finish_clear</a>();
-00390 }
-00391 
-00392 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
-<a name="l00393"></a><a class="code" href="a00204.html#a11">00393</a> <span class="keywordtype">void</span> <a class="code" href="a00204.html">concurrent_queue<T,A>::clear</a>() {
-00394     <span class="keywordflow">while</span>( !<a class="code" href="a00204.html#a7">empty</a>() ) {
-00395         T value;
-00396         <a class="code" href="a00205.html#b5">internal_pop_if_present</a>(&value);
-00397     }
-00398 }
-00399 
-00400 } <span class="comment">// namespace tbb</span>
-00401 
-00402 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_concurrent_queue_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00331.html b/doc/html/a00331.html
deleted file mode 100644
index a670fb8..0000000
--- a/doc/html/a00331.html
+++ /dev/null
@@ -1,815 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>concurrent_vector.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>concurrent_vector.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_concurrent_vector_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_concurrent_vector_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include "tbb_stddef.h"</span>
-00025 <span class="preprocessor">#include <algorithm></span>
-00026 <span class="preprocessor">#include <iterator></span>
-00027 <span class="preprocessor">#include <memory></span>
-00028 <span class="preprocessor">#include <limits></span>
-00029 <span class="preprocessor">#include <new></span>
-00030 <span class="preprocessor">#include <cstring></span>
-00031 <span class="preprocessor">#include "atomic.h"</span>
-00032 <span class="preprocessor">#include "cache_aligned_allocator.h"</span>
-00033 <span class="preprocessor">#include "blocked_range.h"</span>
-00034 
-00035 <span class="preprocessor">#include "tbb_machine.h"</span>
-00036 
-00037 <span class="preprocessor">#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && defined(_Wp64)</span>
-00038 <span class="preprocessor"></span>    <span class="comment">// Workaround for overzealous compiler warnings in /Wp64 mode</span>
-00039 <span class="preprocessor">    #pragma warning (push)</span>
-00040 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (disable: 4267)</span>
-00041 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00042 <span class="preprocessor"></span>
-00043 <span class="keyword">namespace </span>tbb {
-00044 
-00045 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A = cache_aligned_allocator<T> >
-00046 <span class="keyword">class </span>concurrent_vector;
-00047 
-00049 <span class="preprocessor">#define __TBB_BAD_ALLOC reinterpret_cast<void*>(63)</span>
-00050 <span class="preprocessor"></span>
-00052 <span class="keyword">namespace </span>internal {
-00053 
-00055     <span class="keywordtype">void</span>* __TBB_EXPORTED_FUNC <a class="code" href="a00319.html#a42">itt_load_pointer_v3</a>( <span class="keyword">const</span> <span class="keywordtype">void</span>* src );
-00056 
-00058 
-<a name="l00059"></a><a class="code" href="a00210.html">00059</a>     <span class="keyword">class </span><a class="code" href="a00210.html">concurrent_vector_base_v3</a> {
-00060     <span class="keyword">protected</span>:
-00061 
-00062         <span class="comment">// Basic types declarations</span>
-00063         <span class="keyword">typedef</span> size_t segment_index_t;
-00064         <span class="keyword">typedef</span> size_t size_type;
-00065 
-00066         <span class="comment">// Using enumerations due to Mac linking problems of static const variables</span>
-00067         <span class="keyword">enum</span> {
-00068             <span class="comment">// Size constants</span>
-00069             default_initial_segments = 1, <span class="comment">// 2 initial items</span>
-00071 <span class="comment"></span>            pointers_per_short_table = 3, <span class="comment">// to fit into 8 words of entire structure</span>
-00072             pointers_per_long_table = <span class="keyword">sizeof</span>(segment_index_t) * 8 <span class="comment">// one segment per bit</span>
-00073         };
-00074 
-00075         <span class="comment">// Segment pointer. Can be zero-initialized</span>
-00076         <span class="keyword">struct </span>segment_t {
-00077             <span class="keywordtype">void</span>* array;
-00078 <span class="preprocessor">#if TBB_USE_ASSERT</span>
-00079 <span class="preprocessor"></span>            ~segment_t() {
-00080                 __TBB_ASSERT( array <= __TBB_BAD_ALLOC, <span class="stringliteral">"should have been freed by clear"</span> );
-00081             }
-00082 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
-00083         };
-00084  
-00085         <span class="comment">// Data fields</span>
-00086 
-00088         <span class="keywordtype">void</span>* (*vector_allocator_ptr)(<a class="code" href="a00210.html">concurrent_vector_base_v3</a> &, size_t);
-00089 
-<a name="l00091"></a><a class="code" href="a00210.html#p1">00091</a>         <a class="code" href="a00191.html">atomic<size_type></a> my_first_block;
-00092 
-<a name="l00094"></a><a class="code" href="a00210.html#p2">00094</a>         <a class="code" href="a00191.html">atomic<size_type></a> my_early_size;
-00095 
-<a name="l00097"></a><a class="code" href="a00210.html#p3">00097</a>         <a class="code" href="a00191.html">atomic<segment_t*></a> my_segment;
-00098 
-<a name="l00100"></a><a class="code" href="a00210.html#p4">00100</a>         segment_t my_storage[pointers_per_short_table];
-00101 
-00102         <span class="comment">// Methods</span>
-00103 
-00104         concurrent_vector_base_v3() {
-00105             my_early_size = 0;
-00106             my_first_block = 0; <span class="comment">// here is not default_initial_segments</span>
-00107             <span class="keywordflow">for</span>( segment_index_t i = 0; i < pointers_per_short_table; i++)
-00108                 my_storage[i].array = NULL;
-00109             my_segment = my_storage;
-00110         }
-00111         __TBB_EXPORTED_METHOD ~concurrent_vector_base_v3();
-00112 
-00113         <span class="keyword">static</span> segment_index_t segment_index_of( size_type index ) {
-00114             <span class="keywordflow">return</span> segment_index_t( __TBB_Log2( index|1 ) );
-00115         }
-00116 
-00117         <span class="keyword">static</span> segment_index_t segment_base( segment_index_t k ) {
-00118             <span class="keywordflow">return</span> (segment_index_t(1)<<k & ~segment_index_t(1));
-00119         }
-00120 
-00121         <span class="keyword">static</span> <span class="keyword">inline</span> segment_index_t segment_base_index_of( segment_index_t &index ) {
-00122             segment_index_t k = segment_index_of( index );
-00123             index -= segment_base(k);
-00124             <span class="keywordflow">return</span> k;
-00125         }
-00126 
-00127         <span class="keyword">static</span> size_type segment_size( segment_index_t k ) {
-00128             <span class="keywordflow">return</span> segment_index_t(1)<<k; <span class="comment">// fake value for k==0</span>
-00129         }
-00130 
-<a name="l00132"></a><a class="code" href="a00210.html#x2">00132</a>         <span class="keyword">typedef</span> void (__TBB_EXPORTED_FUNC *internal_array_op1)(<span class="keywordtype">void</span>* begin, size_type n );
-00133 
-<a name="l00135"></a><a class="code" href="a00210.html#x3">00135</a>         <span class="keyword">typedef</span> void (__TBB_EXPORTED_FUNC *internal_array_op2)(<span class="keywordtype">void</span>* dst, <span class="keyword">const</span> <span class="keywordtype">void</span>* src, size_type n );
-00136 
-<a name="l00138"></a><a class="code" href="a00211.html">00138</a>         <span class="keyword">struct </span><a class="code" href="a00211.html">internal_segments_table</a> {
-00139             segment_index_t first_block;
-00140             <span class="keywordtype">void</span>* table[pointers_per_long_table];
-00141         };
-00142 
-00143         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_reserve( size_type n, size_type element_size, size_type max_size );
-00144         size_type __TBB_EXPORTED_METHOD internal_capacity() <span class="keyword">const</span>;
-00145         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_grow_to_at_least( size_type new_size, size_type element_size, internal_array_op2 init, <span class="keyword">const</span> <span class="keywordtype">void</span> *src );
-00146         <span class="keywordtype">void</span> internal_grow( size_type start, size_type finish, size_type element_size, internal_array_op2 init, <span class="keyword">const</span> <span class="keywordtype">void</span> *src );
-00147         size_type __TBB_EXPORTED_METHOD internal_grow_by( size_type delta, size_type element_size, internal_array_op2 init, <span class="keyword">const</span> <span class="keywordtype">void</span> *src );
-00148         <span class="keywordtype">void</span>* __TBB_EXPORTED_METHOD internal_push_back( size_type element_size, size_type& index );
-00149         segment_index_t __TBB_EXPORTED_METHOD internal_clear( internal_array_op1 destroy );
-00150         <span class="keywordtype">void</span>* __TBB_EXPORTED_METHOD internal_compact( size_type element_size, <span class="keywordtype">void</span> *table, internal_array_op1 destroy, internal_array_op2 copy );
-00151         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_copy( <span class="keyword">const</span> concurrent_vector_base_v3& src, size_type element_size, internal_array_op2 copy );
-00152         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_assign( <span class="keyword">const</span> concurrent_vector_base_v3& src, size_type element_size,
-00153                               internal_array_op1 destroy, internal_array_op2 assign, internal_array_op2 copy );
-00154         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_throw_exception(size_type) <span class="keyword">const</span>;
-00155         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_swap(concurrent_vector_base_v3& v);
-00156 
-00157 <span class="keyword">private</span>:
-00159         <span class="keyword">class </span>helper;
-00160         <span class="keyword">friend</span> <span class="keyword">class </span>helper;
-00161     };
-00162     
-00163     <span class="keyword">typedef</span> concurrent_vector_base_v3 <a class="code" href="a00210.html">concurrent_vector_base</a>;
-00164 
-00166 
-00168     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> Value>
-<a name="l00169"></a><a class="code" href="a00274.html">00169</a>     <span class="keyword">class </span><a class="code" href="a00274.html">vector_iterator</a> 
-00170     {
-00172         Container* my_vector;
-00173 
-00175         size_t my_index;
-00176 
-00178 
-00179         <span class="keyword">mutable</span> Value* my_item;
-00180 
-00181         <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> T>
-00182         <span class="keyword">friend</span> <a class="code" href="a00274.html">vector_iterator<C,T></a> operator+( ptrdiff_t offset, <span class="keyword">const</span> <a class="code" href="a00274.html">vector_iterator<C,T></a>& v );
-00183 
-00184         <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00185         <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator==( <span class="keyword">const</span> <a class="code" href="a00274.html">vector_iterator<C,T></a>& i, <span class="keyword">const</span> <a class="code" href="a00274.html">vector_iterator<C,U></a>& j );
-00186 
-00187         <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00188         <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator<( const vector_iterator<C,T>& i, <span class="keyword">const</span> <a class="code" href="a00274.html">vector_iterator<C,U></a>& j );
-00189 
-00190         <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00191         <span class="keyword">friend</span> ptrdiff_t operator-( <span class="keyword">const</span> <a class="code" href="a00274.html">vector_iterator<C,T></a>& i, <span class="keyword">const</span> <a class="code" href="a00274.html">vector_iterator<C,U></a>& j );
-00192     
-00193         <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> U>
-00194         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00274.html">internal::vector_iterator</a>;
-00195 
-00196 <span class="preprocessor">#if !defined(_MSC_VER) || defined(__INTEL_COMPILER)</span>
-00197 <span class="preprocessor"></span>        <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
-00198         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00209.html">tbb::concurrent_vector</a>;
-00199 <span class="preprocessor">#else</span>
-00200 <span class="preprocessor"></span><span class="keyword">public</span>: <span class="comment">// workaround for MSVC</span>
-00201 <span class="preprocessor">#endif </span>
-00202 <span class="preprocessor"></span>
-00203         <a class="code" href="a00274.html">vector_iterator</a>( <span class="keyword">const</span> Container& vector, size_t index ) : 
-00204             my_vector(const_cast<Container*>(&vector)), 
-00205             my_index(index), 
-00206             my_item(NULL)
-00207         {}
-00208 
-00209     <span class="keyword">public</span>:
-<a name="l00211"></a><a class="code" href="a00274.html#a1">00211</a>         <a class="code" href="a00274.html">vector_iterator</a>() : my_vector(NULL), my_index(~size_t(0)), my_item(NULL) {}
-00212 
-00213         <a class="code" href="a00274.html">vector_iterator</a>( <span class="keyword">const</span> <a class="code" href="a00274.html">vector_iterator<Container,typename Container::value_type></a>& other ) :
-00214             my_vector(other.my_vector),
-00215             my_index(other.my_index),
-00216             my_item(other.my_item)
-00217         {}
-00218 
-00219         vector_iterator operator+( ptrdiff_t offset )<span class="keyword"> const </span>{
-00220             <span class="keywordflow">return</span> vector_iterator( *my_vector, my_index+offset );
-00221         }
-00222         vector_iterator &operator+=( ptrdiff_t offset ) {
-00223             my_index+=offset;
-00224             my_item = NULL;
-00225             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-00226         }
-00227         vector_iterator operator-( ptrdiff_t offset )<span class="keyword"> const </span>{
-00228             <span class="keywordflow">return</span> vector_iterator( *my_vector, my_index-offset );
-00229         }
-00230         vector_iterator &operator-=( ptrdiff_t offset ) {
-00231             my_index-=offset;
-00232             my_item = NULL;
-00233             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-00234         }
-00235         Value& operator*()<span class="keyword"> const </span>{
-00236             Value* item = my_item;
-00237             <span class="keywordflow">if</span>( !item ) {
-00238                 item = my_item = &my_vector->internal_subscript(my_index);
-00239             }
-00240             __TBB_ASSERT( item==&my_vector->internal_subscript(my_index), <span class="stringliteral">"corrupt cache"</span> );
-00241             <span class="keywordflow">return</span> *item;
-00242         }
-00243         Value& <a class="code" href="a00209.html#a12">operator[]</a>( ptrdiff_t k )<span class="keyword"> const </span>{
-00244             <span class="keywordflow">return</span> my_vector->internal_subscript(my_index+k);
-00245         }
-00246         Value* operator->()<span class="keyword"> const </span>{<span class="keywordflow">return</span> &operator*();}
-00247 
-<a name="l00249"></a><a class="code" href="a00274.html#a10">00249</a>         <a class="code" href="a00274.html">vector_iterator</a>& operator++() {
-00250             size_t k = ++my_index;
-00251             <span class="keywordflow">if</span>( my_item ) {
-00252                 <span class="comment">// Following test uses 2's-complement wizardry</span>
-00253                 <span class="keywordflow">if</span>( (k& (k-2))==0 ) {
-00254                     <span class="comment">// k is a power of two that is at least k-2</span>
-00255                     my_item= NULL;
-00256                 } <span class="keywordflow">else</span> {
-00257                     ++my_item;
-00258                 }
-00259             }
-00260             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-00261         }
-00262 
-<a name="l00264"></a><a class="code" href="a00274.html#a11">00264</a>         <a class="code" href="a00274.html">vector_iterator</a>& operator--() {
-00265             __TBB_ASSERT( my_index>0, <span class="stringliteral">"operator--() applied to iterator already at beginning of concurrent_vector"</span> ); 
-00266             size_t k = my_index--;
-00267             <span class="keywordflow">if</span>( my_item ) {
-00268                 <span class="comment">// Following test uses 2's-complement wizardry</span>
-00269                 <span class="keywordflow">if</span>( (k& (k-2))==0 ) {
-00270                     <span class="comment">// k is a power of two that is at least k-2  </span>
-00271                     my_item= NULL;
-00272                 } <span class="keywordflow">else</span> {
-00273                     --my_item;
-00274                 }
-00275             }
-00276             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-00277         }
-00278 
-<a name="l00280"></a><a class="code" href="a00274.html#a12">00280</a>         <a class="code" href="a00274.html">vector_iterator</a> operator++(<span class="keywordtype">int</span>) {
-00281             <a class="code" href="a00274.html">vector_iterator</a> result = *<span class="keyword">this</span>;
-00282             operator++();
-00283             <span class="keywordflow">return</span> result;
-00284         }
-00285 
-<a name="l00287"></a><a class="code" href="a00274.html#a13">00287</a>         <a class="code" href="a00274.html">vector_iterator</a> operator--(<span class="keywordtype">int</span>) {
-00288             <a class="code" href="a00274.html">vector_iterator</a> result = *<span class="keyword">this</span>;
-00289             operator--();
-00290             <span class="keywordflow">return</span> result;
-00291         }
-00292 
-00293         <span class="comment">// STL support</span>
-00294 
-00295         <span class="keyword">typedef</span> ptrdiff_t difference_type;
-00296         <span class="keyword">typedef</span> Value value_type;
-00297         <span class="keyword">typedef</span> Value* pointer;
-00298         <span class="keyword">typedef</span> Value& reference;
-00299         <span class="keyword">typedef</span> std::random_access_iterator_tag iterator_category;
-00300     };
-00301 
-00302     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> T>
-00303     vector_iterator<Container,T> operator+( ptrdiff_t offset, <span class="keyword">const</span> vector_iterator<Container,T>& v ) {
-00304         <span class="keywordflow">return</span> vector_iterator<Container,T>( *v.my_vector, v.my_index+offset );
-00305     }
-00306 
-00307     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00308     <span class="keywordtype">bool</span> operator==( <span class="keyword">const</span> vector_iterator<Container,T>& i, <span class="keyword">const</span> vector_iterator<Container,U>& j ) {
-00309         <span class="keywordflow">return</span> i.<a class="code" href="a00274.html#r1">my_index</a>==j.<a class="code" href="a00274.html#r1">my_index</a> && i.<a class="code" href="a00274.html#r0">my_vector</a> == j.<a class="code" href="a00274.html#r0">my_vector</a>;
-00310     }
-00311 
-00312     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00313     <span class="keywordtype">bool</span> operator!=( <span class="keyword">const</span> vector_iterator<Container,T>& i, <span class="keyword">const</span> vector_iterator<Container,U>& j ) {
-00314         <span class="keywordflow">return</span> !(i==j);
-00315     }
-00316 
-00317     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00318     <span class="keywordtype">bool</span> operator<( const vector_iterator<Container,T>& i, <span class="keyword">const</span> vector_iterator<Container,U>& j ) {
-00319         <span class="keywordflow">return</span> i.<a class="code" href="a00274.html#r1">my_index</a><j.<a class="code" href="a00274.html#r1">my_index</a>;
-00320     }
-00321 
-00322     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00323     <span class="keywordtype">bool</span> operator>( <span class="keyword">const</span> vector_iterator<Container,T>& i, <span class="keyword">const</span> vector_iterator<Container,U>& j ) {
-00324         <span class="keywordflow">return</span> j<i;
-00325     }
-00326 
-00327     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00328     <span class="keywordtype">bool</span> operator>=( <span class="keyword">const</span> vector_iterator<Container,T>& i, <span class="keyword">const</span> vector_iterator<Container,U>& j ) {
-00329         <span class="keywordflow">return</span> !(i<j);
-00330     }
-00331 
-00332     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00333     <span class="keywordtype">bool</span> operator<=( const vector_iterator<Container,T>& i, <span class="keyword">const</span> vector_iterator<Container,U>& j ) {
-00334         <span class="keywordflow">return</span> !(j<i);
-00335     }
-00336 
-00337     <span class="keyword">template</span><<span class="keyword">typename</span> Container, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00338     ptrdiff_t operator-( <span class="keyword">const</span> vector_iterator<Container,T>& i, <span class="keyword">const</span> vector_iterator<Container,U>& j ) {
-00339         <span class="keywordflow">return</span> ptrdiff_t(i.my_index)-ptrdiff_t(j.my_index);
-00340     }
-00341 
-00342     <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
-00343     <span class="keyword">class </span>allocator_base {
-00344     <span class="keyword">public</span>:
-00345         <span class="keyword">typedef</span> <span class="keyword">typename</span> A::template
-00346             rebind<T>::other allocator_type;
-00347         allocator_type my_allocator;
-00348 
-00349         allocator_base(<span class="keyword">const</span> allocator_type &a = allocator_type() ) : my_allocator(a) {}
-00350     };
-00351 
-00352 } <span class="comment">// namespace internal</span>
-00354 <span class="comment"></span>
-00356 
-00410 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
-<a name="l00411"></a><a class="code" href="a00209.html">00411</a> <span class="keyword">class </span><a class="code" href="a00209.html">concurrent_vector</a>: <span class="keyword">protected</span> internal::allocator_base<T, A>,
-00412                          <span class="keyword">private</span> internal::concurrent_vector_base_v3 {
-00413 <span class="keyword">private</span>:
-00414     <span class="keyword">template</span><<span class="keyword">typename</span> I>
-00415     <span class="keyword">class </span>generic_range_type: <span class="keyword">public</span> <a class="code" href="a00195.html">blocked_range</a><I> {
-00416     <span class="keyword">public</span>:
-00417         <span class="keyword">typedef</span> T value_type;
-00418         <span class="keyword">typedef</span> T& reference;
-00419         <span class="keyword">typedef</span> <span class="keyword">const</span> T& const_reference;
-00420         <span class="keyword">typedef</span> I <a class="code" href="a00274.html">iterator</a>;
-00421         <span class="keyword">typedef</span> ptrdiff_t difference_type;
-00422         generic_range_type( I begin_, I end_, size_t grainsize = 1) : <a class="code" href="a00195.html">blocked_range<I></a>(begin_,end_,grainsize) {} 
-00423         <span class="keyword">template</span><<span class="keyword">typename</span> U>
-00424         generic_range_type( <span class="keyword">const</span> generic_range_type<U>& r) : <a class="code" href="a00195.html">blocked_range<I></a>(r.begin(),r.end(),r.grainsize()) {} 
-00425         generic_range_type( generic_range_type& r, <a class="code" href="a00254.html">split</a> ) : <a class="code" href="a00195.html">blocked_range<I></a>(r,<a class="code" href="a00254.html">split</a>()) {}
-00426     };
-00427 
-00428     <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> U>
-00429     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00274.html">internal::vector_iterator</a>;
-00430 <span class="keyword">public</span>:
-00431     <span class="comment">//------------------------------------------------------------------------</span>
-00432     <span class="comment">// STL compatible types</span>
-00433     <span class="comment">//------------------------------------------------------------------------</span>
-00434     <span class="keyword">typedef</span> internal::concurrent_vector_base_v3::size_type size_type;
-00435     <span class="keyword">typedef</span> <span class="keyword">typename</span> internal::allocator_base<T, A>::allocator_type allocator_type;
-00436 
-00437     <span class="keyword">typedef</span> T value_type;
-00438     <span class="keyword">typedef</span> ptrdiff_t difference_type;
-00439     <span class="keyword">typedef</span> T& reference;
-00440     <span class="keyword">typedef</span> <span class="keyword">const</span> T& const_reference;
-00441     <span class="keyword">typedef</span> T *pointer;
-00442     <span class="keyword">typedef</span> <span class="keyword">const</span> T *const_pointer;
-00443 
-00444     <span class="keyword">typedef</span> <a class="code" href="a00274.html">internal::vector_iterator<concurrent_vector,T></a> <a class="code" href="a00274.html">iterator</a>;
-00445     <span class="keyword">typedef</span> <a class="code" href="a00274.html">internal::vector_iterator<concurrent_vector,const T></a> <a class="code" href="a00274.html">const_iterator</a>;
-00446 
-00447 <span class="preprocessor">#if !defined(_MSC_VER) || _CPPLIB_VER>=300 </span>
-00448 <span class="preprocessor"></span>    <span class="comment">// Assume ISO standard definition of std::reverse_iterator</span>
-00449     <span class="keyword">typedef</span> std::reverse_iterator<iterator> reverse_iterator;
-00450     <span class="keyword">typedef</span> std::reverse_iterator<const_iterator> const_reverse_iterator;
-00451 <span class="preprocessor">#else</span>
-00452 <span class="preprocessor"></span>    <span class="comment">// Use non-standard std::reverse_iterator</span>
-00453     <span class="keyword">typedef</span> std::reverse_iterator<iterator,T,T&,T*> reverse_iterator;
-00454     <span class="keyword">typedef</span> std::reverse_iterator<const_iterator,T,const T&,const T*> const_reverse_iterator;
-00455 <span class="preprocessor">#endif </span><span class="comment">/* defined(_MSC_VER) && (_MSC_VER<1300) */</span>
-00456 
-00457     <span class="comment">//------------------------------------------------------------------------</span>
-00458     <span class="comment">// Parallel algorithm support</span>
-00459     <span class="comment">//------------------------------------------------------------------------</span>
-00460     <span class="keyword">typedef</span> generic_range_type<iterator> range_type;
-00461     <span class="keyword">typedef</span> generic_range_type<const_iterator> const_range_type;
-00462 
-00463     <span class="comment">//------------------------------------------------------------------------</span>
-00464     <span class="comment">// STL compatible constructors & destructors</span>
-00465     <span class="comment">//------------------------------------------------------------------------</span>
-00466 
-<a name="l00468"></a><a class="code" href="a00209.html#a0">00468</a>     <span class="keyword">explicit</span> <a class="code" href="a00209.html">concurrent_vector</a>(<span class="keyword">const</span> allocator_type &a = allocator_type())
-00469         : internal::allocator_base<T, A>(a)
-00470     {
-00471         vector_allocator_ptr = &internal_allocator;
-00472     }
-00473 
-<a name="l00475"></a><a class="code" href="a00209.html#a1">00475</a>     <a class="code" href="a00209.html">concurrent_vector</a>( <span class="keyword">const</span> <a class="code" href="a00209.html">concurrent_vector</a>& vector, <span class="keyword">const</span> allocator_type& a = allocator_type() )
-00476         : internal::allocator_base<T, A>(a)
-00477     {
-00478         vector_allocator_ptr = &internal_allocator;
-00479         internal_copy(vector, <span class="keyword">sizeof</span>(T), &copy_array);
-00480     }
-00481 
-00483     <span class="keyword">template</span><<span class="keyword">class</span> M>
-<a name="l00484"></a><a class="code" href="a00209.html#a2">00484</a>     <a class="code" href="a00209.html">concurrent_vector</a>( <span class="keyword">const</span> <a class="code" href="a00209.html">concurrent_vector<T, M></a>& vector, <span class="keyword">const</span> allocator_type& a = allocator_type() )
-00485         : internal::allocator_base<T, A>(a)
-00486     {
-00487         vector_allocator_ptr = &internal_allocator;
-00488         internal_copy(vector.<a class="code" href="a00209.html#a42">internal_vector_base</a>(), <span class="keyword">sizeof</span>(T), &copy_array);
-00489     }
-00490 
-<a name="l00492"></a><a class="code" href="a00209.html#a3">00492</a>     <span class="keyword">explicit</span> <a class="code" href="a00209.html">concurrent_vector</a>(size_type n)
-00493     {
-00494         vector_allocator_ptr = &internal_allocator;
-00495         <span class="keywordflow">if</span> ( !n ) <span class="keywordflow">return</span>;
-00496         internal_reserve(n, <span class="keyword">sizeof</span>(T), max_size()); my_early_size = n;
-00497         __TBB_ASSERT( my_first_block == segment_index_of(n-1)+1, NULL );
-00498         initialize_array(static_cast<T*>(my_segment[0].array), NULL, n);
-00499     }
-00500 
-<a name="l00502"></a><a class="code" href="a00209.html#a4">00502</a>     <a class="code" href="a00209.html">concurrent_vector</a>(size_type n, const_reference t, <span class="keyword">const</span> allocator_type& a = allocator_type())
-00503         : internal::allocator_base<T, A>(a)
-00504     {
-00505         vector_allocator_ptr = &internal_allocator;
-00506         internal_assign( n, t );
-00507     }
-00508 
-00510     <span class="keyword">template</span><<span class="keyword">class</span> I>
-<a name="l00511"></a><a class="code" href="a00209.html#a5">00511</a>     <a class="code" href="a00209.html">concurrent_vector</a>(I first, I last, <span class="keyword">const</span> allocator_type &a = allocator_type())
-00512         : internal::allocator_base<T, A>(a)
-00513     {
-00514         vector_allocator_ptr = &internal_allocator;
-00515         internal_assign(first, last, <span class="keyword">static_cast</span><is_integer_tag<std::numeric_limits<I>::is_integer> *>(0) );
-00516     }
-00517 
-<a name="l00519"></a><a class="code" href="a00209.html#a6">00519</a>     <a class="code" href="a00209.html">concurrent_vector</a>& operator=( <span class="keyword">const</span> <a class="code" href="a00209.html">concurrent_vector</a>& vector ) {
-00520         <span class="keywordflow">if</span>( <span class="keyword">this</span> != &vector )
-00521             concurrent_vector_base_v3::internal_assign(vector, <span class="keyword">sizeof</span>(T), &destroy_array, &assign_array, &copy_array);
-00522         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-00523     }
-00524 
-00526     <span class="keyword">template</span><<span class="keyword">class</span> M>
-<a name="l00527"></a><a class="code" href="a00209.html#a7">00527</a>     <a class="code" href="a00209.html">concurrent_vector</a>& operator=( <span class="keyword">const</span> <a class="code" href="a00209.html">concurrent_vector<T, M></a>& vector ) {
-00528         <span class="keywordflow">if</span>( static_cast<void*>( this ) != static_cast<const void*>( &vector ) )
-00529             concurrent_vector_base_v3::internal_assign(vector.<a class="code" href="a00209.html#a42">internal_vector_base</a>(),
-00530                 <span class="keyword">sizeof</span>(T), &destroy_array, &assign_array, &copy_array);
-00531         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-00532     }
-00533 
-00534     <span class="comment">//------------------------------------------------------------------------</span>
-00535     <span class="comment">// Concurrent operations</span>
-00536     <span class="comment">//------------------------------------------------------------------------</span>
-00538 <span class="comment"></span>
-<a name="l00539"></a><a class="code" href="a00209.html#a8">00539</a>     size_type grow_by( size_type delta ) {
-00540         <span class="keywordflow">return</span> delta ? internal_grow_by( delta, <span class="keyword">sizeof</span>(T), &initialize_array, NULL ) : my_early_size;
-00541     }
-00542 
-00544 
-<a name="l00545"></a><a class="code" href="a00209.html#a9">00545</a>     size_type grow_by( size_type delta, const_reference t ) {
-00546         <span class="keywordflow">return</span> delta ? internal_grow_by( delta, <span class="keyword">sizeof</span>(T), &initialize_array_by, static_cast<const void*>(&t) ) : my_early_size;
-00547     }
-00548 
-<a name="l00550"></a><a class="code" href="a00209.html#a10">00550</a>     <span class="keywordtype">void</span> grow_to_at_least( size_type n ) {
-00551         <span class="keywordflow">if</span>( my_early_size<n )
-00552             internal_grow_to_at_least( n, <span class="keyword">sizeof</span>(T), &initialize_array, NULL );
-00553     };
-00554 
-<a name="l00556"></a><a class="code" href="a00209.html#a11">00556</a>     size_type push_back( const_reference item ) {
-00557         size_type k;
-00558         internal_loop_guide loop(1, internal_push_back(<span class="keyword">sizeof</span>(T),k));
-00559         loop.init(&item);
-00560         <span class="keywordflow">return</span> k;
-00561     }
-00562 
-00564 
-<a name="l00566"></a><a class="code" href="a00209.html#a12">00566</a>     reference operator[]( size_type index ) {
-00567         <span class="keywordflow">return</span> internal_subscript(index);
-00568     }
-00569 
-<a name="l00571"></a><a class="code" href="a00209.html#a13">00571</a>     const_reference operator[]( size_type index )<span class="keyword"> const </span>{
-00572         <span class="keywordflow">return</span> internal_subscript(index);
-00573     }
-00574 
-<a name="l00576"></a><a class="code" href="a00209.html#a14">00576</a>     reference at( size_type index ) {
-00577         <span class="keywordflow">return</span> internal_subscript_with_exceptions(index);
-00578     }
-00579 
-<a name="l00581"></a><a class="code" href="a00209.html#a15">00581</a>     const_reference at( size_type index )<span class="keyword"> const </span>{
-00582         <span class="keywordflow">return</span> internal_subscript_with_exceptions(index);
-00583     }
-00584 
-<a name="l00586"></a><a class="code" href="a00209.html#a16">00586</a>     range_type range( size_t grainsize = 1) {
-00587         <span class="keywordflow">return</span> range_type( begin(), end(), grainsize );
-00588     }
-00589 
-<a name="l00591"></a><a class="code" href="a00209.html#a17">00591</a>     const_range_type range( size_t grainsize = 1 )<span class="keyword"> const </span>{
-00592         <span class="keywordflow">return</span> const_range_type( begin(), end(), grainsize );
-00593     }
-00594     <span class="comment">//------------------------------------------------------------------------</span>
-00595     <span class="comment">// Capacity</span>
-00596     <span class="comment">//------------------------------------------------------------------------</span>
-<a name="l00598"></a><a class="code" href="a00209.html#a18">00598</a> <span class="comment"></span>    size_type size()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_early_size;}
-00599 
-<a name="l00601"></a><a class="code" href="a00209.html#a19">00601</a>     <span class="keywordtype">bool</span> empty()<span class="keyword"> const </span>{<span class="keywordflow">return</span> !my_early_size;}
-00602 
-<a name="l00604"></a><a class="code" href="a00209.html#a20">00604</a>     size_type capacity()<span class="keyword"> const </span>{<span class="keywordflow">return</span> internal_capacity();}
-00605 
-00607 
-<a name="l00609"></a><a class="code" href="a00209.html#a21">00609</a>     <span class="keywordtype">void</span> reserve( size_type n ) {
-00610         <span class="keywordflow">if</span>( n )
-00611             internal_reserve(n, <span class="keyword">sizeof</span>(T), max_size());
-00612     }
-00613 
-00615     <span class="keywordtype">void</span> compact();
-00616 
-<a name="l00618"></a><a class="code" href="a00209.html#a23">00618</a>     size_type max_size()<span class="keyword"> const </span>{<span class="keywordflow">return</span> (~size_type(0))/<span class="keyword">sizeof</span>(T);}
-00619 
-00620     <span class="comment">//------------------------------------------------------------------------</span>
-00621     <span class="comment">// STL support</span>
-00622     <span class="comment">//------------------------------------------------------------------------</span>
-00623 
-<a name="l00625"></a><a class="code" href="a00209.html#a24">00625</a>     <a class="code" href="a00274.html">iterator</a> begin() {<span class="keywordflow">return</span> <a class="code" href="a00274.html">iterator</a>(*<span class="keyword">this</span>,0);}
-<a name="l00627"></a><a class="code" href="a00209.html#a25">00627</a>     <a class="code" href="a00274.html">iterator</a> end() {<span class="keywordflow">return</span> <a class="code" href="a00274.html">iterator</a>(*<span class="keyword">this</span>,size());}
-<a name="l00629"></a><a class="code" href="a00209.html#a26">00629</a>     <a class="code" href="a00274.html">const_iterator</a> begin()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="a00274.html">const_iterator</a>(*<span class="keyword">this</span>,0);}
-<a name="l00631"></a><a class="code" href="a00209.html#a27">00631</a>     <a class="code" href="a00274.html">const_iterator</a> end()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="a00274.html">const_iterator</a>(*<span class="keyword">this</span>,size());}
-<a name="l00633"></a><a class="code" href="a00209.html#a28">00633</a>     reverse_iterator rbegin() {<span class="keywordflow">return</span> reverse_iterator(end());}
-<a name="l00635"></a><a class="code" href="a00209.html#a29">00635</a>     reverse_iterator rend() {<span class="keywordflow">return</span> reverse_iterator(begin());}
-<a name="l00637"></a><a class="code" href="a00209.html#a30">00637</a>     const_reverse_iterator rbegin()<span class="keyword"> const </span>{<span class="keywordflow">return</span> const_reverse_iterator(end());}
-<a name="l00639"></a><a class="code" href="a00209.html#a31">00639</a>     const_reverse_iterator rend()<span class="keyword"> const </span>{<span class="keywordflow">return</span> const_reverse_iterator(begin());}
-<a name="l00641"></a><a class="code" href="a00209.html#a32">00641</a>     reference front() {
-00642         __TBB_ASSERT( size()>0, NULL);
-00643         <span class="keywordflow">return</span> static_cast<T*>(my_segment[0].array)[0];
-00644     }
-<a name="l00646"></a><a class="code" href="a00209.html#a33">00646</a>     const_reference front()<span class="keyword"> const </span>{
-00647         __TBB_ASSERT( size()>0, NULL);
-00648         <span class="keywordflow">return</span> static_cast<const T*>(my_segment[0].array)[0];
-00649     }
-<a name="l00651"></a><a class="code" href="a00209.html#a34">00651</a>     reference back() {
-00652         __TBB_ASSERT( size()>0, NULL);
-00653         <span class="keywordflow">return</span> internal_subscript( my_early_size-1 );
-00654     }
-<a name="l00656"></a><a class="code" href="a00209.html#a35">00656</a>     const_reference back()<span class="keyword"> const </span>{
-00657         __TBB_ASSERT( size()>0, NULL);
-00658         <span class="keywordflow">return</span> internal_subscript( my_early_size-1 );
-00659     }
-<a name="l00661"></a><a class="code" href="a00209.html#a36">00661</a>     allocator_type get_allocator()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this->my_allocator; }
-00662 
-<a name="l00664"></a><a class="code" href="a00209.html#a37">00664</a>     <span class="keywordtype">void</span> assign(size_type n, const_reference t) { clear(); internal_assign( n, t ); }
-00665 
-00667     <span class="keyword">template</span><<span class="keyword">class</span> I>
-<a name="l00668"></a><a class="code" href="a00209.html#a38">00668</a>     <span class="keywordtype">void</span> assign(I first, I last) {
-00669         clear(); internal_assign( first, last, <span class="keyword">static_cast</span><is_integer_tag<std::numeric_limits<I>::is_integer> *>(0) );
-00670     }
-00671 
-<a name="l00673"></a><a class="code" href="a00209.html#a39">00673</a>     <span class="keywordtype">void</span> swap(<a class="code" href="a00209.html">concurrent_vector</a> &vector) {
-00674         <span class="keywordflow">if</span>( <span class="keyword">this</span> != &vector ) {
-00675             concurrent_vector_base_v3::internal_swap(static_cast<concurrent_vector_base_v3&>(vector));
-00676             std::swap(this->my_allocator, vector.my_allocator);
-00677         }
-00678     }
-00679 
-00681 
-<a name="l00682"></a><a class="code" href="a00209.html#a40">00682</a>     <span class="keywordtype">void</span> clear() {
-00683         internal_clear(&destroy_array);
-00684     }
-00685 
-<a name="l00687"></a><a class="code" href="a00209.html#a41">00687</a>     ~<a class="code" href="a00209.html">concurrent_vector</a>() {
-00688         segment_t *table = my_segment;
-00689         internal_free_segments( reinterpret_cast<void**>(table), internal_clear(&destroy_array), my_first_block );
-00690         <span class="comment">// base class destructor call should be then</span>
-00691     }
-00692 
-00693     <span class="keyword">const</span> <a class="code" href="a00210.html">internal::concurrent_vector_base_v3</a> &internal_vector_base()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-00694 <span class="keyword">private</span>:
-00696     <span class="keyword">static</span> <span class="keywordtype">void</span> *internal_allocator(internal::concurrent_vector_base_v3 &vb, size_t k) {
-00697         <span class="keywordflow">return</span> static_cast<concurrent_vector<T, A>&>(vb).my_allocator.allocate(k);
-00698     }
-00700     <span class="keywordtype">void</span> internal_free_segments(<span class="keywordtype">void</span> *table[], segment_index_t k, segment_index_t first_block);
-00701 
-00703     T& internal_subscript( size_type index ) <span class="keyword">const</span>;
-00704 
-00706     T& internal_subscript_with_exceptions( size_type index ) <span class="keyword">const</span>;
-00707 
-00709     <span class="keywordtype">void</span> internal_assign(size_type n, const_reference t);
-00710 
-00712     <span class="keyword">template</span><<span class="keywordtype">bool</span> B> <span class="keyword">class </span>is_integer_tag;
-00713 
-00715     <span class="keyword">template</span><<span class="keyword">class</span> I>
-00716     <span class="keywordtype">void</span> internal_assign(I first, I last, is_integer_tag<true> *) {
-00717         internal_assign(static_cast<size_type>(first), static_cast<T>(last));
-00718     }
-00720     <span class="keyword">template</span><<span class="keyword">class</span> I>
-00721     <span class="keywordtype">void</span> internal_assign(I first, I last, is_integer_tag<false> *) {
-00722         internal_assign_iterators(first, last);
-00723     }
-00725     <span class="keyword">template</span><<span class="keyword">class</span> I>
-00726     <span class="keywordtype">void</span> internal_assign_iterators(I first, I last);
-00727 
-00729     <span class="keyword">static</span> <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC initialize_array( <span class="keywordtype">void</span>* begin, <span class="keyword">const</span> <span class="keywordtype">void</span>*, size_type n );
-00730 
-00732     <span class="keyword">static</span> <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC initialize_array_by( <span class="keywordtype">void</span>* begin, <span class="keyword">const</span> <span class="keywordtype">void</span>* src, size_type n );
-00733 
-00735     <span class="keyword">static</span> <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC copy_array( <span class="keywordtype">void</span>* dst, <span class="keyword">const</span> <span class="keywordtype">void</span>* src, size_type n );
-00736 
-00738     <span class="keyword">static</span> <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC assign_array( <span class="keywordtype">void</span>* dst, <span class="keyword">const</span> <span class="keywordtype">void</span>* src, size_type n );
-00739 
-00741     <span class="keyword">static</span> <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC destroy_array( <span class="keywordtype">void</span>* begin, size_type n );
-00742 
-00744     <span class="keyword">class </span>internal_loop_guide : internal::no_copy {
-00745     <span class="keyword">public</span>:
-00746         <span class="keyword">const</span> pointer array;
-00747         <span class="keyword">const</span> size_type n;
-00748         size_type i;
-00749         internal_loop_guide(size_type ntrials, <span class="keywordtype">void</span> *ptr)
-00750             : array(static_cast<pointer>(ptr)), n(ntrials), i(0) {}
-00751         <span class="keywordtype">void</span> init() {   <span class="keywordflow">for</span>(; i < n; ++i) <span class="keyword">new</span>( &array[i] ) T(); }
-00752         <span class="keywordtype">void</span> init(<span class="keyword">const</span> <span class="keywordtype">void</span> *src) { <span class="keywordflow">for</span>(; i < n; ++i) new( &array[i] ) T(*static_cast<const T*>(src)); }
-00753         <span class="keywordtype">void</span> copy(<span class="keyword">const</span> <span class="keywordtype">void</span> *src) { <span class="keywordflow">for</span>(; i < n; ++i) new( &array[i] ) T(static_cast<const T*>(src)[i]); }
-00754         <span class="keywordtype">void</span> assign(<span class="keyword">const</span> <span class="keywordtype">void</span> *src) { <span class="keywordflow">for</span>(; i < n; ++i) array[i] = static_cast<const T*>(src)[i]; }
-00755         <span class="keyword">template</span><<span class="keyword">class</span> I> <span class="keywordtype">void</span> iterate(I &src) { <span class="keywordflow">for</span>(; i < n; ++i, ++src) <span class="keyword">new</span>( &array[i] ) T( *src ); }
-00756         ~internal_loop_guide() {
-00757             <span class="keywordflow">if</span>(i < n) <span class="comment">// if exception raised, do zerroing on the rest of items</span>
-00758                 std::memset(array+i, 0, (n-i)*<span class="keyword">sizeof</span>(value_type));
-00759         }
-00760     };
-00761 };
-00762 
-00763 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
-<a name="l00764"></a><a class="code" href="a00209.html#a22">00764</a> <span class="keywordtype">void</span> <a class="code" href="a00209.html">concurrent_vector<T, A>::compact</a>() {
-00765     internal_segments_table old;
-00766     <span class="keywordflow">try</span> {
-00767         <span class="keywordflow">if</span>( internal_compact( <span class="keyword">sizeof</span>(T), &old, &destroy_array, &copy_array ) )
-00768             internal_free_segments( old.table, pointers_per_long_table, old.first_block ); <span class="comment">// free joined and unnecessary segments</span>
-00769     } <span class="keywordflow">catch</span>(...) {
-00770         <span class="keywordflow">if</span>( old.first_block ) <span class="comment">// free segment allocated for compacting. Only for support of exceptions in ctor of user T[ype]</span>
-00771             internal_free_segments( old.table, 1, old.first_block );
-00772         <span class="keywordflow">throw</span>;
-00773     }
-00774 }
-00775 
-00776 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
-00777 <span class="keywordtype">void</span> <a class="code" href="a00209.html">concurrent_vector<T, A>::internal_free_segments</a>(<span class="keywordtype">void</span> *table[], segment_index_t k, segment_index_t first_block) {
-00778     <span class="comment">// Free the arrays</span>
-00779     <span class="keywordflow">while</span>( k > first_block ) {
-00780         --k;
-00781         T* array = static_cast<T*>(table[k]);
-00782         table[k] = NULL;
-00783         <span class="keywordflow">if</span>( array > __TBB_BAD_ALLOC ) <span class="comment">// check for correct segment pointer</span>
-00784             this->my_allocator.deallocate( array, segment_size(k) );
-00785     }
-00786     T* array = static_cast<T*>(table[0]);
-00787     <span class="keywordflow">if</span>( array > __TBB_BAD_ALLOC ) {
-00788         __TBB_ASSERT( first_block > 0, NULL );
-00789         <span class="keywordflow">while</span>(k > 0) table[--k] = NULL;
-00790         this->my_allocator.deallocate( array, segment_size(first_block) );
-00791     }
-00792 }
-00793 
-00794 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
-00795 T& concurrent_vector<T, A>::internal_subscript( size_type index )<span class="keyword"> const </span>{
-00796     __TBB_ASSERT( index<<a class="code" href="a00209.html#a18">size</a>(), <span class="stringliteral">"index out of bounds"</span> );
-00797     size_type j = index;
-00798     segment_index_t k = segment_base_index_of( j );
-00799     <span class="comment">// no need in __TBB_load_with_acquire since thread works in own space or gets </span>
-00800 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS</span>
-00801 <span class="preprocessor"></span>    <span class="keywordflow">return</span> static_cast<T*>( <a class="code" href="a00319.html#a42">tbb::internal::itt_load_pointer_v3</a>(&my_segment[k].array))[j];
-00802 <span class="preprocessor">#else</span>
-00803 <span class="preprocessor"></span>    <span class="keywordflow">return</span> static_cast<T*>(my_segment[k].array)[j];
-00804 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS */</span>
-00805 }
-00806 
-00807 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
-00808 T& concurrent_vector<T, A>::internal_subscript_with_exceptions( size_type index )<span class="keyword"> const </span>{
-00809     <span class="keywordflow">if</span>( index >= <a class="code" href="a00209.html#a18">size</a>() )
-00810         internal_throw_exception(0); <span class="comment">// throw std::out_of_range</span>
-00811     size_type j = index;
-00812     segment_index_t k = segment_base_index_of( j );
-00813     <span class="keywordflow">if</span>( my_segment == (segment_t*)my_storage && k >= pointers_per_short_table )
-00814         internal_throw_exception(1); <span class="comment">// throw std::out_of_range</span>
-00815     <span class="keywordtype">void</span> *array = my_segment[k].array; <span class="comment">// no need in __TBB_load_with_acquire</span>
-00816     <span class="keywordflow">if</span>( array <= __TBB_BAD_ALLOC ) <span class="comment">// check for correct segment pointer</span>
-00817         internal_throw_exception(2); <span class="comment">// throw std::range_error</span>
-00818     <span class="keywordflow">return</span> static_cast<T*>(array)[j];
-00819 }
-00820 
-00821 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
-00822 <span class="keywordtype">void</span> concurrent_vector<T, A>::internal_assign(size_type n, const_reference t)
-00823 {
-00824     __TBB_ASSERT(my_early_size == 0, NULL);
-00825     <span class="keywordflow">if</span>( !n ) <span class="keywordflow">return</span>;
-00826     internal_reserve(n, <span class="keyword">sizeof</span>(T), <a class="code" href="a00209.html#a23">max_size</a>());
-00827     my_early_size = n;
-00828     segment_index_t k = 0;
-00829     size_type sz = segment_size( my_first_block );
-00830     <span class="keywordflow">while</span>( sz < n ) {
-00831         initialize_array_by(static_cast<T*>(my_segment[k].array), static_cast<const void*>(&t), sz);
-00832         n -= sz;
-00833         <span class="keywordflow">if</span>( !k ) k = my_first_block;
-00834         <span class="keywordflow">else</span> { ++k; sz <<= 1; }
-00835     }
-00836     initialize_array_by(static_cast<T*>(my_segment[k].array), static_cast<const void*>(&t), n);
-00837 }
-00838 
-00839 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A> <span class="keyword">template</span><<span class="keyword">class</span> I>
-00840 <span class="keywordtype">void</span> concurrent_vector<T, A>::internal_assign_iterators(I first, I last) {
-00841     __TBB_ASSERT(my_early_size == 0, NULL);
-00842     size_type n = std::distance(first, last);
-00843     <span class="keywordflow">if</span>( !n ) <span class="keywordflow">return</span>;
-00844     internal_reserve(n, <span class="keyword">sizeof</span>(T), <a class="code" href="a00209.html#a23">max_size</a>());
-00845     my_early_size = n;
-00846     segment_index_t k = 0;
-00847     size_type sz = segment_size( my_first_block );
-00848     <span class="keywordflow">while</span>( sz < n ) {
-00849         internal_loop_guide loop(sz, my_segment[k].array);
-00850         loop.iterate(first);
-00851         n -= sz;
-00852         <span class="keywordflow">if</span>( !k ) k = my_first_block;
-00853         <span class="keywordflow">else</span> { ++k; sz <<= 1; }
-00854     }
-00855     internal_loop_guide loop(n, my_segment[k].array);
-00856     loop.iterate(first);
-00857 }
-00858 
-00859 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
-00860 <span class="keywordtype">void</span> concurrent_vector<T, A>::initialize_array( <span class="keywordtype">void</span>* begin, <span class="keyword">const</span> <span class="keywordtype">void</span> *, size_type n ) {
-00861     internal_loop_guide loop(n, begin); loop.init();
-00862 }
-00863 
-00864 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
-00865 <span class="keywordtype">void</span> concurrent_vector<T, A>::initialize_array_by( <span class="keywordtype">void</span>* begin, <span class="keyword">const</span> <span class="keywordtype">void</span> *src, size_type n ) {
-00866     internal_loop_guide loop(n, begin); loop.init(src);
-00867 }
-00868 
-00869 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
-00870 <span class="keywordtype">void</span> concurrent_vector<T, A>::copy_array( <span class="keywordtype">void</span>* dst, <span class="keyword">const</span> <span class="keywordtype">void</span>* src, size_type n ) {
-00871     internal_loop_guide loop(n, dst); loop.copy(src);
-00872 }
-00873 
-00874 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
-00875 <span class="keywordtype">void</span> concurrent_vector<T, A>::assign_array( <span class="keywordtype">void</span>* dst, <span class="keyword">const</span> <span class="keywordtype">void</span>* src, size_type n ) {
-00876     internal_loop_guide loop(n, dst); loop.assign(src);
-00877 }
-00878 
-00879 <span class="preprocessor">#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) </span>
-00880 <span class="preprocessor"></span>    <span class="comment">// Workaround for overzealous compiler warning</span>
-00881 <span class="preprocessor">    #pragma warning (push)</span>
-00882 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (disable: 4189)</span>
-00883 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00884 <span class="preprocessor"></span><span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
-00885 <span class="keywordtype">void</span> concurrent_vector<T, A>::destroy_array( <span class="keywordtype">void</span>* begin, size_type n ) {
-00886     T* array = static_cast<T*>(begin);
-00887     <span class="keywordflow">for</span>( size_type j=n; j>0; --j )
-00888         array[j-1].~T(); <span class="comment">// destructors are supposed to not throw any exceptions</span>
-00889 }
-00890 <span class="preprocessor">#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) </span>
-00891 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (pop)</span>
-00892 <span class="preprocessor"></span><span class="preprocessor">#endif // warning 4189 is back </span>
-00893 <span class="preprocessor"></span>
-00894 <span class="comment">// concurrent_vector's template functions</span>
-00895 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A1, <span class="keyword">class</span> A2>
-00896 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> concurrent_vector<T, A1> &a, <span class="keyword">const</span> concurrent_vector<T, A2> &b) {
-00897     <span class="comment">//TODO[?]: deal with _Range_checked_iterator_tag of MSVC.</span>
-00898     <span class="comment">// Simply:    return a.size() == b.size() && std::equal(a.begin(), a.end(), b.begin());</span>
-00899     <span class="keywordflow">if</span>(a.size() != b.size()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00900     <span class="keyword">typename</span> concurrent_vector<T, A1>::const_iterator i(a.begin());
-00901     <span class="keyword">typename</span> concurrent_vector<T, A2>::const_iterator j(b.begin());
-00902     <span class="keywordflow">for</span>(; i != a.end(); ++i, ++j)
-00903         <span class="keywordflow">if</span>( !(*i == *j) ) <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00904     <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00905 }
-00906 
-00907 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A1, <span class="keyword">class</span> A2>
-00908 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> concurrent_vector<T, A1> &a, <span class="keyword">const</span> concurrent_vector<T, A2> &b)
-00909 {    <span class="keywordflow">return</span> !(a == b); }
-00910 
-00911 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A1, <span class="keyword">class</span> A2>
-00912 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator<(const concurrent_vector<T, A1> &a, <span class="keyword">const</span> concurrent_vector<T, A2> &b)
-00913 {    <span class="keywordflow">return</span> (std::lexicographical_compare(a.begin(), a.end(), b.begin(), b.end())); }
-00914 
-00915 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A1, <span class="keyword">class</span> A2>
-00916 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator>(<span class="keyword">const</span> concurrent_vector<T, A1> &a, <span class="keyword">const</span> concurrent_vector<T, A2> &b)
-00917 {    <span class="keywordflow">return</span> b < a; }
-00918 
-00919 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A1, <span class="keyword">class</span> A2>
-00920 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator<=(const concurrent_vector<T, A1> &a, <span class="keyword">const</span> concurrent_vector<T, A2> &b)
-00921 {    <span class="keywordflow">return</span> !(b < a); }
-00922 
-00923 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A1, <span class="keyword">class</span> A2>
-00924 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator>=(<span class="keyword">const</span> concurrent_vector<T, A1> &a, <span class="keyword">const</span> concurrent_vector<T, A2> &b)
-00925 {    <span class="keywordflow">return</span> !(a < b); }
-00926 
-00927 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">class</span> A>
-00928 <span class="keyword">inline</span> <span class="keywordtype">void</span> swap(concurrent_vector<T, A> &a, concurrent_vector<T, A> &b)
-00929 {    a.swap( b ); }
-00930 
-00931 } <span class="comment">// namespace tbb</span>
-00932 
-00933 <span class="preprocessor">#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && defined(_Wp64)</span>
-00934 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (pop)</span>
-00935 <span class="preprocessor"></span><span class="preprocessor">#endif // warning 4267 is back</span>
-00936 <span class="preprocessor"></span>
-00937 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_concurrent_vector_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00332.html b/doc/html/a00332.html
deleted file mode 100644
index c132539..0000000
--- a/doc/html/a00332.html
+++ /dev/null
@@ -1,187 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>mutex.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>mutex.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_mutex_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_mutex_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#if _WIN32||_WIN64</span>
-00025 <span class="preprocessor"></span><span class="preprocessor">#include <windows.h></span>
-00026 <span class="preprocessor">#if !defined(_WIN32_WINNT)</span>
-00027 <span class="preprocessor"></span><span class="comment">// The following Windows API function is declared explicitly;</span>
-00028 <span class="comment">// otherwise any user would have to specify /D_WIN32_WINNT=0x0400</span>
-00029 <span class="keyword">extern</span> <span class="stringliteral">"C"</span> BOOL WINAPI TryEnterCriticalSection( LPCRITICAL_SECTION );
-00030 <span class="preprocessor">#endif</span>
-00031 <span class="preprocessor"></span>
-00032 <span class="preprocessor">#else </span><span class="comment">/* if not _WIN32||_WIN64 */</span>
-00033 <span class="preprocessor">#include <pthread.h></span>
-00034 <span class="keyword">namespace </span>tbb { <span class="keyword">namespace </span>internal {
-00035 <span class="comment">// Use this internal TBB function to throw an exception</span>
-00036 <span class="keyword">extern</span> <span class="keywordtype">void</span> handle_perror( <span class="keywordtype">int</span> error_code, <span class="keyword">const</span> <span class="keywordtype">char</span>* what );
-00037 } } <span class="comment">//namespaces</span>
-00038 <span class="preprocessor">#endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
-00039 
-00040 <span class="preprocessor">#include "tbb_stddef.h"</span>
-00041 <span class="preprocessor">#include "tbb_profiling.h"</span>
-00042 
-00043 <span class="keyword">namespace </span>tbb {
-00044 
-00046 
-<a name="l00048"></a><a class="code" href="a00227.html">00048</a> <span class="keyword">class </span><a class="code" href="a00227.html">mutex</a> {
-00049 <span class="keyword">public</span>:
-<a name="l00051"></a><a class="code" href="a00227.html#a0">00051</a>     <a class="code" href="a00227.html">mutex</a>() {
-00052 <span class="preprocessor">#if TBB_USE_ASSERT || TBB_USE_THREADING_TOOLS</span>
-00053 <span class="preprocessor"></span>    internal_construct();
-00054 <span class="preprocessor">#else</span>
-00055 <span class="preprocessor"></span><span class="preprocessor">  #if _WIN32||_WIN64</span>
-00056 <span class="preprocessor"></span>        InitializeCriticalSection(&impl);
-00057 <span class="preprocessor">  #else</span>
-00058 <span class="preprocessor"></span>        <span class="keywordtype">int</span> error_code = pthread_mutex_init(&impl,NULL);
-00059         <span class="keywordflow">if</span>( error_code )
-00060             tbb::internal::handle_perror(error_code,<span class="stringliteral">"mutex: pthread_mutex_init failed"</span>);
-00061 <span class="preprocessor">  #endif </span><span class="comment">/* _WIN32||_WIN64*/</span>
-00062 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
-00063     };
-00064 
-00065     ~<a class="code" href="a00227.html">mutex</a>() {
-00066 <span class="preprocessor">#if TBB_USE_ASSERT</span>
-00067 <span class="preprocessor"></span>        internal_destroy();
-00068 <span class="preprocessor">#else</span>
-00069 <span class="preprocessor"></span><span class="preprocessor">  #if _WIN32||_WIN64</span>
-00070 <span class="preprocessor"></span>        DeleteCriticalSection(&impl);
-00071 <span class="preprocessor">  #else</span>
-00072 <span class="preprocessor"></span>        pthread_mutex_destroy(&impl); 
-00073 
-00074 <span class="preprocessor">  #endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
-00075 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
-00076     };
-00077 
-00078     <span class="keyword">class </span>scoped_lock;
-00079     <span class="keyword">friend</span> <span class="keyword">class </span>scoped_lock;
-00080 
-00082 
-<a name="l00084"></a><a class="code" href="a00228.html">00084</a>     <span class="keyword">class </span><a class="code" href="a00228.html">scoped_lock</a> : internal::no_copy {
-00085     <span class="keyword">public</span>:
-<a name="l00087"></a><a class="code" href="a00228.html#a0">00087</a>         <a class="code" href="a00228.html">scoped_lock</a>() : my_mutex(NULL) {};
-00088 
-00090 
-<a name="l00091"></a><a class="code" href="a00228.html#a1">00091</a>         <a class="code" href="a00228.html">scoped_lock</a>( <a class="code" href="a00227.html">mutex</a>& <a class="code" href="a00227.html">mutex</a> ) {
-00092             <a class="code" href="a00318.html#a57a1">acquire</a>( mutex );
-00093         }
-00094 
-<a name="l00096"></a><a class="code" href="a00228.html#a2">00096</a>         ~<a class="code" href="a00228.html">scoped_lock</a>() {
-00097             <span class="keywordflow">if</span>( my_mutex ) 
-00098                 <a class="code" href="a00318.html#a57a2">release</a>();
-00099         }
-00100 
-<a name="l00102"></a><a class="code" href="a00228.html#a3">00102</a>         <span class="keywordtype">void</span> <a class="code" href="a00318.html#a57a1">acquire</a>( <a class="code" href="a00227.html">mutex</a>& <a class="code" href="a00227.html">mutex</a> ) {
-00103 <span class="preprocessor">#if TBB_USE_ASSERT</span>
-00104 <span class="preprocessor"></span>            internal_acquire(mutex);
-00105 <span class="preprocessor">#else</span>
-00106 <span class="preprocessor"></span>            my_mutex = &mutex;
-00107 <span class="preprocessor">  #if _WIN32||_WIN64</span>
-00108 <span class="preprocessor"></span>            EnterCriticalSection(&mutex.<a class="code" href="a00227.html#r0">impl</a>);
-00109 <span class="preprocessor">  #else</span>
-00110 <span class="preprocessor"></span>            pthread_mutex_lock(&mutex.<a class="code" href="a00227.html#r0">impl</a>);
-00111 <span class="preprocessor">  #endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
-00112 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
-00113         }
-00114 
-<a name="l00116"></a><a class="code" href="a00228.html#a4">00116</a>         <span class="keywordtype">bool</span> try_acquire( <a class="code" href="a00227.html">mutex</a>& <a class="code" href="a00227.html">mutex</a> ) {
-00117 <span class="preprocessor">#if TBB_USE_ASSERT</span>
-00118 <span class="preprocessor"></span>            <span class="keywordflow">return</span> internal_try_acquire (mutex);
-00119 <span class="preprocessor">#else</span>
-00120 <span class="preprocessor"></span>            <span class="keywordtype">bool</span> result;
-00121 <span class="preprocessor">  #if _WIN32||_WIN64</span>
-00122 <span class="preprocessor"></span>            result = TryEnterCriticalSection(&mutex.<a class="code" href="a00227.html#r0">impl</a>)!=0;
-00123 <span class="preprocessor">  #else</span>
-00124 <span class="preprocessor"></span>            result = pthread_mutex_trylock(&mutex.<a class="code" href="a00227.html#r0">impl</a>)==0;
-00125 <span class="preprocessor">  #endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
-00126             <span class="keywordflow">if</span>( result )
-00127                 my_mutex = &mutex;
-00128             <span class="keywordflow">return</span> result;
-00129 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
-00130         }
-00131 
-<a name="l00133"></a><a class="code" href="a00228.html#a5">00133</a>         <span class="keywordtype">void</span> <a class="code" href="a00318.html#a57a2">release</a>() {
-00134 <span class="preprocessor">#if TBB_USE_ASSERT</span>
-00135 <span class="preprocessor"></span>            internal_release ();
-00136 <span class="preprocessor">#else</span>
-00137 <span class="preprocessor"></span><span class="preprocessor">  #if _WIN32||_WIN64</span>
-00138 <span class="preprocessor"></span>            LeaveCriticalSection(&my_mutex->impl);
-00139 <span class="preprocessor">  #else</span>
-00140 <span class="preprocessor"></span>            pthread_mutex_unlock(&my_mutex->impl);
-00141 <span class="preprocessor">  #endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
-00142             my_mutex = NULL;
-00143 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
-00144         }
-00145 
-00146     <span class="keyword">private</span>:
-00148         <a class="code" href="a00227.html">mutex</a>* my_mutex;
-00149 
-00151         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_acquire( <a class="code" href="a00227.html">mutex</a>& m );
-00152 
-00154         <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD internal_try_acquire( <a class="code" href="a00227.html">mutex</a>& m );
-00155 
-00157         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_release();
-00158     };
-00159 
-00160     <span class="comment">// Mutex traits</span>
-00161     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_rw_mutex = <span class="keyword">false</span>;
-00162     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_recursive_mutex = <span class="keyword">false</span>;
-00163     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_fair_mutex = <span class="keyword">false</span>;
-00164 
-00165 <span class="keyword">private</span>:
-00166 <span class="preprocessor">#if _WIN32||_WIN64</span>
-00167 <span class="preprocessor"></span>    CRITICAL_SECTION impl;    
-00168     <span class="keyword">enum</span> state_t {
-00169         INITIALIZED=0x1234,
-00170         DESTROYED=0x789A,
-00171         HELD=0x56CD
-00172     } state;
-00173 <span class="preprocessor">#else</span>
-00174 <span class="preprocessor"></span>    pthread_mutex_t impl;
-00175 <span class="preprocessor">#endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
-00176 
-00178     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_construct();
-00179 
-00181     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_destroy();
-00182 };
-00183 
-00184 __TBB_DEFINE_PROFILING_SET_NAME(mutex)
-00185 
-00186 } <span class="comment">// namespace tbb </span>
-00187 
-00188 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_mutex_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00333.html b/doc/html/a00333.html
deleted file mode 100644
index 657cb34..0000000
--- a/doc/html/a00333.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>null_mutex.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>null_mutex.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_null_mutex_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_null_mutex_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="keyword">namespace </span>tbb {
-00025     
-00026 <span class="keyword">class </span>null_mutex {   
-00028     null_mutex( <span class="keyword">const</span> null_mutex& );   
-00029     <span class="keywordtype">void</span> operator=( <span class="keyword">const</span> null_mutex& );   
-00030 <span class="keyword">public</span>:   
-00031     <span class="keyword">class </span>scoped_lock {   
-00032     <span class="keyword">public</span>:   
-00033         scoped_lock() {}
-00034         scoped_lock( null_mutex& ) {}   
-00035         ~scoped_lock() {}
-00036         <span class="keywordtype">void</span> <a class="code" href="a00318.html#a57a1">acquire</a>( null_mutex& ) {}
-00037         <span class="keywordtype">bool</span> try_acquire( null_mutex& ) { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
-00038         <span class="keywordtype">void</span> <a class="code" href="a00318.html#a57a2">release</a>() {}
-00039     };
-00040   
-00041     null_mutex() {}
-00042     
-00043     <span class="comment">// Mutex traits   </span>
-00044     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_rw_mutex = <span class="keyword">false</span>;   
-00045     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_recursive_mutex = <span class="keyword">true</span>;
-00046     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_fair_mutex = <span class="keyword">true</span>;
-00047 };  
-00048 
-00049 }
-00050 
-00051 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_null_mutex_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00334.html b/doc/html/a00334.html
deleted file mode 100644
index 3b50c08..0000000
--- a/doc/html/a00334.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>null_rw_mutex.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>null_rw_mutex.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_null_rw_mutex_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_null_rw_mutex_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="keyword">namespace </span>tbb {
-00025     
-00026 <span class="keyword">class </span>null_rw_mutex {
-00028     null_rw_mutex( <span class="keyword">const</span> null_rw_mutex& );   
-00029     <span class="keywordtype">void</span> operator=( <span class="keyword">const</span> null_rw_mutex& );   
-00030 <span class="keyword">public</span>:   
-00031     <span class="keyword">class </span>scoped_lock {   
-00032     <span class="keyword">public</span>:   
-00033         scoped_lock() {}
-00034         scoped_lock( null_rw_mutex& , <span class="keywordtype">bool</span> = <span class="keyword">true</span> ) {}
-00035         ~scoped_lock() {}
-00036         <span class="keywordtype">void</span> <a class="code" href="a00318.html#a57a1">acquire</a>( null_rw_mutex& , <span class="keywordtype">bool</span> = <span class="keyword">true</span> ) {}
-00037         <span class="keywordtype">bool</span> upgrade_to_writer() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
-00038         <span class="keywordtype">bool</span> downgrade_to_reader() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
-00039         <span class="keywordtype">bool</span> try_acquire( null_rw_mutex& , <span class="keywordtype">bool</span> = <span class="keyword">true</span> ) { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
-00040         <span class="keywordtype">void</span> <a class="code" href="a00318.html#a57a2">release</a>() {}
-00041     };
-00042   
-00043     null_rw_mutex() {}
-00044     
-00045     <span class="comment">// Mutex traits   </span>
-00046     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_rw_mutex = <span class="keyword">true</span>;   
-00047     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_recursive_mutex = <span class="keyword">true</span>;
-00048     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_fair_mutex = <span class="keyword">true</span>;
-00049 };  
-00050 
-00051 }
-00052 
-00053 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_null_rw_mutex_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00335.html b/doc/html/a00335.html
deleted file mode 100644
index 2c08b11..0000000
--- a/doc/html/a00335.html
+++ /dev/null
@@ -1,468 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>parallel_do.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>parallel_do.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_parallel_do_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_parallel_do_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include "task.h"</span>
-00025 <span class="preprocessor">#include "aligned_space.h"</span>
-00026 <span class="preprocessor">#include <iterator></span>
-00027 
-00028 <span class="keyword">namespace </span>tbb {
-00029 
-00031 <span class="keyword">namespace </span>internal {
-00032     <span class="keyword">template</span><<span class="keyword">typename</span> Body, <span class="keyword">typename</span> Item> <span class="keyword">class </span>parallel_do_feeder_impl;
-00033     <span class="keyword">template</span><<span class="keyword">typename</span> Body> <span class="keyword">class </span>do_group_task;
-00034 
-00036     <span class="keyword">template</span><<span class="keyword">typename</span> T>
-<a name="l00037"></a><a class="code" href="a00259.html">00037</a>     <span class="keyword">struct </span><a class="code" href="a00259.html">strip</a> { <span class="keyword">typedef</span> T type; };
-00038     <span class="keyword">template</span><<span class="keyword">typename</span> T>
-00039     <span class="keyword">struct </span><a class="code" href="a00259.html">strip</a><T&> { <span class="keyword">typedef</span> T type; };
-00040     <span class="keyword">template</span><<span class="keyword">typename</span> T>
-00041     <span class="keyword">struct </span>strip<const T&> { <span class="keyword">typedef</span> T type; };
-00042     <span class="keyword">template</span><<span class="keyword">typename</span> T>
-00043     <span class="keyword">struct </span>strip<volatile T&> { <span class="keyword">typedef</span> T type; };
-00044     <span class="keyword">template</span><<span class="keyword">typename</span> T>
-00045     <span class="keyword">struct </span>strip<const volatile T&> { <span class="keyword">typedef</span> T type; };
-00046     <span class="comment">// Most of the compilers remove cv-qualifiers from non-reference function argument types. </span>
-00047     <span class="comment">// But unfortunately there are those that don't.</span>
-00048     <span class="keyword">template</span><<span class="keyword">typename</span> T>
-00049     <span class="keyword">struct </span>strip<const T> { <span class="keyword">typedef</span> T type; };
-00050     <span class="keyword">template</span><<span class="keyword">typename</span> T>
-00051     <span class="keyword">struct </span>strip<volatile T> { <span class="keyword">typedef</span> T type; };
-00052     <span class="keyword">template</span><<span class="keyword">typename</span> T>
-00053     <span class="keyword">struct </span>strip<const volatile T> { <span class="keyword">typedef</span> T type; };
-00054 } <span class="comment">// namespace internal</span>
-00056 <span class="comment"></span>
-00058 
-00059 <span class="keyword">template</span><<span class="keyword">typename</span> Item>
-<a name="l00060"></a><a class="code" href="a00231.html">00060</a> <span class="keyword">class </span><a class="code" href="a00231.html">parallel_do_feeder</a>: internal::no_copy
-00061 {
-00062     <a class="code" href="a00231.html">parallel_do_feeder</a>() {}
-00063     <span class="keyword">virtual</span> ~<a class="code" href="a00231.html">parallel_do_feeder</a> () {}
-00064     <span class="keyword">virtual</span> <span class="keywordtype">void</span> internal_add( <span class="keyword">const</span> Item& item ) = 0;
-00065     <span class="keyword">template</span><<span class="keyword">typename</span> Body_, <span class="keyword">typename</span> Item_> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00232.html">internal::parallel_do_feeder_impl</a>;
-00066 <span class="keyword">public</span>:
-<a name="l00068"></a><a class="code" href="a00231.html#a0">00068</a>     <span class="keywordtype">void</span> add( <span class="keyword">const</span> Item& item ) {internal_add(item);}
-00069 };
-00070 
-00072 <span class="keyword">namespace </span>internal {
-00074 
-00076     <span class="keyword">template</span><<span class="keyword">class</span> Body, <span class="keyword">typename</span> Item>
-<a name="l00077"></a><a class="code" href="a00233.html">00077</a>     <span class="keyword">class </span><a class="code" href="a00233.html">parallel_do_operator_selector</a>
-00078     {
-00079         <span class="keyword">typedef</span> <a class="code" href="a00231.html">parallel_do_feeder<Item></a> <a class="code" href="a00231.html">Feeder</a>;
-00080         <span class="keyword">template</span><<span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2, <span class="keyword">typename</span> CvItem >
-00081         <span class="keyword">static</span> <span class="keywordtype">void</span> internal_call( <span class="keyword">const</span> Body& obj, A1& arg1, A2&, <span class="keywordtype">void</span> (Body::*)(CvItem) <span class="keyword">const</span> ) {
-00082             obj(arg1);
-00083         }
-00084         <span class="keyword">template</span><<span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2, <span class="keyword">typename</span> CvItem >
-00085         <span class="keyword">static</span> <span class="keywordtype">void</span> internal_call( <span class="keyword">const</span> Body& obj, A1& arg1, A2& arg2, <span class="keywordtype">void</span> (Body::*)(CvItem, <a class="code" href="a00231.html">parallel_do_feeder<Item></a>&) <span class="keyword">const</span> ) {
-00086             obj(arg1, arg2);
-00087         }
-00088 
-00089     <span class="keyword">public</span>:
-00090         <span class="keyword">template</span><<span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2 >
-00091         <span class="keyword">static</span> <span class="keywordtype">void</span> call( <span class="keyword">const</span> Body& obj, A1& arg1, A2& arg2 )
-00092         {
-00093             internal_call( obj, arg1, arg2, &Body::operator() );
-00094         }
-00095     };
-00096 
-00098 
-00100     <span class="keyword">template</span><<span class="keyword">typename</span> Body, <span class="keyword">typename</span> Item>
-<a name="l00101"></a><a class="code" href="a00213.html">00101</a>     <span class="keyword">class </span><a class="code" href="a00213.html">do_iteration_task</a>: <span class="keyword">public</span> <a class="code" href="a00261.html">task</a>
-00102     {
-00103         <span class="keyword">typedef</span> <a class="code" href="a00232.html">parallel_do_feeder_impl<Body, Item></a> <a class="code" href="a00232.html">feeder_type</a>;
-00104 
-00105         Item my_value;
-00106         <a class="code" href="a00232.html">feeder_type</a>& my_feeder;
-00107 
-00108         <a class="code" href="a00213.html">do_iteration_task</a>( <span class="keyword">const</span> Item& value, <a class="code" href="a00232.html">feeder_type</a>& feeder ) : 
-00109             my_value(value), my_feeder(feeder)
-00110         {}
-00111 
-00112         <span class="comment">/*override*/</span> 
-00113         <a class="code" href="a00261.html">task</a>* execute()
-00114         {
-00115             <a class="code" href="a00233.html">parallel_do_operator_selector<Body, Item>::call</a>(*my_feeder.my_body, my_value, my_feeder);
-00116             <span class="keywordflow">return</span> NULL;
-00117         }
-00118 
-00119         <span class="keyword">template</span><<span class="keyword">typename</span> Body_, <span class="keyword">typename</span> Item_> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00232.html">parallel_do_feeder_impl</a>;
-00120     }; <span class="comment">// class do_iteration_task</span>
-00121 
-00122     <span class="keyword">template</span><<span class="keyword">typename</span> Iterator, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Item>
-00123     <span class="keyword">class </span>do_iteration_task_iter: <span class="keyword">public</span> <a class="code" href="a00261.html">task</a>
-00124     {
-00125         <span class="keyword">typedef</span> <a class="code" href="a00232.html">parallel_do_feeder_impl<Body, Item></a> feeder_type;
-00126 
-00127         Iterator my_iter;
-00128         feeder_type& my_feeder;
-00129 
-00130         do_iteration_task_iter( <span class="keyword">const</span> Iterator& iter, feeder_type& feeder ) : 
-00131             my_iter(iter), my_feeder(feeder)
-00132         {}
-00133 
-00134         <span class="comment">/*override*/</span> 
-00135         <a class="code" href="a00261.html">task</a>* <a class="code" href="a00261.html#a1">execute</a>()
-00136         {
-00137             parallel_do_operator_selector<Body, Item>::call(*my_feeder.my_body, *my_iter, my_feeder);
-00138             <span class="keywordflow">return</span> NULL;
-00139         }
-00140 
-00141         <span class="keyword">template</span><<span class="keyword">typename</span> Iterator_, <span class="keyword">typename</span> Body_, <span class="keyword">typename</span> Item_> <span class="keyword">friend</span> <span class="keyword">class </span>do_group_task_forward;    
-00142         <span class="keyword">template</span><<span class="keyword">typename</span> Body_, <span class="keyword">typename</span> Item_> <span class="keyword">friend</span> <span class="keyword">class </span>do_group_task_input;    
-00143         <span class="keyword">template</span><<span class="keyword">typename</span> Iterator_, <span class="keyword">typename</span> Body_, <span class="keyword">typename</span> Item_> <span class="keyword">friend</span> <span class="keyword">class </span>do_task_iter;    
-00144     }; <span class="comment">// class do_iteration_task_iter</span>
-00145 
-00147 
-00149     <span class="keyword">template</span><<span class="keyword">class</span> Body, <span class="keyword">typename</span> Item>
-<a name="l00150"></a><a class="code" href="a00232.html">00150</a>     <span class="keyword">class </span><a class="code" href="a00232.html">parallel_do_feeder_impl</a> : <span class="keyword">public</span> <a class="code" href="a00231.html">parallel_do_feeder</a><Item>
-00151     {
-00152         <span class="comment">/*override*/</span> 
-00153         <span class="keywordtype">void</span> internal_add( <span class="keyword">const</span> Item& item )
-00154         {
-00155             <span class="keyword">typedef</span> <a class="code" href="a00213.html">do_iteration_task<Body, Item></a> iteration_type;
-00156 
-00157             iteration_type& t = *<span class="keyword">new</span> (task::self().allocate_additional_child_of(*my_barrier)) iteration_type(item, *<span class="keyword">this</span>);
-00158 
-00159             t.<a class="code" href="a00261.html#a14">spawn</a>( t );
-00160         }
-00161     <span class="keyword">public</span>:
-00162         <span class="keyword">const</span> Body* my_body;
-00163         <a class="code" href="a00215.html">empty_task</a>* my_barrier;
-00164 
-00165         <a class="code" href="a00232.html">parallel_do_feeder_impl</a>()
-00166         {
-00167             my_barrier = <span class="keyword">new</span>( task::allocate_root() ) <a class="code" href="a00215.html">empty_task</a>();
-00168             __TBB_ASSERT(my_barrier, <span class="stringliteral">"root task allocation failed"</span>);
-00169         }
-00170 
-00171 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00172 <span class="preprocessor"></span>        <a class="code" href="a00232.html">parallel_do_feeder_impl</a>(<a class="code" href="a00262.html">tbb::task_group_context</a> &context)
-00173         {
-00174             my_barrier = <span class="keyword">new</span>( task::allocate_root(context) ) <a class="code" href="a00215.html">empty_task</a>();
-00175             __TBB_ASSERT(my_barrier, <span class="stringliteral">"root task allocation failed"</span>);
-00176         }
-00177 <span class="preprocessor">#endif</span>
-00178 <span class="preprocessor"></span>
-00179         ~<a class="code" href="a00232.html">parallel_do_feeder_impl</a>()
-00180         {
-00181             my_barrier-><a class="code" href="a00261.html#a5">destroy</a>(*my_barrier);
-00182         }
-00183     }; <span class="comment">// class parallel_do_feeder_impl</span>
-00184 
-00185 
-00187 
-00190     <span class="keyword">template</span><<span class="keyword">typename</span> Iterator, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Item>
-<a name="l00191"></a><a class="code" href="a00212.html">00191</a>     <span class="keyword">class </span><a class="code" href="a00212.html">do_group_task_forward</a>: <span class="keyword">public</span> <a class="code" href="a00261.html">task</a>
-00192     {
-00193         <span class="keyword">static</span> <span class="keyword">const</span> size_t max_arg_size = 4;         
-00194 
-00195         <span class="keyword">typedef</span> <a class="code" href="a00232.html">parallel_do_feeder_impl<Body, Item></a> <a class="code" href="a00232.html">feeder_type</a>;
-00196 
-00197         <a class="code" href="a00232.html">feeder_type</a>& my_feeder;
-00198         Iterator my_first;
-00199         size_t my_size;
-00200         
-00201         <a class="code" href="a00212.html">do_group_task_forward</a>( Iterator first, size_t size, <a class="code" href="a00232.html">feeder_type</a>& feeder ) 
-00202             : my_feeder(feeder), my_first(first), my_size(size)
-00203         {}
-00204 
-00205         <span class="comment">/*override*/</span> <a class="code" href="a00261.html">task</a>* execute()
-00206         {
-00207             <span class="keyword">typedef</span> do_iteration_task_iter<Iterator, Body, Item> iteration_type;
-00208             __TBB_ASSERT( my_size>0, NULL );
-00209             <a class="code" href="a00263.html">task_list</a> list;
-00210             <a class="code" href="a00261.html">task</a>* t; 
-00211             size_t k=0; 
-00212             <span class="keywordflow">for</span>(;;) {
-00213                 t = <span class="keyword">new</span>( allocate_child() ) iteration_type( my_first, my_feeder );
-00214                 ++my_first;
-00215                 <span class="keywordflow">if</span>( ++k==my_size ) <span class="keywordflow">break</span>;
-00216                 list.<a class="code" href="a00263.html#a3">push_back</a>(*t);
-00217             }
-00218             set_ref_count(<span class="keywordtype">int</span>(k+1));
-00219             spawn(list);
-00220             spawn_and_wait_for_all(*t);
-00221             <span class="keywordflow">return</span> NULL;
-00222         }
-00223 
-00224         <span class="keyword">template</span><<span class="keyword">typename</span> Iterator_, <span class="keyword">typename</span> Body_, <span class="keyword">typename</span> _Item> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00214.html">do_task_iter</a>;
-00225     }; <span class="comment">// class do_group_task_forward</span>
-00226 
-00227     <span class="keyword">template</span><<span class="keyword">typename</span> Body, <span class="keyword">typename</span> Item>
-00228     <span class="keyword">class </span>do_group_task_input: <span class="keyword">public</span> <a class="code" href="a00261.html">task</a>
-00229     {
-00230         <span class="keyword">static</span> <span class="keyword">const</span> size_t max_arg_size = 4;         
-00231         
-00232         <span class="keyword">typedef</span> <a class="code" href="a00232.html">parallel_do_feeder_impl<Body, Item></a> feeder_type;
-00233 
-00234         feeder_type& my_feeder;
-00235         size_t my_size;
-00236         <a class="code" href="a00190.html">aligned_space<Item, max_arg_size></a> my_arg;
-00237 
-00238         do_group_task_input( feeder_type& feeder ) 
-00239             : my_feeder(feeder), my_size(0)
-00240         {}
-00241 
-00242         <span class="comment">/*override*/</span> <a class="code" href="a00261.html">task</a>* <a class="code" href="a00261.html#a1">execute</a>()
-00243         {
-00244             <span class="keyword">typedef</span> do_iteration_task_iter<Item*, Body, Item> iteration_type;
-00245             __TBB_ASSERT( my_size>0, NULL );
-00246             <a class="code" href="a00263.html">task_list</a> list;
-00247             <a class="code" href="a00261.html">task</a>* t; 
-00248             size_t k=0; 
-00249             <span class="keywordflow">for</span>(;;) {
-00250                 t = <span class="keyword">new</span>( <a class="code" href="a00261.html#a3">allocate_child</a>() ) iteration_type( my_arg.begin() + k, my_feeder );
-00251                 <span class="keywordflow">if</span>( ++k==my_size ) <span class="keywordflow">break</span>;
-00252                 list.<a class="code" href="a00263.html#a3">push_back</a>(*t);
-00253             }
-00254             <a class="code" href="a00261.html#a13">set_ref_count</a>(<span class="keywordtype">int</span>(k+1));
-00255             <a class="code" href="a00261.html#a14">spawn</a>(list);
-00256             <a class="code" href="a00261.html#a16">spawn_and_wait_for_all</a>(*t);
-00257             <span class="keywordflow">return</span> NULL;
-00258         }
-00259 
-00260         ~do_group_task_input(){
-00261             <span class="keywordflow">for</span>( size_t k=0; k<my_size; ++k)
-00262                 (my_arg.begin() + k)->~Item();
-00263         }
-00264 
-00265         <span class="keyword">template</span><<span class="keyword">typename</span> Iterator_, <span class="keyword">typename</span> Body_, <span class="keyword">typename</span> Item_> <span class="keyword">friend</span> <span class="keyword">class </span>do_task_iter;
-00266     }; <span class="comment">// class do_group_task_input</span>
-00267     
-00269 
-00271     <span class="keyword">template</span><<span class="keyword">typename</span> Iterator, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Item>
-<a name="l00272"></a><a class="code" href="a00214.html">00272</a>     <span class="keyword">class </span><a class="code" href="a00214.html">do_task_iter</a>: <span class="keyword">public</span> <a class="code" href="a00261.html">task</a>
-00273     {
-00274         <span class="comment">//typedef typename std::iterator_traits<Iterator>::value_type Item;</span>
-00275         <span class="keyword">typedef</span> <a class="code" href="a00232.html">parallel_do_feeder_impl<Body, Item></a> <a class="code" href="a00232.html">feeder_type</a>;
-00276 
-00277     <span class="keyword">public</span>:
-00278         <a class="code" href="a00214.html">do_task_iter</a>( Iterator first, Iterator last , <a class="code" href="a00232.html">feeder_type</a>& feeder ) : 
-00279             my_first(first), my_last(last), my_feeder(feeder)
-00280         {}
-00281 
-00282     <span class="keyword">private</span>:
-00283         Iterator my_first;
-00284         Iterator my_last;
-00285         <a class="code" href="a00232.html">feeder_type</a>& my_feeder;
-00286 
-00287         <span class="comment">/* Do not merge run(xxx) and run_xxx() methods. They are separated in order</span>
-00288 <span class="comment">            to make sure that compilers will eliminate unused argument of type xxx</span>
-00289 <span class="comment">            (that is will not put it on stack). The sole purpose of this argument </span>
-00290 <span class="comment">            is overload resolution.</span>
-00291 <span class="comment">            </span>
-00292 <span class="comment">            An alternative could be using template functions, but explicit specialization </span>
-00293 <span class="comment">            of member function templates is not supported for non specialized class </span>
-00294 <span class="comment">            templates. Besides template functions would always fall back to the least </span>
-00295 <span class="comment">            efficient variant (the one for input iterators) in case of iterators having </span>
-00296 <span class="comment">            custom tags derived from basic ones. */</span>
-00297         <span class="comment">/*override*/</span> <a class="code" href="a00261.html">task</a>* execute()
-00298         {
-00299             <span class="keyword">typedef</span> <span class="keyword">typename</span> std::iterator_traits<Iterator>::iterator_category iterator_tag;
-00300             <span class="keywordflow">return</span> run( (iterator_tag*)NULL );
-00301         }
-00302 
-00305         <span class="keyword">inline</span> <a class="code" href="a00261.html">task</a>* run( <span class="keywordtype">void</span>* ) { <span class="keywordflow">return</span> run_for_input_iterator(); }
-00306         
-00307         <a class="code" href="a00261.html">task</a>* run_for_input_iterator() {
-00308             <span class="keyword">typedef</span> do_group_task_input<Body, Item> block_type;
-00309 
-00310             block_type& t = *<span class="keyword">new</span>( allocate_additional_child_of(*my_feeder.my_barrier) ) block_type(my_feeder);
-00311             size_t k=0; 
-00312             <span class="keywordflow">while</span>( !(my_first == my_last) ) {
-00313                 <span class="keyword">new</span> (t.my_arg.begin() + k) Item(*my_first);
-00314                 ++my_first;
-00315                 <span class="keywordflow">if</span>( ++k==block_type::max_arg_size ) {
-00316                     <span class="keywordflow">if</span> ( !(my_first == my_last) )
-00317                         recycle_to_reexecute();
-00318                     <span class="keywordflow">break</span>;
-00319                 }
-00320             }
-00321             <span class="keywordflow">if</span>( k==0 ) {
-00322                 destroy(t);
-00323                 <span class="keywordflow">return</span> NULL;
-00324             } <span class="keywordflow">else</span> {
-00325                 t.my_size = k;
-00326                 <span class="keywordflow">return</span> &t;
-00327             }
-00328         }
-00329 
-00330         <span class="keyword">inline</span> <a class="code" href="a00261.html">task</a>* run( std::forward_iterator_tag* ) { <span class="keywordflow">return</span> run_for_forward_iterator(); }
-00331 
-00332         <a class="code" href="a00261.html">task</a>* run_for_forward_iterator() {
-00333             <span class="keyword">typedef</span> <a class="code" href="a00212.html">do_group_task_forward<Iterator, Body, Item></a> block_type;
-00334 
-00335             Iterator first = my_first;
-00336             size_t k=0; 
-00337             <span class="keywordflow">while</span>( !(my_first==my_last) ) {
-00338                 ++my_first;
-00339                 <span class="keywordflow">if</span>( ++k==block_type::max_arg_size ) {
-00340                     <span class="keywordflow">if</span> ( !(my_first==my_last) )
-00341                         recycle_to_reexecute();
-00342                     <span class="keywordflow">break</span>;
-00343                 }
-00344             }
-00345             <span class="keywordflow">return</span> k==0 ? NULL : <span class="keyword">new</span>( allocate_additional_child_of(*my_feeder.my_barrier) ) block_type(first, k, my_feeder);
-00346         }
-00347         
-00348         <span class="keyword">inline</span> <a class="code" href="a00261.html">task</a>* run( std::random_access_iterator_tag* ) { <span class="keywordflow">return</span> run_for_random_access_iterator(); }
-00349 
-00350         <a class="code" href="a00261.html">task</a>* run_for_random_access_iterator() {
-00351             <span class="keyword">typedef</span> <a class="code" href="a00212.html">do_group_task_forward<Iterator, Body, Item></a> block_type;
-00352             <span class="keyword">typedef</span> do_iteration_task_iter<Iterator, Body, Item> iteration_type;
-00353             
-00354             size_t k = static_cast<size_t>(my_last-my_first); 
-00355             <span class="keywordflow">if</span>( k > block_type::max_arg_size ) {
-00356                 Iterator middle = my_first + k/2;
-00357 
-00358                 <a class="code" href="a00215.html">empty_task</a>& c = *<span class="keyword">new</span>( allocate_continuation() ) <a class="code" href="a00215.html">empty_task</a>;
-00359                 <a class="code" href="a00214.html">do_task_iter</a>& b = *<span class="keyword">new</span>( c.<a class="code" href="a00261.html#a3">allocate_child</a>() ) <a class="code" href="a00214.html">do_task_iter</a>(middle, my_last, my_feeder);
-00360                 recycle_as_child_of(c);
-00361 
-00362                 my_last = middle;
-00363                 c.<a class="code" href="a00261.html#a13">set_ref_count</a>(2);
-00364                 c.<a class="code" href="a00261.html#a14">spawn</a>(b);
-00365                 <span class="keywordflow">return</span> <span class="keyword">this</span>;
-00366             }<span class="keywordflow">else</span> <span class="keywordflow">if</span>( k != 0 ) {
-00367                 <a class="code" href="a00263.html">task_list</a> list;
-00368                 <a class="code" href="a00261.html">task</a>* t; 
-00369                 size_t k1=0; 
-00370                 <span class="keywordflow">for</span>(;;) {
-00371                     t = <span class="keyword">new</span>( allocate_child() ) iteration_type(my_first, my_feeder);
-00372                     ++my_first;
-00373                     <span class="keywordflow">if</span>( ++k1==k ) <span class="keywordflow">break</span>;
-00374                     list.<a class="code" href="a00263.html#a3">push_back</a>(*t);
-00375                 }
-00376                 set_ref_count(<span class="keywordtype">int</span>(k+1));
-00377                 spawn(list);
-00378                 spawn_and_wait_for_all(*t);
-00379             }
-00380             <span class="keywordflow">return</span> NULL;
-00381         }
-00382     }; <span class="comment">// class do_task_iter</span>
-00383 
-00385 
-00387     <span class="keyword">template</span><<span class="keyword">typename</span> Iterator, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Item> 
-<a name="l00388"></a><a class="code" href="a00321.html#ga0">00388</a>     <span class="keywordtype">void</span> <a class="code" href="a00321.html#ga0">run_parallel_do</a>( Iterator first, Iterator last, <span class="keyword">const</span> Body& body
-00389 #<span class="keywordflow">if</span> __TBB_EXCEPTIONS
-00390         , task_group_context& context
-00391 #endif
-00392         )
-00393     {
-00394         <span class="keyword">typedef</span> do_task_iter<Iterator, Body, Item> root_iteration_task;
-00395 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00396 <span class="preprocessor"></span>        parallel_do_feeder_impl<Body, Item> feeder(context);
-00397 <span class="preprocessor">#else</span>
-00398 <span class="preprocessor"></span>        parallel_do_feeder_impl<Body, Item> feeder;
-00399 <span class="preprocessor">#endif</span>
-00400 <span class="preprocessor"></span>        feeder.my_body = &body;
-00401 
-00402         root_iteration_task &t = *<span class="keyword">new</span>( feeder.my_barrier->allocate_child() ) root_iteration_task(first, last, feeder);
-00403 
-00404         feeder.my_barrier->set_ref_count(2);
-00405         feeder.my_barrier->spawn_and_wait_for_all(t);
-00406     }
-00407 
-00409 
-00411     <span class="keyword">template</span><<span class="keyword">typename</span> Iterator, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Item> 
-<a name="l00412"></a><a class="code" href="a00321.html#ga1">00412</a>     <span class="keywordtype">void</span> <a class="code" href="a00321.html#ga2">select_parallel_do</a>( Iterator first, Iterator last, <span class="keyword">const</span> Body& body, <span class="keywordtype">void</span> (Body::*)(Item) <span class="keyword">const</span>
-00413 #<span class="keywordflow">if</span> __TBB_EXCEPTIONS
-00414         , task_group_context& context 
-00415 #endif <span class="comment">// __TBB_EXCEPTIONS </span>
-00416         )
-00417     {
-00418         run_parallel_do<Iterator, Body, typename strip<Item>::type>( first, last, body
-00419 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00420 <span class="preprocessor"></span>            , context
-00421 <span class="preprocessor">#endif // __TBB_EXCEPTIONS </span>
-00422 <span class="preprocessor"></span>            );
-00423     }
-00424 
-00426 
-00428     <span class="keyword">template</span><<span class="keyword">typename</span> Iterator, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Item, <span class="keyword">typename</span> _Item> 
-<a name="l00429"></a><a class="code" href="a00321.html#ga2">00429</a>     <span class="keywordtype">void</span> <a class="code" href="a00321.html#ga2">select_parallel_do</a>( Iterator first, Iterator last, <span class="keyword">const</span> Body& body, <span class="keywordtype">void</span> (Body::*)(Item, parallel_do_feeder<_Item>&) <span class="keyword">const</span>
-00430 #<span class="keywordflow">if</span> __TBB_EXCEPTIONS
-00431         , task_group_context& context 
-00432 #endif <span class="comment">// __TBB_EXCEPTIONS</span>
-00433         )
-00434     {
-00435         run_parallel_do<Iterator, Body, typename strip<Item>::type>( first, last, body
-00436 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00437 <span class="preprocessor"></span>            , context
-00438 <span class="preprocessor">#endif // __TBB_EXCEPTIONS</span>
-00439 <span class="preprocessor"></span>            );
-00440     }
-00441 
-00442 } <span class="comment">// namespace internal</span>
-00444 <span class="comment"></span>
-00445 
-00468 
-00469 
-00470 <span class="keyword">template</span><<span class="keyword">typename</span> Iterator, <span class="keyword">typename</span> Body> 
-<a name="l00471"></a><a class="code" href="a00321.html#ga3">00471</a> <span class="keywordtype">void</span> <a class="code" href="a00321.html#ga4">parallel_do</a>( Iterator first, Iterator last, <span class="keyword">const</span> Body& body )
-00472 {
-00473     <span class="keywordflow">if</span> ( first == last )
-00474         <span class="keywordflow">return</span>;
-00475 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00476 <span class="preprocessor"></span>    task_group_context context;
-00477 <span class="preprocessor">#endif // __TBB_EXCEPTIONS</span>
-00478 <span class="preprocessor"></span>    <a class="code" href="a00321.html#ga2">internal::select_parallel_do</a>( first, last, body, &Body::operator()
-00479 #<span class="keywordflow">if</span> __TBB_EXCEPTIONS
-00480         , context
-00481 #endif <span class="comment">// __TBB_EXCEPTIONS</span>
-00482         );
-00483 }
-00484 
-00485 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00486 <span class="preprocessor"></span>
-00487 
-00488 <span class="keyword">template</span><<span class="keyword">typename</span> Iterator, <span class="keyword">typename</span> Body> 
-<a name="l00489"></a><a class="code" href="a00321.html#ga4">00489</a> <span class="keywordtype">void</span> <a class="code" href="a00321.html#ga4">parallel_do</a>( Iterator first, Iterator last, <span class="keyword">const</span> Body& body, task_group_context& context  )
-00490 {
-00491     <span class="keywordflow">if</span> ( first == last )
-00492         <span class="keywordflow">return</span>;
-00493     <a class="code" href="a00321.html#ga2">internal::select_parallel_do</a>( first, last, body, &Body::operator(), context );
-00494 }
-00495 <span class="preprocessor">#endif // __TBB_EXCEPTIONS</span>
-00496 <span class="preprocessor"></span>
-00498 
-00499 } <span class="comment">// namespace </span>
-00500 
-00501 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_parallel_do_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00336.html b/doc/html/a00336.html
deleted file mode 100644
index 94c9e2d..0000000
--- a/doc/html/a00336.html
+++ /dev/null
@@ -1,161 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>parallel_for.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>parallel_for.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_parallel_for_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_parallel_for_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include "task.h"</span>
-00025 <span class="preprocessor">#include "partitioner.h"</span>
-00026 <span class="preprocessor">#include <new></span>
-00027 
-00028 <span class="keyword">namespace </span>tbb {
-00029 
-00031 <span class="keyword">namespace </span>internal {
-00032 
-00034 
-00035     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner>
-<a name="l00036"></a><a class="code" href="a00255.html">00036</a>     <span class="keyword">class </span><a class="code" href="a00255.html">start_for</a>: <span class="keyword">public</span> <a class="code" href="a00261.html">task</a> {
-00037         Range my_range;
-00038         <span class="keyword">const</span> Body my_body;
-00039         <span class="keyword">typename</span> Partitioner::partition_type my_partition;
-00040         <span class="comment">/*override*/</span> <a class="code" href="a00261.html">task</a>* execute();
-00041 
-00043         <a class="code" href="a00255.html">start_for</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Body& body, Partitioner& partitioner ) :
-00044             my_range(range),    
-00045             my_body(body),
-00046             my_partition(partitioner)
-00047         {
-00048         }
-00050 
-00051         <a class="code" href="a00255.html">start_for</a>( <a class="code" href="a00255.html">start_for</a>& parent, <a class="code" href="a00254.html">split</a> ) :
-00052             my_range(parent.<a class="code" href="a00255.html#r0">my_range</a>,<a class="code" href="a00254.html">split</a>()),    
-00053             my_body(parent.<a class="code" href="a00255.html#r1">my_body</a>),
-00054             my_partition(parent.<a class="code" href="a00255.html#r2">my_partition</a>,<a class="code" href="a00254.html">split</a>())
-00055         {
-00056             my_partition.set_affinity(*<span class="keyword">this</span>);
-00057         }
-00059         <span class="comment">/*override*/</span> <span class="keywordtype">void</span> note_affinity( <a class="code" href="a00319.html#a11">affinity_id</a> <span class="keywordtype">id</span> ) {
-00060             my_partition.note_affinity( <span class="keywordtype">id</span> );
-00061         }
-00062     <span class="keyword">public</span>:
-00063         <span class="keyword">static</span> <span class="keywordtype">void</span> run(  <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Body& body, <span class="keyword">const</span> Partitioner& partitioner ) {
-00064             <span class="keywordflow">if</span>( !range.empty() ) {
-00065 <span class="preprocessor">#if !__TBB_EXCEPTIONS || TBB_JOIN_OUTER_TASK_GROUP</span>
-00066 <span class="preprocessor"></span>                <a class="code" href="a00255.html">start_for</a>& a = *<span class="keyword">new</span>(task::allocate_root()) <a class="code" href="a00255.html">start_for</a>(range,body,const_cast<Partitioner&>(partitioner));
-00067 <span class="preprocessor">#else</span>
-00068 <span class="preprocessor"></span>                <span class="comment">// Bound context prevents exceptions from body to affect nesting or sibling algorithms,</span>
-00069                 <span class="comment">// and allows users to handle exceptions safely by wrapping parallel_for in the try-block.</span>
-00070                 <a class="code" href="a00262.html">task_group_context</a> context;
-00071                 <a class="code" href="a00255.html">start_for</a>& a = *<span class="keyword">new</span>(task::allocate_root(context)) <a class="code" href="a00255.html">start_for</a>(range,body,const_cast<Partitioner&>(partitioner));
-00072 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS && !TBB_JOIN_OUTER_TASK_GROUP */</span>
-00073                 task::spawn_root_and_wait(a);
-00074             }
-00075         }
-00076 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00077 <span class="preprocessor"></span>        <span class="keyword">static</span> <span class="keywordtype">void</span> run(  <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Body& body, <span class="keyword">const</span> Partitioner& partitioner, <a class="code" href="a00262.html">task_group_context</a>& context ) {
-00078             <span class="keywordflow">if</span>( !range.empty() ) {
-00079                 <a class="code" href="a00255.html">start_for</a>& a = *<span class="keyword">new</span>(task::allocate_root(context)) <a class="code" href="a00255.html">start_for</a>(range,body,const_cast<Partitioner&>(partitioner));
-00080                 task::spawn_root_and_wait(a);
-00081             }
-00082         }
-00083 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
-00084     };
-00085 
-00086     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner>
-00087     <a class="code" href="a00261.html">task</a>* <a class="code" href="a00255.html">start_for<Range,Body,Partitioner>::execute</a>() {
-00088         <span class="keywordflow">if</span>( !my_range.is_divisible() || my_partition.should_execute_range(*<span class="keyword">this</span>) ) {
-00089             my_body( my_range );
-00090             <span class="keywordflow">return</span> my_partition.continue_after_execute_range(*<span class="keyword">this</span>); 
-00091         } <span class="keywordflow">else</span> {
-00092             <a class="code" href="a00215.html">empty_task</a>& c = *<span class="keyword">new</span>( this-><a class="code" href="a00261.html#a2">allocate_continuation</a>() ) <a class="code" href="a00215.html">empty_task</a>;
-00093             <a class="code" href="a00261.html#a8">recycle_as_child_of</a>(c);
-00094             c.<a class="code" href="a00261.html#a13">set_ref_count</a>(2);
-00095             <span class="keywordtype">bool</span> delay = my_partition.decide_whether_to_delay();
-00096             start_for& b = *<span class="keyword">new</span>( c.<a class="code" href="a00261.html#a3">allocate_child</a>() ) start_for(*<span class="keyword">this</span>,<a class="code" href="a00254.html">split</a>());
-00097             my_partition.spawn_or_delay(delay,*<span class="keyword">this</span>,b);
-00098             <span class="keywordflow">return</span> <span class="keyword">this</span>;
-00099         }
-00100     } 
-00101 } <span class="comment">// namespace internal</span>
-00103 <span class="comment"></span>
-00104 
-00105 <span class="comment">// Requirements on Range concept are documented in blocked_range.h</span>
-00106 
-00117 
-00119 
-00120 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
-<a name="l00121"></a><a class="code" href="a00321.html#ga5">00121</a> <span class="keywordtype">void</span> <a class="code" href="a00321.html#ga5">parallel_for</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Body& body, <span class="keyword">const</span> simple_partitioner& partitioner=simple_partitioner() ) {
-00122     internal::start_for<Range,Body,simple_partitioner>::run(range,body,partitioner);
-00123 }
-00124 
-00126 
-00127 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
-<a name="l00128"></a><a class="code" href="a00321.html#ga6">00128</a> <span class="keywordtype">void</span> <a class="code" href="a00321.html#ga5">parallel_for</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Body& body, <span class="keyword">const</span> auto_partitioner& partitioner ) {
-00129     internal::start_for<Range,Body,auto_partitioner>::run(range,body,partitioner);
-00130 }
-00131 
-00133 
-00134 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
-<a name="l00135"></a><a class="code" href="a00321.html#ga7">00135</a> <span class="keywordtype">void</span> <a class="code" href="a00321.html#ga5">parallel_for</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Body& body, affinity_partitioner& partitioner ) {
-00136     internal::start_for<Range,Body,affinity_partitioner>::run(range,body,partitioner);
-00137 }
-00138 
-00139 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00140 <span class="preprocessor"></span>
-00141 
-00142 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
-<a name="l00143"></a><a class="code" href="a00321.html#ga8">00143</a> <span class="keywordtype">void</span> <a class="code" href="a00321.html#ga5">parallel_for</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Body& body, <span class="keyword">const</span> simple_partitioner& partitioner, task_group_context& context ) {
-00144     internal::start_for<Range,Body,simple_partitioner>::run(range, body, partitioner, context);
-00145 }
-00146 
-00148 
-00149 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
-<a name="l00150"></a><a class="code" href="a00321.html#ga9">00150</a> <span class="keywordtype">void</span> <a class="code" href="a00321.html#ga5">parallel_for</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Body& body, <span class="keyword">const</span> auto_partitioner& partitioner, task_group_context& context ) {
-00151     internal::start_for<Range,Body,auto_partitioner>::run(range, body, partitioner, context);
-00152 }
-00153 
-00155 
-00156 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
-<a name="l00157"></a><a class="code" href="a00321.html#ga10">00157</a> <span class="keywordtype">void</span> <a class="code" href="a00321.html#ga5">parallel_for</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Body& body, affinity_partitioner& partitioner, task_group_context& context ) {
-00158     internal::start_for<Range,Body,affinity_partitioner>::run(range,body,partitioner, context);
-00159 }
-00160 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
-00161 
-00162 
-00163 } <span class="comment">// namespace tbb</span>
-00164 
-00165 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_parallel_for_H */</span>
-00166 
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00337.html b/doc/html/a00337.html
deleted file mode 100644
index 9d30864..0000000
--- a/doc/html/a00337.html
+++ /dev/null
@@ -1,424 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>parallel_reduce.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>parallel_reduce.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_parallel_reduce_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_parallel_reduce_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include "task.h"</span>
-00025 <span class="preprocessor">#include "aligned_space.h"</span>
-00026 <span class="preprocessor">#include "partitioner.h"</span>
-00027 <span class="preprocessor">#include <new></span>
-00028 
-00029 <span class="keyword">namespace </span>tbb {
-00030 
-00032 <span class="keyword">namespace </span>internal {
-00033 
-00035     <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC <a class="code" href="a00319.html#a55">itt_store_pointer_with_release_v3</a>( <span class="keywordtype">void</span>* dst, <span class="keywordtype">void</span>* src );
-00036 
-00038     <span class="keywordtype">void</span>* __TBB_EXPORTED_FUNC <a class="code" href="a00319.html#a56">itt_load_pointer_with_acquire_v3</a>( <span class="keyword">const</span> <span class="keywordtype">void</span>* src );
-00039 
-00040     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">inline</span> <span class="keywordtype">void</span> parallel_reduce_store_body( T*& dst, T* src ) {
-00041 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS</span>
-00042 <span class="preprocessor"></span>        <a class="code" href="a00319.html#a55">itt_store_pointer_with_release_v3</a>(&dst,src);
-00043 <span class="preprocessor">#else</span>
-00044 <span class="preprocessor"></span>        __TBB_store_with_release(dst,src);
-00045 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS */</span>
-00046     }
-00047 
-00048     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">inline</span> T* parallel_reduce_load_body( T*& src ) {
-00049 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS</span>
-00050 <span class="preprocessor"></span>        <span class="keywordflow">return</span> static_cast<T*>(<a class="code" href="a00319.html#a56">itt_load_pointer_with_acquire_v3</a>(&src));
-00051 <span class="preprocessor">#else</span>
-00052 <span class="preprocessor"></span>        <span class="keywordflow">return</span> __TBB_load_with_acquire(src);
-00053 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS */</span>
-00054     }
-00055 
-00057 
-00058     <span class="keyword">template</span><<span class="keyword">typename</span> Body>
-<a name="l00059"></a><a class="code" href="a00219.html">00059</a>     <span class="keyword">class </span><a class="code" href="a00219.html">finish_reduce</a>: <span class="keyword">public</span> <a class="code" href="a00261.html">task</a> {
-00060         Body* <span class="keyword">const</span> my_body;
-00061         <span class="keywordtype">bool</span> has_right_zombie;
-00062         <a class="code" href="a00190.html">aligned_space<Body,1></a> zombie_space;
-00063         <a class="code" href="a00219.html">finish_reduce</a>( Body* body ) : 
-00064             my_body(body),
-00065             has_right_zombie(<span class="keyword">false</span>)
-00066         {
-00067         }
-00068         <a class="code" href="a00261.html">task</a>* execute() {
-00069             <span class="keywordflow">if</span>( has_right_zombie ) {
-00070                 <span class="comment">// Right child was stolen.</span>
-00071                 Body* s = zombie_space.begin();
-00072                 my_body->join( *s );
-00073                 s->~Body();
-00074             }
-00075             <span class="keywordflow">return</span> NULL;
-00076         }       
-00077         <span class="keyword">template</span><<span class="keyword">typename</span> Range,<span class="keyword">typename</span> Body_, <span class="keyword">typename</span> Partitioner>
-00078         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00256.html">start_reduce</a>;
-00079     };
-00080 
-00082 
-00083     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner>
-<a name="l00084"></a><a class="code" href="a00256.html">00084</a>     <span class="keyword">class </span><a class="code" href="a00256.html">start_reduce</a>: <span class="keyword">public</span> <a class="code" href="a00261.html">task</a> {
-00085         <span class="keyword">typedef</span> <a class="code" href="a00219.html">finish_reduce<Body></a> <a class="code" href="a00219.html">finish_type</a>;
-00086         Body* my_body;
-00087         Range my_range;
-00088         <span class="keyword">typename</span> Partitioner::partition_type my_partition;
-00089         <span class="comment">/*override*/</span> <a class="code" href="a00261.html">task</a>* execute();
-00090         <span class="keyword">template</span><<span class="keyword">typename</span> Body_>
-00091         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00219.html">finish_reduce</a>;
-00092     
-00094         <a class="code" href="a00256.html">start_reduce</a>( <span class="keyword">const</span> Range& range, Body* body, <span class="keyword">const</span> Partitioner &partitioner ) :
-00095             my_body(body),
-00096             my_range(range),
-00097             my_partition(partitioner)
-00098         {
-00099         }
-00101 
-00102         <a class="code" href="a00256.html">start_reduce</a>( <a class="code" href="a00256.html">start_reduce</a>& parent, <a class="code" href="a00254.html">split</a> ) :
-00103             my_body(parent.<a class="code" href="a00256.html#r0">my_body</a>),
-00104             my_range(parent.<a class="code" href="a00256.html#r1">my_range</a>,<a class="code" href="a00254.html">split</a>()),
-00105             my_partition(parent.<a class="code" href="a00256.html#r2">my_partition</a>,<a class="code" href="a00254.html">split</a>())
-00106         {
-00107         }
-00109 
-00110         <span class="comment">/*override*/</span> <span class="keywordtype">void</span> note_affinity( <a class="code" href="a00319.html#a11">affinity_id</a> <span class="comment">/*id*/</span> ) {
-00111             <a class="code" href="a00219.html">finish_type</a>* p = static_cast<finish_type*>(parent() );
-00112             Body* body = <span class="keyword">new</span>( p-><a class="code" href="a00219.html#r2">zombie_space</a>.<a class="code" href="a00190.html#a0">begin</a>() ) Body(*my_body,<a class="code" href="a00254.html">split</a>());
-00113             p-><a class="code" href="a00219.html#r1">has_right_zombie</a> = <span class="keyword">true</span>;
-00114             my_body = body;
-00115         }
-00116     <span class="keyword">public</span>:
-00117 <span class="preprocessor">#if !__TBB_EXCEPTIONS</span>
-00118 <span class="preprocessor"></span>        <span class="keyword">static</span> <span class="keywordtype">void</span> run( <span class="keyword">const</span> Range& range, Body& body, <span class="keyword">const</span> Partitioner &partitioner ) {
-00119             <span class="keywordflow">if</span>( !range.empty() ) 
-00120                 task::spawn_root_and_wait( *<span class="keyword">new</span>(task::allocate_root()) <a class="code" href="a00256.html">start_reduce</a>(range,&body,partitioner) );
-00121         }
-00122 <span class="preprocessor">#else </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
-00123         <span class="keyword">static</span> <span class="keywordtype">void</span> run( <span class="keyword">const</span> Range& range, Body& body, <span class="keyword">const</span> Partitioner &partitioner ) {
-00124             <span class="comment">// Bound context prevents exceptions from body to affect nesting or sibling algorithms,</span>
-00125             <span class="comment">// and allows users to handle exceptions safely by wrapping parallel_for in the try-block.</span>
-00126             <span class="keywordflow">if</span>( !range.empty() )  {
-00127                 <a class="code" href="a00262.html">task_group_context</a> context;
-00128                 task::spawn_root_and_wait( *<span class="keyword">new</span>(task::allocate_root(context)) <a class="code" href="a00256.html">start_reduce</a>(range,&body,partitioner) );
-00129             }
-00130         }
-00131         <span class="keyword">static</span> <span class="keywordtype">void</span> run( <span class="keyword">const</span> Range& range, Body& body, <span class="keyword">const</span> Partitioner &partitioner, <a class="code" href="a00262.html">task_group_context</a>& context ) {
-00132             <span class="keywordflow">if</span>( !range.empty() ) 
-00133                 task::spawn_root_and_wait( *<span class="keyword">new</span>(task::allocate_root(context)) <a class="code" href="a00256.html">start_reduce</a>(range,&body,partitioner) );
-00134         }
-00135 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
-00136     };
-00137 
-00138     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner>
-00139     <a class="code" href="a00261.html">task</a>* <a class="code" href="a00256.html">start_reduce<Range,Body,Partitioner>::execute</a>() {
-00140         <span class="keywordflow">if</span>( !my_range.is_divisible() || my_partition.should_execute_range(*<span class="keyword">this</span>) ) {
-00141             (*my_body)( my_range );
-00142             <span class="keywordflow">return</span> NULL;
-00143         } <span class="keywordflow">else</span> {
-00144             finish_type& c = *<span class="keyword">new</span>( <a class="code" href="a00261.html#a2">allocate_continuation</a>()) finish_type(my_body);
-00145             <a class="code" href="a00261.html#a8">recycle_as_child_of</a>(c);
-00146             c.<a class="code" href="a00261.html#a13">set_ref_count</a>(2);    
-00147             start_reduce& b = *<span class="keyword">new</span>( c.allocate_child() ) start_reduce(*<span class="keyword">this</span>,<a class="code" href="a00254.html">split</a>());
-00148             <a class="code" href="a00261.html#a14">spawn</a>(b);
-00149             <span class="keywordflow">return</span> <span class="keyword">this</span>;
-00150         }
-00151     }
-00152  
-00154 
-<a name="l00155"></a><a class="code" href="a00319.html#a7">00155</a>     <span class="keyword">typedef</span> <span class="keywordtype">char</span> reduction_context;
-00156 
-00158 
-00159     <span class="keyword">template</span><<span class="keyword">typename</span> Body>
-<a name="l00160"></a><a class="code" href="a00220.html">00160</a>     <span class="keyword">class </span><a class="code" href="a00220.html">finish_reduce_with_affinity</a>: <span class="keyword">public</span> <a class="code" href="a00261.html">task</a> {
-00162         Body* my_body;
-00163         <span class="keywordtype">bool</span> has_right_zombie;
-00164         <span class="keyword">const</span> <a class="code" href="a00319.html#a7">reduction_context</a> my_context;
-00165         <a class="code" href="a00190.html">aligned_space<Body,1></a> zombie_space;
-00166         <a class="code" href="a00220.html">finish_reduce_with_affinity</a>( <span class="keywordtype">char</span> context ) : 
-00167             my_body(NULL),
-00168             has_right_zombie(<span class="keyword">false</span>),
-00169             my_context(context)
-00170         {
-00171         }
-00172         <a class="code" href="a00261.html">task</a>* <a class="code" href="a00261.html#a1">execute</a>() {
-00173             <span class="keywordflow">if</span>( has_right_zombie ) {
-00174                 <span class="comment">// Right child was stolen.</span>
-00175                 Body* s = zombie_space.<a class="code" href="a00190.html#a0">begin</a>();
-00176                 my_body->join( *s );
-00177                 s->~Body();
-00178             }
-00179             <span class="keywordflow">if</span>( my_context==1 ) 
-00180                 parallel_reduce_store_body( static_cast<finish_reduce_with_affinity*>(<a class="code" href="a00261.html#a19">parent</a>())->my_body, my_body );
-00181             <span class="keywordflow">return</span> NULL;
-00182         }       
-00183         <span class="keyword">template</span><<span class="keyword">typename</span> Range,<span class="keyword">typename</span> Body_>
-00184         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00257.html">start_reduce_with_affinity</a>;
-00185     };
-00186 
-00188 
-00189     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
-<a name="l00190"></a><a class="code" href="a00257.html">00190</a>     <span class="keyword">class </span><a class="code" href="a00257.html">start_reduce_with_affinity</a>: <span class="keyword">public</span> <a class="code" href="a00261.html">task</a> {
-00191         <span class="keyword">typedef</span> <a class="code" href="a00220.html">finish_reduce_with_affinity<Body></a> <a class="code" href="a00220.html">finish_type</a>;
-00192         Body* my_body;
-00193         Range my_range;
-00194         <span class="keyword">typename</span> affinity_partitioner::partition_type my_partition;
-00195         <a class="code" href="a00319.html#a7">reduction_context</a> my_context;
-00196         <span class="comment">/*override*/</span> <a class="code" href="a00261.html">task</a>* <a class="code" href="a00261.html#a1">execute</a>();
-00197         <span class="keyword">template</span><<span class="keyword">typename</span> Body_>
-00198         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00220.html">finish_reduce_with_affinity</a>;
-00199     
-00201         <a class="code" href="a00257.html">start_reduce_with_affinity</a>( <span class="keyword">const</span> Range& range, Body* body, <a class="code" href="a00188.html">affinity_partitioner</a>& partitioner ) :
-00202             my_body(body),
-00203             my_range(range),
-00204             my_partition(partitioner),
-00205             my_context(0)
-00206         {
-00207         }
-00209 
-00210         <a class="code" href="a00257.html">start_reduce_with_affinity</a>( <a class="code" href="a00257.html">start_reduce_with_affinity</a>& parent, <a class="code" href="a00254.html">split</a> ) :
-00211             my_body(parent.<a class="code" href="a00257.html#r0">my_body</a>),
-00212             my_range(parent.<a class="code" href="a00257.html#r1">my_range</a>,<a class="code" href="a00254.html">split</a>()),
-00213             my_partition(parent.<a class="code" href="a00257.html#r2">my_partition</a>,<a class="code" href="a00254.html">split</a>()),
-00214             my_context(2)
-00215         {
-00216             my_partition.<a class="code" href="a00261.html#a24">set_affinity</a>(*<span class="keyword">this</span>);
-00217             parent.<a class="code" href="a00257.html#r3">my_context</a> = 1;
-00218         }
-00220         <span class="comment">/*override*/</span> <span class="keywordtype">void</span> <a class="code" href="a00261.html#a26">note_affinity</a>( affinity_id <span class="keywordtype">id</span> ) {
-00221             my_partition.<a class="code" href="a00257.html#d3">note_affinity</a>( <span class="keywordtype">id</span> );
-00222         }
-00223 
-00224 <span class="keyword">public</span>:
-00225         <span class="keyword">static</span> <span class="keywordtype">void</span> run( <span class="keyword">const</span> Range& range, Body& body, <a class="code" href="a00188.html">affinity_partitioner</a>& partitioner ) {
-00226             <span class="keywordflow">if</span>( !range.empty() ) {
-00227 <span class="preprocessor">#if !__TBB_EXCEPTIONS || TBB_JOIN_OUTER_TASK_GROUP</span>
-00228 <span class="preprocessor"></span>                task::spawn_root_and_wait( *<span class="keyword">new</span>(task::allocate_root()) <a class="code" href="a00257.html">start_reduce_with_affinity</a>(range,&body,partitioner) );
-00229 <span class="preprocessor">#else</span>
-00230 <span class="preprocessor"></span>                <span class="comment">// Bound context prevents exceptions from body to affect nesting or sibling algorithms,</span>
-00231                 <span class="comment">// and allows users to handle exceptions safely by wrapping parallel_for in the try-block.</span>
-00232                 <a class="code" href="a00262.html">task_group_context</a> context;
-00233                 task::spawn_root_and_wait( *<span class="keyword">new</span>(task::allocate_root(context)) <a class="code" href="a00257.html">start_reduce_with_affinity</a>(range,&body,partitioner) );
-00234 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS && !TBB_JOIN_OUTER_TASK_GROUP */</span>
-00235             }
-00236         }
-00237 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00238 <span class="preprocessor"></span>        <span class="keyword">static</span> <span class="keywordtype">void</span> run( <span class="keyword">const</span> Range& range, Body& body, <a class="code" href="a00188.html">affinity_partitioner</a>& partitioner, <a class="code" href="a00262.html">task_group_context</a>& context ) {
-00239             <span class="keywordflow">if</span>( !range.empty() ) 
-00240                 task::spawn_root_and_wait( *<span class="keyword">new</span>(task::allocate_root(context)) <a class="code" href="a00257.html">start_reduce_with_affinity</a>(range,&body,partitioner) );
-00241         }
-00242 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
-00243     };
-00244 
-00245     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
-00246     <a class="code" href="a00261.html">task</a>* <a class="code" href="a00257.html">start_reduce_with_affinity<Range,Body>::execute</a>() {
-00247         <span class="keywordflow">if</span>( my_context==2 ) {
-00248             finish_type* p = static_cast<finish_type*>(<a class="code" href="a00261.html#a19">parent</a>() );
-00249             <span class="keywordflow">if</span>( !parallel_reduce_load_body(p->my_body) ) {
-00250                 my_body = <span class="keyword">new</span>( p->zombie_space.begin() ) Body(*my_body,<a class="code" href="a00254.html">split</a>());
-00251                 p->has_right_zombie = <span class="keyword">true</span>;
-00252             } 
-00253         }
-00254         <span class="keywordflow">if</span>( !my_range.is_divisible() || my_partition.should_execute_range(*<span class="keyword">this</span>) ) {
-00255             (*my_body)( my_range );
-00256             <span class="keywordflow">if</span>( my_context==1 ) 
-00257                 parallel_reduce_store_body(static_cast<finish_type*>(<a class="code" href="a00261.html#a19">parent</a>())->my_body, my_body );
-00258             <span class="keywordflow">return</span> my_partition.continue_after_execute_range(*<span class="keyword">this</span>);
-00259         } <span class="keywordflow">else</span> {
-00260             finish_type& c = *<span class="keyword">new</span>( <a class="code" href="a00261.html#a2">allocate_continuation</a>()) finish_type(my_context);
-00261             <a class="code" href="a00261.html#a8">recycle_as_child_of</a>(c);
-00262             c.<a class="code" href="a00261.html#a13">set_ref_count</a>(2);    
-00263             <span class="keywordtype">bool</span> delay = my_partition.decide_whether_to_delay();
-00264             start_reduce_with_affinity& b = *<span class="keyword">new</span>( c.allocate_child() ) start_reduce_with_affinity(*<span class="keyword">this</span>,split());
-00265             my_partition.spawn_or_delay(delay,*<span class="keyword">this</span>,b);
-00266             <span class="keywordflow">return</span> <span class="keyword">this</span>;
-00267         }
-00268     } 
-00269 
-00271 
-00275     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Value, <span class="keyword">typename</span> RealBody, <span class="keyword">typename</span> Reduction>
-<a name="l00276"></a><a class="code" href="a00225.html">00276</a>     <span class="keyword">class </span><a class="code" href="a00225.html">lambda_reduce_body</a> {
-00277 
-00278 <span class="comment">//FIXME: decide if my_real_body, my_reduction, and identity_element should be copied or referenced</span>
-00279 <span class="comment">//       (might require some performance measurements)</span>
-00280 
-00281         <span class="keyword">const</span> Value&     identity_element;
-00282         <span class="keyword">const</span> RealBody&  my_real_body;
-00283         <span class="keyword">const</span> Reduction& my_reduction;
-00284         Value            my_value;
-00285     <span class="keyword">public</span>:
-00286         <a class="code" href="a00225.html">lambda_reduce_body</a>( <span class="keyword">const</span> Value& identity, <span class="keyword">const</span> RealBody& body, <span class="keyword">const</span> Reduction& reduction )
-00287             : identity_element(identity)
-00288             , my_real_body(body)
-00289             , my_reduction(reduction)
-00290             , my_value(identity)
-00291         { }
-00292         <a class="code" href="a00225.html">lambda_reduce_body</a>( <span class="keyword">const</span> <a class="code" href="a00225.html">lambda_reduce_body</a>& other )
-00293             : identity_element(other.<a class="code" href="a00225.html#r0">identity_element</a>)
-00294             , my_real_body(other.<a class="code" href="a00225.html#r1">my_real_body</a>)
-00295             , my_reduction(other.<a class="code" href="a00225.html#r2">my_reduction</a>)
-00296             , my_value(other.<a class="code" href="a00225.html#r3">my_value</a>)
-00297         { }
-00298         <a class="code" href="a00225.html">lambda_reduce_body</a>( <a class="code" href="a00225.html">lambda_reduce_body</a>& other, <a class="code" href="a00254.html">tbb::split</a> )
-00299             : identity_element(other.<a class="code" href="a00225.html#r0">identity_element</a>)
-00300             , my_real_body(other.<a class="code" href="a00225.html#r1">my_real_body</a>)
-00301             , my_reduction(other.<a class="code" href="a00225.html#r2">my_reduction</a>)
-00302             , my_value(other.<a class="code" href="a00225.html#r0">identity_element</a>)
-00303         { }
-00304         <span class="keywordtype">void</span> operator()(Range& range) {
-00305             my_value = my_real_body(range, const_cast<const Value&>(my_value));
-00306         }
-00307         <span class="keywordtype">void</span> join( <a class="code" href="a00225.html">lambda_reduce_body</a>& rhs ) {
-00308             my_value = my_reduction(const_cast<const Value&>(my_value), const_cast<const Value&>(rhs.<a class="code" href="a00225.html#r3">my_value</a>));
-00309         }
-00310         Value result()<span class="keyword"> const </span>{
-00311             <span class="keywordflow">return</span> my_value;
-00312         }
-00313     };
-00314 
-00315 } <span class="comment">// namespace internal</span>
-00317 <span class="comment"></span>
-00318 <span class="comment">// Requirements on Range concept are documented in blocked_range.h</span>
-00319 
-00338 
-00340 
-00341 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
-<a name="l00342"></a><a class="code" href="a00321.html#ga11">00342</a> <span class="keywordtype">void</span> <a class="code" href="a00321.html#ga11">parallel_reduce</a>( <span class="keyword">const</span> Range& range, Body& body, <span class="keyword">const</span> simple_partitioner& partitioner = simple_partitioner() ) {
-00343     internal::start_reduce<Range,Body,simple_partitioner>::run( range, body, partitioner );
-00344 }
-00345 
-00347 
-00348 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
-<a name="l00349"></a><a class="code" href="a00321.html#ga12">00349</a> <span class="keywordtype">void</span> <a class="code" href="a00321.html#ga11">parallel_reduce</a>( <span class="keyword">const</span> Range& range, Body& body, <span class="keyword">const</span> auto_partitioner& partitioner ) {
-00350     internal::start_reduce<Range,Body,auto_partitioner>::run( range, body, partitioner );
-00351 }
-00352 
-00354 
-00355 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
-<a name="l00356"></a><a class="code" href="a00321.html#ga13">00356</a> <span class="keywordtype">void</span> <a class="code" href="a00321.html#ga11">parallel_reduce</a>( <span class="keyword">const</span> Range& range, Body& body, affinity_partitioner& partitioner ) {
-00357     internal::start_reduce_with_affinity<Range,Body>::run( range, body, partitioner );
-00358 }
-00359 
-00360 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00361 <span class="preprocessor"></span>
-00362 
-00363 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
-<a name="l00364"></a><a class="code" href="a00321.html#ga14">00364</a> <span class="keywordtype">void</span> <a class="code" href="a00321.html#ga11">parallel_reduce</a>( <span class="keyword">const</span> Range& range, Body& body, <span class="keyword">const</span> simple_partitioner& partitioner, task_group_context& context ) {
-00365     internal::start_reduce<Range,Body,simple_partitioner>::run( range, body, partitioner, context );
-00366 }
-00367 
-00369 
-00370 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
-<a name="l00371"></a><a class="code" href="a00321.html#ga15">00371</a> <span class="keywordtype">void</span> <a class="code" href="a00321.html#ga11">parallel_reduce</a>( <span class="keyword">const</span> Range& range, Body& body, <span class="keyword">const</span> auto_partitioner& partitioner, task_group_context& context ) {
-00372     internal::start_reduce<Range,Body,auto_partitioner>::run( range, body, partitioner, context );
-00373 }
-00374 
-00376 
-00377 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
-<a name="l00378"></a><a class="code" href="a00321.html#ga16">00378</a> <span class="keywordtype">void</span> <a class="code" href="a00321.html#ga11">parallel_reduce</a>( <span class="keyword">const</span> Range& range, Body& body, affinity_partitioner& partitioner, task_group_context& context ) {
-00379     internal::start_reduce_with_affinity<Range,Body>::run( range, body, partitioner, context );
-00380 }
-00381 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
-00382 
-00386 
-00387 
-00388 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Value, <span class="keyword">typename</span> RealBody, <span class="keyword">typename</span> Reduction>
-<a name="l00389"></a><a class="code" href="a00321.html#ga17">00389</a> Value <a class="code" href="a00321.html#ga11">parallel_reduce</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Value& identity, <span class="keyword">const</span> RealBody& real_body, <span class="keyword">const</span> Reduction& reduction,
-00390                        <span class="keyword">const</span> simple_partitioner& partitioner = simple_partitioner() ) {
-00391     internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
-00392     internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,simple_partitioner>
-00393                           ::run(range, body, partitioner );
-00394     <span class="keywordflow">return</span> body.result();
-00395 }
-00396 
-00398 
-00399 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Value, <span class="keyword">typename</span> RealBody, <span class="keyword">typename</span> Reduction>
-<a name="l00400"></a><a class="code" href="a00321.html#ga18">00400</a> Value <a class="code" href="a00321.html#ga11">parallel_reduce</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Value& identity, <span class="keyword">const</span> RealBody& real_body, <span class="keyword">const</span> Reduction& reduction,
-00401                        <span class="keyword">const</span> auto_partitioner& partitioner ) {
-00402     internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
-00403     internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,auto_partitioner>
-00404                           ::run( range, body, partitioner );
-00405     <span class="keywordflow">return</span> body.result();
-00406 }
-00407 
-00409 
-00410 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Value, <span class="keyword">typename</span> RealBody, <span class="keyword">typename</span> Reduction>
-<a name="l00411"></a><a class="code" href="a00321.html#ga19">00411</a> Value <a class="code" href="a00321.html#ga11">parallel_reduce</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Value& identity, <span class="keyword">const</span> RealBody& real_body, <span class="keyword">const</span> Reduction& reduction,
-00412                        affinity_partitioner& partitioner ) {
-00413     internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
-00414     internal::start_reduce_with_affinity<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction> >
-00415                                         ::run( range, body, partitioner );
-00416     <span class="keywordflow">return</span> body.result();
-00417 }
-00418 
-00419 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00420 <span class="preprocessor"></span>
-00421 
-00422 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Value, <span class="keyword">typename</span> RealBody, <span class="keyword">typename</span> Reduction>
-<a name="l00423"></a><a class="code" href="a00321.html#ga20">00423</a> Value <a class="code" href="a00321.html#ga11">parallel_reduce</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Value& identity, <span class="keyword">const</span> RealBody& real_body, <span class="keyword">const</span> Reduction& reduction,
-00424                        <span class="keyword">const</span> simple_partitioner& partitioner, task_group_context& context ) {
-00425     internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
-00426     internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,simple_partitioner>
-00427                           ::run( range, body, partitioner, context );
-00428     <span class="keywordflow">return</span> body.result();
-00429 }
-00430 
-00432 
-00433 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Value, <span class="keyword">typename</span> RealBody, <span class="keyword">typename</span> Reduction>
-<a name="l00434"></a><a class="code" href="a00321.html#ga21">00434</a> Value <a class="code" href="a00321.html#ga11">parallel_reduce</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Value& identity, <span class="keyword">const</span> RealBody& real_body, <span class="keyword">const</span> Reduction& reduction,
-00435                        <span class="keyword">const</span> auto_partitioner& partitioner, task_group_context& context ) {
-00436     internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
-00437     internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,auto_partitioner>
-00438                           ::run( range, body, partitioner, context );
-00439     <span class="keywordflow">return</span> body.result();
-00440 }
-00441 
-00443 
-00444 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Value, <span class="keyword">typename</span> RealBody, <span class="keyword">typename</span> Reduction>
-<a name="l00445"></a><a class="code" href="a00321.html#ga22">00445</a> Value <a class="code" href="a00321.html#ga11">parallel_reduce</a>( <span class="keyword">const</span> Range& range, <span class="keyword">const</span> Value& identity, <span class="keyword">const</span> RealBody& real_body, <span class="keyword">const</span> Reduction& reduction,
-00446                        affinity_partitioner& partitioner, task_group_context& context ) {
-00447     internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
-00448     internal::start_reduce_with_affinity<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction> >
-00449                                         ::run( range, body, partitioner, context );
-00450     <span class="keywordflow">return</span> body.result();
-00451 }
-00452 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
-00453 
-00454 
-00455 } <span class="comment">// namespace tbb</span>
-00456 
-00457 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_parallel_reduce_H */</span>
-00458 
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00338.html b/doc/html/a00338.html
deleted file mode 100644
index 2566668..0000000
--- a/doc/html/a00338.html
+++ /dev/null
@@ -1,321 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>parallel_scan.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>parallel_scan.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_parallel_scan_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_parallel_scan_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include "task.h"</span>
-00025 <span class="preprocessor">#include "aligned_space.h"</span>
-00026 <span class="preprocessor">#include <new></span>
-00027 <span class="preprocessor">#include "partitioner.h"</span>
-00028 
-00029 <span class="keyword">namespace </span>tbb {
-00030 
-00032 
-<a name="l00033"></a><a class="code" href="a00237.html">00033</a> <span class="keyword">struct </span><a class="code" href="a00237.html">pre_scan_tag</a> {
-00034     <span class="keyword">static</span> <span class="keywordtype">bool</span> is_final_scan() {<span class="keywordflow">return</span> <span class="keyword">false</span>;}
-00035 };
-00036 
-00038 
-<a name="l00039"></a><a class="code" href="a00217.html">00039</a> <span class="keyword">struct </span><a class="code" href="a00217.html">final_scan_tag</a> {
-00040     <span class="keyword">static</span> <span class="keywordtype">bool</span> is_final_scan() {<span class="keywordflow">return</span> <span class="keyword">true</span>;}
-00041 };
-00042 
-00044 <span class="keyword">namespace </span>internal {
-00045 
-00047 
-00048     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
-<a name="l00049"></a><a class="code" href="a00218.html">00049</a>     <span class="keyword">class </span><a class="code" href="a00218.html">final_sum</a>: <span class="keyword">public</span> <a class="code" href="a00261.html">task</a> {
-00050     <span class="keyword">public</span>:
-00051         Body body;
-00052     <span class="keyword">private</span>:
-00053         <a class="code" href="a00190.html">aligned_space<Range,1></a> range;
-00055         Body* stuff_last;
-00056     <span class="keyword">public</span>:
-00057         <a class="code" href="a00218.html">final_sum</a>( Body& body_ ) :
-00058             body(body_,<a class="code" href="a00254.html">split</a>())
-00059         {
-00060             <a class="code" href="a00319.html#a77">poison_pointer</a>(stuff_last);
-00061         }
-00062         ~<a class="code" href="a00218.html">final_sum</a>() {
-00063             range.begin()->~Range();
-00064         }     
-00065         <span class="keywordtype">void</span> finish_construction( <span class="keyword">const</span> Range& range_, Body* stuff_last_ ) {
-00066             <span class="keyword">new</span>( range.begin() ) Range(range_);
-00067             stuff_last = stuff_last_;
-00068         }
-00069     <span class="keyword">private</span>:
-00070         <span class="comment">/*override*/</span> <a class="code" href="a00261.html">task</a>* execute() {
-00071             body( *range.begin(), <a class="code" href="a00217.html">final_scan_tag</a>() );
-00072             <span class="keywordflow">if</span>( stuff_last )
-00073                 stuff_last->assign(body);
-00074             <span class="keywordflow">return</span> NULL;
-00075         }
-00076     };       
-00077 
-00079 
-00080     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
-<a name="l00081"></a><a class="code" href="a00260.html">00081</a>     <span class="keyword">class </span><a class="code" href="a00260.html">sum_node</a>: <span class="keyword">public</span> <a class="code" href="a00261.html">task</a> {
-00082         <span class="keyword">typedef</span> <a class="code" href="a00218.html">final_sum<Range,Body></a> <a class="code" href="a00218.html">final_sum_type</a>;
-00083     <span class="keyword">public</span>:
-00084         <a class="code" href="a00218.html">final_sum_type</a> *incoming; 
-00085         <a class="code" href="a00218.html">final_sum_type</a> *body;
-00086         Body *stuff_last;
-00087     <span class="keyword">private</span>:
-00088         <a class="code" href="a00218.html">final_sum_type</a> *left_sum;
-00089         <a class="code" href="a00260.html">sum_node</a> *left;
-00090         <a class="code" href="a00260.html">sum_node</a> *right;     
-00091         <span class="keywordtype">bool</span> left_is_final;
-00092         Range range;
-00093         <a class="code" href="a00260.html">sum_node</a>( <span class="keyword">const</span> Range range_, <span class="keywordtype">bool</span> left_is_final_ ) : 
-00094             left_sum(NULL), 
-00095             left(NULL), 
-00096             right(NULL), 
-00097             left_is_final(left_is_final_), 
-00098             range(range_)
-00099         {
-00100             <span class="comment">// Poison fields that will be set by second pass.</span>
-00101             <a class="code" href="a00319.html#a77">poison_pointer</a>(body);
-00102             <a class="code" href="a00319.html#a77">poison_pointer</a>(incoming);
-00103         }
-00104         <a class="code" href="a00261.html">task</a>* create_child( <span class="keyword">const</span> Range& range, <a class="code" href="a00218.html">final_sum_type</a>& f, <a class="code" href="a00260.html">sum_node</a>* n, <a class="code" href="a00218.html">final_sum_type</a>* incoming, Body* stuff_last ) {
-00105             <span class="keywordflow">if</span>( !n ) {
-00106                 f.<a class="code" href="a00261.html#a8">recycle_as_child_of</a>( *<span class="keyword">this</span> );
-00107                 f.<a class="code" href="a00218.html#a2">finish_construction</a>( range, stuff_last );
-00108                 <span class="keywordflow">return</span> &f;
-00109             } <span class="keywordflow">else</span> {
-00110                 n-><a class="code" href="a00260.html#o1">body</a> = &f;
-00111                 n-><a class="code" href="a00260.html#o0">incoming</a> = incoming;
-00112                 n-><a class="code" href="a00260.html#o2">stuff_last</a> = stuff_last;
-00113                 <span class="keywordflow">return</span> n;
-00114             }
-00115         }
-00116         <span class="comment">/*override*/</span> <a class="code" href="a00261.html">task</a>* execute() {
-00117             <span class="keywordflow">if</span>( body ) {
-00118                 <span class="keywordflow">if</span>( incoming )
-00119                     left_sum-><a class="code" href="a00260.html#o1">body</a>.reverse_join( incoming-><a class="code" href="a00218.html#o0">body</a> );
-00120                 recycle_as_continuation();
-00121                 <a class="code" href="a00260.html">sum_node</a>& c = *<span class="keyword">this</span>;
-00122                 <a class="code" href="a00261.html">task</a>* b = c.<a class="code" href="a00260.html#d1">create_child</a>(Range(range,<a class="code" href="a00254.html">split</a>()),*left_sum,right,left_sum,stuff_last);
-00123                 <a class="code" href="a00261.html">task</a>* a = left_is_final ? NULL : c.<a class="code" href="a00260.html#d1">create_child</a>(range,*body,left,incoming,NULL);
-00124                 set_ref_count( (a!=NULL)+(b!=NULL) );
-00125                 body = NULL; 
-00126                 <span class="keywordflow">if</span>( a ) spawn(*b);
-00127                 <span class="keywordflow">else</span> a = b;
-00128                 <span class="keywordflow">return</span> a;
-00129             } <span class="keywordflow">else</span> {
-00130                 <span class="keywordflow">return</span> NULL;
-00131             }
-00132         }
-00133         <span class="keyword">template</span><<span class="keyword">typename</span> Range_,<span class="keyword">typename</span> Body_,<span class="keyword">typename</span> Partitioner_>
-00134         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00258.html">start_scan</a>;
-00135 
-00136         <span class="keyword">template</span><<span class="keyword">typename</span> Range_,<span class="keyword">typename</span> Body_>
-00137         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00221.html">finish_scan</a>;
-00138     };
-00139 
-00141 
-00142     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
-<a name="l00143"></a><a class="code" href="a00221.html">00143</a>     <span class="keyword">class </span><a class="code" href="a00221.html">finish_scan</a>: <span class="keyword">public</span> <a class="code" href="a00261.html">task</a> {
-00144         <span class="keyword">typedef</span> <a class="code" href="a00260.html">sum_node<Range,Body></a> <a class="code" href="a00260.html">sum_node_type</a>;
-00145         <span class="keyword">typedef</span> <a class="code" href="a00218.html">final_sum<Range,Body></a> <a class="code" href="a00218.html">final_sum_type</a>;
-00146         <a class="code" href="a00218.html">final_sum_type</a>** <span class="keyword">const</span> sum;
-00147         <a class="code" href="a00260.html">sum_node_type</a>*& return_slot;
-00148     <span class="keyword">public</span>:
-00149         <a class="code" href="a00218.html">final_sum_type</a>* right_zombie;
-00150         <a class="code" href="a00260.html">sum_node_type</a>& result;
-00151 
-<a name="l00152"></a><a class="code" href="a00221.html#a0">00152</a>         <span class="comment">/*override*/</span> <a class="code" href="a00261.html">task</a>* execute() {
-00153             __TBB_ASSERT( result.ref_count()==(result.left!=NULL)+(result.right!=NULL), NULL );
-00154             <span class="keywordflow">if</span>( result.left )
-00155                 result.left_is_final = <span class="keyword">false</span>;
-00156             <span class="keywordflow">if</span>( right_zombie && sum ) 
-00157                 ((*sum)->body).reverse_join(result.left_sum->body);
-00158             __TBB_ASSERT( !return_slot, NULL );
-00159             <span class="keywordflow">if</span>( right_zombie || result.right ) {
-00160                 return_slot = &result;
-00161             } <span class="keywordflow">else</span> {
-00162                 destroy( result );
-00163             }
-00164             <span class="keywordflow">if</span>( right_zombie && !sum && !result.right ) destroy(*right_zombie);
-00165             <span class="keywordflow">return</span> NULL;
-00166         }
-00167 
-00168         <a class="code" href="a00221.html">finish_scan</a>( sum_node_type*& return_slot_, final_sum_type** sum_, sum_node_type& result_ ) : 
-00169             sum(sum_),
-00170             return_slot(return_slot_), 
-00171             right_zombie(NULL),
-00172             result(result_)
-00173         {
-00174             __TBB_ASSERT( !return_slot, NULL );
-00175         }
-00176     };
-00177 
-00179 
-00180     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner=simple_partitioner>
-<a name="l00181"></a><a class="code" href="a00258.html">00181</a>     <span class="keyword">class </span><a class="code" href="a00258.html">start_scan</a>: <span class="keyword">public</span> <a class="code" href="a00261.html">task</a> {
-00182         <span class="keyword">typedef</span> <a class="code" href="a00260.html">sum_node<Range,Body></a> <a class="code" href="a00260.html">sum_node_type</a>;
-00183         <span class="keyword">typedef</span> <a class="code" href="a00218.html">final_sum<Range,Body></a> <a class="code" href="a00218.html">final_sum_type</a>;
-00184         <a class="code" href="a00218.html">final_sum_type</a>* body;
-00186         <a class="code" href="a00218.html">final_sum_type</a>** sum; 
-00187         <a class="code" href="a00260.html">sum_node_type</a>** return_slot;
-00189         <a class="code" href="a00260.html">sum_node_type</a>* parent_sum;
-00190         <span class="keywordtype">bool</span> is_final;
-00191         <span class="keywordtype">bool</span> is_right_child;
-00192         Range range;
-00193         <span class="keyword">typename</span> Partitioner::partition_type partition;
-00194         <span class="comment">/*override*/</span> <a class="code" href="a00261.html">task</a>* execute();
-00195     <span class="keyword">public</span>:
-00196         <a class="code" href="a00258.html">start_scan</a>( <a class="code" href="a00260.html">sum_node_type</a>*& return_slot_, <a class="code" href="a00258.html">start_scan</a>& parent, <a class="code" href="a00260.html">sum_node_type</a>* parent_sum_ ) :
-00197             body(parent.<a class="code" href="a00258.html#r0">body</a>),
-00198             sum(parent.<a class="code" href="a00258.html#r1">sum</a>),
-00199             return_slot(&return_slot_),
-00200             parent_sum(parent_sum_),
-00201             is_final(parent.<a class="code" href="a00258.html#r4">is_final</a>),
-00202             is_right_child(<span class="keyword">false</span>),
-00203             range(parent.<a class="code" href="a00258.html#r6">range</a>,<a class="code" href="a00254.html">split</a>()),
-00204             partition(parent.<a class="code" href="a00258.html#r7">partition</a>,<a class="code" href="a00254.html">split</a>())
-00205         {
-00206             __TBB_ASSERT( !*return_slot, NULL );
-00207         }
-00208 
-00209         <a class="code" href="a00258.html">start_scan</a>( <a class="code" href="a00260.html">sum_node_type</a>*& return_slot_, <span class="keyword">const</span> Range& range_, <a class="code" href="a00218.html">final_sum_type</a>& body_, <span class="keyword">const</span> Partitioner& partitioner_) :
-00210             body(&body_),
-00211             sum(NULL),
-00212             return_slot(&return_slot_),
-00213             parent_sum(NULL),
-00214             is_final(<span class="keyword">true</span>),
-00215             is_right_child(<span class="keyword">false</span>),
-00216             range(range_),
-00217             partition(partitioner_)
-00218         {
-00219             __TBB_ASSERT( !*return_slot, NULL );
-00220         }
-00221 
-00222         <span class="keyword">static</span> <span class="keywordtype">void</span> run(  <span class="keyword">const</span> Range& range, Body& body, <span class="keyword">const</span> Partitioner& partitioner ) {
-00223             <span class="keywordflow">if</span>( !range.empty() ) {
-00224                 <span class="keyword">typedef</span> <a class="code" href="a00258.html">internal::start_scan<Range,Body,Partitioner></a> start_pass1_type;
-00225                 <a class="code" href="a00260.html">internal::sum_node<Range,Body></a>* root = NULL;
-00226                 <span class="keyword">typedef</span> <a class="code" href="a00218.html">internal::final_sum<Range,Body></a> <a class="code" href="a00218.html">final_sum_type</a>;
-00227                 final_sum_type* temp_body = <span class="keyword">new</span>(task::allocate_root()) final_sum_type( body );
-00228                 start_pass1_type& pass1 = *<span class="keyword">new</span>(task::allocate_root()) start_pass1_type(
-00229                     <span class="comment">/*return_slot=*/</span>root,
-00230                     range,
-00231                     *temp_body,
-00232                     partitioner );
-00233                 task::spawn_root_and_wait( pass1 );
-00234                 <span class="keywordflow">if</span>( root ) {
-00235                     root-><a class="code" href="a00260.html#o1">body</a> = temp_body;
-00236                     root-><a class="code" href="a00260.html#o0">incoming</a> = NULL;
-00237                     root-><a class="code" href="a00260.html#o2">stuff_last</a> = &body;
-00238                     task::spawn_root_and_wait( *root );
-00239                 } <span class="keywordflow">else</span> {
-00240                     body.assign(temp_body-><a class="code" href="a00218.html#o0">body</a>);
-00241                     temp_body-><a class="code" href="a00218.html#a2">finish_construction</a>( range, NULL );
-00242                     temp_body-><a class="code" href="a00261.html#a5">destroy</a>(*temp_body);
-00243                 }
-00244             }
-00245         }
-00246     };
-00247 
-00248     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner>
-00249     <a class="code" href="a00261.html">task</a>* <a class="code" href="a00258.html">start_scan<Range,Body,Partitioner>::execute</a>() {
-00250         <span class="keyword">typedef</span> <a class="code" href="a00221.html">internal::finish_scan<Range,Body></a> finish_pass1_type;
-00251         finish_pass1_type* p = parent_sum ? static_cast<finish_pass1_type*>( <a class="code" href="a00261.html#a19">parent</a>() ) : NULL;
-00252         <span class="comment">// Inspecting p->result.left_sum would ordinarily be a race condition.</span>
-00253         <span class="comment">// But we inspect it only if we are not a stolen task, in which case we</span>
-00254         <span class="comment">// know that task assigning to p->result.left_sum has completed.</span>
-00255         <span class="keywordtype">bool</span> treat_as_stolen = is_right_child && (<a class="code" href="a00261.html#a20">is_stolen_task</a>() || body!=p->result.left_sum);
-00256         <span class="keywordflow">if</span>( treat_as_stolen ) {
-00257             <span class="comment">// Invocation is for right child that has been really stolen or needs to be virtually stolen</span>
-00258             p->right_zombie = body = <span class="keyword">new</span>( <a class="code" href="a00261.html#e0">allocate_root</a>() ) final_sum_type(body-><a class="code" href="a00218.html#o0">body</a>);
-00259             is_final = <span class="keyword">false</span>;
-00260         }
-00261         <a class="code" href="a00261.html">task</a>* next_task = NULL;
-00262         <span class="keywordflow">if</span>( (is_right_child && !treat_as_stolen) || !range.is_divisible() || partition.should_execute_range(*<span class="keyword">this</span>) ) {
-00263             <span class="keywordflow">if</span>( is_final )
-00264                 (body-><a class="code" href="a00218.html#o0">body</a>)( range, <a class="code" href="a00217.html">final_scan_tag</a>() );
-00265             <span class="keywordflow">else</span> <span class="keywordflow">if</span>( sum )
-00266                 (body-><a class="code" href="a00218.html#o0">body</a>)( range, <a class="code" href="a00237.html">pre_scan_tag</a>() );
-00267             <span class="keywordflow">if</span>( sum ) 
-00268                 *sum = body;
-00269             __TBB_ASSERT( !*return_slot, NULL );
-00270         } <span class="keywordflow">else</span> {
-00271             sum_node_type* result;
-00272             <span class="keywordflow">if</span>( parent_sum ) 
-00273                 result = <span class="keyword">new</span>(<a class="code" href="a00261.html#a4">allocate_additional_child_of</a>(*parent_sum)) sum_node_type(range,<span class="comment">/*left_is_final=*/</span>is_final);
-00274             <span class="keywordflow">else</span>
-00275                 result = <span class="keyword">new</span>(task::allocate_root()) sum_node_type(range,<span class="comment">/*left_is_final=*/</span>is_final);
-00276             finish_pass1_type& c = *<span class="keyword">new</span>( <a class="code" href="a00261.html#a2">allocate_continuation</a>()) finish_pass1_type(*return_slot,sum,*result);
-00277             <span class="comment">// Split off right child</span>
-00278             start_scan& b = *<span class="keyword">new</span>( c.allocate_child() ) start_scan( <span class="comment">/*return_slot=*/</span>result->right, *<span class="keyword">this</span>, result );
-00279             b.is_right_child = <span class="keyword">true</span>;    
-00280             <span class="comment">// Left child is recycling of *this.  Must recycle this before spawning b, </span>
-00281             <span class="comment">// otherwise b might complete and decrement c.ref_count() to zero, which</span>
-00282             <span class="comment">// would cause c.execute() to run prematurely.</span>
-00283             <a class="code" href="a00261.html#a8">recycle_as_child_of</a>(c);
-00284             c.<a class="code" href="a00261.html#a13">set_ref_count</a>(2);
-00285             c.<a class="code" href="a00261.html#a14">spawn</a>(b);
-00286             sum = &result->left_sum;
-00287             return_slot = &result-><a class="code" href="a00260.html#r1">left</a>;
-00288             is_right_child = <span class="keyword">false</span>;
-00289             next_task = <span class="keyword">this</span>;
-00290             parent_sum = result; 
-00291             __TBB_ASSERT( !*return_slot, NULL );
-00292         }
-00293         <span class="keywordflow">return</span> next_task;
-00294     } 
-00295 } <span class="comment">// namespace internal</span>
-00297 <span class="comment"></span>
-00298 <span class="comment">// Requirements on Range concept are documented in blocked_range.h</span>
-00299 
-00317 
-00319 
-00320 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
-<a name="l00321"></a><a class="code" href="a00321.html#ga23">00321</a> <span class="keywordtype">void</span> <a class="code" href="a00321.html#ga23">parallel_scan</a>( <span class="keyword">const</span> Range& range, Body& body, <span class="keyword">const</span> simple_partitioner& partitioner=simple_partitioner() ) {
-00322     internal::start_scan<Range,Body,simple_partitioner>::run(range,body,partitioner);
-00323 }
-00324 
-00326 
-00327 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body>
-<a name="l00328"></a><a class="code" href="a00321.html#ga24">00328</a> <span class="keywordtype">void</span> <a class="code" href="a00321.html#ga23">parallel_scan</a>( <span class="keyword">const</span> Range& range, Body& body, <span class="keyword">const</span> auto_partitioner& partitioner ) {
-00329     internal::start_scan<Range,Body,auto_partitioner>::run(range,body,partitioner);
-00330 }
-00332 
-00333 } <span class="comment">// namespace tbb</span>
-00334 
-00335 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_parallel_scan_H */</span>
-00336 
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00339.html b/doc/html/a00339.html
deleted file mode 100644
index 01c3a61..0000000
--- a/doc/html/a00339.html
+++ /dev/null
@@ -1,211 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>parallel_sort.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>parallel_sort.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_parallel_sort_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_parallel_sort_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include "parallel_for.h"</span>
-00025 <span class="preprocessor">#include "blocked_range.h"</span>
-00026 <span class="preprocessor">#include <algorithm></span>
-00027 <span class="preprocessor">#include <iterator></span>
-00028 <span class="preprocessor">#include <functional></span>
-00029 
-00030 <span class="keyword">namespace </span>tbb {
-00031 
-00033 <span class="keyword">namespace </span>internal {
-00034 
-00036 
-00039 <span class="keyword">template</span><<span class="keyword">typename</span> RandomAccessIterator, <span class="keyword">typename</span> Compare>
-<a name="l00040"></a><a class="code" href="a00244.html">00040</a> <span class="keyword">class </span><a class="code" href="a00244.html">quick_sort_range</a>: <span class="keyword">private</span> <a class="code" href="a00229.html">no_assign</a> {
-00041 
-00042     <span class="keyword">inline</span> size_t median_of_three(<span class="keyword">const</span> RandomAccessIterator &array, size_t l, size_t m, size_t r)<span class="keyword"> const </span>{
-00043         <span class="keywordflow">return</span> comp(array[l], array[m]) ? ( comp(array[m], array[r]) ? m : ( comp( array[l], array[r]) ? r : l ) ) 
-00044                                         : ( comp(array[r], array[m]) ? m : ( comp( array[r], array[l] ) ? r : l ) );
-00045     }
-00046 
-00047     <span class="keyword">inline</span> size_t pseudo_median_of_nine( <span class="keyword">const</span> RandomAccessIterator &array, <span class="keyword">const</span> <a class="code" href="a00244.html">quick_sort_range</a> &range )<span class="keyword"> const </span>{
-00048         size_t offset = range.<a class="code" href="a00244.html#o2">size</a>/8u;
-00049         <span class="keywordflow">return</span> median_of_three(array, 
-00050                                median_of_three(array, 0, offset, offset*2),
-00051                                median_of_three(array, offset*3, offset*4, offset*5),
-00052                                median_of_three(array, offset*6, offset*7, range.<a class="code" href="a00244.html#o2">size</a> - 1) );
-00053 
-00054     }
-00055 
-00056 <span class="keyword">public</span>:
-00057 
-00058     <span class="keyword">static</span> <span class="keyword">const</span> size_t grainsize = 500;
-00059     <span class="keyword">const</span> Compare &comp;
-00060     RandomAccessIterator begin;
-00061     size_t size;
-00062 
-00063     <a class="code" href="a00244.html">quick_sort_range</a>( RandomAccessIterator begin_, size_t size_, <span class="keyword">const</span> Compare &comp_ ) :
-00064         comp(comp_), begin(begin_), size(size_) {}
-00065 
-00066     <span class="keywordtype">bool</span> empty()<span class="keyword"> const </span>{<span class="keywordflow">return</span> size==0;}
-00067     <span class="keywordtype">bool</span> is_divisible()<span class="keyword"> const </span>{<span class="keywordflow">return</span> size>=grainsize;}
-00068 
-00069     <a class="code" href="a00244.html">quick_sort_range</a>( <a class="code" href="a00244.html">quick_sort_range</a>& range, <a class="code" href="a00254.html">split</a> ) : comp(range.<a class="code" href="a00244.html#o0">comp</a>) {
-00070         RandomAccessIterator array = range.<a class="code" href="a00244.html#o1">begin</a>;
-00071         RandomAccessIterator key0 = range.<a class="code" href="a00244.html#o1">begin</a>; 
-00072         size_t m = pseudo_median_of_nine(array, range);
-00073         <span class="keywordflow">if</span> (m) std::swap ( array[0], array[m] );
-00074 
-00075         size_t i=0;
-00076         size_t j=range.<a class="code" href="a00244.html#o2">size</a>;
-00077         <span class="comment">// Partition interval [i+1,j-1] with key *key0.</span>
-00078         <span class="keywordflow">for</span>(;;) {
-00079             __TBB_ASSERT( i<j, NULL );
-00080             <span class="comment">// Loop must terminate since array[l]==*key0.</span>
-00081             <span class="keywordflow">do</span> {
-00082                 --j;
-00083                 __TBB_ASSERT( i<=j, <span class="stringliteral">"bad ordering relation?"</span> );
-00084             } <span class="keywordflow">while</span>( comp( *key0, array[j] ));
-00085             <span class="keywordflow">do</span> {
-00086                 __TBB_ASSERT( i<=j, NULL );
-00087                 <span class="keywordflow">if</span>( i==j ) <span class="keywordflow">goto</span> partition;
-00088                 ++i;
-00089             } <span class="keywordflow">while</span>( comp( array[i],*key0 ));
-00090             <span class="keywordflow">if</span>( i==j ) <span class="keywordflow">goto</span> partition;
-00091             std::swap( array[i], array[j] );
-00092         }
-00093 partition:
-00094         <span class="comment">// Put the partition key were it belongs</span>
-00095         std::swap( array[j], *key0 );
-00096         <span class="comment">// array[l..j) is less or equal to key.</span>
-00097         <span class="comment">// array(j..r) is greater or equal to key.</span>
-00098         <span class="comment">// array[j] is equal to key</span>
-00099         i=j+1;
-00100         begin = array+i;
-00101         size = range.<a class="code" href="a00244.html#o2">size</a>-i;
-00102         range.<a class="code" href="a00244.html#o2">size</a> = j;
-00103     }
-00104 };
-00105 
-00107 
-00108 <span class="keyword">template</span><<span class="keyword">typename</span> RandomAccessIterator, <span class="keyword">typename</span> Compare>
-<a name="l00109"></a><a class="code" href="a00243.html">00109</a> <span class="keyword">class </span><a class="code" href="a00243.html">quick_sort_pretest_body</a> : internal::<a class="code" href="a00229.html">no_assign</a> {
-00110     <span class="keyword">const</span> Compare &comp;
-00111 
-00112 <span class="keyword">public</span>:
-00113     <a class="code" href="a00243.html">quick_sort_pretest_body</a>(<span class="keyword">const</span> Compare &_comp) : comp(_comp) {}
-00114 
-00115     <span class="keywordtype">void</span> operator()( <span class="keyword">const</span> <a class="code" href="a00195.html">blocked_range<RandomAccessIterator></a>& range )<span class="keyword"> const </span>{
-00116         <a class="code" href="a00261.html">task</a> &my_task = task::self();
-00117         RandomAccessIterator my_end = range.<a class="code" href="a00195.html#a3">end</a>();
-00118 
-00119         <span class="keywordtype">int</span> i = 0;
-00120         <span class="keywordflow">for</span> (RandomAccessIterator k = range.<a class="code" href="a00195.html#a2">begin</a>(); k != my_end; ++k, ++i) {
-00121             <span class="keywordflow">if</span> ( i%64 == 0 && my_task.<a class="code" href="a00261.html#a28">is_cancelled</a>() ) <span class="keywordflow">break</span>;
-00122           
-00123             <span class="comment">// The k-1 is never out-of-range because the first chunk starts at begin+serial_cutoff+1</span>
-00124             <span class="keywordflow">if</span> ( comp( *(k), *(k-1) ) ) {
-00125                 my_task.<a class="code" href="a00261.html#a27">cancel_group_execution</a>();
-00126                 <span class="keywordflow">break</span>;
-00127             }
-00128         }
-00129     }
-00130 
-00131 };
-00132 
-00134 
-00135 <span class="keyword">template</span><<span class="keyword">typename</span> RandomAccessIterator, <span class="keyword">typename</span> Compare>
-<a name="l00136"></a><a class="code" href="a00242.html">00136</a> <span class="keyword">struct </span><a class="code" href="a00242.html">quick_sort_body</a> {
-00137     <span class="keywordtype">void</span> operator()( <span class="keyword">const</span> <a class="code" href="a00244.html">quick_sort_range<RandomAccessIterator,Compare></a>& range )<span class="keyword"> const </span>{
-00138         <span class="comment">//SerialQuickSort( range.begin, range.size, range.comp );</span>
-00139         std::sort( range.<a class="code" href="a00244.html#o1">begin</a>, range.<a class="code" href="a00244.html#o1">begin</a> + range.<a class="code" href="a00244.html#o2">size</a>, range.<a class="code" href="a00244.html#o0">comp</a> );
-00140     }
-00141 };
-00142 
-00144 
-00145 <span class="keyword">template</span><<span class="keyword">typename</span> RandomAccessIterator, <span class="keyword">typename</span> Compare>
-<a name="l00146"></a><a class="code" href="a00321.html#ga25">00146</a> <span class="keywordtype">void</span> <a class="code" href="a00321.html#ga25">parallel_quick_sort</a>( RandomAccessIterator begin, RandomAccessIterator end, <span class="keyword">const</span> Compare& comp ) {
-00147     task_group_context my_context;
-00148     <span class="keyword">const</span> <span class="keywordtype">int</span> serial_cutoff = 9;
-00149 
-00150     __TBB_ASSERT( begin + serial_cutoff < end, <span class="stringliteral">"min_parallel_size is smaller than serial cutoff?"</span> );
-00151     RandomAccessIterator k;
-00152     <span class="keywordflow">for</span> ( k = begin ; k != begin + serial_cutoff; ++k ) {
-00153         <span class="keywordflow">if</span> ( comp( *(k+1), *k ) ) {
-00154             <span class="keywordflow">goto</span> do_parallel_quick_sort;
-00155         }
-00156     }
-00157 
-00158     <a class="code" href="a00321.html#ga10">parallel_for</a>( blocked_range<RandomAccessIterator>(k+1, end),
-00159                   quick_sort_pretest_body<RandomAccessIterator,Compare>(comp),
-00160                   auto_partitioner(),
-00161                   my_context);
-00162 
-00163     <span class="keywordflow">if</span> (my_context.is_group_execution_cancelled())
-00164 do_parallel_quick_sort:
-00165         <a class="code" href="a00321.html#ga10">parallel_for</a>( quick_sort_range<RandomAccessIterator,Compare>(begin, end-begin, comp ), 
-00166                       quick_sort_body<RandomAccessIterator,Compare>(),
-00167                       auto_partitioner() );
-00168 }
-00169 
-00170 } <span class="comment">// namespace internal</span>
-00172 <span class="comment"></span>
-00183 
-00185 
-00188 <span class="keyword">template</span><<span class="keyword">typename</span> RandomAccessIterator, <span class="keyword">typename</span> Compare>
-<a name="l00189"></a><a class="code" href="a00321.html#ga26">00189</a> <span class="keywordtype">void</span> <a class="code" href="a00321.html#ga28">parallel_sort</a>( RandomAccessIterator begin, RandomAccessIterator end, <span class="keyword">const</span> Compare& comp) { 
-00190     <span class="keyword">const</span> <span class="keywordtype">int</span> min_parallel_size = 500; 
-00191     <span class="keywordflow">if</span>( end > begin ) {
-00192         <span class="keywordflow">if</span> (end - begin < min_parallel_size) { 
-00193             std::sort(begin, end, comp);
-00194         } <span class="keywordflow">else</span> {
-00195             <a class="code" href="a00321.html#ga25">internal::parallel_quick_sort</a>(begin, end, comp);
-00196         }
-00197     }
-00198 }
-00199 
-00201 
-00202 <span class="keyword">template</span><<span class="keyword">typename</span> RandomAccessIterator>
-<a name="l00203"></a><a class="code" href="a00321.html#ga27">00203</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="a00321.html#ga28">parallel_sort</a>( RandomAccessIterator begin, RandomAccessIterator end ) { 
-00204     <a class="code" href="a00321.html#ga28">parallel_sort</a>( begin, end, std::less< <span class="keyword">typename</span> std::iterator_traits<RandomAccessIterator>::value_type >() );
-00205 }
-00206 
-00208 
-00209 <span class="keyword">template</span><<span class="keyword">typename</span> T>
-<a name="l00210"></a><a class="code" href="a00321.html#ga28">00210</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="a00321.html#ga28">parallel_sort</a>( T * begin, T * end ) {
-00211     <a class="code" href="a00321.html#ga28">parallel_sort</a>( begin, end, std::less< T >() );
-00212 }   
-00214 
-00215 
-00216 } <span class="comment">// namespace tbb</span>
-00217 
-00218 <span class="preprocessor">#endif</span>
-00219 <span class="preprocessor"></span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00340.html b/doc/html/a00340.html
deleted file mode 100644
index 1014f5f..0000000
--- a/doc/html/a00340.html
+++ /dev/null
@@ -1,182 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>parallel_while.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>parallel_while.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_parallel_while</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_parallel_while</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include "task.h"</span>
-00025 <span class="preprocessor">#include <new></span>
-00026 
-00027 <span class="keyword">namespace </span>tbb {
-00028 
-00029 <span class="keyword">template</span><<span class="keyword">typename</span> Body>
-00030 <span class="keyword">class </span>parallel_while;
-00031 
-00033 <span class="keyword">namespace </span>internal {
-00034 
-00035     <span class="keyword">template</span><<span class="keyword">typename</span> Stream, <span class="keyword">typename</span> Body> <span class="keyword">class </span>while_task;
-00036 
-00038 
-00040     <span class="keyword">template</span><<span class="keyword">typename</span> Body>
-<a name="l00041"></a><a class="code" href="a00277.html">00041</a>     <span class="keyword">class </span><a class="code" href="a00277.html">while_iteration_task</a>: <span class="keyword">public</span> <a class="code" href="a00261.html">task</a> {
-00042         <span class="keyword">const</span> Body& my_body;
-00043         <span class="keyword">typename</span> Body::argument_type my_value;
-00044         <span class="comment">/*override*/</span> <a class="code" href="a00261.html">task</a>* execute() {
-00045             my_body(my_value); 
-00046             <span class="keywordflow">return</span> NULL;
-00047         }
-00048         <a class="code" href="a00277.html">while_iteration_task</a>( <span class="keyword">const</span> <span class="keyword">typename</span> Body::argument_type& value, <span class="keyword">const</span> Body& body ) : 
-00049             my_body(body), my_value(value)
-00050         {}
-00051         <span class="keyword">template</span><<span class="keyword">typename</span> Body_> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00276.html">while_group_task</a>;
-00052         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00234.html">tbb::parallel_while</a><Body>;
-00053     };
-00054 
-00056 
-00058     <span class="keyword">template</span><<span class="keyword">typename</span> Body>
-<a name="l00059"></a><a class="code" href="a00276.html">00059</a>     <span class="keyword">class </span><a class="code" href="a00276.html">while_group_task</a>: <span class="keyword">public</span> <a class="code" href="a00261.html">task</a> {
-00060         <span class="keyword">static</span> <span class="keyword">const</span> size_t max_arg_size = 4;         
-00061         <span class="keyword">const</span> Body& my_body;
-00062         size_t size;
-00063         <span class="keyword">typename</span> Body::argument_type my_arg[max_arg_size];
-00064         <a class="code" href="a00276.html">while_group_task</a>( <span class="keyword">const</span> Body& body ) : my_body(body), size(0) {} 
-00065         <span class="comment">/*override*/</span> <a class="code" href="a00261.html">task</a>* execute() {
-00066             <span class="keyword">typedef</span> <a class="code" href="a00277.html">while_iteration_task<Body></a> iteration_type;
-00067             __TBB_ASSERT( size>0, NULL );
-00068             <a class="code" href="a00263.html">task_list</a> list;
-00069             <a class="code" href="a00261.html">task</a>* t; 
-00070             size_t k=0; 
-00071             <span class="keywordflow">for</span>(;;) {
-00072                 t = <span class="keyword">new</span>( allocate_child() ) iteration_type(my_arg[k],my_body); 
-00073                 <span class="keywordflow">if</span>( ++k==size ) <span class="keywordflow">break</span>;
-00074                 list.<a class="code" href="a00263.html#a3">push_back</a>(*t);
-00075             }
-00076             set_ref_count(<span class="keywordtype">int</span>(k+1));
-00077             spawn(list);
-00078             spawn_and_wait_for_all(*t);
-00079             <span class="keywordflow">return</span> NULL;
-00080         }
-00081         <span class="keyword">template</span><<span class="keyword">typename</span> Stream, <span class="keyword">typename</span> Body_> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00278.html">while_task</a>;
-00082     };
-00083     
-00085 
-00087     <span class="keyword">template</span><<span class="keyword">typename</span> Stream, <span class="keyword">typename</span> Body>
-<a name="l00088"></a><a class="code" href="a00278.html">00088</a>     <span class="keyword">class </span><a class="code" href="a00278.html">while_task</a>: <span class="keyword">public</span> <a class="code" href="a00261.html">task</a> {
-00089         Stream& my_stream;
-00090         <span class="keyword">const</span> Body& my_body;
-00091         <a class="code" href="a00215.html">empty_task</a>& my_barrier;
-00092         <span class="comment">/*override*/</span> <a class="code" href="a00261.html">task</a>* execute() {
-00093             <span class="keyword">typedef</span> <a class="code" href="a00276.html">while_group_task<Body></a> block_type;
-00094             block_type& t = *<span class="keyword">new</span>( allocate_additional_child_of(my_barrier) ) block_type(my_body);
-00095             size_t k=0; 
-00096             <span class="keywordflow">while</span>( my_stream.pop_if_present(t.my_arg[k]) ) {
-00097                 <span class="keywordflow">if</span>( ++k==block_type::max_arg_size ) {
-00098                     <span class="comment">// There might be more iterations.</span>
-00099                     recycle_to_reexecute();
-00100                     <span class="keywordflow">break</span>;
-00101                 }
-00102             }
-00103             <span class="keywordflow">if</span>( k==0 ) {
-00104                 destroy(t);
-00105                 <span class="keywordflow">return</span> NULL;
-00106             } <span class="keywordflow">else</span> {
-00107                 t.<a class="code" href="a00276.html#r1">size</a> = k;
-00108                 <span class="keywordflow">return</span> &t;
-00109             }
-00110         }
-00111         <a class="code" href="a00278.html">while_task</a>( Stream& stream, <span class="keyword">const</span> Body& body, <a class="code" href="a00215.html">empty_task</a>& barrier ) : 
-00112             my_stream(stream),
-00113             my_body(body),
-00114             my_barrier(barrier)
-00115         {} 
-00116         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00234.html">tbb::parallel_while</a><Body>;
-00117     };
-00118 
-00119 } <span class="comment">// namespace internal</span>
-00121 <span class="comment"></span>
-00123 
-00128 <span class="keyword">template</span><<span class="keyword">typename</span> Body>
-<a name="l00129"></a><a class="code" href="a00234.html">00129</a> <span class="keyword">class </span><a class="code" href="a00234.html">parallel_while</a>: internal::no_copy {
-00130 <span class="keyword">public</span>:
-<a name="l00132"></a><a class="code" href="a00234.html#a0">00132</a>     <a class="code" href="a00234.html">parallel_while</a>() : my_body(NULL), my_barrier(NULL) {}
-00133 
-<a name="l00135"></a><a class="code" href="a00234.html#a1">00135</a>     ~<a class="code" href="a00234.html">parallel_while</a>() {
-00136         <span class="keywordflow">if</span>( my_barrier ) {
-00137             my_barrier->destroy(*my_barrier);    
-00138             my_barrier = NULL;
-00139         }
-00140     }
-00141 
-<a name="l00143"></a><a class="code" href="a00234.html#w0">00143</a>     <span class="keyword">typedef</span> <span class="keyword">typename</span> Body::argument_type value_type;
-00144 
-00146 
-00149     <span class="keyword">template</span><<span class="keyword">typename</span> Stream>
-00150     <span class="keywordtype">void</span> run( Stream& stream, <span class="keyword">const</span> Body& body );
-00151 
-00153 
-00154     <span class="keywordtype">void</span> add( <span class="keyword">const</span> value_type& item );
-00155 
-00156 <span class="keyword">private</span>:
-00157     <span class="keyword">const</span> Body* my_body;
-00158     <a class="code" href="a00215.html">empty_task</a>* my_barrier;
-00159 };
-00160 
-00161 <span class="keyword">template</span><<span class="keyword">typename</span> Body>
-00162 <span class="keyword">template</span><<span class="keyword">typename</span> Stream>
-<a name="l00163"></a><a class="code" href="a00234.html#a2">00163</a> <span class="keywordtype">void</span> <a class="code" href="a00234.html">parallel_while<Body>::run</a>( Stream& stream, <span class="keyword">const</span> Body& body ) {
-00164     <span class="keyword">using</span> <span class="keyword">namespace </span>internal;
-00165     <a class="code" href="a00215.html">empty_task</a>& barrier = *<span class="keyword">new</span>( task::allocate_root() ) <a class="code" href="a00215.html">empty_task</a>();
-00166     my_body = &body;
-00167     my_barrier = &barrier;
-00168     my_barrier-><a class="code" href="a00261.html#a13">set_ref_count</a>(2);
-00169     while_task<Stream,Body>& w = *<span class="keyword">new</span>( my_barrier-><a class="code" href="a00261.html#a3">allocate_child</a>() ) while_task<Stream,Body>( stream, body, barrier );
-00170     my_barrier-><a class="code" href="a00261.html#a16">spawn_and_wait_for_all</a>(w);
-00171     my_barrier-><a class="code" href="a00261.html#a5">destroy</a>(*my_barrier);
-00172     my_barrier = NULL;
-00173     my_body = NULL;
-00174 }
-00175 
-00176 <span class="keyword">template</span><<span class="keyword">typename</span> Body>
-<a name="l00177"></a><a class="code" href="a00234.html#a3">00177</a> <span class="keywordtype">void</span> <a class="code" href="a00234.html">parallel_while<Body>::add</a>( <span class="keyword">const</span> value_type& item ) {
-00178     __TBB_ASSERT(my_barrier,<span class="stringliteral">"attempt to add to parallel_while that is not running"</span>);
-00179     <span class="keyword">typedef</span> <a class="code" href="a00277.html">internal::while_iteration_task<Body></a> iteration_type;
-00180     iteration_type& i = *<span class="keyword">new</span>( task::self().allocate_additional_child_of(*my_barrier) ) iteration_type(item,*my_body);
-00181     task::self().<a class="code" href="a00261.html#a14">spawn</a>( i );
-00182 }
-00183 
-00184 } <span class="comment">// namespace </span>
-00185 
-00186 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_parallel_while */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00341.html b/doc/html/a00341.html
deleted file mode 100644
index fb3bc90..0000000
--- a/doc/html/a00341.html
+++ /dev/null
@@ -1,217 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>partitioner.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>partitioner.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_partitioner_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_partitioner_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include "task.h"</span>
-00025 
-00026 <span class="keyword">namespace </span>tbb {
-00027 <span class="keyword">class </span>affinity_partitioner;
-00028 
-00030 <span class="keyword">namespace </span>internal {
-00031 size_t __TBB_EXPORTED_FUNC get_initial_auto_partitioner_divisor();
-00032 
-00034 
-<a name="l00035"></a><a class="code" href="a00189.html">00035</a> <span class="keyword">class </span><a class="code" href="a00189.html">affinity_partitioner_base_v3</a>: <a class="code" href="a00230.html">no_copy</a> {
-00036     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00188.html">tbb::affinity_partitioner</a>;
-00038 
-00039     <a class="code" href="a00319.html#a11">affinity_id</a>* my_array;
-00041     size_t my_size;
-00043     <a class="code" href="a00189.html">affinity_partitioner_base_v3</a>() : my_array(NULL), my_size(0) {}
-00045     ~<a class="code" href="a00189.html">affinity_partitioner_base_v3</a>() {resize(0);}
-00047 
-00048     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD resize( <span class="keywordtype">unsigned</span> factor );
-00049     <span class="keyword">friend</span> <span class="keyword">class </span>affinity_partition_type;
-00050 };
-00051 
-<a name="l00053"></a><a class="code" href="a00235.html">00053</a> <span class="keyword">class </span><a class="code" href="a00235.html">partition_type_base</a> {
-00054 <span class="keyword">public</span>:
-00055     <span class="keywordtype">void</span> set_affinity( <a class="code" href="a00261.html">task</a> & ) {}
-00056     <span class="keywordtype">void</span> note_affinity( task::affinity_id ) {}
-00057     <a class="code" href="a00261.html">task</a>* continue_after_execute_range( <a class="code" href="a00261.html">task</a>& ) {<span class="keywordflow">return</span> NULL;}
-00058     <span class="keywordtype">bool</span> decide_whether_to_delay() {<span class="keywordflow">return</span> <span class="keyword">false</span>;}
-00059     <span class="keywordtype">void</span> spawn_or_delay( <span class="keywordtype">bool</span>, <a class="code" href="a00261.html">task</a>& a, <a class="code" href="a00261.html">task</a>& b ) {
-00060         a.<a class="code" href="a00261.html#a14">spawn</a>(b);
-00061     }
-00062 };
-00063 
-00064 <span class="keyword">class </span>affinity_partition_type;
-00065 
-00066 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner> <span class="keyword">class </span><a class="code" href="a00255.html">start_for</a>;
-00067 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner> <span class="keyword">class </span><a class="code" href="a00256.html">start_reduce</a>;
-00068 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body> <span class="keyword">class </span><a class="code" href="a00257.html">start_reduce_with_affinity</a>;
-00069 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner> <span class="keyword">class </span><a class="code" href="a00258.html">start_scan</a>;
-00070 
-00071 } <span class="comment">// namespace internal</span>
-00073 <span class="comment"></span>
-00075 
-<a name="l00077"></a><a class="code" href="a00249.html">00077</a> <span class="keyword">class </span><a class="code" href="a00249.html">simple_partitioner</a> {
-00078 <span class="keyword">public</span>:
-00079     <a class="code" href="a00249.html">simple_partitioner</a>() {}
-00080 <span class="keyword">private</span>:
-00081     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00255.html">internal::start_for</a>;
-00082     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00256.html">internal::start_reduce</a>;
-00083     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00258.html">internal::start_scan</a>;
-00084 
-00085     <span class="keyword">class </span>partition_type: <span class="keyword">public</span> internal::partition_type_base {
-00086     <span class="keyword">public</span>:
-00087         <span class="keywordtype">bool</span> should_execute_range(<span class="keyword">const</span> <a class="code" href="a00261.html">task</a>& ) {<span class="keywordflow">return</span> <span class="keyword">false</span>;}
-00088         partition_type( <span class="keyword">const</span> <a class="code" href="a00249.html">simple_partitioner</a>& ) {}
-00089         partition_type( <span class="keyword">const</span> partition_type&, <a class="code" href="a00254.html">split</a> ) {}
-00090     };
-00091 };
-00092 
-00094 
-<a name="l00097"></a><a class="code" href="a00193.html">00097</a> <span class="keyword">class </span><a class="code" href="a00193.html">auto_partitioner</a> {
-00098 <span class="keyword">public</span>:
-00099     <a class="code" href="a00193.html">auto_partitioner</a>() {}
-00100 
-00101 <span class="keyword">private</span>:
-00102     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00255.html">internal::start_for</a>;
-00103     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00256.html">internal::start_reduce</a>;
-00104     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00258.html">internal::start_scan</a>;
-00105 
-00106     <span class="keyword">class </span>partition_type: <span class="keyword">public</span> internal::partition_type_base {
-00107         size_t num_chunks;
-00108         <span class="keyword">static</span> <span class="keyword">const</span> size_t VICTIM_CHUNKS = 4;
-00109 <span class="keyword">public</span>:
-00110         <span class="keywordtype">bool</span> should_execute_range(<span class="keyword">const</span> <a class="code" href="a00261.html">task</a> &t) {
-00111             <span class="keywordflow">if</span>( num_chunks<VICTIM_CHUNKS && t.<a class="code" href="a00261.html#a20">is_stolen_task</a>() )
-00112                 num_chunks = VICTIM_CHUNKS;
-00113             <span class="keywordflow">return</span> num_chunks==1;
-00114         }
-00115         partition_type( <span class="keyword">const</span> <a class="code" href="a00193.html">auto_partitioner</a>& ) : num_chunks(internal::get_initial_auto_partitioner_divisor()) {}
-00116         partition_type( partition_type& pt, <a class="code" href="a00254.html">split</a> ) {
-00117             num_chunks = pt.num_chunks /= 2u;
-00118         }
-00119     };
-00120 };
-00121 
-<a name="l00123"></a><a class="code" href="a00188.html">00123</a> <span class="keyword">class </span><a class="code" href="a00188.html">affinity_partitioner</a>: internal::affinity_partitioner_base_v3 {
-00124 <span class="keyword">public</span>:
-00125     <a class="code" href="a00188.html">affinity_partitioner</a>() {}
-00126 
-00127 <span class="keyword">private</span>:
-00128     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00255.html">internal::start_for</a>;
-00129     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00257.html">internal::start_reduce_with_affinity</a>;
-00130     <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Body, <span class="keyword">typename</span> Partitioner> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00258.html">internal::start_scan</a>;
-00131 
-00132     <span class="keyword">typedef</span> internal::affinity_partition_type partition_type;
-00133     <span class="keyword">friend</span> <span class="keyword">class </span>internal::affinity_partition_type;
-00134 };
-00135 
-00137 <span class="keyword">namespace </span>internal {
-00138 
-00139 <span class="keyword">class </span>affinity_partition_type: <span class="keyword">public</span> no_copy {
-00141     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> factor = 16;
-00142     <span class="keyword">static</span> <span class="keyword">const</span> size_t VICTIM_CHUNKS = 4;
-00143 
-00144     internal::affinity_id* my_array;
-00145     <a class="code" href="a00263.html">task_list</a> delay_list;
-00146     <span class="keywordtype">unsigned</span> map_begin, map_end;
-00147     size_t num_chunks;
-00148 <span class="keyword">public</span>:
-00149     affinity_partition_type( <a class="code" href="a00188.html">affinity_partitioner</a>& ap ) {
-00150         __TBB_ASSERT( (factor&(factor-1))==0, <span class="stringliteral">"factor must be power of two"</span> ); 
-00151         ap.resize(factor);
-00152         my_array = ap.my_array;
-00153         map_begin = 0;
-00154         map_end = unsigned(ap.my_size);
-00155         num_chunks = internal::get_initial_auto_partitioner_divisor();
-00156     }
-00157     affinity_partition_type(affinity_partition_type& p, split) : my_array(p.my_array) {
-00158         __TBB_ASSERT( p.map_end-p.map_begin<factor || (p.map_end-p.map_begin)%factor==0, NULL );
-00159         num_chunks = p.num_chunks /= 2;
-00160         <span class="keywordtype">unsigned</span> e = p.map_end;
-00161         <span class="keywordtype">unsigned</span> d = (e - p.map_begin)/2;
-00162         <span class="keywordflow">if</span>( d>factor ) 
-00163             d &= 0u-factor;
-00164         map_end = e;
-00165         map_begin = p.map_end = e-d;
-00166     }
-00167 
-00168     <span class="keywordtype">bool</span> should_execute_range(<span class="keyword">const</span> task &t) {
-00169         <span class="keywordflow">if</span>( num_chunks < VICTIM_CHUNKS && t.is_stolen_task() )
-00170             num_chunks = VICTIM_CHUNKS;
-00171         <span class="keywordflow">return</span> num_chunks == 1;
-00172     }
-00173 
-00174     <span class="keywordtype">void</span> set_affinity( task &t ) {
-00175         <span class="keywordflow">if</span>( map_begin<map_end )
-00176             t.set_affinity( my_array[map_begin] );
-00177     }
-00178     <span class="keywordtype">void</span> note_affinity( task::affinity_id <span class="keywordtype">id</span> ) {
-00179         <span class="keywordflow">if</span>( map_begin<map_end ) 
-00180             my_array[map_begin] = id;
-00181     }
-00182     task* continue_after_execute_range( task& t ) {
-00183         task* first = NULL;
-00184         <span class="keywordflow">if</span>( !delay_list.empty() ) {
-00185             first = &delay_list.pop_front();
-00186             <span class="keywordflow">while</span>( !delay_list.empty() ) {
-00187                 t.spawn(*first);
-00188                 first = &delay_list.pop_front();
-00189             }
-00190         }
-00191         <span class="keywordflow">return</span> first;
-00192     }
-00193     <span class="keywordtype">bool</span> decide_whether_to_delay() {
-00194         <span class="comment">// The possible underflow caused by "-1u" is deliberate</span>
-00195         <span class="keywordflow">return</span> (map_begin&(factor-1))==0 && map_end-map_begin-1u<factor;
-00196     }
-00197     <span class="keywordtype">void</span> spawn_or_delay( <span class="keywordtype">bool</span> delay, task& a, task& b ) {
-00198         <span class="keywordflow">if</span>( delay )  
-00199             delay_list.push_back(b);
-00200         <span class="keywordflow">else</span> 
-00201             a.spawn(b);
-00202     }
-00203 
-00204     ~affinity_partition_type() {
-00205         <span class="comment">// The delay_list can be non-empty if an exception is thrown.</span>
-00206         <span class="keywordflow">while</span>( !delay_list.empty() ) {
-00207             task& t = delay_list.pop_front();
-00208             t.destroy(t);
-00209         } 
-00210     }
-00211 };
-00212 
-00213 } <span class="comment">// namespace internal</span>
-00215 <span class="comment"></span>
-00216 
-00217 } <span class="comment">// namespace tbb</span>
-00218 
-00219 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_partitioner_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00342.html b/doc/html/a00342.html
deleted file mode 100644
index 0b104e5..0000000
--- a/doc/html/a00342.html
+++ /dev/null
@@ -1,181 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>pipeline.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>pipeline.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_pipeline_H </span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_pipeline_H </span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include "atomic.h"</span>
-00025 <span class="preprocessor">#include "task.h"</span>
-00026 <span class="preprocessor">#include <cstddef></span>
-00027 
-00028 <span class="keyword">namespace </span>tbb {
-00029 
-00030 <span class="keyword">class </span>pipeline;
-00031 <span class="keyword">class </span>filter;
-00032 
-00034 <span class="keyword">namespace </span>internal {
-00035 
-00036 <span class="comment">// The argument for PIPELINE_VERSION should be an integer between 2 and 9</span>
-00037 <span class="preprocessor">#define __TBB_PIPELINE_VERSION(x) (unsigned char)(x-2)<<1</span>
-00038 <span class="preprocessor"></span>
-00039 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> Token;
-00040 <span class="keyword">typedef</span> <span class="keywordtype">long</span> tokendiff_t;
-00041 <span class="keyword">class </span>stage_task;
-00042 <span class="keyword">class </span>ordered_buffer;
-00043 
-00044 } <span class="comment">// namespace internal</span>
-00046 <span class="comment"></span>
-00048 
-<a name="l00049"></a><a class="code" href="a00216.html">00049</a> <span class="keyword">class </span><a class="code" href="a00216.html">filter</a>: internal::no_copy {
-00050 <span class="keyword">private</span>:
-00052     <span class="keyword">static</span> <a class="code" href="a00216.html">filter</a>* not_in_pipeline() {<span class="keywordflow">return</span> reinterpret_cast<filter*>(internal::intptr(-1));}
-00053     
-00055     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> filter_is_serial = 0x1; 
-00056 
-00058     <span class="comment">// The bit was not set for parallel filters in TBB 2.1 and earlier,</span>
-00059     <span class="comment">// but is_ordered() function always treats parallel filters as out of order</span>
-00060     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> filter_is_out_of_order = 0x1<<4;  
-00061 
-00062     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> current_version = __TBB_PIPELINE_VERSION(4);
-00063     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> version_mask = 0x7<<1; <span class="comment">// bits 1-3 are for version</span>
-00064 <span class="keyword">public</span>:
-<a name="l00065"></a><a class="code" href="a00216.html#w4">00065</a>     <span class="keyword">enum</span> mode {
-00067         parallel = current_version | filter_is_out_of_order, 
-00069         serial_in_order = current_version | filter_is_serial,
-00071         serial_out_of_order = current_version | filter_is_serial | filter_is_out_of_order,
-00073         serial = serial_in_order
-00074     };
-00075 <span class="keyword">protected</span>:
-00076     <a class="code" href="a00216.html">filter</a>( <span class="keywordtype">bool</span> is_serial_ ) : 
-00077         next_filter_in_pipeline(not_in_pipeline()),
-00078         input_buffer(NULL),
-00079         my_filter_mode(static_cast<unsigned char>(is_serial_ ? serial : parallel)),
-00080         prev_filter_in_pipeline(not_in_pipeline()),
-00081         my_pipeline(NULL)
-00082     {}
-00083     
-00084     filter( mode filter_mode ) :
-00085         next_filter_in_pipeline(not_in_pipeline()),
-00086         input_buffer(NULL),
-00087         my_filter_mode(static_cast<unsigned char>(filter_mode)),
-00088         prev_filter_in_pipeline(not_in_pipeline()),
-00089         my_pipeline(NULL)
-00090     {}
-00091 
-00092 <span class="keyword">public</span>:
-<a name="l00094"></a><a class="code" href="a00216.html#a0">00094</a>     <span class="keywordtype">bool</span> is_serial()<span class="keyword"> const </span>{
-00095         <span class="keywordflow">return</span> bool( my_filter_mode & filter_is_serial );
-00096     }  
-00097     
-00098     <span class="comment">// ! True if filter must receive stream in order.</span>
-00099     <span class="keywordtype">bool</span> is_ordered()<span class="keyword"> const </span>{
-00100         <span class="keywordflow">return</span> (my_filter_mode & (filter_is_out_of_order|filter_is_serial))==filter_is_serial;
-00101     }
-00102 
-00104 
-00105     <span class="keyword">virtual</span> <span class="keywordtype">void</span>* operator()( <span class="keywordtype">void</span>* item ) = 0;
-00106 
-00108 
-00109     <span class="keyword">virtual</span> __TBB_EXPORTED_METHOD ~filter();
-00110 
-00111 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00112 <span class="preprocessor"></span>
-00113 
-<a name="l00115"></a><a class="code" href="a00216.html#a4">00115</a>     <span class="keyword">virtual</span> <span class="keywordtype">void</span> finalize( <span class="keywordtype">void</span>* <span class="comment">/*item*/</span> ) {};
-00116 <span class="preprocessor">#endif</span>
-00117 <span class="preprocessor"></span>
-00118 <span class="keyword">private</span>:
-00120     <a class="code" href="a00216.html">filter</a>* next_filter_in_pipeline;
-00121 
-00123     internal::ordered_buffer* input_buffer;
-00124 
-00125     <span class="keyword">friend</span> <span class="keyword">class </span>internal::stage_task;
-00126     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00236.html">pipeline</a>;
-00127 
-00129     <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> my_filter_mode;
-00130 
-00132     <a class="code" href="a00216.html">filter</a>* prev_filter_in_pipeline;
-00133 
-00135     <a class="code" href="a00236.html">pipeline</a>* my_pipeline;
-00136 };
-00137 
-00139 
-<a name="l00140"></a><a class="code" href="a00236.html">00140</a> <span class="keyword">class </span><a class="code" href="a00236.html">pipeline</a> {
-00141 <span class="keyword">public</span>:
-00143     __TBB_EXPORTED_METHOD <a class="code" href="a00236.html">pipeline</a>();
-00144 
-00147     <span class="keyword">virtual</span> __TBB_EXPORTED_METHOD ~<a class="code" href="a00236.html">pipeline</a>();
-00148 
-00150     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD add_filter( <a class="code" href="a00216.html">filter</a>& filter_ );
-00151 
-00153     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD run( size_t max_number_of_live_tokens );
-00154 
-00155 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00156 <span class="preprocessor"></span>
-00157     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD run( size_t max_number_of_live_tokens, <a class="code" href="a00262.html">tbb::task_group_context</a>& context );
-00158 <span class="preprocessor">#endif</span>
-00159 <span class="preprocessor"></span>
-00161     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD clear();
-00162 
-00163 <span class="keyword">private</span>:
-00164     <span class="keyword">friend</span> <span class="keyword">class </span>internal::stage_task;
-00165     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00216.html">filter</a>;
-00166 
-00168     <a class="code" href="a00216.html">filter</a>* filter_list;
-00169 
-00171     <a class="code" href="a00216.html">filter</a>* filter_end;
-00172 
-00174     <a class="code" href="a00215.html">empty_task</a>* end_counter;
-00175 
-00177     <a class="code" href="a00191.html">atomic<internal::Token></a> input_tokens;
-00178 
-00180     internal::Token token_counter;
-00181 
-00183     <span class="keywordtype">bool</span> end_of_input;
-00184 
-00186     <span class="keywordtype">void</span> remove_filter( <a class="code" href="a00216.html">filter</a>& filter_ );
-00187 
-00189     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD inject_token( <a class="code" href="a00261.html">task</a>& <span class="keyword">self</span> );
-00190 
-00191 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00192 <span class="preprocessor"></span>
-00193     <span class="keywordtype">void</span> clear_filters();
-00194 <span class="preprocessor">#endif</span>
-00195 <span class="preprocessor"></span>};
-00196 
-00197 } <span class="comment">// tbb</span>
-00198 
-00199 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_pipeline_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00343.html b/doc/html/a00343.html
deleted file mode 100644
index c7f23cf..0000000
--- a/doc/html/a00343.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>queuing_mutex.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>queuing_mutex.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_queuing_mutex_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_queuing_mutex_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include <cstring></span>
-00025 <span class="preprocessor">#include "atomic.h"</span>
-00026 <span class="preprocessor">#include "tbb_profiling.h"</span>
-00027 
-00028 <span class="keyword">namespace </span>tbb {
-00029 
-00031 
-<a name="l00032"></a><a class="code" href="a00238.html">00032</a> <span class="keyword">class </span><a class="code" href="a00238.html">queuing_mutex</a> {
-00033 <span class="keyword">public</span>:
-<a name="l00035"></a><a class="code" href="a00238.html#a0">00035</a>     <a class="code" href="a00238.html">queuing_mutex</a>() {
-00036         q_tail = NULL;
-00037 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS</span>
-00038 <span class="preprocessor"></span>        internal_construct();
-00039 <span class="preprocessor">#endif</span>
-00040 <span class="preprocessor"></span>    }
-00041 
-00043 
-<a name="l00045"></a><a class="code" href="a00239.html">00045</a>     <span class="keyword">class </span><a class="code" href="a00239.html">scoped_lock</a>: internal::no_copy {
-00047         <span class="keywordtype">void</span> initialize() {
-00048             <a class="code" href="a00227.html">mutex</a> = NULL;
-00049 <span class="preprocessor">#if TBB_USE_ASSERT</span>
-00050 <span class="preprocessor"></span>            internal::poison_pointer(next);
-00051 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
-00052         }
-00053     <span class="keyword">public</span>:
-00055 
-<a name="l00056"></a><a class="code" href="a00239.html#a0">00056</a>         <a class="code" href="a00239.html">scoped_lock</a>() {initialize();}
-00057 
-00059 
-<a name="l00060"></a><a class="code" href="a00239.html#a1">00060</a>         <a class="code" href="a00239.html">scoped_lock</a>( <a class="code" href="a00238.html">queuing_mutex</a>& m ) {
-00061             initialize();
-00062             <a class="code" href="a00318.html#a57a1">acquire</a>(m);
-00063         }
-00064 
-<a name="l00066"></a><a class="code" href="a00239.html#a2">00066</a>         ~<a class="code" href="a00239.html">scoped_lock</a>() {
-00067             <span class="keywordflow">if</span>( <a class="code" href="a00227.html">mutex</a> ) <a class="code" href="a00318.html#a57a2">release</a>();
-00068         }
-00069 
-00071         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD <a class="code" href="a00318.html#a57a1">acquire</a>( <a class="code" href="a00238.html">queuing_mutex</a>& m );
-00072 
-00074         <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD try_acquire( <a class="code" href="a00238.html">queuing_mutex</a>& m );
-00075 
-00077         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD <a class="code" href="a00318.html#a57a2">release</a>();
-00078 
-00079     <span class="keyword">private</span>:
-00081         <a class="code" href="a00238.html">queuing_mutex</a>* <a class="code" href="a00227.html">mutex</a>;
-00082 
-00084         <a class="code" href="a00239.html">scoped_lock</a> *next;
-00085 
-00087 
-00090         <a class="code" href="a00319.html#a21">internal::uintptr</a> going;
-00091     };
-00092 
-00093     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_construct();
-00094 
-00095     <span class="comment">// Mutex traits</span>
-00096     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_rw_mutex = <span class="keyword">false</span>;
-00097     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_recursive_mutex = <span class="keyword">false</span>;
-00098     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_fair_mutex = <span class="keyword">true</span>;
-00099 
-00100     <span class="keyword">friend</span> <span class="keyword">class </span>scoped_lock;
-00101 <span class="keyword">private</span>:
-00103     <a class="code" href="a00191.html">atomic<scoped_lock*></a> q_tail;
-00104 
-00105 };
-00106 
-00107 __TBB_DEFINE_PROFILING_SET_NAME(queuing_mutex)
-00108 
-00109 } <span class="comment">// namespace tbb</span>
-00110 
-00111 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_queuing_mutex_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00344.html b/doc/html/a00344.html
deleted file mode 100644
index a171b7c..0000000
--- a/doc/html/a00344.html
+++ /dev/null
@@ -1,142 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>queuing_rw_mutex.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>queuing_rw_mutex.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_queuing_rw_mutex_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_queuing_rw_mutex_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include <cstring></span>
-00025 <span class="preprocessor">#include "atomic.h"</span>
-00026 <span class="preprocessor">#include "tbb_profiling.h"</span>
-00027 
-00028 <span class="keyword">namespace </span>tbb {
-00029 
-00031 
-<a name="l00034"></a><a class="code" href="a00240.html">00034</a> <span class="keyword">class </span><a class="code" href="a00240.html">queuing_rw_mutex</a> {
-00035 <span class="keyword">public</span>:
-<a name="l00037"></a><a class="code" href="a00240.html#a0">00037</a>     <a class="code" href="a00240.html">queuing_rw_mutex</a>() {
-00038         q_tail = NULL;
-00039 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS</span>
-00040 <span class="preprocessor"></span>        internal_construct();
-00041 <span class="preprocessor">#endif</span>
-00042 <span class="preprocessor"></span>    }
-00043 
-<a name="l00045"></a><a class="code" href="a00240.html#a1">00045</a>     ~<a class="code" href="a00240.html">queuing_rw_mutex</a>() {
-00046 <span class="preprocessor">#if TBB_USE_ASSERT</span>
-00047 <span class="preprocessor"></span>        __TBB_ASSERT( !q_tail, <span class="stringliteral">"destruction of an acquired mutex"</span>);
-00048 <span class="preprocessor">#endif</span>
-00049 <span class="preprocessor"></span>    }
-00050 
-00051     <span class="keyword">class </span>scoped_lock;
-00052     <span class="keyword">friend</span> <span class="keyword">class </span>scoped_lock;
-00053 
-00055 
-<a name="l00057"></a><a class="code" href="a00241.html">00057</a>     <span class="keyword">class </span><a class="code" href="a00241.html">scoped_lock</a>: internal::no_copy {
-00059         <span class="keywordtype">void</span> initialize() {
-00060             <a class="code" href="a00227.html">mutex</a> = NULL;
-00061 <span class="preprocessor">#if TBB_USE_ASSERT</span>
-00062 <span class="preprocessor"></span>            state = 0xFF; <span class="comment">// Set to invalid state</span>
-00063             internal::poison_pointer(next);
-00064             internal::poison_pointer(prev);
-00065 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
-00066         }
-00067     <span class="keyword">public</span>:
-00069 
-<a name="l00070"></a><a class="code" href="a00241.html#a0">00070</a>         <a class="code" href="a00241.html">scoped_lock</a>() {initialize();}
-00071 
-00073 
-<a name="l00074"></a><a class="code" href="a00241.html#a1">00074</a>         <a class="code" href="a00241.html">scoped_lock</a>( <a class="code" href="a00240.html">queuing_rw_mutex</a>& m, <span class="keywordtype">bool</span> write=<span class="keyword">true</span> ) {
-00075             initialize();
-00076             <a class="code" href="a00318.html#a57a1">acquire</a>(m,write);
-00077         }
-00078 
-<a name="l00080"></a><a class="code" href="a00241.html#a2">00080</a>         ~<a class="code" href="a00241.html">scoped_lock</a>() {
-00081             <span class="keywordflow">if</span>( <a class="code" href="a00227.html">mutex</a> ) <a class="code" href="a00318.html#a57a2">release</a>();
-00082         }
-00083 
-00085         <span class="keywordtype">void</span> <a class="code" href="a00318.html#a57a1">acquire</a>( <a class="code" href="a00240.html">queuing_rw_mutex</a>& m, <span class="keywordtype">bool</span> write=<span class="keyword">true</span> );
-00086 
-00088         <span class="keywordtype">bool</span> try_acquire( <a class="code" href="a00240.html">queuing_rw_mutex</a>& m, <span class="keywordtype">bool</span> write=<span class="keyword">true</span> );
-00089 
-00091         <span class="keywordtype">void</span> <a class="code" href="a00318.html#a57a2">release</a>();
-00092 
-00094 
-00095         <span class="keywordtype">bool</span> upgrade_to_writer();
-00096 
-00098         <span class="keywordtype">bool</span> downgrade_to_reader();
-00099 
-00100     <span class="keyword">private</span>:
-00102         <a class="code" href="a00240.html">queuing_rw_mutex</a>* <a class="code" href="a00227.html">mutex</a>;
-00103 
-00105         <a class="code" href="a00241.html">scoped_lock</a> * prev, * next;
-00106 
-00107         <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> state_t;
-00108 
-00110         <a class="code" href="a00191.html">atomic<state_t></a> state;
-00111 
-00113 
-00114         <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> going;
-00115 
-00117         <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> internal_lock;
-00118 
-00120         <span class="keywordtype">void</span> acquire_internal_lock();
-00121 
-00123 
-00124         <span class="keywordtype">bool</span> try_acquire_internal_lock();
-00125 
-00127         <span class="keywordtype">void</span> release_internal_lock();
-00128 
-00130         <span class="keywordtype">void</span> wait_for_release_of_internal_lock();
-00131 
-00133         <span class="keywordtype">void</span> unblock_or_wait_on_internal_lock( uintptr_t );
-00134     };
-00135 
-00136     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_construct();
-00137 
-00138     <span class="comment">// Mutex traits</span>
-00139     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_rw_mutex = <span class="keyword">true</span>;
-00140     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_recursive_mutex = <span class="keyword">false</span>;
-00141     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_fair_mutex = <span class="keyword">true</span>;
-00142 
-00143 <span class="keyword">private</span>:
-00145     <a class="code" href="a00191.html">atomic<scoped_lock*></a> q_tail;
-00146 
-00147 };
-00148 
-00149 __TBB_DEFINE_PROFILING_SET_NAME(queuing_rw_mutex)
-00150 
-00151 } <span class="comment">// namespace tbb</span>
-00152 
-00153 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_queuing_rw_mutex_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00345.html b/doc/html/a00345.html
deleted file mode 100644
index be4e3e8..0000000
--- a/doc/html/a00345.html
+++ /dev/null
@@ -1,197 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>recursive_mutex.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>recursive_mutex.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_recursive_mutex_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_recursive_mutex_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#if _WIN32||_WIN64</span>
-00025 <span class="preprocessor"></span>
-00026 <span class="preprocessor">#include <windows.h></span>
-00027 <span class="preprocessor">#if !defined(_WIN32_WINNT)</span>
-00028 <span class="preprocessor"></span><span class="comment">// The following Windows API function is declared explicitly;</span>
-00029 <span class="comment">// otherwise any user would have to specify /D_WIN32_WINNT=0x0400</span>
-00030 <span class="keyword">extern</span> <span class="stringliteral">"C"</span> BOOL WINAPI TryEnterCriticalSection( LPCRITICAL_SECTION );
-00031 <span class="preprocessor">#endif</span>
-00032 <span class="preprocessor"></span>
-00033 <span class="preprocessor">#else </span><span class="comment">/* if not _WIN32||_WIN64 */</span>
-00034 
-00035 <span class="preprocessor">#include <pthread.h></span>
-00036 <span class="keyword">namespace </span>tbb { <span class="keyword">namespace </span>internal {
-00037 <span class="comment">// Use this internal TBB function to throw an exception</span>
-00038   <span class="keyword">extern</span> <span class="keywordtype">void</span> handle_perror( <span class="keywordtype">int</span> error_code, <span class="keyword">const</span> <span class="keywordtype">char</span>* what );
-00039 } } <span class="comment">//namespaces</span>
-00040 
-00041 <span class="preprocessor">#endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
-00042 
-00043 <span class="preprocessor">#include "tbb_stddef.h"</span>
-00044 <span class="preprocessor">#include "tbb_profiling.h"</span>
-00045 
-00046 <span class="keyword">namespace </span>tbb {
-00048 
-<a name="l00050"></a><a class="code" href="a00245.html">00050</a> <span class="keyword">class </span><a class="code" href="a00245.html">recursive_mutex</a> {
-00051 <span class="keyword">public</span>:
-<a name="l00053"></a><a class="code" href="a00245.html#a0">00053</a>     <a class="code" href="a00245.html">recursive_mutex</a>() {
-00054 <span class="preprocessor">#if TBB_USE_ASSERT || TBB_USE_THREADING_TOOLS</span>
-00055 <span class="preprocessor"></span>        internal_construct();
-00056 <span class="preprocessor">#else</span>
-00057 <span class="preprocessor"></span><span class="preprocessor">  #if _WIN32||_WIN64</span>
-00058 <span class="preprocessor"></span>        InitializeCriticalSection(&impl);
-00059 <span class="preprocessor">  #else</span>
-00060 <span class="preprocessor"></span>        pthread_mutexattr_t mtx_attr;
-00061         <span class="keywordtype">int</span> error_code = pthread_mutexattr_init( &mtx_attr );
-00062         <span class="keywordflow">if</span>( error_code )
-00063             tbb::internal::handle_perror(error_code,<span class="stringliteral">"recursive_mutex: pthread_mutexattr_init failed"</span>);
-00064 
-00065         pthread_mutexattr_settype( &mtx_attr, PTHREAD_MUTEX_RECURSIVE );
-00066         error_code = pthread_mutex_init( &impl, &mtx_attr );
-00067         <span class="keywordflow">if</span>( error_code )
-00068             tbb::internal::handle_perror(error_code,<span class="stringliteral">"recursive_mutex: pthread_mutex_init failed"</span>);
-00069 
-00070         pthread_mutexattr_destroy( &mtx_attr );
-00071 <span class="preprocessor">  #endif </span><span class="comment">/* _WIN32||_WIN64*/</span>
-00072 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
-00073     };
-00074 
-00075     ~<a class="code" href="a00245.html">recursive_mutex</a>() {
-00076 <span class="preprocessor">#if TBB_USE_ASSERT</span>
-00077 <span class="preprocessor"></span>        internal_destroy();
-00078 <span class="preprocessor">#else</span>
-00079 <span class="preprocessor"></span><span class="preprocessor">  #if _WIN32||_WIN64</span>
-00080 <span class="preprocessor"></span>        DeleteCriticalSection(&impl);
-00081 <span class="preprocessor">  #else</span>
-00082 <span class="preprocessor"></span>        pthread_mutex_destroy(&impl); 
-00083 
-00084 <span class="preprocessor">  #endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
-00085 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
-00086     };
-00087 
-00088     <span class="keyword">class </span>scoped_lock;
-00089     <span class="keyword">friend</span> <span class="keyword">class </span>scoped_lock;
-00090 
-00092 
-<a name="l00094"></a><a class="code" href="a00246.html">00094</a>     <span class="keyword">class </span><a class="code" href="a00246.html">scoped_lock</a>: internal::no_copy {
-00095     <span class="keyword">public</span>:
-<a name="l00097"></a><a class="code" href="a00246.html#a0">00097</a>         <a class="code" href="a00246.html">scoped_lock</a>() : my_mutex(NULL) {};
-00098 
-00100 
-<a name="l00101"></a><a class="code" href="a00246.html#a1">00101</a>         <a class="code" href="a00246.html">scoped_lock</a>( <a class="code" href="a00245.html">recursive_mutex</a>& <a class="code" href="a00227.html">mutex</a> ) {
-00102             <a class="code" href="a00318.html#a57a1">acquire</a>( mutex );
-00103         }
-00104 
-<a name="l00106"></a><a class="code" href="a00246.html#a2">00106</a>         ~<a class="code" href="a00246.html">scoped_lock</a>() {
-00107             <span class="keywordflow">if</span>( my_mutex ) 
-00108                 <a class="code" href="a00318.html#a57a2">release</a>();
-00109         }
-00110 
-<a name="l00112"></a><a class="code" href="a00246.html#a3">00112</a>         <span class="keywordtype">void</span> <a class="code" href="a00318.html#a57a1">acquire</a>( <a class="code" href="a00245.html">recursive_mutex</a>& <a class="code" href="a00227.html">mutex</a> ) {
-00113 <span class="preprocessor">#if TBB_USE_ASSERT</span>
-00114 <span class="preprocessor"></span>            internal_acquire( mutex );
-00115 <span class="preprocessor">#else</span>
-00116 <span class="preprocessor"></span>            my_mutex = &mutex;
-00117 <span class="preprocessor">  #if _WIN32||_WIN64</span>
-00118 <span class="preprocessor"></span>            EnterCriticalSection(&mutex.<a class="code" href="a00245.html#r0">impl</a>);
-00119 <span class="preprocessor">  #else</span>
-00120 <span class="preprocessor"></span>            pthread_mutex_lock( &mutex.<a class="code" href="a00245.html#r0">impl</a> );
-00121 <span class="preprocessor">  #endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
-00122 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
-00123         }
-00124 
-<a name="l00126"></a><a class="code" href="a00246.html#a4">00126</a>         <span class="keywordtype">bool</span> try_acquire( <a class="code" href="a00245.html">recursive_mutex</a>& <a class="code" href="a00227.html">mutex</a> ) {
-00127 <span class="preprocessor">#if TBB_USE_ASSERT</span>
-00128 <span class="preprocessor"></span>            <span class="keywordflow">return</span> internal_try_acquire( mutex );
-00129 <span class="preprocessor">#else</span>
-00130 <span class="preprocessor"></span>            <span class="keywordtype">bool</span> result;
-00131 <span class="preprocessor">  #if _WIN32||_WIN64</span>
-00132 <span class="preprocessor"></span>            result = TryEnterCriticalSection(&mutex.<a class="code" href="a00245.html#r0">impl</a>)!=0;
-00133 <span class="preprocessor">  #else</span>
-00134 <span class="preprocessor"></span>            result = pthread_mutex_trylock(&mutex.<a class="code" href="a00245.html#r0">impl</a>)==0;
-00135 <span class="preprocessor">  #endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
-00136             <span class="keywordflow">if</span>( result )
-00137                 my_mutex = &mutex;
-00138 
-00139             <span class="keywordflow">return</span> result;
-00140 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
-00141         }
-00142 
-<a name="l00144"></a><a class="code" href="a00246.html#a5">00144</a>         <span class="keywordtype">void</span> <a class="code" href="a00318.html#a57a2">release</a>() {
-00145 <span class="preprocessor">#if TBB_USE_ASSERT</span>
-00146 <span class="preprocessor"></span>            internal_release ();
-00147 <span class="preprocessor">#else</span>
-00148 <span class="preprocessor"></span><span class="preprocessor">  #if _WIN32||_WIN64</span>
-00149 <span class="preprocessor"></span>            LeaveCriticalSection(&my_mutex->impl);
-00150 <span class="preprocessor">  #else</span>
-00151 <span class="preprocessor"></span>            pthread_mutex_unlock(&my_mutex->impl);
-00152 <span class="preprocessor">  #endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
-00153             my_mutex = NULL;
-00154 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
-00155         }
-00156 
-00157     <span class="keyword">private</span>:
-00159         <a class="code" href="a00245.html">recursive_mutex</a>* my_mutex;
-00160 
-00162         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_acquire( <a class="code" href="a00245.html">recursive_mutex</a>& m );
-00163 
-00165         <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD internal_try_acquire( <a class="code" href="a00245.html">recursive_mutex</a>& m );
-00166 
-00168         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_release();
-00169     };
-00170 
-00171     <span class="comment">// Mutex traits</span>
-00172     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_rw_mutex = <span class="keyword">false</span>;
-00173     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_recursive_mutex = <span class="keyword">true</span>;
-00174     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_fair_mutex = <span class="keyword">false</span>;
-00175 
-00176 <span class="keyword">private</span>:
-00177 <span class="preprocessor">#if _WIN32||_WIN64</span>
-00178 <span class="preprocessor"></span>    CRITICAL_SECTION impl;
-00179     <span class="keyword">enum</span> state_t {
-00180         INITIALIZED=0x1234,
-00181         DESTROYED=0x789A,
-00182     } state;
-00183 <span class="preprocessor">#else</span>
-00184 <span class="preprocessor"></span>    pthread_mutex_t impl;
-00185 <span class="preprocessor">#endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
-00186 
-00188     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_construct();
-00189 
-00191     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_destroy();
-00192 };
-00193 
-00194 __TBB_DEFINE_PROFILING_SET_NAME(recursive_mutex)
-00195 
-00196 } <span class="comment">// namespace tbb </span>
-00197 
-00198 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_recursive_mutex_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00346.html b/doc/html/a00346.html
deleted file mode 100644
index e30f364..0000000
--- a/doc/html/a00346.html
+++ /dev/null
@@ -1,171 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>scalable_allocator.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>scalable_allocator.h</h1><a href="a00304.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_scalable_allocator_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_scalable_allocator_H</span>
-00023 <span class="preprocessor"></span>
-00025 <span class="preprocessor">#include <stddef.h></span> <span class="comment">/* Need ptrdiff_t and size_t from here. */</span>
-00026 
-00027 <span class="preprocessor">#if !defined(__cplusplus) && __ICC==1100</span>
-00028 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (push)</span>
-00029 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (disable: 991)</span>
-00030 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00031 <span class="preprocessor"></span>
-00032 <span class="preprocessor">#ifdef __cplusplus</span>
-00033 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
-00034 <span class="preprocessor">#endif </span><span class="comment">/* __cplusplus */</span>
-00035 
-00036 <span class="preprocessor">#if _MSC_VER >= 1400</span>
-00037 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_EXPORTED_FUNC   __cdecl</span>
-00038 <span class="preprocessor"></span><span class="preprocessor">#else</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_EXPORTED_FUNC</span>
-00040 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00041 <span class="preprocessor"></span>
-00044 <span class="keywordtype">void</span> * __TBB_EXPORTED_FUNC <a class="code" href="a00304.html#a0">scalable_malloc</a> (size_t size);
-00045 
-00048 <span class="keywordtype">void</span>   __TBB_EXPORTED_FUNC <a class="code" href="a00304.html#a1">scalable_free</a> (<span class="keywordtype">void</span>* ptr);
-00049 
-00052 <span class="keywordtype">void</span> * __TBB_EXPORTED_FUNC <a class="code" href="a00304.html#a2">scalable_realloc</a> (<span class="keywordtype">void</span>* ptr, size_t size);
-00053 
-00056 <span class="keywordtype">void</span> * __TBB_EXPORTED_FUNC <a class="code" href="a00304.html#a3">scalable_calloc</a> (size_t nobj, size_t size);
-00057 
-00060 <span class="keywordtype">int</span> __TBB_EXPORTED_FUNC <a class="code" href="a00304.html#a4">scalable_posix_memalign</a> (<span class="keywordtype">void</span>** memptr, size_t alignment, size_t size);
-00061 
-00064 <span class="keywordtype">void</span> * __TBB_EXPORTED_FUNC <a class="code" href="a00304.html#a5">scalable_aligned_malloc</a> (size_t size, size_t alignment);
-00065 
-00068 <span class="keywordtype">void</span> * __TBB_EXPORTED_FUNC <a class="code" href="a00304.html#a6">scalable_aligned_realloc</a> (<span class="keywordtype">void</span>* ptr, size_t size, size_t alignment);
-00069 
-00072 <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC <a class="code" href="a00304.html#a7">scalable_aligned_free</a> (<span class="keywordtype">void</span>* ptr);
-00073 
-00074 <span class="preprocessor">#ifdef __cplusplus</span>
-00075 <span class="preprocessor"></span>} <span class="comment">/* extern "C" */</span>
-00076 <span class="preprocessor">#endif </span><span class="comment">/* __cplusplus */</span>
-00077 
-00078 <span class="preprocessor">#ifdef __cplusplus</span>
-00079 <span class="preprocessor"></span>
-00080 <span class="preprocessor">#include <new></span>      <span class="comment">/* To use new with the placement argument */</span>
-00081 
-00082 <span class="keyword">namespace </span>tbb {
-00083 
-00084 <span class="preprocessor">#if _MSC_VER && !defined(__INTEL_COMPILER)</span>
-00085 <span class="preprocessor"></span>    <span class="comment">// Workaround for erroneous "unreferenced parameter" warning in method destroy.</span>
-00086 <span class="preprocessor">    #pragma warning (push)</span>
-00087 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (disable: 4100)</span>
-00088 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00089 <span class="preprocessor"></span>
-00091 
-00094 <span class="keyword">template</span><<span class="keyword">typename</span> T>
-<a name="l00095"></a><a class="code" href="a00247.html">00095</a> <span class="keyword">class </span><a class="code" href="a00247.html">scalable_allocator</a> {
-00096 <span class="keyword">public</span>:
-00097     <span class="keyword">typedef</span> T* pointer;
-00098     <span class="keyword">typedef</span> <span class="keyword">const</span> T* const_pointer;
-00099     <span class="keyword">typedef</span> T& reference;
-00100     <span class="keyword">typedef</span> <span class="keyword">const</span> T& const_reference;
-00101     <span class="keyword">typedef</span> T value_type;
-00102     <span class="keyword">typedef</span> size_t size_type;
-00103     <span class="keyword">typedef</span> ptrdiff_t difference_type;
-00104     <span class="keyword">template</span><<span class="keyword">class</span> U> <span class="keyword">struct </span>rebind {
-00105         <span class="keyword">typedef</span> <a class="code" href="a00247.html">scalable_allocator<U></a> other;
-00106     };
-00107 
-00108     <a class="code" href="a00247.html">scalable_allocator</a>() <span class="keywordflow">throw</span>() {}
-00109     <a class="code" href="a00247.html">scalable_allocator</a>( <span class="keyword">const</span> <a class="code" href="a00247.html">scalable_allocator</a>& ) <span class="keywordflow">throw</span>() {}
-00110     <span class="keyword">template</span><<span class="keyword">typename</span> U> <a class="code" href="a00247.html">scalable_allocator</a>(<span class="keyword">const</span> <a class="code" href="a00247.html">scalable_allocator<U></a>&) <span class="keywordflow">throw</span>() {}
-00111 
-00112     pointer address(reference x)<span class="keyword"> const </span>{<span class="keywordflow">return</span> &x;}
-00113     const_pointer address(const_reference x)<span class="keyword"> const </span>{<span class="keywordflow">return</span> &x;}
-00114 
-<a name="l00116"></a><a class="code" href="a00247.html#a5">00116</a>     pointer allocate( size_type n, <span class="keyword">const</span> <span class="keywordtype">void</span>* <span class="comment">/*hint*/</span> =0 ) {
-00117         <span class="keywordflow">return</span> static_cast<pointer>( <a class="code" href="a00304.html#a0">scalable_malloc</a>( n * <span class="keyword">sizeof</span>(value_type) ) );
-00118     }
-00119 
-<a name="l00121"></a><a class="code" href="a00247.html#a6">00121</a>     <span class="keywordtype">void</span> deallocate( pointer p, size_type ) {
-00122         <a class="code" href="a00304.html#a1">scalable_free</a>( p );
-00123     }
-00124 
-<a name="l00126"></a><a class="code" href="a00247.html#a7">00126</a>     size_type max_size() const throw() {
-00127         size_type absolutemax = static_cast<size_type>(-1) / <span class="keyword">sizeof</span> (T);
-00128         <span class="keywordflow">return</span> (absolutemax > 0 ? absolutemax : 1);
-00129     }
-00130     <span class="keywordtype">void</span> construct( pointer p, <span class="keyword">const</span> T& val ) { <span class="keyword">new</span>(static_cast<void*>(p)) T(val); }
-00131     <span class="keywordtype">void</span> destroy( pointer p ) {p->~T();}
-00132 };
-00133 
-00134 <span class="preprocessor">#if _MSC_VER && !defined(__INTEL_COMPILER)</span>
-00135 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (pop)</span>
-00136 <span class="preprocessor"></span><span class="preprocessor">#endif // warning 4100 is back</span>
-00137 <span class="preprocessor"></span>
-00139 
-00140 <span class="keyword">template</span><>
-<a name="l00141"></a><a class="code" href="a00248.html">00141</a> <span class="keyword">class </span><a class="code" href="a00247.html">scalable_allocator</a><void> {
-00142 <span class="keyword">public</span>:
-00143     <span class="keyword">typedef</span> <span class="keywordtype">void</span>* pointer;
-00144     <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="keywordtype">void</span>* const_pointer;
-00145     <span class="keyword">typedef</span> <span class="keywordtype">void</span> value_type;
-00146     <span class="keyword">template</span><<span class="keyword">class</span> U> <span class="keyword">struct </span>rebind {
-00147         <span class="keyword">typedef</span> <a class="code" href="a00247.html">scalable_allocator<U></a> other;
-00148     };
-00149 };
-00150 
-00151 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00152 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator==( <span class="keyword">const</span> <a class="code" href="a00247.html">scalable_allocator<T></a>&, <span class="keyword">const</span> <a class="code" href="a00247.html">scalable_allocator<U></a>& ) {<span class="keywordflow">return</span> <span class="keyword">true</span>;}
-00153 
-00154 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00155 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator!=( <span class="keyword">const</span> scalable_allocator<T>&, <span class="keyword">const</span> scalable_allocator<U>& ) {<span class="keywordflow">return</span> <span class="keyword">false</span>;}
-00156 
-00157 } <span class="comment">// namespace tbb</span>
-00158 
-00159 <span class="preprocessor">#if _MSC_VER</span>
-00160 <span class="preprocessor"></span><span class="preprocessor">    #if __TBB_BUILD && !defined(__TBBMALLOC_NO_IMPLICIT_LINKAGE)</span>
-00161 <span class="preprocessor"></span><span class="preprocessor">        #define __TBBMALLOC_NO_IMPLICIT_LINKAGE 1</span>
-00162 <span class="preprocessor"></span><span class="preprocessor">    #endif</span>
-00163 <span class="preprocessor"></span>
-00164 <span class="preprocessor">    #if !__TBBMALLOC_NO_IMPLICIT_LINKAGE</span>
-00165 <span class="preprocessor"></span><span class="preprocessor">        #ifdef _DEBUG</span>
-00166 <span class="preprocessor"></span><span class="preprocessor">            #pragma comment(lib, "tbbmalloc_debug.lib")</span>
-00167 <span class="preprocessor"></span><span class="preprocessor">        #else</span>
-00168 <span class="preprocessor"></span><span class="preprocessor">            #pragma comment(lib, "tbbmalloc.lib")</span>
-00169 <span class="preprocessor"></span><span class="preprocessor">        #endif</span>
-00170 <span class="preprocessor"></span><span class="preprocessor">    #endif</span>
-00171 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00172 <span class="preprocessor"></span>
-00173 <span class="preprocessor">#endif </span><span class="comment">/* __cplusplus */</span>
-00174 
-00175 <span class="preprocessor">#if !defined(__cplusplus) && __ICC==1100</span>
-00176 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (pop)</span>
-00177 <span class="preprocessor"></span><span class="preprocessor">#endif // ICC 11.0 warning 991 is back</span>
-00178 <span class="preprocessor"></span>
-00179 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_scalable_allocator_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00347.html b/doc/html/a00347.html
deleted file mode 100644
index a0d12a3..0000000
--- a/doc/html/a00347.html
+++ /dev/null
@@ -1,140 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>spin_mutex.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>spin_mutex.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_spin_mutex_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_spin_mutex_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include <cstddef></span>
-00025 <span class="preprocessor">#include "tbb_stddef.h"</span>
-00026 <span class="preprocessor">#include "tbb_machine.h"</span>
-00027 <span class="preprocessor">#include "tbb_profiling.h"</span>
-00028 
-00029 <span class="keyword">namespace </span>tbb {
-00030 
-00032 
-<a name="l00037"></a><a class="code" href="a00250.html">00037</a> <span class="keyword">class </span><a class="code" href="a00250.html">spin_mutex</a> {
-00039     <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> flag;
-00040 
-00041 <span class="keyword">public</span>:
-00043 
-<a name="l00044"></a><a class="code" href="a00250.html#a0">00044</a>     <a class="code" href="a00250.html">spin_mutex</a>() : flag(0) {
-00045 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS</span>
-00046 <span class="preprocessor"></span>        internal_construct();
-00047 <span class="preprocessor">#endif</span>
-00048 <span class="preprocessor"></span>    }
-00049 
-<a name="l00051"></a><a class="code" href="a00251.html">00051</a>     <span class="keyword">class </span><a class="code" href="a00251.html">scoped_lock</a> : internal::no_copy {
-00052     <span class="keyword">private</span>:
-00054         <a class="code" href="a00250.html">spin_mutex</a>* my_mutex; 
-00055 
-00057         <a class="code" href="a00319.html#a21">internal::uintptr</a> my_unlock_value;
-00058 
-00060         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_acquire( <a class="code" href="a00250.html">spin_mutex</a>& m );
-00061 
-00063         <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD internal_try_acquire( <a class="code" href="a00250.html">spin_mutex</a>& m );
-00064 
-00066         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_release();
-00067 
-00068     <span class="keyword">public</span>:
-<a name="l00070"></a><a class="code" href="a00251.html#a0">00070</a>         <a class="code" href="a00251.html">scoped_lock</a>() : my_mutex(NULL), my_unlock_value(0) {}
-00071 
-<a name="l00073"></a><a class="code" href="a00251.html#a1">00073</a>         <a class="code" href="a00251.html">scoped_lock</a>( <a class="code" href="a00250.html">spin_mutex</a>& m ) { 
-00074 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT</span>
-00075 <span class="preprocessor"></span>            my_mutex=NULL;
-00076             internal_acquire(m);
-00077 <span class="preprocessor">#else</span>
-00078 <span class="preprocessor"></span>            my_unlock_value = __TBB_LockByte(m.<a class="code" href="a00250.html#r0">flag</a>);
-00079             my_mutex=&m;
-00080 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT*/</span>
-00081         }
-00082 
-<a name="l00084"></a><a class="code" href="a00251.html#a2">00084</a>         <span class="keywordtype">void</span> <a class="code" href="a00318.html#a57a1">acquire</a>( <a class="code" href="a00250.html">spin_mutex</a>& m ) {
-00085 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT</span>
-00086 <span class="preprocessor"></span>            internal_acquire(m);
-00087 <span class="preprocessor">#else</span>
-00088 <span class="preprocessor"></span>            my_unlock_value = __TBB_LockByte(m.<a class="code" href="a00250.html#r0">flag</a>);
-00089             my_mutex = &m;
-00090 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT*/</span>
-00091         }
-00092 
-<a name="l00094"></a><a class="code" href="a00251.html#a3">00094</a>         <span class="keywordtype">bool</span> try_acquire( <a class="code" href="a00250.html">spin_mutex</a>& m ) {
-00095 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT</span>
-00096 <span class="preprocessor"></span>            <span class="keywordflow">return</span> internal_try_acquire(m);
-00097 <span class="preprocessor">#else</span>
-00098 <span class="preprocessor"></span>            <span class="keywordtype">bool</span> result = __TBB_TryLockByte(m.<a class="code" href="a00250.html#r0">flag</a>);
-00099             <span class="keywordflow">if</span>( result ) {
-00100                 my_unlock_value = 0;
-00101                 my_mutex = &m;
-00102             }
-00103             <span class="keywordflow">return</span> result;
-00104 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT*/</span>
-00105         }
-00106 
-<a name="l00108"></a><a class="code" href="a00251.html#a4">00108</a>         <span class="keywordtype">void</span> <a class="code" href="a00318.html#a57a2">release</a>() {
-00109 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT</span>
-00110 <span class="preprocessor"></span>            internal_release();
-00111 <span class="preprocessor">#else</span>
-00112 <span class="preprocessor"></span>            __TBB_store_with_release(my_mutex->flag, static_cast<unsigned char>(my_unlock_value));
-00113             my_mutex = NULL;
-00114 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT */</span>
-00115         }
-00116 
-<a name="l00118"></a><a class="code" href="a00251.html#a5">00118</a>         ~<a class="code" href="a00251.html">scoped_lock</a>() {
-00119             <span class="keywordflow">if</span>( my_mutex ) {
-00120 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT</span>
-00121 <span class="preprocessor"></span>                internal_release();
-00122 <span class="preprocessor">#else</span>
-00123 <span class="preprocessor"></span>                __TBB_store_with_release(my_mutex->flag, static_cast<unsigned char>(my_unlock_value));
-00124 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT */</span>
-00125             }
-00126         }
-00127     };
-00128 
-00129     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_construct();
-00130 
-00131     <span class="comment">// Mutex traits</span>
-00132     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_rw_mutex = <span class="keyword">false</span>;
-00133     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_recursive_mutex = <span class="keyword">false</span>;
-00134     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_fair_mutex = <span class="keyword">false</span>;
-00135 
-00136     <span class="keyword">friend</span> <span class="keyword">class </span>scoped_lock;
-00137 };
-00138 
-00139 __TBB_DEFINE_PROFILING_SET_NAME(spin_mutex)
-00140 
-00141 } <span class="comment">// namespace tbb</span>
-00142 
-00143 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_spin_mutex_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00348.html b/doc/html/a00348.html
deleted file mode 100644
index 3138fd1..0000000
--- a/doc/html/a00348.html
+++ /dev/null
@@ -1,181 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>spin_rw_mutex.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>spin_rw_mutex.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_spin_rw_mutex_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_spin_rw_mutex_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include "tbb_stddef.h"</span>
-00025 <span class="preprocessor">#include "tbb_machine.h"</span>
-00026 <span class="preprocessor">#include "tbb_profiling.h"</span>
-00027 
-00028 <span class="keyword">namespace </span>tbb {
-00029 
-00030 <span class="keyword">class </span>spin_rw_mutex_v3;
-00031 <span class="keyword">typedef</span> spin_rw_mutex_v3 spin_rw_mutex;
-00032 
-00034 
-<a name="l00035"></a><a class="code" href="a00252.html">00035</a> <span class="keyword">class </span><a class="code" href="a00252.html">spin_rw_mutex_v3</a> {
-00037 
-00039     <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD internal_acquire_writer();
-00040 
-00042 
-00043     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_release_writer();
-00044 
-00046     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_acquire_reader();
-00047 
-00049     <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD internal_upgrade();
-00050 
-00052 
-00053     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_downgrade();
-00054 
-00056     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_release_reader();
-00057 
-00059     <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD internal_try_acquire_writer();
-00060 
-00062     <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD internal_try_acquire_reader();
-00063 
-00065 <span class="keyword">public</span>:
-<a name="l00067"></a><a class="code" href="a00252.html#a0">00067</a>     <a class="code" href="a00252.html">spin_rw_mutex_v3</a>() : state(0) {
-00068 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS</span>
-00069 <span class="preprocessor"></span>        internal_construct();
-00070 <span class="preprocessor">#endif</span>
-00071 <span class="preprocessor"></span>    }
-00072 
-00073 <span class="preprocessor">#if TBB_USE_ASSERT</span>
-00074 <span class="preprocessor"></span>
-<a name="l00075"></a><a class="code" href="a00252.html#a1">00075</a>     ~<a class="code" href="a00252.html">spin_rw_mutex_v3</a>() {
-00076         __TBB_ASSERT( !state, <span class="stringliteral">"destruction of an acquired mutex"</span>);
-00077     };
-00078 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
-00079 
-00081 
-<a name="l00083"></a><a class="code" href="a00253.html">00083</a>     <span class="keyword">class </span><a class="code" href="a00253.html">scoped_lock</a> : internal::no_copy {
-00084     <span class="keyword">public</span>:
-00086 
-<a name="l00087"></a><a class="code" href="a00253.html#a0">00087</a>         <a class="code" href="a00253.html">scoped_lock</a>() : <a class="code" href="a00227.html">mutex</a>(NULL) {}
-00088 
-00090 
-<a name="l00091"></a><a class="code" href="a00253.html#a1">00091</a>         <a class="code" href="a00253.html">scoped_lock</a>( spin_rw_mutex& m, <span class="keywordtype">bool</span> write = <span class="keyword">true</span> ) : <a class="code" href="a00227.html">mutex</a>(NULL) {
-00092             <a class="code" href="a00318.html#a57a1">acquire</a>(m, write);
-00093         }
-00094 
-<a name="l00096"></a><a class="code" href="a00253.html#a2">00096</a>         ~<a class="code" href="a00253.html">scoped_lock</a>() {
-00097             <span class="keywordflow">if</span>( <a class="code" href="a00227.html">mutex</a> ) <a class="code" href="a00318.html#a57a2">release</a>();
-00098         }
-00099 
-<a name="l00101"></a><a class="code" href="a00253.html#a3">00101</a>         <span class="keywordtype">void</span> <a class="code" href="a00318.html#a57a1">acquire</a>( spin_rw_mutex& m, <span class="keywordtype">bool</span> write = <span class="keyword">true</span> ) {
-00102             __TBB_ASSERT( !<a class="code" href="a00227.html">mutex</a>, <span class="stringliteral">"holding mutex already"</span> );
-00103             is_writer = write; 
-00104             <a class="code" href="a00227.html">mutex</a> = &m;
-00105             <span class="keywordflow">if</span>( write ) <a class="code" href="a00227.html">mutex</a>-><a class="code" href="a00252.html#d0">internal_acquire_writer</a>();
-00106             <span class="keywordflow">else</span>        <a class="code" href="a00227.html">mutex</a>-><a class="code" href="a00252.html#d2">internal_acquire_reader</a>();
-00107         }
-00108 
-00110 
-<a name="l00111"></a><a class="code" href="a00253.html#a4">00111</a>         <span class="keywordtype">bool</span> upgrade_to_writer() {
-00112             __TBB_ASSERT( <a class="code" href="a00227.html">mutex</a>, <span class="stringliteral">"lock is not acquired"</span> );
-00113             __TBB_ASSERT( !is_writer, <span class="stringliteral">"not a reader"</span> );
-00114             is_writer = <span class="keyword">true</span>; 
-00115             <span class="keywordflow">return</span> <a class="code" href="a00227.html">mutex</a>-><a class="code" href="a00252.html#d3">internal_upgrade</a>();
-00116         }
-00117 
-<a name="l00119"></a><a class="code" href="a00253.html#a5">00119</a>         <span class="keywordtype">void</span> <a class="code" href="a00318.html#a57a2">release</a>() {
-00120             __TBB_ASSERT( <a class="code" href="a00227.html">mutex</a>, <span class="stringliteral">"lock is not acquired"</span> );
-00121             spin_rw_mutex *m = <a class="code" href="a00227.html">mutex</a>; 
-00122             <a class="code" href="a00227.html">mutex</a> = NULL;
-00123 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT</span>
-00124 <span class="preprocessor"></span>            <span class="keywordflow">if</span>( is_writer ) m-><a class="code" href="a00252.html#d1">internal_release_writer</a>();
-00125             <span class="keywordflow">else</span>            m-><a class="code" href="a00252.html#d5">internal_release_reader</a>();
-00126 <span class="preprocessor">#else</span>
-00127 <span class="preprocessor"></span>            <span class="keywordflow">if</span>( is_writer ) __TBB_AtomicAND( &m-><a class="code" href="a00252.html#r0">state</a>, READERS ); 
-00128             <span class="keywordflow">else</span>            __TBB_FetchAndAddWrelease( &m-><a class="code" href="a00252.html#r0">state</a>, -(intptr_t)ONE_READER);
-00129 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT */</span>
-00130         }
-00131 
-<a name="l00133"></a><a class="code" href="a00253.html#a6">00133</a>         <span class="keywordtype">bool</span> downgrade_to_reader() {
-00134 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT</span>
-00135 <span class="preprocessor"></span>            __TBB_ASSERT( <a class="code" href="a00227.html">mutex</a>, <span class="stringliteral">"lock is not acquired"</span> );
-00136             __TBB_ASSERT( is_writer, <span class="stringliteral">"not a writer"</span> );
-00137             <a class="code" href="a00227.html">mutex</a>-><a class="code" href="a00252.html#d4">internal_downgrade</a>();
-00138 <span class="preprocessor">#else</span>
-00139 <span class="preprocessor"></span>             __TBB_FetchAndAddW( &<a class="code" href="a00227.html">mutex</a>->state, ((intptr_t)ONE_READER-WRITER));
-00140 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT */</span>
-00141             is_writer = <span class="keyword">false</span>;
-00142 
-00143             <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00144         }
-00145 
-<a name="l00147"></a><a class="code" href="a00253.html#a7">00147</a>         <span class="keywordtype">bool</span> try_acquire( spin_rw_mutex& m, <span class="keywordtype">bool</span> write = <span class="keyword">true</span> ) {
-00148             __TBB_ASSERT( !<a class="code" href="a00227.html">mutex</a>, <span class="stringliteral">"holding mutex already"</span> );
-00149             <span class="keywordtype">bool</span> result;
-00150             is_writer = write; 
-00151             result = write? m.<a class="code" href="a00252.html#d6">internal_try_acquire_writer</a>()
-00152                           : m.<a class="code" href="a00252.html#d7">internal_try_acquire_reader</a>();
-00153             <span class="keywordflow">if</span>( result ) 
-00154                 <a class="code" href="a00227.html">mutex</a> = &m;
-00155             <span class="keywordflow">return</span> result;
-00156         }
-00157 
-00158     <span class="keyword">private</span>:
-00160         spin_rw_mutex* <a class="code" href="a00227.html">mutex</a>;
-00161 
-00163 
-00164         <span class="keywordtype">bool</span> is_writer;
-00165     };
-00166 
-00167     <span class="comment">// Mutex traits</span>
-00168     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_rw_mutex = <span class="keyword">true</span>;
-00169     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_recursive_mutex = <span class="keyword">false</span>;
-00170     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_fair_mutex = <span class="keyword">false</span>;
-00171 
-00172 <span class="keyword">private</span>:
-00173     <span class="keyword">typedef</span> intptr_t state_t;
-00174     <span class="keyword">static</span> <span class="keyword">const</span> state_t WRITER = 1;
-00175     <span class="keyword">static</span> <span class="keyword">const</span> state_t WRITER_PENDING = 2;
-00176     <span class="keyword">static</span> <span class="keyword">const</span> state_t READERS = ~(WRITER | WRITER_PENDING);
-00177     <span class="keyword">static</span> <span class="keyword">const</span> state_t ONE_READER = 4;
-00178     <span class="keyword">static</span> <span class="keyword">const</span> state_t BUSY = WRITER | READERS;
-00180 
-00183     state_t state;
-00184 
-00185     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_construct();
-00186 };
-00187 
-00188 __TBB_DEFINE_PROFILING_SET_NAME(spin_rw_mutex)
-00189 
-00190 } <span class="comment">// namespace tbb</span>
-00191 
-00192 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_spin_rw_mutex_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00349.html b/doc/html/a00349.html
deleted file mode 100644
index f8f5557..0000000
--- a/doc/html/a00349.html
+++ /dev/null
@@ -1,556 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>task.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>task.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_task_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_task_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include "tbb_stddef.h"</span>
-00025 
-00026 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00027 <span class="preprocessor"></span><span class="preprocessor">#include "cache_aligned_allocator.h"</span>
-00028 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
-00029 
-00030 <span class="keyword">namespace </span>tbb {
-00031 
-00032 <span class="keyword">class </span>task;
-00033 <span class="keyword">class </span>task_list;
-00034 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00035 <span class="preprocessor"></span><span class="keyword">class </span>task_group_context;
-00036 <span class="keyword">class </span>tbb_exception;
-00037 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
-00038 
-00040 <span class="keyword">namespace </span>internal {
-00041 
-00042     <span class="keyword">class </span>scheduler: no_copy {
-00043     <span class="keyword">public</span>:
-00045         <span class="keyword">virtual</span> <span class="keywordtype">void</span> spawn( task& first, task*& next ) = 0;
-00046 
-00048         <span class="keyword">virtual</span> <span class="keywordtype">void</span> wait_for_all( task& parent, task* child ) = 0;
-00049 
-00051         <span class="keyword">virtual</span> <span class="keywordtype">void</span> spawn_root_and_wait( task& first, task*& next ) = 0;
-00052 
-00054         <span class="comment">//  Have to have it just to shut up overzealous compilation warnings</span>
-00055         <span class="keyword">virtual</span> ~scheduler() = 0;
-00056     };
-00057 
-00059 
-<a name="l00060"></a><a class="code" href="a00319.html#a10">00060</a>     <span class="keyword">typedef</span> <a class="code" href="a00319.html#a22">intptr</a> reference_count;
-00061 
-<a name="l00063"></a><a class="code" href="a00319.html#a11">00063</a>     <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> affinity_id;
-00064 
-00065 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00066 <span class="preprocessor"></span>    <span class="keyword">struct </span>context_list_node_t {
-00067         context_list_node_t *my_prev,
-00068                             *my_next;
-00069     };
-00070 
-00071     <span class="keyword">class </span>allocate_root_with_context_proxy: no_assign {
-00072         <a class="code" href="a00262.html">task_group_context</a>& my_context;
-00073     <span class="keyword">public</span>:
-00074         allocate_root_with_context_proxy ( <a class="code" href="a00262.html">task_group_context</a>& ctx ) : my_context(ctx) {}
-00075         task& __TBB_EXPORTED_METHOD allocate( size_t size ) <span class="keyword">const</span>;
-00076         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD free( task& ) <span class="keyword">const</span>;
-00077     };
-00078 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
-00079 
-00080     <span class="keyword">class </span>allocate_root_proxy: no_assign {
-00081     <span class="keyword">public</span>:
-00082         <span class="keyword">static</span> task& __TBB_EXPORTED_FUNC allocate( size_t size );
-00083         <span class="keyword">static</span> <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC free( task& );
-00084     };
-00085 
-00086     <span class="keyword">class </span>allocate_continuation_proxy: no_assign {
-00087     <span class="keyword">public</span>:
-00088         task& __TBB_EXPORTED_METHOD allocate( size_t size ) <span class="keyword">const</span>;
-00089         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD free( task& ) <span class="keyword">const</span>;
-00090     };
-00091 
-00092     <span class="keyword">class </span>allocate_child_proxy: no_assign {
-00093     <span class="keyword">public</span>:
-00094         task& __TBB_EXPORTED_METHOD allocate( size_t size ) <span class="keyword">const</span>;
-00095         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD free( task& ) <span class="keyword">const</span>;
-00096     };
-00097 
-00098     <span class="keyword">class </span>allocate_additional_child_of_proxy: no_assign {
-00099         task& <span class="keyword">self</span>;
-00100         task& parent;
-00101     <span class="keyword">public</span>:
-00102         allocate_additional_child_of_proxy( task& self_, task& parent_ ) : self(self_), parent(parent_) {}
-00103         task& __TBB_EXPORTED_METHOD allocate( size_t size ) <span class="keyword">const</span>;
-00104         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD free( task& ) <span class="keyword">const</span>;
-00105     };
-00106 
-00108 
-<a name="l00113"></a><a class="code" href="a00264.html">00113</a>     <span class="keyword">class </span><a class="code" href="a00264.html">task_prefix</a> {
-00114     <span class="keyword">private</span>:
-00115         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00261.html">tbb::task</a>;
-00116         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00263.html">tbb::task_list</a>;
-00117         <span class="keyword">friend</span> <span class="keyword">class </span>internal::scheduler;
-00118         <span class="keyword">friend</span> <span class="keyword">class </span>internal::allocate_root_proxy;
-00119         <span class="keyword">friend</span> <span class="keyword">class </span>internal::allocate_child_proxy;
-00120         <span class="keyword">friend</span> <span class="keyword">class </span>internal::allocate_continuation_proxy;
-00121         <span class="keyword">friend</span> <span class="keyword">class </span>internal::allocate_additional_child_of_proxy;
-00122 
-00123 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00124 <span class="preprocessor"></span>
-00125 
-00128         <a class="code" href="a00262.html">task_group_context</a>  *context;
-00129 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
-00130         
-00132 
-00137         scheduler* origin;
-00138 
-00140         scheduler* owner;
-00141 
-00143 
-00146         <a class="code" href="a00261.html">tbb::task</a>* parent;
-00147 
-00149 
-00153         <a class="code" href="a00319.html#a10">reference_count</a> ref_count;
-00154 
-00156         <span class="keywordtype">int</span> depth;
-00157 
-00159 
-00160         <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> state;
-00161 
-00163 
-00167         <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> extra_state;
-00168 
-00169         <a class="code" href="a00319.html#a11">affinity_id</a> affinity;
-00170 
-00172         <a class="code" href="a00261.html">tbb::task</a>* next;
-00173 
-00175         <a class="code" href="a00261.html">tbb::task</a>& <a class="code" href="a00261.html">task</a>() {<span class="keywordflow">return</span> *reinterpret_cast<tbb::task*>(<span class="keyword">this</span>+1);}
-00176     };
-00177 
-00178 } <span class="comment">// namespace internal</span>
-00180 <span class="comment"></span>
-00181 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00182 <span class="preprocessor"></span>
-00183 
-00185 
-<a name="l00200"></a><a class="code" href="a00262.html">00200</a> <span class="keyword">class </span><a class="code" href="a00262.html">task_group_context</a> : internal::no_copy
-00201 {
-00202 <span class="keyword">public</span>:
-00203     <span class="keyword">enum</span> kind_type {
-00204         isolated,
-00205         bound
-00206     };
-00207 
-00208 <span class="keyword">private</span>:
-00209     <span class="keyword">union </span>{
-00211         kind_type my_kind;
-00212         uintptr_t _my_kind_aligner;
-00213     };
-00214 
-00216     <a class="code" href="a00262.html">task_group_context</a> *my_parent;
-00217 
-00219 
-00221     internal::context_list_node_t my_node;
-00222 
-00224 
-00227     <span class="keywordtype">char</span> _leading_padding[internal::NFS_MaxLineSize - 2 * <span class="keyword">sizeof</span>(uintptr_t)- <span class="keyword">sizeof</span>(<span class="keywordtype">void</span>*) - <span class="keyword">sizeof</span>(internal::context_list_node_t)];
-00228     
-00230     uintptr_t my_cancellation_requested;
-00231     
-00233 
-00236     uintptr_t  my_version;
-00237 
-00239     <a class="code" href="a00268.html">tbb_exception</a> *my_exception;
-00240 
-00242 
-00245     <span class="keywordtype">void</span> *my_owner;
-00246 
-00248 
-00249     <span class="keywordtype">char</span> _trailing_padding[internal::NFS_MaxLineSize - <span class="keyword">sizeof</span>(intptr_t) - 2 * <span class="keyword">sizeof</span>(<span class="keywordtype">void</span>*)];
-00250 
-00251 <span class="keyword">public</span>:
-00252 
-00253 
-00255 
-<a name="l00272"></a><a class="code" href="a00262.html#a0">00272</a>     <a class="code" href="a00262.html">task_group_context</a> ( kind_type relation_with_parent = bound )
-00273         : my_kind(relation_with_parent)
-00274         , my_version(0)
-00275     {
-00276         init();
-00277     }
-00278 
-00279     __TBB_EXPORTED_METHOD ~<a class="code" href="a00262.html">task_group_context</a> ();
-00280 
-00282 
-00289     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD reset ();
-00290 
-00292 
-00299     <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD cancel_group_execution ();
-00300 
-00302     <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD is_group_execution_cancelled () <span class="keyword">const</span>;
-00303 
-00304 <span class="keyword">protected</span>:
-00306 
-00307     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD init ();
-00308 
-00309 <span class="keyword">private</span>:
-00310     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00261.html">task</a>;
-00311     <span class="keyword">friend</span> <span class="keyword">class </span>internal::allocate_root_with_context_proxy;
-00312 
-00313     <span class="keyword">static</span> <span class="keyword">const</span> kind_type binding_required = bound;
-00314     <span class="keyword">static</span> <span class="keyword">const</span> kind_type binding_completed = kind_type(bound+1);
-00315 
-00318     <span class="keywordtype">void</span> propagate_cancellation_from_ancestors ();
-00319 }; <span class="comment">// class task_group_context</span>
-00320 
-00321 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
-00322 
-00324 
-<a name="l00325"></a><a class="code" href="a00261.html">00325</a> <span class="keyword">class </span><a class="code" href="a00261.html">task</a>: internal::no_copy {
-00327     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_set_ref_count( <span class="keywordtype">int</span> count );
-00328 
-00329 <span class="keyword">protected</span>:
-<a name="l00331"></a><a class="code" href="a00261.html#b0">00331</a>     <a class="code" href="a00261.html">task</a>() {prefix().extra_state=1;}
-00332 
-00333 <span class="keyword">public</span>:
-<a name="l00335"></a><a class="code" href="a00261.html#a0">00335</a>     <span class="keyword">virtual</span> ~<a class="code" href="a00261.html">task</a>() {}
-00336 
-00338     <span class="keyword">virtual</span> <a class="code" href="a00261.html">task</a>* execute() = 0;
-00339 
-<a name="l00341"></a><a class="code" href="a00261.html#w8">00341</a>     <span class="keyword">enum</span> state_type {
-00343         executing,
-00345         reexecute,
-00347         ready,
-00349         allocated,
-00351         freed,
-00353         recycle
-00354     };
-00355 
-00356     <span class="comment">//------------------------------------------------------------------------</span>
-00357     <span class="comment">// Allocating tasks</span>
-00358     <span class="comment">//------------------------------------------------------------------------</span>
-00359 
-<a name="l00361"></a><a class="code" href="a00261.html#e0">00361</a>     <span class="keyword">static</span> internal::allocate_root_proxy allocate_root() {
-00362         <span class="keywordflow">return</span> internal::allocate_root_proxy();
-00363     }
-00364 
-00365 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00366 <span class="preprocessor"></span>
-<a name="l00367"></a><a class="code" href="a00261.html#e1">00367</a>     <span class="keyword">static</span> internal::allocate_root_with_context_proxy allocate_root( <a class="code" href="a00262.html">task_group_context</a>& ctx ) {
-00368         <span class="keywordflow">return</span> internal::allocate_root_with_context_proxy(ctx);
-00369     }
-00370 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
-00371 
-00373 
-<a name="l00374"></a><a class="code" href="a00261.html#a2">00374</a>     internal::allocate_continuation_proxy& allocate_continuation() {
-00375         <span class="keywordflow">return</span> *reinterpret_cast<internal::allocate_continuation_proxy*>(<span class="keyword">this</span>);
-00376     }
-00377 
-<a name="l00379"></a><a class="code" href="a00261.html#a3">00379</a>     internal::allocate_child_proxy& allocate_child() {
-00380         <span class="keywordflow">return</span> *reinterpret_cast<internal::allocate_child_proxy*>(<span class="keyword">this</span>);
-00381     }
-00382 
-00384 
-<a name="l00386"></a><a class="code" href="a00261.html#a4">00386</a>     internal::allocate_additional_child_of_proxy allocate_additional_child_of( <a class="code" href="a00261.html">task</a>& t ) {
-00387         <span class="keywordflow">return</span> internal::allocate_additional_child_of_proxy(*<span class="keyword">this</span>,t);
-00388     }
-00389 
-00391 
-00395     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD destroy( <a class="code" href="a00261.html">task</a>& victim );
-00396 
-00397     <span class="comment">//------------------------------------------------------------------------</span>
-00398     <span class="comment">// Recycling of tasks</span>
-00399     <span class="comment">//------------------------------------------------------------------------</span>
-00400 
-00402 
-<a name="l00408"></a><a class="code" href="a00261.html#a6">00408</a>     <span class="keywordtype">void</span> recycle_as_continuation() {
-00409         __TBB_ASSERT( prefix().state==executing, <span class="stringliteral">"execute not running?"</span> );
-00410         prefix().state = allocated;
-00411     }
-00412 
-00414 
-<a name="l00415"></a><a class="code" href="a00261.html#a7">00415</a>     <span class="keywordtype">void</span> recycle_as_safe_continuation() {
-00416         __TBB_ASSERT( prefix().state==executing, <span class="stringliteral">"execute not running?"</span> );
-00417         prefix().state = recycle;
-00418     }
-00419 
-<a name="l00421"></a><a class="code" href="a00261.html#a8">00421</a>     <span class="keywordtype">void</span> recycle_as_child_of( <a class="code" href="a00261.html">task</a>& new_parent ) {
-00422         <a class="code" href="a00264.html">internal::task_prefix</a>& p = prefix();
-00423         __TBB_ASSERT( prefix().state==executing||prefix().state==allocated, <span class="stringliteral">"execute not running, or already recycled"</span> );
-00424         __TBB_ASSERT( prefix().ref_count==0, <span class="stringliteral">"no child tasks allowed when recycled as a child"</span> );
-00425         __TBB_ASSERT( p.<a class="code" href="a00264.html#r3">parent</a>==NULL, <span class="stringliteral">"parent must be null"</span> );
-00426         __TBB_ASSERT( new_parent.<a class="code" href="a00261.html#d1">prefix</a>().<a class="code" href="a00264.html#r6">state</a><=recycle, <span class="stringliteral">"corrupt parent's state"</span> );
-00427         __TBB_ASSERT( new_parent.<a class="code" href="a00261.html#d1">prefix</a>().<a class="code" href="a00264.html#r6">state</a>!=freed, <span class="stringliteral">"parent already freed"</span> );
-00428         p.<a class="code" href="a00264.html#r6">state</a> = allocated;
-00429         p.<a class="code" href="a00264.html#r3">parent</a> = &new_parent;
-00430         p.<a class="code" href="a00264.html#r5">depth</a> = new_parent.<a class="code" href="a00261.html#d1">prefix</a>().<a class="code" href="a00264.html#r5">depth</a>+1;
-00431 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00432 <span class="preprocessor"></span>        p.<a class="code" href="a00264.html#r0">context</a> = new_parent.<a class="code" href="a00261.html#d1">prefix</a>().<a class="code" href="a00264.html#r0">context</a>;
-00433 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
-00434     }
-00435 
-00437 
-<a name="l00438"></a><a class="code" href="a00261.html#a9">00438</a>     <span class="keywordtype">void</span> recycle_to_reexecute() {
-00439         __TBB_ASSERT( prefix().state==executing, <span class="stringliteral">"execute not running, or already recycled"</span> );
-00440         __TBB_ASSERT( prefix().ref_count==0, <span class="stringliteral">"no child tasks allowed when recycled for reexecution"</span> );
-00441         prefix().state = reexecute;
-00442     }
-00443 
-00445 
-<a name="l00446"></a><a class="code" href="a00261.html#w0">00446</a>     <span class="keyword">typedef</span> internal::intptr depth_type;
-00447 
-<a name="l00449"></a><a class="code" href="a00261.html#a10">00449</a>     depth_type depth()<span class="keyword"> const </span>{<span class="keywordflow">return</span> prefix().depth;}
-00450 
-00452 
-<a name="l00453"></a><a class="code" href="a00261.html#a11">00453</a>     <span class="keywordtype">void</span> set_depth( depth_type new_depth ) {
-00454         __TBB_ASSERT( state()!=ready, <span class="stringliteral">"cannot change depth of ready task"</span> );
-00455         __TBB_ASSERT( new_depth>=0, <span class="stringliteral">"depth cannot be negative"</span> );
-00456         __TBB_ASSERT( new_depth==<span class="keywordtype">int</span>(new_depth), <span class="stringliteral">"integer overflow error"</span>);
-00457         prefix().depth = int(new_depth);
-00458     }
-00459 
-00461 
-<a name="l00462"></a><a class="code" href="a00261.html#a12">00462</a>     <span class="keywordtype">void</span> add_to_depth( <span class="keywordtype">int</span> delta ) {
-00463         __TBB_ASSERT( state()!=ready, <span class="stringliteral">"cannot change depth of ready task"</span> );
-00464         __TBB_ASSERT( prefix().depth>=-delta, <span class="stringliteral">"depth cannot be negative"</span> );
-00465         prefix().depth+=delta;
-00466     }
-00467 
-00468     <span class="comment">//------------------------------------------------------------------------</span>
-00469     <span class="comment">// Spawning and blocking</span>
-00470     <span class="comment">//------------------------------------------------------------------------</span>
-00471 
-<a name="l00473"></a><a class="code" href="a00261.html#a13">00473</a>     <span class="keywordtype">void</span> set_ref_count( <span class="keywordtype">int</span> count ) {
-00474 <span class="preprocessor">#if TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT</span>
-00475 <span class="preprocessor"></span>        internal_set_ref_count(count);
-00476 <span class="preprocessor">#else</span>
-00477 <span class="preprocessor"></span>        prefix().ref_count = count;
-00478 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT */</span>
-00479     }
-00480 
-00482 
-<a name="l00486"></a><a class="code" href="a00261.html#a14">00486</a>     <span class="keywordtype">void</span> spawn( <a class="code" href="a00261.html">task</a>& child ) {
-00487         __TBB_ASSERT( is_owned_by_current_thread(), <span class="stringliteral">"'this' not owned by current thread"</span> );
-00488         prefix().owner->spawn( child, child.<a class="code" href="a00261.html#d1">prefix</a>().<a class="code" href="a00264.html#r9">next</a> );
-00489     }
-00490 
-00492 
-00493     <span class="keywordtype">void</span> spawn( <a class="code" href="a00263.html">task_list</a>& list );
-00494 
-<a name="l00496"></a><a class="code" href="a00261.html#a16">00496</a>     <span class="keywordtype">void</span> spawn_and_wait_for_all( <a class="code" href="a00261.html">task</a>& child ) {
-00497         __TBB_ASSERT( is_owned_by_current_thread(), <span class="stringliteral">"'this' not owned by current thread"</span> );
-00498         prefix().owner->wait_for_all( *<span class="keyword">this</span>, &child );
-00499     }
-00500 
-00502     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD spawn_and_wait_for_all( <a class="code" href="a00263.html">task_list</a>& list );
-00503 
-00505 
-<a name="l00507"></a><a class="code" href="a00261.html#e2">00507</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> spawn_root_and_wait( <a class="code" href="a00261.html">task</a>& root ) {
-00508         __TBB_ASSERT( root.<a class="code" href="a00261.html#a23">is_owned_by_current_thread</a>(), <span class="stringliteral">"root not owned by current thread"</span> );
-00509         root.<a class="code" href="a00261.html#d1">prefix</a>().<a class="code" href="a00264.html#r2">owner</a>->spawn_root_and_wait( root, root.<a class="code" href="a00261.html#d1">prefix</a>().<a class="code" href="a00264.html#r9">next</a> );
-00510     }
-00511 
-00513 
-00515     <span class="keyword">static</span> <span class="keywordtype">void</span> spawn_root_and_wait( <a class="code" href="a00263.html">task_list</a>& root_list );
-00516 
-00518 
-<a name="l00519"></a><a class="code" href="a00261.html#a18">00519</a>     <span class="keywordtype">void</span> wait_for_all() {
-00520         __TBB_ASSERT( is_owned_by_current_thread(), <span class="stringliteral">"'this' not owned by current thread"</span> );
-00521         prefix().<a class="code" href="a00264.html#r2">owner</a>->wait_for_all( *<span class="keyword">this</span>, NULL );
-00522     }
-00523 
-00525     <span class="keyword">static</span> <a class="code" href="a00261.html">task</a>& __TBB_EXPORTED_FUNC <span class="keyword">self</span>();
-00526 
-<a name="l00528"></a><a class="code" href="a00261.html#a19">00528</a>     <a class="code" href="a00261.html">task</a>* parent()<span class="keyword"> const </span>{<span class="keywordflow">return</span> prefix().<a class="code" href="a00264.html#r3">parent</a>;}
-00529 
-<a name="l00531"></a><a class="code" href="a00261.html#a20">00531</a>     <span class="keywordtype">bool</span> is_stolen_task()<span class="keyword"> const </span>{
-00532         <a class="code" href="a00264.html">internal::task_prefix</a>& p = prefix();
-00533         <a class="code" href="a00264.html">internal::task_prefix</a>& q = parent()-><a class="code" href="a00261.html#d1">prefix</a>();
-00534         <span class="keywordflow">return</span> p.<a class="code" href="a00264.html#r2">owner</a>!=q.<a class="code" href="a00264.html#r2">owner</a>;
-00535     }
-00536 
-00537     <span class="comment">//------------------------------------------------------------------------</span>
-00538     <span class="comment">// Debugging</span>
-00539     <span class="comment">//------------------------------------------------------------------------</span>
-00540 
-<a name="l00542"></a><a class="code" href="a00261.html#a21">00542</a>     state_type state()<span class="keyword"> const </span>{<span class="keywordflow">return</span> state_type(prefix().state);}
-00543 
-<a name="l00545"></a><a class="code" href="a00261.html#a22">00545</a>     <span class="keywordtype">int</span> ref_count()<span class="keyword"> const </span>{
-00546 <span class="preprocessor">#if TBB_USE_ASSERT</span>
-00547 <span class="preprocessor"></span>        internal::reference_count ref_count = prefix().<a class="code" href="a00264.html#r4">ref_count</a>;
-00548         __TBB_ASSERT( ref_count==<span class="keywordtype">int</span>(ref_count), <span class="stringliteral">"integer overflow error"</span>);
-00549 <span class="preprocessor">#endif</span>
-00550 <span class="preprocessor"></span>        <span class="keywordflow">return</span> int(prefix().ref_count);
-00551     }
-00552 
-00554     <span class="keywordtype">bool</span> __TBB_EXPORTED_METHOD is_owned_by_current_thread() <span class="keyword">const</span>;
-00555 
-00556     <span class="comment">//------------------------------------------------------------------------</span>
-00557     <span class="comment">// Affinity</span>
-00558     <span class="comment">//------------------------------------------------------------------------</span>
-00559  
-00561 
-<a name="l00562"></a><a class="code" href="a00261.html#w1">00562</a>     <span class="keyword">typedef</span> internal::affinity_id affinity_id;
-00563 
-<a name="l00565"></a><a class="code" href="a00261.html#a24">00565</a>     <span class="keywordtype">void</span> set_affinity( affinity_id <span class="keywordtype">id</span> ) {prefix().<a class="code" href="a00264.html#r8">affinity</a> = id;}
-00566 
-<a name="l00568"></a><a class="code" href="a00261.html#a25">00568</a>     affinity_id affinity()<span class="keyword"> const </span>{<span class="keywordflow">return</span> prefix().<a class="code" href="a00264.html#r8">affinity</a>;}
-00569 
-00571 
-00575     <span class="keyword">virtual</span> <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD note_affinity( affinity_id <span class="keywordtype">id</span> );
-00576 
-00577 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00578 <span class="preprocessor"></span>
-00579 
-<a name="l00580"></a><a class="code" href="a00261.html#a27">00580</a>     <span class="keywordtype">bool</span> cancel_group_execution () { <span class="keywordflow">return</span> prefix().<a class="code" href="a00264.html#r0">context</a>-><a class="code" href="a00262.html#a3">cancel_group_execution</a>(); }
-00581 
-<a name="l00583"></a><a class="code" href="a00261.html#a28">00583</a>     <span class="keywordtype">bool</span> is_cancelled ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> prefix().context-><a class="code" href="a00262.html#a4">is_group_execution_cancelled</a>(); }
-00584 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
-00585 
-00586 <span class="keyword">private</span>:
-00587     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00263.html">task_list</a>;
-00588     <span class="keyword">friend</span> <span class="keyword">class </span>internal::scheduler;
-00589     <span class="keyword">friend</span> <span class="keyword">class </span>internal::allocate_root_proxy;
-00590 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00591 <span class="preprocessor"></span>    <span class="keyword">friend</span> <span class="keyword">class </span>internal::allocate_root_with_context_proxy;
-00592 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
-00593     <span class="keyword">friend</span> <span class="keyword">class </span>internal::allocate_continuation_proxy;
-00594     <span class="keyword">friend</span> <span class="keyword">class </span>internal::allocate_child_proxy;
-00595     <span class="keyword">friend</span> <span class="keyword">class </span>internal::allocate_additional_child_of_proxy;
-00596 
-00598 
-00599     <a class="code" href="a00264.html">internal::task_prefix</a>& prefix( <a class="code" href="a00275.html">internal::version_tag</a>* = NULL )<span class="keyword"> const </span>{
-00600         <span class="keywordflow">return</span> reinterpret_cast<internal::task_prefix*>(const_cast<task*>(<span class="keyword">this</span>))[-1];
-00601     }
-00602 }; <span class="comment">// class task</span>
-00603 
-00605 
-<a name="l00606"></a><a class="code" href="a00215.html">00606</a> <span class="keyword">class </span><a class="code" href="a00215.html">empty_task</a>: <span class="keyword">public</span> <a class="code" href="a00261.html">task</a> {
-00607     <span class="comment">/*override*/</span> <a class="code" href="a00261.html">task</a>* execute() {
-00608         <span class="keywordflow">return</span> NULL;
-00609     }
-00610 };
-00611 
-00613 
-<a name="l00615"></a><a class="code" href="a00263.html">00615</a> <span class="keyword">class </span><a class="code" href="a00263.html">task_list</a>: internal::no_copy {
-00616 <span class="keyword">private</span>:
-00617     <a class="code" href="a00261.html">task</a>* first;
-00618     <a class="code" href="a00261.html">task</a>** next_ptr;
-00619     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00261.html">task</a>;
-00620 <span class="keyword">public</span>:
-<a name="l00622"></a><a class="code" href="a00263.html#a0">00622</a>     <a class="code" href="a00263.html">task_list</a>() : first(NULL), next_ptr(&first) {}
-00623 
-<a name="l00625"></a><a class="code" href="a00263.html#a1">00625</a>     ~<a class="code" href="a00263.html">task_list</a>() {}
-00626 
-<a name="l00628"></a><a class="code" href="a00263.html#a2">00628</a>     <span class="keywordtype">bool</span> empty()<span class="keyword"> const </span>{<span class="keywordflow">return</span> !first;}
-00629 
-<a name="l00631"></a><a class="code" href="a00263.html#a3">00631</a>     <span class="keywordtype">void</span> push_back( <a class="code" href="a00261.html">task</a>& <a class="code" href="a00261.html">task</a> ) {
-00632         task.<a class="code" href="a00261.html#d1">prefix</a>().<a class="code" href="a00264.html#r9">next</a> = NULL;
-00633         *next_ptr = &task;
-00634         next_ptr = &task.<a class="code" href="a00261.html#d1">prefix</a>().<a class="code" href="a00264.html#r9">next</a>;
-00635     }
-00636 
-<a name="l00638"></a><a class="code" href="a00263.html#a4">00638</a>     <a class="code" href="a00261.html">task</a>& pop_front() {
-00639         __TBB_ASSERT( !empty(), <span class="stringliteral">"attempt to pop item from empty task_list"</span> );
-00640         <a class="code" href="a00261.html">task</a>* result = first;
-00641         first = result-><a class="code" href="a00261.html#d1">prefix</a>().<a class="code" href="a00264.html#r9">next</a>;
-00642         <span class="keywordflow">if</span>( !first ) next_ptr = &first;
-00643         <span class="keywordflow">return</span> *result;
-00644     }
-00645 
-<a name="l00647"></a><a class="code" href="a00263.html#a5">00647</a>     <span class="keywordtype">void</span> clear() {
-00648         first=NULL;
-00649         next_ptr=&first;
-00650     }
-00651 };
-00652 
-<a name="l00653"></a><a class="code" href="a00261.html#a15">00653</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> task::spawn( <a class="code" href="a00263.html">task_list</a>& list ) {
-00654     __TBB_ASSERT( <a class="code" href="a00261.html#a23">is_owned_by_current_thread</a>(), <span class="stringliteral">"'this' not owned by current thread"</span> );
-00655     <span class="keywordflow">if</span>( <a class="code" href="a00261.html">task</a>* t = list.<a class="code" href="a00263.html#r0">first</a> ) {
-00656         prefix().<a class="code" href="a00264.html#r2">owner</a>->spawn( *t, *list.<a class="code" href="a00263.html#r1">next_ptr</a> );
-00657         list.<a class="code" href="a00263.html#a5">clear</a>();
-00658     }
-00659 }
-00660 
-<a name="l00661"></a><a class="code" href="a00261.html#e3">00661</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> task::spawn_root_and_wait( <a class="code" href="a00263.html">task_list</a>& root_list ) {
-00662     <span class="keywordflow">if</span>( <a class="code" href="a00261.html">task</a>* t = root_list.<a class="code" href="a00263.html#r0">first</a> ) {
-00663         __TBB_ASSERT( t-><a class="code" href="a00261.html#a23">is_owned_by_current_thread</a>(), <span class="stringliteral">"'this' not owned by current thread"</span> );
-00664         t-><a class="code" href="a00261.html#d1">prefix</a>().<a class="code" href="a00264.html#r2">owner</a>->spawn_root_and_wait( *t, *root_list.<a class="code" href="a00263.html#r1">next_ptr</a> );
-00665         root_list.<a class="code" href="a00263.html#a5">clear</a>();
-00666     }
-00667 }
-00668 
-00669 } <span class="comment">// namespace tbb</span>
-00670 
-00671 <span class="keyword">inline</span> <span class="keywordtype">void</span> *operator new( size_t bytes, <span class="keyword">const</span> tbb::internal::allocate_root_proxy& ) {
-00672     <span class="keywordflow">return</span> &tbb::internal::allocate_root_proxy::allocate(bytes);
-00673 }
-00674 
-00675 <span class="keyword">inline</span> <span class="keywordtype">void</span> operator delete( <span class="keywordtype">void</span>* task, <span class="keyword">const</span> tbb::internal::allocate_root_proxy& ) {
-00676     tbb::internal::allocate_root_proxy::free( *static_cast<tbb::task*>(task) );
-00677 }
-00678 
-00679 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00680 <span class="preprocessor"></span><span class="keyword">inline</span> <span class="keywordtype">void</span> *operator new( size_t bytes, <span class="keyword">const</span> tbb::internal::allocate_root_with_context_proxy& p ) {
-00681     <span class="keywordflow">return</span> &p.allocate(bytes);
-00682 }
-00683 
-00684 <span class="keyword">inline</span> <span class="keywordtype">void</span> operator delete( <span class="keywordtype">void</span>* task, <span class="keyword">const</span> tbb::internal::allocate_root_with_context_proxy& p ) {
-00685     p.free( *static_cast<tbb::task*>(task) );
-00686 }
-00687 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
-00688 
-00689 <span class="keyword">inline</span> <span class="keywordtype">void</span> *operator new( size_t bytes, <span class="keyword">const</span> tbb::internal::allocate_continuation_proxy& p ) {
-00690     <span class="keywordflow">return</span> &p.allocate(bytes);
-00691 }
-00692 
-00693 <span class="keyword">inline</span> <span class="keywordtype">void</span> operator delete( <span class="keywordtype">void</span>* task, <span class="keyword">const</span> tbb::internal::allocate_continuation_proxy& p ) {
-00694     p.free( *static_cast<tbb::task*>(task) );
-00695 }
-00696 
-00697 <span class="keyword">inline</span> <span class="keywordtype">void</span> *operator new( size_t bytes, <span class="keyword">const</span> tbb::internal::allocate_child_proxy& p ) {
-00698     <span class="keywordflow">return</span> &p.allocate(bytes);
-00699 }
-00700 
-00701 <span class="keyword">inline</span> <span class="keywordtype">void</span> operator delete( <span class="keywordtype">void</span>* task, <span class="keyword">const</span> tbb::internal::allocate_child_proxy& p ) {
-00702     p.free( *static_cast<tbb::task*>(task) );
-00703 }
-00704 
-00705 <span class="keyword">inline</span> <span class="keywordtype">void</span> *operator new( size_t bytes, <span class="keyword">const</span> tbb::internal::allocate_additional_child_of_proxy& p ) {
-00706     <span class="keywordflow">return</span> &p.allocate(bytes);
-00707 }
-00708 
-00709 <span class="keyword">inline</span> <span class="keywordtype">void</span> operator delete( <span class="keywordtype">void</span>* task, <span class="keyword">const</span> tbb::internal::allocate_additional_child_of_proxy& p ) {
-00710     p.free( *static_cast<tbb::task*>(task) );
-00711 }
-00712 
-00713 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_task_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00350.html b/doc/html/a00350.html
deleted file mode 100644
index c370bf2..0000000
--- a/doc/html/a00350.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>task_scheduler_init.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>task_scheduler_init.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_task_scheduler_init_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_task_scheduler_init_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include "tbb_stddef.h"</span>
-00025 
-00026 <span class="keyword">namespace </span>tbb {
-00027 
-00028 <span class="keyword">typedef</span> std::size_t stack_size_type;
-00029 
-00031 <span class="keyword">namespace </span>internal {
-00033 
-00034     <span class="keyword">class </span>scheduler;
-00035 } <span class="comment">// namespace internal</span>
-00037 <span class="comment"></span>
-00039 
-<a name="l00042"></a><a class="code" href="a00265.html">00042</a> <span class="keyword">class </span><a class="code" href="a00265.html">task_scheduler_init</a>: internal::no_copy {
-00044     internal::scheduler* my_scheduler;
-00045 <span class="keyword">public</span>:
-00046 
-<a name="l00048"></a><a class="code" href="a00265.html#s0">00048</a>     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> automatic = -1;
-00049 
-<a name="l00051"></a><a class="code" href="a00265.html#s1">00051</a>     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> deferred = -2;
-00052 
-00054 
-00062     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD initialize( <span class="keywordtype">int</span> number_of_threads=automatic );
-00063 
-00065 
-00066     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD initialize( <span class="keywordtype">int</span> number_of_threads, stack_size_type thread_stack_size );
-00067 
-00069     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD terminate();
-00070 
-<a name="l00072"></a><a class="code" href="a00265.html#a3">00072</a>     <a class="code" href="a00265.html">task_scheduler_init</a>( <span class="keywordtype">int</span> number_of_threads=automatic, stack_size_type thread_stack_size=0 ) : my_scheduler(NULL)  {
-00073         initialize( number_of_threads, thread_stack_size );
-00074     }
-00075 
-<a name="l00077"></a><a class="code" href="a00265.html#a4">00077</a>     ~<a class="code" href="a00265.html">task_scheduler_init</a>() {
-00078         <span class="keywordflow">if</span>( my_scheduler ) 
-00079             terminate();
-00080         internal::poison_pointer( my_scheduler );
-00081     }
-00083 
-00090     <span class="keyword">static</span> <span class="keywordtype">int</span> __TBB_EXPORTED_FUNC default_num_threads ();
-00091 
-<a name="l00093"></a><a class="code" href="a00265.html#a5">00093</a>     <span class="keywordtype">bool</span> is_active()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> my_scheduler != NULL; }
-00094 };
-00095 
-00096 } <span class="comment">// namespace tbb</span>
-00097 
-00098 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_task_scheduler_init_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00351.html b/doc/html/a00351.html
deleted file mode 100644
index f69ddb6..0000000
--- a/doc/html/a00351.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>task_scheduler_observer.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>task_scheduler_observer.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_task_scheduler_observer_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_task_scheduler_observer_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include "atomic.h"</span>
-00025 
-00026 <span class="preprocessor">#if __TBB_SCHEDULER_OBSERVER</span>
-00027 <span class="preprocessor"></span>
-00028 <span class="keyword">namespace </span>tbb {
-00029 
-00030 <span class="keyword">namespace </span>internal {
-00031 
-00032 <span class="keyword">class </span>observer_proxy;
-00033 
-00034 <span class="keyword">class </span>task_scheduler_observer_v3 {
-00035     <span class="keyword">friend</span> <span class="keyword">class </span>observer_proxy;
-00036     observer_proxy* my_proxy;
-00037     atomic<intptr> my_busy_count;
-00038 <span class="keyword">public</span>:
-00040     <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD observe( <span class="keywordtype">bool</span> state=<span class="keyword">true</span> );
-00041 
-00043     <span class="keywordtype">bool</span> is_observing()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_proxy!=NULL;}
-00044 
-00046     task_scheduler_observer_v3() : my_proxy(NULL) {my_busy_count=0;}
-00047 
-00049     <span class="keyword">virtual</span> <span class="keywordtype">void</span> on_scheduler_entry( <span class="keywordtype">bool</span> <span class="comment">/*is_worker*/</span> ) {} 
-00050 
-00052     <span class="keyword">virtual</span> <span class="keywordtype">void</span> on_scheduler_exit( <span class="keywordtype">bool</span> <span class="comment">/*is_worker*/</span> ) {}
-00053 
-00055     <span class="keyword">virtual</span> ~task_scheduler_observer_v3() {observe(<span class="keyword">false</span>);}
-00056 };
-00057 
-00058 } <span class="comment">// namespace internal</span>
-00059 
-00060 <span class="keyword">typedef</span> internal::task_scheduler_observer_v3 task_scheduler_observer;
-00061 
-00062 } <span class="comment">// namespace tbb</span>
-00063 
-00064 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_SCHEDULER_OBSERVER */</span>
-00065 
-00066 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_task_scheduler_observer_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00352.html b/doc/html/a00352.html
deleted file mode 100644
index 065256f..0000000
--- a/doc/html/a00352.html
+++ /dev/null
@@ -1,135 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb_allocator.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb_allocator.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_tbb_allocator_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_tbb_allocator_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include <new></span>
-00025 <span class="preprocessor">#include "tbb_stddef.h"</span>
-00026 
-00027 <span class="keyword">namespace </span>tbb {
-00028 
-00030 <span class="keyword">namespace </span>internal {
-00031 
-00033 
-00034     <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC <a class="code" href="a00319.html#a61">deallocate_via_handler_v3</a>( <span class="keywordtype">void</span> *p );
-00035 
-00037 
-00038     <span class="keywordtype">void</span>* __TBB_EXPORTED_FUNC <a class="code" href="a00319.html#a62">allocate_via_handler_v3</a>( size_t n );
-00039 
-00041     <span class="keywordtype">bool</span> __TBB_EXPORTED_FUNC <a class="code" href="a00319.html#a63">is_malloc_used_v3</a>();
-00042 }
-00044 
-00045 <span class="preprocessor">#if _MSC_VER && !defined(__INTEL_COMPILER)</span>
-00046 <span class="preprocessor"></span>    <span class="comment">// Workaround for erroneous "unreferenced parameter" warning in method destroy.</span>
-00047 <span class="preprocessor">    #pragma warning (push)</span>
-00048 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (disable: 4100)</span>
-00049 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00050 <span class="preprocessor"></span>
-00052 
-00057 <span class="keyword">template</span><<span class="keyword">typename</span> T>
-<a name="l00058"></a><a class="code" href="a00266.html">00058</a> <span class="keyword">class </span><a class="code" href="a00266.html">tbb_allocator</a> {
-00059 <span class="keyword">public</span>:
-00060     <span class="keyword">typedef</span> T* pointer;
-00061     <span class="keyword">typedef</span> <span class="keyword">const</span> T* const_pointer;
-00062     <span class="keyword">typedef</span> T& reference;
-00063     <span class="keyword">typedef</span> <span class="keyword">const</span> T& const_reference;
-00064     <span class="keyword">typedef</span> T value_type;
-00065     <span class="keyword">typedef</span> size_t size_type;
-00066     <span class="keyword">typedef</span> ptrdiff_t difference_type;
-00067     <span class="keyword">template</span><<span class="keyword">typename</span> U> <span class="keyword">struct </span>rebind {
-00068         <span class="keyword">typedef</span> <a class="code" href="a00266.html">tbb_allocator<U></a> other;
-00069     };
-00070 
-<a name="l00072"></a><a class="code" href="a00266.html#w9">00072</a>     <span class="keyword">enum</span> malloc_type {
-00073         scalable, 
-00074         standard
-00075     };
-00076 
-00077     <a class="code" href="a00266.html">tbb_allocator</a>() throw() {}
-00078     tbb_allocator( <span class="keyword">const</span> tbb_allocator& ) throw() {}
-00079     <span class="keyword">template</span><<span class="keyword">typename</span> U> tbb_allocator(<span class="keyword">const</span> tbb_allocator<U>&) throw() {}
-00080 
-00081     pointer address(reference x)<span class="keyword"> const </span>{<span class="keywordflow">return</span> &x;}
-00082     const_pointer address(const_reference x)<span class="keyword"> const </span>{<span class="keywordflow">return</span> &x;}
-00083     
-<a name="l00085"></a><a class="code" href="a00266.html#a5">00085</a>     pointer allocate( size_type n, <span class="keyword">const</span> <span class="keywordtype">void</span>* <span class="comment">/*hint*/</span> = 0) {
-00086         <span class="keywordflow">return</span> pointer(internal::allocate_via_handler_v3( n * <span class="keyword">sizeof</span>(T) ));
-00087     }
-00088 
-<a name="l00090"></a><a class="code" href="a00266.html#a6">00090</a>     <span class="keywordtype">void</span> deallocate( pointer p, size_type ) {
-00091         internal::deallocate_via_handler_v3(p);        
-00092     }
-00093 
-<a name="l00095"></a><a class="code" href="a00266.html#a7">00095</a>     size_type max_size() const throw() {
-00096         size_type max = static_cast<size_type>(-1) / <span class="keyword">sizeof</span> (T);
-00097         <span class="keywordflow">return</span> (max > 0 ? max : 1);
-00098     }
-00099     
-<a name="l00101"></a><a class="code" href="a00266.html#a8">00101</a>     <span class="keywordtype">void</span> construct( pointer p, <span class="keyword">const</span> T& value ) {<span class="keyword">new</span>(static_cast<void*>(p)) T(value);}
-00102 
-<a name="l00104"></a><a class="code" href="a00266.html#a9">00104</a>     <span class="keywordtype">void</span> destroy( pointer p ) {p->~T();}
-00105 
-<a name="l00107"></a><a class="code" href="a00266.html#e0">00107</a>     <span class="keyword">static</span> malloc_type allocator_type() {
-00108         <span class="keywordflow">return</span> internal::is_malloc_used_v3() ? standard : scalable;
-00109     }
-00110 };
-00111 
-00112 <span class="preprocessor">#if _MSC_VER && !defined(__INTEL_COMPILER)</span>
-00113 <span class="preprocessor"></span><span class="preprocessor">    #pragma warning (pop)</span>
-00114 <span class="preprocessor"></span><span class="preprocessor">#endif // warning 4100 is back</span>
-00115 <span class="preprocessor"></span>
-00117 
-00118 <span class="keyword">template</span><> 
-<a name="l00119"></a><a class="code" href="a00267.html">00119</a> <span class="keyword">class </span><a class="code" href="a00266.html">tbb_allocator</a><void> {
-00120 <span class="keyword">public</span>:
-00121     <span class="keyword">typedef</span> <span class="keywordtype">void</span>* pointer;
-00122     <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="keywordtype">void</span>* const_pointer;
-00123     <span class="keyword">typedef</span> <span class="keywordtype">void</span> value_type;
-00124     <span class="keyword">template</span><<span class="keyword">typename</span> U> <span class="keyword">struct </span>rebind {
-00125         <span class="keyword">typedef</span> <a class="code" href="a00266.html">tbb_allocator<U></a> other;
-00126     };
-00127 };
-00128 
-00129 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00130 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator==( <span class="keyword">const</span> <a class="code" href="a00266.html">tbb_allocator<T></a>&, <span class="keyword">const</span> <a class="code" href="a00266.html">tbb_allocator<U></a>& ) {<span class="keywordflow">return</span> <span class="keyword">true</span>;}
-00131 
-00132 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> U>
-00133 <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator!=( <span class="keyword">const</span> tbb_allocator<T>&, <span class="keyword">const</span> tbb_allocator<U>& ) {<span class="keywordflow">return</span> <span class="keyword">false</span>;}
-00134 
-00135 } <span class="comment">// namespace tbb </span>
-00136 
-00137 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_tbb_allocator_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00353.html b/doc/html/a00353.html
deleted file mode 100644
index 690cca2..0000000
--- a/doc/html/a00353.html
+++ /dev/null
@@ -1,207 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb_exception.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb_exception.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_exception_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_exception_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include "tbb_stddef.h"</span>
-00025 <span class="preprocessor">#include <stdexcept></span>
-00026 
-00027 <span class="keyword">namespace </span>tbb {
-00028 
-<a name="l00030"></a><a class="code" href="a00194.html">00030</a> <span class="keyword">class </span><a class="code" href="a00194.html">bad_last_alloc</a> : <span class="keyword">public</span> std::bad_alloc {
-00031 <span class="keyword">public</span>:
-00032     <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> <span class="stringliteral">"bad allocation in previous or concurrent attempt"</span>; }
-00033     <span class="keyword">virtual</span> ~<a class="code" href="a00194.html">bad_last_alloc</a>() <span class="keywordflow">throw</span>() {}
-00034 };
-00035 
-00036 } <span class="comment">// namespace tbb</span>
-00037 
-00038 <span class="preprocessor">#if __TBB_EXCEPTIONS</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#include "tbb_allocator.h"</span>
-00040 <span class="preprocessor">#include <exception></span>
-00041 <span class="preprocessor">#include <typeinfo></span>
-00042 <span class="preprocessor">#include <new></span>
-00043 
-00044 <span class="keyword">namespace </span>tbb {
-00045 
-00047 
-<a name="l00067"></a><a class="code" href="a00268.html">00067</a> <span class="keyword">class </span><a class="code" href="a00268.html">tbb_exception</a> : <span class="keyword">public</span> std::exception {
-00068 <span class="keyword">public</span>:
-00070 
-00071     <span class="keyword">virtual</span> <a class="code" href="a00268.html">tbb_exception</a>* move () <span class="keywordflow">throw</span>() = 0;
-00072     
-00074 
-00076     <span class="keyword">virtual</span> <span class="keywordtype">void</span> destroy () <span class="keywordflow">throw</span>() = 0;
-00077 
-00079 
-00083     <span class="keyword">virtual</span> <span class="keywordtype">void</span> throw_self () = 0;
-00084 
-00086     <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* name() <span class="keyword">const</span> <span class="keywordflow">throw</span>() = 0;
-00087 
-00089     <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>() = 0;
-00090 };
-00091 
-00093 
-<a name="l00097"></a><a class="code" href="a00200.html">00097</a> <span class="keyword">class </span><a class="code" href="a00200.html">captured_exception</a> : <span class="keyword">public</span> <a class="code" href="a00268.html">tbb_exception</a>
-00098 {
-00099 <span class="keyword">public</span>:
-00100     <a class="code" href="a00200.html">captured_exception</a> ( <span class="keyword">const</span> <a class="code" href="a00200.html">captured_exception</a>& src )
-00101         : my_dynamic(<span class="keyword">false</span>)
-00102     {
-00103         set(src.<a class="code" href="a00200.html#r1">my_exception_name</a>, src.<a class="code" href="a00200.html#r2">my_exception_info</a>);
-00104     }
-00105 
-00106     <a class="code" href="a00200.html">captured_exception</a> ( <span class="keyword">const</span> <span class="keywordtype">char</span>* name, <span class="keyword">const</span> <span class="keywordtype">char</span>* info )
-00107         : my_dynamic(<span class="keyword">false</span>)
-00108     {
-00109         set(name, info);
-00110     }
-00111 
-00112     __TBB_EXPORTED_METHOD ~<a class="code" href="a00200.html">captured_exception</a> () <span class="keywordflow">throw</span>() {
-00113         clear();
-00114     }
-00115 
-00116     <a class="code" href="a00200.html">captured_exception</a>& operator= ( <span class="keyword">const</span> <a class="code" href="a00200.html">captured_exception</a>& src ) {
-00117         <span class="keywordflow">if</span> ( <span class="keyword">this</span> != &src ) {
-00118             clear();
-00119             set(src.<a class="code" href="a00200.html#r1">my_exception_name</a>, src.<a class="code" href="a00200.html#r2">my_exception_info</a>);
-00120         }
-00121         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-00122     }
-00123 
-00124     <span class="comment">/*override*/</span> 
-00125     <a class="code" href="a00200.html">captured_exception</a>* move () <span class="keywordflow">throw</span>();
-00126 
-00127     <span class="comment">/*override*/</span> 
-00128     <span class="keywordtype">void</span> destroy () <span class="keywordflow">throw</span>();
-00129 
-00130     <span class="comment">/*override*/</span> 
-<a name="l00131"></a><a class="code" href="a00200.html#a6">00131</a>     <span class="keywordtype">void</span> throw_self () { <span class="keywordflow">throw</span> *<span class="keyword">this</span>; }
-00132 
-00133     <span class="comment">/*override*/</span> 
-00134     <span class="keyword">const</span> <span class="keywordtype">char</span>* __TBB_EXPORTED_METHOD name() const throw();
-00135 
-00136     <span class="comment">/*override*/</span> 
-00137     const <span class="keywordtype">char</span>* __TBB_EXPORTED_METHOD what() const throw();
-00138 
-00139 private:
-00141     <a class="code" href="a00200.html">captured_exception</a>() {}
-00142 
-00144     <span class="keyword">static</span> captured_exception* allocate ( <span class="keyword">const</span> <span class="keywordtype">char</span>* name, <span class="keyword">const</span> <span class="keywordtype">char</span>* info );
-00145 
-00146     <span class="keywordtype">void</span> set ( <span class="keyword">const</span> <span class="keywordtype">char</span>* name, <span class="keyword">const</span> <span class="keywordtype">char</span>* info ) <span class="keywordflow">throw</span>();
-00147     <span class="keywordtype">void</span> clear () throw();
-00148 
-00149     <span class="keywordtype">bool</span> my_dynamic;
-00150     const <span class="keywordtype">char</span>* my_exception_name;
-00151     const <span class="keywordtype">char</span>* my_exception_info;
-00152 };
-00153 
-00155 
-00159 template<typename ExceptionData>
-<a name="l00160"></a><a class="code" href="a00226.html">00160</a> class <a class="code" href="a00226.html">movable_exception</a> : public <a class="code" href="a00268.html">tbb_exception</a>
-00161 {
-00162     <span class="keyword">typedef</span> <a class="code" href="a00226.html">movable_exception<ExceptionData></a> <a class="code" href="a00226.html">self_type</a>;
-00163 
-00164 <span class="keyword">public</span>:
-00165     <a class="code" href="a00226.html">movable_exception</a> ( <span class="keyword">const</span> ExceptionData& data ) 
-00166         : my_exception_data(data)
-00167         , my_dynamic(<span class="keyword">false</span>)
-00168         , my_exception_name(<span class="keyword">typeid</span>(self_type).name())
-00169     {}
-00170 
-00171     <a class="code" href="a00226.html">movable_exception</a> ( <span class="keyword">const</span> <a class="code" href="a00226.html">movable_exception</a>& src ) <span class="keywordflow">throw</span> () 
-00172         : my_exception_data(src.<a class="code" href="a00226.html#p0">my_exception_data</a>)
-00173         , my_dynamic(<span class="keyword">false</span>)
-00174         , my_exception_name(src.<a class="code" href="a00226.html#r1">my_exception_name</a>)
-00175     {}
-00176 
-00177     ~<a class="code" href="a00226.html">movable_exception</a> () <span class="keywordflow">throw</span>() {}
-00178 
-00179     <span class="keyword">const</span> <a class="code" href="a00226.html">movable_exception</a>& operator= ( <span class="keyword">const</span> <a class="code" href="a00226.html">movable_exception</a>& src ) {
-00180         <span class="keywordflow">if</span> ( <span class="keyword">this</span> != &src ) {
-00181             my_exception_data = src.<a class="code" href="a00226.html#p0">my_exception_data</a>;
-00182             my_exception_name = src.<a class="code" href="a00226.html#r1">my_exception_name</a>;
-00183         }
-00184         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-00185     }
-00186 
-00187     ExceptionData& data () <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> my_exception_data; }
-00188 
-00189     <span class="keyword">const</span> ExceptionData& data () <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> my_exception_data; }
-00190 
-<a name="l00191"></a><a class="code" href="a00226.html#a6">00191</a>     <span class="comment">/*override*/</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* name () const throw() { <span class="keywordflow">return</span> my_exception_name; }
-00192 
-<a name="l00193"></a><a class="code" href="a00226.html#a7">00193</a>     <span class="comment">/*override*/</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what () const throw() { <span class="keywordflow">return</span> <span class="stringliteral">"tbb::movable_exception"</span>; }
-00194 
-00195     <span class="comment">/*override*/</span> 
-<a name="l00196"></a><a class="code" href="a00226.html#a8">00196</a>     <a class="code" href="a00226.html">movable_exception</a>* move () throw() {
-00197         <span class="keywordtype">void</span>* e = internal::allocate_via_handler_v3(<span class="keyword">sizeof</span>(<a class="code" href="a00226.html">movable_exception</a>));
-00198         <span class="keywordflow">if</span> ( e ) {
-00199             <span class="keyword">new</span> (e) movable_exception(*<span class="keyword">this</span>);
-00200             ((movable_exception*)e)-><a class="code" href="a00226.html#r0">my_dynamic</a> = <span class="keyword">true</span>;
-00201         }
-00202         <span class="keywordflow">return</span> (movable_exception*)e;
-00203     }
-00204     <span class="comment">/*override*/</span> 
-<a name="l00205"></a><a class="code" href="a00226.html#a9">00205</a>     <span class="keywordtype">void</span> destroy () throw() {
-00206         __TBB_ASSERT ( my_dynamic, <span class="stringliteral">"Method destroy can be called only on dynamically allocated movable_exceptions"</span> );
-00207         <span class="keywordflow">if</span> ( my_dynamic ) {
-00208             this->~<a class="code" href="a00226.html">movable_exception</a>();
-00209             internal::deallocate_via_handler_v3(<span class="keyword">this</span>);
-00210         }
-00211     }
-00212     <span class="comment">/*override*/</span> 
-<a name="l00213"></a><a class="code" href="a00226.html#a10">00213</a>     <span class="keywordtype">void</span> throw_self () {
-00214         <span class="keywordflow">throw</span> *<span class="keyword">this</span>;
-00215     }
-00216 
-00217 <span class="keyword">protected</span>:
-<a name="l00219"></a><a class="code" href="a00226.html#p0">00219</a>     ExceptionData  my_exception_data;
-00220 
-00221 <span class="keyword">private</span>:
-00223     <span class="keywordtype">bool</span> my_dynamic;
-00224 
-00226 
-00227     <span class="keyword">const</span> <span class="keywordtype">char</span>* my_exception_name;
-00228 };
-00229 
-00230 } <span class="comment">// namespace tbb</span>
-00231 
-00232 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
-00233 
-00234 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_exception_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00354.html b/doc/html/a00354.html
deleted file mode 100644
index 42a9d64..0000000
--- a/doc/html/a00354.html
+++ /dev/null
@@ -1,576 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb_machine.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb_machine.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_machine_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_machine_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include "tbb_stddef.h"</span>
-00025 
-00026 <span class="preprocessor">#if _WIN32||_WIN64</span>
-00027 <span class="preprocessor"></span>
-00028 <span class="preprocessor">#ifdef _MANAGED</span>
-00029 <span class="preprocessor"></span><span class="preprocessor">#pragma managed(push, off)</span>
-00030 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00031 <span class="preprocessor"></span>
-00032 <span class="preprocessor">#if defined(_M_IX86)</span>
-00033 <span class="preprocessor"></span><span class="preprocessor">#include "machine/windows_ia32.h"</span>
-00034 <span class="preprocessor">#elif defined(_M_AMD64) </span>
-00035 <span class="preprocessor"></span><span class="preprocessor">#include "machine/windows_em64t.h"</span>
-00036 <span class="preprocessor">#else</span>
-00037 <span class="preprocessor"></span><span class="preprocessor">#error Unsupported platform</span>
-00038 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00039 <span class="preprocessor"></span>
-00040 <span class="preprocessor">#ifdef _MANAGED</span>
-00041 <span class="preprocessor"></span><span class="preprocessor">#pragma managed(pop)</span>
-00042 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00043 <span class="preprocessor"></span>
-00044 <span class="preprocessor">#elif __linux__ || __FreeBSD__</span>
-00045 <span class="preprocessor"></span>
-00046 <span class="preprocessor">#if __i386__</span>
-00047 <span class="preprocessor"></span><span class="preprocessor">#include "machine/linux_ia32.h"</span>
-00048 <span class="preprocessor">#elif __x86_64__</span>
-00049 <span class="preprocessor"></span><span class="preprocessor">#include "machine/linux_em64t.h"</span>
-00050 <span class="preprocessor">#elif __ia64__</span>
-00051 <span class="preprocessor"></span><span class="preprocessor">#include "machine/linux_itanium.h"</span>
-00052 <span class="preprocessor">#endif</span>
-00053 <span class="preprocessor"></span>
-00054 <span class="preprocessor">#elif __APPLE__</span>
-00055 <span class="preprocessor"></span>
-00056 <span class="preprocessor">#if __i386__</span>
-00057 <span class="preprocessor"></span><span class="preprocessor">#include "machine/linux_ia32.h"</span>
-00058 <span class="preprocessor">#elif __x86_64__</span>
-00059 <span class="preprocessor"></span><span class="preprocessor">#include "machine/linux_em64t.h"</span>
-00060 <span class="preprocessor">#elif __POWERPC__</span>
-00061 <span class="preprocessor"></span><span class="preprocessor">#include "machine/mac_ppc.h"</span>
-00062 <span class="preprocessor">#endif</span>
-00063 <span class="preprocessor"></span>
-00064 <span class="preprocessor">#elif _AIX</span>
-00065 <span class="preprocessor"></span>
-00066 <span class="preprocessor">#include "machine/ibm_aix51.h"</span>
-00067 
-00068 <span class="preprocessor">#elif __sun || __SUNPRO_CC</span>
-00069 <span class="preprocessor"></span>
-00070 <span class="preprocessor">#define __asm__ asm </span>
-00071 <span class="preprocessor"></span><span class="preprocessor">#define __volatile__ volatile</span>
-00072 <span class="preprocessor"></span><span class="preprocessor">#if __i386  || __i386__</span>
-00073 <span class="preprocessor"></span><span class="preprocessor">#include "machine/linux_ia32.h"</span>
-00074 <span class="preprocessor">#elif __x86_64__</span>
-00075 <span class="preprocessor"></span><span class="preprocessor">#include "machine/linux_em64t.h"</span>
-00076 <span class="preprocessor">#endif</span>
-00077 <span class="preprocessor"></span>
-00078 <span class="preprocessor">#endif</span>
-00079 <span class="preprocessor"></span>
-00080 <span class="preprocessor">#if !defined(__TBB_CompareAndSwap4) || !defined(__TBB_CompareAndSwap8) || !defined(__TBB_Yield)</span>
-00081 <span class="preprocessor"></span><span class="preprocessor">#error Minimal requirements for tbb_machine.h not satisfied </span>
-00082 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00083 <span class="preprocessor"></span>
-00084 <span class="preprocessor">#ifndef __TBB_load_with_acquire</span>
-00085 <span class="preprocessor"></span>
-00086     <span class="keyword">template</span><<span class="keyword">typename</span> T>
-00087     <span class="keyword">inline</span> T __TBB_load_with_acquire(<span class="keyword">const</span> <span class="keyword">volatile</span> T& location) {
-00088         T temp = location;
-00089 <span class="preprocessor">#ifdef __TBB_fence_for_acquire </span>
-00090 <span class="preprocessor"></span>        __TBB_fence_for_acquire();
-00091 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_fence_for_acquire */</span>
-00092         <span class="keywordflow">return</span> temp;
-00093     }
-00094 <span class="preprocessor">#endif</span>
-00095 <span class="preprocessor"></span>
-00096 <span class="preprocessor">#ifndef __TBB_store_with_release</span>
-00097 <span class="preprocessor"></span>
-00098     <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> V>
-00099     <span class="keyword">inline</span> <span class="keywordtype">void</span> __TBB_store_with_release(<span class="keyword">volatile</span> T& location, V value) {
-00100 <span class="preprocessor">#ifdef __TBB_fence_for_release</span>
-00101 <span class="preprocessor"></span>        __TBB_fence_for_release();
-00102 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_fence_for_release */</span>
-00103         location = T(value); 
-00104     }
-00105 <span class="preprocessor">#endif</span>
-00106 <span class="preprocessor"></span>
-00107 <span class="preprocessor">#ifndef __TBB_Pause</span>
-00108 <span class="preprocessor"></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span> __TBB_Pause(int32_t) {
-00109         __TBB_Yield();
-00110     }
-00111 <span class="preprocessor">#endif</span>
-00112 <span class="preprocessor"></span>
-00113 <span class="keyword">namespace </span>tbb {
-00114 <span class="keyword">namespace </span>internal {
-00115 
-00117 
-<a name="l00118"></a><a class="code" href="a00192.html">00118</a> <span class="keyword">class </span><a class="code" href="a00192.html">AtomicBackoff</a> {
-00120 
-00122     <span class="keyword">static</span> <span class="keyword">const</span> int32_t LOOPS_BEFORE_YIELD = 16;
-00123     int32_t count;
-00124 <span class="keyword">public</span>:
-00125     <a class="code" href="a00192.html">AtomicBackoff</a>() : count(1) {}
-00126 
-<a name="l00128"></a><a class="code" href="a00192.html#a1">00128</a>     <span class="keywordtype">void</span> pause() {
-00129         <span class="keywordflow">if</span>( count<=LOOPS_BEFORE_YIELD ) {
-00130             __TBB_Pause(count);
-00131             <span class="comment">// Pause twice as long the next time.</span>
-00132             count*=2;
-00133         } <span class="keywordflow">else</span> {
-00134             <span class="comment">// Pause is so long that we might as well yield CPU to scheduler.</span>
-00135             __TBB_Yield();
-00136         }
-00137     }
-00138 
-00139     <span class="comment">// pause for a few times and then return false immediately.</span>
-00140     <span class="keywordtype">bool</span> bounded_pause() {
-00141         <span class="keywordflow">if</span>( count<=LOOPS_BEFORE_YIELD ) {
-00142             __TBB_Pause(count);
-00143             <span class="comment">// Pause twice as long the next time.</span>
-00144             count*=2;
-00145             <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00146         } <span class="keywordflow">else</span> {
-00147             <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00148         }
-00149     }
-00150 
-00151     <span class="keywordtype">void</span> reset() {
-00152         count = 1;
-00153     }
-00154 };
-00155 
-00156 <span class="comment">// T should be unsigned, otherwise sign propagation will break correctness of bit manipulations.</span>
-00157 <span class="comment">// S should be either 1 or 2, for the mask calculation to work correctly.</span>
-00158 <span class="comment">// Together, these rules limit applicability of Masked CAS to unsigned char and unsigned short.</span>
-00159 <span class="keyword">template</span><size_t S, <span class="keyword">typename</span> T>
-00160 <span class="keyword">inline</span> T __TBB_MaskedCompareAndSwap (<span class="keyword">volatile</span> T *ptr, T value, T comparand ) {
-00161     <span class="keyword">volatile</span> uint32_t * base = (uint32_t*)( (uintptr_t)ptr & ~(uintptr_t)0x3 );
-00162 <span class="preprocessor">#if __TBB_BIG_ENDIAN</span>
-00163 <span class="preprocessor"></span>    <span class="keyword">const</span> uint8_t bitoffset = uint8_t( 8*( 4-S - (uintptr_t(ptr) & 0x3) ) );
-00164 <span class="preprocessor">#else</span>
-00165 <span class="preprocessor"></span>    <span class="keyword">const</span> uint8_t bitoffset = uint8_t( 8*((uintptr_t)ptr & 0x3) );
-00166 <span class="preprocessor">#endif</span>
-00167 <span class="preprocessor"></span>    <span class="keyword">const</span> uint32_t mask = ( (1<<(S*8)) - 1 )<<bitoffset;
-00168     AtomicBackoff b;
-00169     uint32_t result;
-00170     <span class="keywordflow">for</span>(;;) {
-00171         result = *base; <span class="comment">// reload the base value which might change during the pause</span>
-00172         uint32_t old_value = ( result & ~mask ) | ( comparand << bitoffset );
-00173         uint32_t new_value = ( result & ~mask ) | ( value << bitoffset );
-00174         <span class="comment">// __TBB_CompareAndSwap4 presumed to have full fence. </span>
-00175         result = __TBB_CompareAndSwap4( base, new_value, old_value );
-00176         <span class="keywordflow">if</span>(  result==old_value               <span class="comment">// CAS succeeded</span>
-00177           || ((result^old_value)&mask)!=0 )  <span class="comment">// CAS failed and the bits of interest have changed</span>
-00178             <span class="keywordflow">break</span>;
-00179         <span class="keywordflow">else</span>                                 <span class="comment">// CAS failed but the bits of interest left unchanged</span>
-00180             b.pause();
-00181     }
-00182     <span class="keywordflow">return</span> T((result & mask) >> bitoffset);
-00183 }
-00184 
-00185 <span class="keyword">template</span><size_t S, <span class="keyword">typename</span> T>
-00186 <span class="keyword">inline</span> T __TBB_CompareAndSwapGeneric (<span class="keyword">volatile</span> <span class="keywordtype">void</span> *ptr, T value, T comparand ) { 
-00187     <span class="keywordflow">return</span> __TBB_CompareAndSwapW((T *)ptr,value,comparand);
-00188 }
-00189 
-00190 <span class="keyword">template</span><>
-00191 <span class="keyword">inline</span> uint8_t __TBB_CompareAndSwapGeneric <1,uint8_t> (<span class="keyword">volatile</span> <span class="keywordtype">void</span> *ptr, uint8_t value, uint8_t comparand ) {
-00192 <span class="preprocessor">#ifdef __TBB_CompareAndSwap1</span>
-00193 <span class="preprocessor"></span>    <span class="keywordflow">return</span> __TBB_CompareAndSwap1(ptr,value,comparand);
-00194 <span class="preprocessor">#else</span>
-00195 <span class="preprocessor"></span>    <span class="keywordflow">return</span> __TBB_MaskedCompareAndSwap<1,uint8_t>((<span class="keyword">volatile</span> uint8_t *)ptr,value,comparand);
-00196 <span class="preprocessor">#endif</span>
-00197 <span class="preprocessor"></span>}
-00198 
-00199 <span class="keyword">template</span><>
-00200 <span class="keyword">inline</span> uint16_t __TBB_CompareAndSwapGeneric <2,uint16_t> (<span class="keyword">volatile</span> <span class="keywordtype">void</span> *ptr, uint16_t value, uint16_t comparand ) {
-00201 <span class="preprocessor">#ifdef __TBB_CompareAndSwap2</span>
-00202 <span class="preprocessor"></span>    <span class="keywordflow">return</span> __TBB_CompareAndSwap2(ptr,value,comparand);
-00203 <span class="preprocessor">#else</span>
-00204 <span class="preprocessor"></span>    <span class="keywordflow">return</span> __TBB_MaskedCompareAndSwap<2,uint16_t>((<span class="keyword">volatile</span> uint16_t *)ptr,value,comparand);
-00205 <span class="preprocessor">#endif</span>
-00206 <span class="preprocessor"></span>}
-00207 
-00208 <span class="keyword">template</span><>
-00209 <span class="keyword">inline</span> uint32_t __TBB_CompareAndSwapGeneric <4,uint32_t> (<span class="keyword">volatile</span> <span class="keywordtype">void</span> *ptr, uint32_t value, uint32_t comparand ) { 
-00210     <span class="keywordflow">return</span> __TBB_CompareAndSwap4(ptr,value,comparand);
-00211 }
-00212 
-00213 <span class="keyword">template</span><>
-00214 <span class="keyword">inline</span> uint64_t __TBB_CompareAndSwapGeneric <8,uint64_t> (<span class="keyword">volatile</span> <span class="keywordtype">void</span> *ptr, uint64_t value, uint64_t comparand ) { 
-00215     <span class="keywordflow">return</span> __TBB_CompareAndSwap8(ptr,value,comparand);
-00216 }
-00217 
-00218 <span class="keyword">template</span><size_t S, <span class="keyword">typename</span> T>
-00219 <span class="keyword">inline</span> T __TBB_FetchAndAddGeneric (<span class="keyword">volatile</span> <span class="keywordtype">void</span> *ptr, T addend) {
-00220     AtomicBackoff b;
-00221     T result;
-00222     <span class="keywordflow">for</span>(;;) {
-00223         result = *reinterpret_cast<volatile T *>(ptr);
-00224         <span class="comment">// __TBB_CompareAndSwapGeneric presumed to have full fence. </span>
-00225         <span class="keywordflow">if</span>( __TBB_CompareAndSwapGeneric<S,T> ( ptr, result+addend, result )==result ) 
-00226             <span class="keywordflow">break</span>;
-00227         b.pause();
-00228     }
-00229     <span class="keywordflow">return</span> result;
-00230 }
-00231 
-00232 <span class="keyword">template</span><size_t S, <span class="keyword">typename</span> T>
-00233 <span class="keyword">inline</span> T __TBB_FetchAndStoreGeneric (<span class="keyword">volatile</span> <span class="keywordtype">void</span> *ptr, T value) {
-00234     AtomicBackoff b;
-00235     T result;
-00236     <span class="keywordflow">for</span>(;;) {
-00237         result = *reinterpret_cast<volatile T *>(ptr);
-00238         <span class="comment">// __TBB_CompareAndSwapGeneric presumed to have full fence.</span>
-00239         <span class="keywordflow">if</span>( __TBB_CompareAndSwapGeneric<S,T> ( ptr, value, result )==result ) 
-00240             <span class="keywordflow">break</span>;
-00241         b.pause();
-00242     }
-00243     <span class="keywordflow">return</span> result;
-00244 }
-00245 
-00246 <span class="comment">// Macro __TBB_TypeWithAlignmentAtLeastAsStrict(T) should be a type with alignment at least as </span>
-00247 <span class="comment">// strict as type T.  Type type should have a trivial default constructor and destructor, so that</span>
-00248 <span class="comment">// arrays of that type can be declared without initializers.  </span>
-00249 <span class="comment">// It is correct (but perhaps a waste of space) if __TBB_TypeWithAlignmentAtLeastAsStrict(T) expands</span>
-00250 <span class="comment">// to a type bigger than T.</span>
-00251 <span class="comment">// The default definition here works on machines where integers are naturally aligned and the</span>
-00252 <span class="comment">// strictest alignment is 16.</span>
-00253 <span class="preprocessor">#ifndef __TBB_TypeWithAlignmentAtLeastAsStrict</span>
-00254 <span class="preprocessor"></span>
-00255 <span class="preprocessor">#if __GNUC__ || __SUNPRO_CC</span>
-00256 <span class="preprocessor"></span><span class="keyword">struct </span>__TBB_machine_type_with_strictest_alignment {
-00257     <span class="keywordtype">int</span> member[4];
-00258 } __attribute__((aligned(16)));
-00259 <span class="preprocessor">#elif _MSC_VER</span>
-00260 <span class="preprocessor"></span>__declspec(align(16)) struct __TBB_machine_type_with_strictest_alignment {
-00261     <span class="keywordtype">int</span> member[4];
-00262 };
-00263 <span class="preprocessor">#else</span>
-00264 <span class="preprocessor"></span><span class="preprocessor">#error Must define __TBB_TypeWithAlignmentAtLeastAsStrict(T) or __TBB_machine_type_with_strictest_alignment</span>
-00265 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00266 <span class="preprocessor"></span>
-00267 <span class="keyword">template</span><size_t N> <span class="keyword">struct </span>type_with_alignment {__TBB_machine_type_with_strictest_alignment member;};
-00268 <span class="keyword">template</span><> <span class="keyword">struct </span>type_with_alignment<1> { <span class="keywordtype">char</span> member; };
-00269 <span class="keyword">template</span><> <span class="keyword">struct </span>type_with_alignment<2> { uint16_t member; };
-00270 <span class="keyword">template</span><> <span class="keyword">struct </span>type_with_alignment<4> { uint32_t member; };
-00271 <span class="keyword">template</span><> <span class="keyword">struct </span>type_with_alignment<8> { uint64_t member; };
-00272 
-00273 <span class="preprocessor">#if _MSC_VER||defined(__GNUC__)&&__GNUC__==3 && __GNUC_MINOR__<=2  </span>
-00274 <span class="preprocessor"></span>
-00275 
-00277 <span class="keyword">template</span><size_t Size, <span class="keyword">typename</span> T> 
-<a name="l00278"></a><a class="code" href="a00279.html">00278</a> <span class="keyword">struct </span><a class="code" href="a00279.html">work_around_alignment_bug</a> {
-00279 <span class="preprocessor">#if _MSC_VER</span>
-00280 <span class="preprocessor"></span>    <span class="keyword">static</span> <span class="keyword">const</span> size_t alignment = __alignof(T);
-00281 <span class="preprocessor">#else</span>
-00282 <span class="preprocessor"></span>    <span class="keyword">static</span> <span class="keyword">const</span> size_t alignment = __alignof__(T);
-00283 <span class="preprocessor">#endif</span>
-00284 <span class="preprocessor"></span>};
-00285 <span class="preprocessor">#define __TBB_TypeWithAlignmentAtLeastAsStrict(T) tbb::internal::type_with_alignment<tbb::internal::work_around_alignment_bug<sizeof(T),T>::alignment></span>
-00286 <span class="preprocessor"></span><span class="preprocessor">#elif __GNUC__ || __SUNPRO_CC</span>
-00287 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_TypeWithAlignmentAtLeastAsStrict(T) tbb::internal::type_with_alignment<__alignof__(T)></span>
-00288 <span class="preprocessor"></span><span class="preprocessor">#else</span>
-00289 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_TypeWithAlignmentAtLeastAsStrict(T) __TBB_machine_type_with_strictest_alignment</span>
-00290 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00291 <span class="preprocessor"></span><span class="preprocessor">#endif  </span><span class="comment">/* ____TBB_TypeWithAlignmentAtLeastAsStrict */</span>
-00292 
-00293 } <span class="comment">// namespace internal</span>
-00294 } <span class="comment">// namespace tbb</span>
-00295 
-00296 <span class="preprocessor">#ifndef __TBB_CompareAndSwap1</span>
-00297 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap1 tbb::internal::__TBB_CompareAndSwapGeneric<1,uint8_t></span>
-00298 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00299 <span class="preprocessor"></span>
-00300 <span class="preprocessor">#ifndef __TBB_CompareAndSwap2 </span>
-00301 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap2 tbb::internal::__TBB_CompareAndSwapGeneric<2,uint16_t></span>
-00302 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00303 <span class="preprocessor"></span>
-00304 <span class="preprocessor">#ifndef __TBB_CompareAndSwapW</span>
-00305 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwapW tbb::internal::__TBB_CompareAndSwapGeneric<sizeof(ptrdiff_t),ptrdiff_t></span>
-00306 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00307 <span class="preprocessor"></span>
-00308 <span class="preprocessor">#ifndef __TBB_FetchAndAdd1</span>
-00309 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd1 tbb::internal::__TBB_FetchAndAddGeneric<1,uint8_t></span>
-00310 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00311 <span class="preprocessor"></span>
-00312 <span class="preprocessor">#ifndef __TBB_FetchAndAdd2</span>
-00313 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd2 tbb::internal::__TBB_FetchAndAddGeneric<2,uint16_t></span>
-00314 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00315 <span class="preprocessor"></span>
-00316 <span class="preprocessor">#ifndef __TBB_FetchAndAdd4</span>
-00317 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd4 tbb::internal::__TBB_FetchAndAddGeneric<4,uint32_t></span>
-00318 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00319 <span class="preprocessor"></span>
-00320 <span class="preprocessor">#ifndef __TBB_FetchAndAdd8</span>
-00321 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd8 tbb::internal::__TBB_FetchAndAddGeneric<8,uint64_t></span>
-00322 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00323 <span class="preprocessor"></span>
-00324 <span class="preprocessor">#ifndef __TBB_FetchAndAddW</span>
-00325 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAddW tbb::internal::__TBB_FetchAndAddGeneric<sizeof(ptrdiff_t),ptrdiff_t></span>
-00326 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00327 <span class="preprocessor"></span>
-00328 <span class="preprocessor">#ifndef __TBB_FetchAndStore1</span>
-00329 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore1 tbb::internal::__TBB_FetchAndStoreGeneric<1,uint8_t></span>
-00330 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00331 <span class="preprocessor"></span>
-00332 <span class="preprocessor">#ifndef __TBB_FetchAndStore2</span>
-00333 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore2 tbb::internal::__TBB_FetchAndStoreGeneric<2,uint16_t></span>
-00334 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00335 <span class="preprocessor"></span>
-00336 <span class="preprocessor">#ifndef __TBB_FetchAndStore4</span>
-00337 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore4 tbb::internal::__TBB_FetchAndStoreGeneric<4,uint32_t></span>
-00338 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00339 <span class="preprocessor"></span>
-00340 <span class="preprocessor">#ifndef __TBB_FetchAndStore8</span>
-00341 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore8 tbb::internal::__TBB_FetchAndStoreGeneric<8,uint64_t></span>
-00342 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00343 <span class="preprocessor"></span>
-00344 <span class="preprocessor">#ifndef __TBB_FetchAndStoreW</span>
-00345 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStoreW tbb::internal::__TBB_FetchAndStoreGeneric<sizeof(ptrdiff_t),ptrdiff_t></span>
-00346 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00347 <span class="preprocessor"></span>
-00348 <span class="preprocessor">#if __TBB_DECL_FENCED_ATOMICS</span>
-00349 <span class="preprocessor"></span>
-00350 <span class="preprocessor">#ifndef __TBB_CompareAndSwap1__TBB_full_fence</span>
-00351 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap1__TBB_full_fence __TBB_CompareAndSwap1</span>
-00352 <span class="preprocessor"></span><span class="preprocessor">#endif </span>
-00353 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_CompareAndSwap1acquire</span>
-00354 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap1acquire __TBB_CompareAndSwap1__TBB_full_fence</span>
-00355 <span class="preprocessor"></span><span class="preprocessor">#endif </span>
-00356 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_CompareAndSwap1release</span>
-00357 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap1release __TBB_CompareAndSwap1__TBB_full_fence</span>
-00358 <span class="preprocessor"></span><span class="preprocessor">#endif </span>
-00359 <span class="preprocessor"></span>
-00360 <span class="preprocessor">#ifndef __TBB_CompareAndSwap2__TBB_full_fence</span>
-00361 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap2__TBB_full_fence __TBB_CompareAndSwap2</span>
-00362 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00363 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_CompareAndSwap2acquire</span>
-00364 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap2acquire __TBB_CompareAndSwap2__TBB_full_fence</span>
-00365 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00366 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_CompareAndSwap2release</span>
-00367 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap2release __TBB_CompareAndSwap2__TBB_full_fence</span>
-00368 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00369 <span class="preprocessor"></span>
-00370 <span class="preprocessor">#ifndef __TBB_CompareAndSwap4__TBB_full_fence</span>
-00371 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap4__TBB_full_fence __TBB_CompareAndSwap4</span>
-00372 <span class="preprocessor"></span><span class="preprocessor">#endif </span>
-00373 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_CompareAndSwap4acquire</span>
-00374 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap4acquire __TBB_CompareAndSwap4__TBB_full_fence</span>
-00375 <span class="preprocessor"></span><span class="preprocessor">#endif </span>
-00376 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_CompareAndSwap4release</span>
-00377 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap4release __TBB_CompareAndSwap4__TBB_full_fence</span>
-00378 <span class="preprocessor"></span><span class="preprocessor">#endif </span>
-00379 <span class="preprocessor"></span>
-00380 <span class="preprocessor">#ifndef __TBB_CompareAndSwap8__TBB_full_fence</span>
-00381 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap8__TBB_full_fence __TBB_CompareAndSwap8</span>
-00382 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00383 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_CompareAndSwap8acquire</span>
-00384 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap8acquire __TBB_CompareAndSwap8__TBB_full_fence</span>
-00385 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00386 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_CompareAndSwap8release</span>
-00387 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_CompareAndSwap8release __TBB_CompareAndSwap8__TBB_full_fence</span>
-00388 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00389 <span class="preprocessor"></span>
-00390 <span class="preprocessor">#ifndef __TBB_FetchAndAdd1__TBB_full_fence</span>
-00391 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd1__TBB_full_fence __TBB_FetchAndAdd1</span>
-00392 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00393 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndAdd1acquire</span>
-00394 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd1acquire __TBB_FetchAndAdd1__TBB_full_fence</span>
-00395 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00396 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndAdd1release</span>
-00397 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd1release __TBB_FetchAndAdd1__TBB_full_fence</span>
-00398 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00399 <span class="preprocessor"></span>
-00400 <span class="preprocessor">#ifndef __TBB_FetchAndAdd2__TBB_full_fence</span>
-00401 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd2__TBB_full_fence __TBB_FetchAndAdd2</span>
-00402 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00403 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndAdd2acquire</span>
-00404 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd2acquire __TBB_FetchAndAdd2__TBB_full_fence</span>
-00405 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00406 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndAdd2release</span>
-00407 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd2release __TBB_FetchAndAdd2__TBB_full_fence</span>
-00408 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00409 <span class="preprocessor"></span>
-00410 <span class="preprocessor">#ifndef __TBB_FetchAndAdd4__TBB_full_fence</span>
-00411 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd4__TBB_full_fence __TBB_FetchAndAdd4</span>
-00412 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00413 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndAdd4acquire</span>
-00414 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd4acquire __TBB_FetchAndAdd4__TBB_full_fence</span>
-00415 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00416 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndAdd4release</span>
-00417 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd4release __TBB_FetchAndAdd4__TBB_full_fence</span>
-00418 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00419 <span class="preprocessor"></span>
-00420 <span class="preprocessor">#ifndef __TBB_FetchAndAdd8__TBB_full_fence</span>
-00421 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd8__TBB_full_fence __TBB_FetchAndAdd8</span>
-00422 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00423 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndAdd8acquire</span>
-00424 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd8acquire __TBB_FetchAndAdd8__TBB_full_fence</span>
-00425 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00426 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndAdd8release</span>
-00427 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAdd8release __TBB_FetchAndAdd8__TBB_full_fence</span>
-00428 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00429 <span class="preprocessor"></span>
-00430 <span class="preprocessor">#ifndef __TBB_FetchAndStore1__TBB_full_fence</span>
-00431 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore1__TBB_full_fence __TBB_FetchAndStore1</span>
-00432 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00433 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndStore1acquire</span>
-00434 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore1acquire __TBB_FetchAndStore1__TBB_full_fence</span>
-00435 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00436 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndStore1release</span>
-00437 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore1release __TBB_FetchAndStore1__TBB_full_fence</span>
-00438 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00439 <span class="preprocessor"></span>
-00440 <span class="preprocessor">#ifndef __TBB_FetchAndStore2__TBB_full_fence</span>
-00441 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore2__TBB_full_fence __TBB_FetchAndStore2</span>
-00442 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00443 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndStore2acquire</span>
-00444 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore2acquire __TBB_FetchAndStore2__TBB_full_fence</span>
-00445 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00446 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndStore2release</span>
-00447 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore2release __TBB_FetchAndStore2__TBB_full_fence</span>
-00448 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00449 <span class="preprocessor"></span>
-00450 <span class="preprocessor">#ifndef __TBB_FetchAndStore4__TBB_full_fence</span>
-00451 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore4__TBB_full_fence __TBB_FetchAndStore4</span>
-00452 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00453 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndStore4acquire</span>
-00454 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore4acquire __TBB_FetchAndStore4__TBB_full_fence</span>
-00455 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00456 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndStore4release</span>
-00457 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore4release __TBB_FetchAndStore4__TBB_full_fence</span>
-00458 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00459 <span class="preprocessor"></span>
-00460 <span class="preprocessor">#ifndef __TBB_FetchAndStore8__TBB_full_fence</span>
-00461 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore8__TBB_full_fence __TBB_FetchAndStore8</span>
-00462 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00463 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndStore8acquire</span>
-00464 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore8acquire __TBB_FetchAndStore8__TBB_full_fence</span>
-00465 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00466 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_FetchAndStore8release</span>
-00467 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndStore8release __TBB_FetchAndStore8__TBB_full_fence</span>
-00468 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00469 <span class="preprocessor"></span>
-00470 <span class="preprocessor">#endif // __TBB_DECL_FENCED_ATOMICS</span>
-00471 <span class="preprocessor"></span>
-00472 <span class="comment">// Special atomic functions</span>
-00473 <span class="preprocessor">#ifndef __TBB_FetchAndAddWrelease</span>
-00474 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndAddWrelease __TBB_FetchAndAddW</span>
-00475 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00476 <span class="preprocessor"></span>
-00477 <span class="preprocessor">#ifndef __TBB_FetchAndIncrementWacquire</span>
-00478 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndIncrementWacquire(P) __TBB_FetchAndAddW(P,1)</span>
-00479 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00480 <span class="preprocessor"></span>
-00481 <span class="preprocessor">#ifndef __TBB_FetchAndDecrementWrelease</span>
-00482 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_FetchAndDecrementWrelease(P) __TBB_FetchAndAddW(P,(-1))</span>
-00483 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00484 <span class="preprocessor"></span>
-00485 <span class="preprocessor">#if __TBB_WORDSIZE==4</span>
-00486 <span class="preprocessor"></span><span class="comment">// On 32-bit platforms, "atomic.h" requires definition of __TBB_Store8 and __TBB_Load8</span>
-00487 <span class="preprocessor">#ifndef __TBB_Store8</span>
-00488 <span class="preprocessor"></span><span class="keyword">inline</span> <span class="keywordtype">void</span> __TBB_Store8 (<span class="keyword">volatile</span> <span class="keywordtype">void</span> *ptr, int64_t value) {
-00489     <a class="code" href="a00192.html">tbb::internal::AtomicBackoff</a> b;
-00490     <span class="keywordflow">for</span>(;;) {
-00491         int64_t result = *(int64_t *)ptr;
-00492         <span class="keywordflow">if</span>( __TBB_CompareAndSwap8(ptr,value,result)==result ) <span class="keywordflow">break</span>;
-00493         b.<a class="code" href="a00192.html#a1">pause</a>();
-00494     }
-00495 }
-00496 <span class="preprocessor">#endif</span>
-00497 <span class="preprocessor"></span>
-00498 <span class="preprocessor">#ifndef __TBB_Load8</span>
-00499 <span class="preprocessor"></span><span class="keyword">inline</span> int64_t __TBB_Load8 (<span class="keyword">const</span> <span class="keyword">volatile</span> <span class="keywordtype">void</span> *ptr) {
-00500     int64_t result = *(int64_t *)ptr;
-00501     result = __TBB_CompareAndSwap8((<span class="keyword">volatile</span> <span class="keywordtype">void</span> *)ptr,result,result);
-00502     <span class="keywordflow">return</span> result;
-00503 }
-00504 <span class="preprocessor">#endif</span>
-00505 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* __TBB_WORDSIZE==4 */</span>
-00506 
-00507 <span class="preprocessor">#ifndef __TBB_Log2</span>
-00508 <span class="preprocessor"></span><span class="keyword">inline</span> intptr_t __TBB_Log2( uintptr_t x ) {
-00509     <span class="keywordflow">if</span>( x==0 ) <span class="keywordflow">return</span> -1;
-00510     intptr_t result = 0;
-00511     uintptr_t tmp;
-00512 <span class="preprocessor">#if __TBB_WORDSIZE>=8</span>
-00513 <span class="preprocessor"></span>    <span class="keywordflow">if</span>( (tmp = x>>32) ) { x=tmp; result += 32; }
-00514 <span class="preprocessor">#endif</span>
-00515 <span class="preprocessor"></span>    <span class="keywordflow">if</span>( (tmp = x>>16) ) { x=tmp; result += 16; }
-00516     <span class="keywordflow">if</span>( (tmp = x>>8) )  { x=tmp; result += 8; }
-00517     <span class="keywordflow">if</span>( (tmp = x>>4) )  { x=tmp; result += 4; }
-00518     <span class="keywordflow">if</span>( (tmp = x>>2) )  { x=tmp; result += 2; }
-00519     <span class="keywordflow">return</span> (x&2)? result+1: result;
-00520 }
-00521 <span class="preprocessor">#endif</span>
-00522 <span class="preprocessor"></span>
-00523 <span class="preprocessor">#ifndef __TBB_AtomicOR</span>
-00524 <span class="preprocessor"></span><span class="keyword">inline</span> <span class="keywordtype">void</span> __TBB_AtomicOR( <span class="keyword">volatile</span> <span class="keywordtype">void</span> *operand, uintptr_t addend ) {
-00525     <a class="code" href="a00192.html">tbb::internal::AtomicBackoff</a> b;
-00526     <span class="keywordflow">for</span>(;;) {
-00527         uintptr_t tmp = *(<span class="keyword">volatile</span> uintptr_t *)operand;
-00528         uintptr_t result = __TBB_CompareAndSwapW(operand, tmp|addend, tmp);
-00529         <span class="keywordflow">if</span>( result==tmp ) <span class="keywordflow">break</span>;
-00530         b.<a class="code" href="a00192.html#a1">pause</a>();
-00531     }
-00532 }
-00533 <span class="preprocessor">#endif</span>
-00534 <span class="preprocessor"></span>
-00535 <span class="preprocessor">#ifndef __TBB_AtomicAND</span>
-00536 <span class="preprocessor"></span><span class="keyword">inline</span> <span class="keywordtype">void</span> __TBB_AtomicAND( <span class="keyword">volatile</span> <span class="keywordtype">void</span> *operand, uintptr_t addend ) {
-00537     <a class="code" href="a00192.html">tbb::internal::AtomicBackoff</a> b;
-00538     <span class="keywordflow">for</span>(;;) {
-00539         uintptr_t tmp = *(<span class="keyword">volatile</span> uintptr_t *)operand;
-00540         uintptr_t result = __TBB_CompareAndSwapW(operand, tmp&addend, tmp);
-00541         <span class="keywordflow">if</span>( result==tmp ) <span class="keywordflow">break</span>;
-00542         b.<a class="code" href="a00192.html#a1">pause</a>();
-00543     }
-00544 }
-00545 <span class="preprocessor">#endif</span>
-00546 <span class="preprocessor"></span>
-00547 <span class="preprocessor">#ifndef __TBB_TryLockByte</span>
-00548 <span class="preprocessor"></span><span class="keyword">inline</span> <span class="keywordtype">bool</span> __TBB_TryLockByte( <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> &flag ) {
-00549     <span class="keywordflow">return</span> __TBB_CompareAndSwap1(&flag,1,0)==0;
-00550 }
-00551 <span class="preprocessor">#endif</span>
-00552 <span class="preprocessor"></span>
-00553 <span class="preprocessor">#ifndef __TBB_LockByte</span>
-00554 <span class="preprocessor"></span><span class="keyword">inline</span> uintptr_t __TBB_LockByte( <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>& flag ) {
-00555     <span class="keywordflow">if</span> ( !__TBB_TryLockByte(flag) ) {
-00556         <a class="code" href="a00192.html">tbb::internal::AtomicBackoff</a> b;
-00557         <span class="keywordflow">do</span> {
-00558             b.<a class="code" href="a00192.html#a1">pause</a>();
-00559         } <span class="keywordflow">while</span> ( !__TBB_TryLockByte(flag) );
-00560     }
-00561     <span class="keywordflow">return</span> 0;
-00562 }
-00563 <span class="preprocessor">#endif</span>
-00564 <span class="preprocessor"></span>
-00565 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_machine_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00355.html b/doc/html/a00355.html
deleted file mode 100644
index 3f9b037..0000000
--- a/doc/html/a00355.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb_profiling.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb_profiling.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_profiling_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_profiling_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="comment">// Check if the tools support is enabled</span>
-00025 <span class="preprocessor">#if (_WIN32||_WIN64||__linux__) && TBB_USE_THREADING_TOOLS && __TBB_NAMING_API_SUPPORT</span>
-00026 <span class="preprocessor"></span>
-00027 <span class="preprocessor">#if _WIN32||_WIN64</span>
-00028 <span class="preprocessor"></span><span class="preprocessor">#include <stdlib.h></span>  <span class="comment">/* mbstowcs_s */</span>
-00029 <span class="preprocessor">#endif</span>
-00030 <span class="preprocessor"></span><span class="preprocessor">#include "tbb/tbb_stddef.h"</span>
-00031 
-00032 <span class="keyword">namespace </span>tbb {
-00033     <span class="keyword">namespace </span>internal {
-00034 <span class="preprocessor">#if _WIN32||_WIN64</span>
-00035 <span class="preprocessor"></span>        <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC itt_set_sync_name_v3( <span class="keywordtype">void</span> *obj, <span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* name ); 
-00036         <span class="keyword">inline</span> size_t multibyte_to_widechar( <span class="keywordtype">wchar_t</span>* wcs, <span class="keyword">const</span> <span class="keywordtype">char</span>* mbs, size_t bufsize) {
-00037 <span class="preprocessor">#if _MSC_VER>=1400</span>
-00038 <span class="preprocessor"></span>            size_t len;
-00039             mbstowcs_s( &len, wcs, bufsize, mbs, _TRUNCATE );
-00040             <span class="keywordflow">return</span> len;   <span class="comment">// mbstowcs_s counts null terminator</span>
-00041 <span class="preprocessor">#else</span>
-00042 <span class="preprocessor"></span>            size_t len = mbstowcs( wcs, mbs, bufsize );
-00043             <span class="keywordflow">if</span>(wcs && len!=size_t(-1) )
-00044                 wcs[len<bufsize-1? len: bufsize-1] = wchar_t(<span class="charliteral">'\0'</span>);
-00045             <span class="keywordflow">return</span> len+1; <span class="comment">// mbstowcs does not count null terminator</span>
-00046 <span class="preprocessor">#endif</span>
-00047 <span class="preprocessor"></span>        }
-00048 <span class="preprocessor">#else</span>
-00049 <span class="preprocessor"></span>        <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC itt_set_sync_name_v3( <span class="keywordtype">void</span> *obj, <span class="keyword">const</span> <span class="keywordtype">char</span>* name ); 
-00050 <span class="preprocessor">#endif</span>
-00051 <span class="preprocessor"></span>    } <span class="comment">// namespace internal</span>
-00052 } <span class="comment">// namespace tbb</span>
-00053 
-00055 
-00057 <span class="preprocessor">#if _WIN32||_WIN64</span>
-00058 <span class="preprocessor"></span><span class="preprocessor">    #define __TBB_DEFINE_PROFILING_SET_NAME(sync_object_type)    \</span>
-00059 <span class="preprocessor">        namespace profiling {                                                       \</span>
-00060 <span class="preprocessor">            inline void set_name( sync_object_type& obj, const wchar_t* name ) {    \</span>
-00061 <span class="preprocessor">                tbb::internal::itt_set_sync_name_v3( &obj, name );                  \</span>
-00062 <span class="preprocessor">            }                                                                       \</span>
-00063 <span class="preprocessor">            inline void set_name( sync_object_type& obj, const char* name ) {       \</span>
-00064 <span class="preprocessor">                size_t len = tbb::internal::multibyte_to_widechar(NULL, name, 0);   \</span>
-00065 <span class="preprocessor">                wchar_t *wname = new wchar_t[len];                                  \</span>
-00066 <span class="preprocessor">                tbb::internal::multibyte_to_widechar(wname, name, len);             \</span>
-00067 <span class="preprocessor">                set_name( obj, wname );                                             \</span>
-00068 <span class="preprocessor">                delete[] wname;                                                     \</span>
-00069 <span class="preprocessor">            }                                                                       \</span>
-00070 <span class="preprocessor">        }</span>
-00071 <span class="preprocessor"></span><span class="preprocessor">#else </span><span class="comment">/* !WIN */</span>
-00072 <span class="preprocessor">    #define __TBB_DEFINE_PROFILING_SET_NAME(sync_object_type)    \</span>
-00073 <span class="preprocessor">        namespace profiling {                                                       \</span>
-00074 <span class="preprocessor">            inline void set_name( sync_object_type& obj, const char* name ) {       \</span>
-00075 <span class="preprocessor">                tbb::internal::itt_set_sync_name_v3( &obj, name );                  \</span>
-00076 <span class="preprocessor">            }                                                                       \</span>
-00077 <span class="preprocessor">        }</span>
-00078 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* !WIN */</span>
-00079 
-00080 <span class="preprocessor">#else </span><span class="comment">/* no tools support */</span>
-00081 
-00082 <span class="preprocessor">#if _WIN32||_WIN64</span>
-00083 <span class="preprocessor"></span><span class="preprocessor">    #define __TBB_DEFINE_PROFILING_SET_NAME(sync_object_type)    \</span>
-00084 <span class="preprocessor">        namespace profiling {                                               \</span>
-00085 <span class="preprocessor">            inline void set_name( sync_object_type&, const wchar_t* ) {}    \</span>
-00086 <span class="preprocessor">            inline void set_name( sync_object_type&, const char* ) {}       \</span>
-00087 <span class="preprocessor">        }</span>
-00088 <span class="preprocessor"></span><span class="preprocessor">#else </span><span class="comment">/* !WIN */</span>
-00089 <span class="preprocessor">    #define __TBB_DEFINE_PROFILING_SET_NAME(sync_object_type)    \</span>
-00090 <span class="preprocessor">        namespace profiling {                                               \</span>
-00091 <span class="preprocessor">            inline void set_name( sync_object_type&, const char* ) {}       \</span>
-00092 <span class="preprocessor">        }</span>
-00093 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* !WIN */</span>
-00094 
-00095 <span class="preprocessor">#endif </span><span class="comment">/* no tools support */</span>
-00096 
-00097 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_profiling_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00356.html b/doc/html/a00356.html
deleted file mode 100644
index 9fe0bf7..0000000
--- a/doc/html/a00356.html
+++ /dev/null
@@ -1,250 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb_stddef.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb_stddef.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_tbb_stddef_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_tbb_stddef_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="comment">// Marketing-driven product version</span>
-00025 <span class="preprocessor">#define TBB_VERSION_MAJOR 2</span>
-00026 <span class="preprocessor"></span><span class="preprocessor">#define TBB_VERSION_MINOR 1</span>
-00027 <span class="preprocessor"></span>
-00028 <span class="comment">// Engineering-focused interface version</span>
-00029 <span class="preprocessor">#define TBB_INTERFACE_VERSION 3015</span>
-00030 <span class="preprocessor"></span><span class="preprocessor">#define TBB_INTERFACE_VERSION_MAJOR TBB_INTERFACE_VERSION/1000</span>
-00031 <span class="preprocessor"></span>
-00032 <span class="comment">// The oldest major interface version still supported</span>
-00033 <span class="comment">// To be used in SONAME, manifests, etc.</span>
-00034 <span class="preprocessor">#define TBB_COMPATIBLE_INTERFACE_VERSION 2</span>
-00035 <span class="preprocessor"></span>
-00036 <span class="preprocessor">#define __TBB_STRING_AUX(x) #x</span>
-00037 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_STRING(x) __TBB_STRING_AUX(x)</span>
-00038 <span class="preprocessor"></span>
-00039 <span class="comment">// We do not need defines below for resource processing on windows</span>
-00040 <span class="preprocessor">#if !defined RC_INVOKED</span>
-00041 <span class="preprocessor"></span>
-00042 <span class="comment">// Define groups for Doxygen documentation</span>
-00052 <span class="comment"></span><span class="comment">// Simple text that is displayed on the main page of Doxygen documentation.</span>
-00094 <span class="comment"></span><span class="comment">// Define preprocessor symbols used to determine architecture</span>
-00095 <span class="preprocessor">#if _WIN32||_WIN64</span>
-00096 <span class="preprocessor"></span><span class="preprocessor">#   if defined(_M_AMD64)</span>
-00097 <span class="preprocessor"></span><span class="preprocessor">#       define __TBB_x86_64 1</span>
-00098 <span class="preprocessor"></span><span class="preprocessor">#   elif defined(_M_IA64)</span>
-00099 <span class="preprocessor"></span><span class="preprocessor">#       define __TBB_ipf 1</span>
-00100 <span class="preprocessor"></span><span class="preprocessor">#   elif defined(_M_IX86)</span>
-00101 <span class="preprocessor"></span><span class="preprocessor">#       define __TBB_x86_32 1</span>
-00102 <span class="preprocessor"></span><span class="preprocessor">#   endif</span>
-00103 <span class="preprocessor"></span><span class="preprocessor">#else </span><span class="comment">/* Assume generic Unix */</span>
-00104 <span class="preprocessor">#   if !__linux__ && !__APPLE__</span>
-00105 <span class="preprocessor"></span><span class="preprocessor">#       define __TBB_generic_os 1</span>
-00106 <span class="preprocessor"></span><span class="preprocessor">#   endif</span>
-00107 <span class="preprocessor"></span><span class="preprocessor">#   if __x86_64__</span>
-00108 <span class="preprocessor"></span><span class="preprocessor">#       define __TBB_x86_64 1</span>
-00109 <span class="preprocessor"></span><span class="preprocessor">#   elif __ia64__</span>
-00110 <span class="preprocessor"></span><span class="preprocessor">#       define __TBB_ipf 1</span>
-00111 <span class="preprocessor"></span><span class="preprocessor">#   elif __i386__||__i386  // __i386 is for Sun OS</span>
-00112 <span class="preprocessor"></span><span class="preprocessor">#       define __TBB_x86_32 1</span>
-00113 <span class="preprocessor"></span><span class="preprocessor">#   else</span>
-00114 <span class="preprocessor"></span><span class="preprocessor">#       define __TBB_generic_arch 1</span>
-00115 <span class="preprocessor"></span><span class="preprocessor">#   endif</span>
-00116 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00117 <span class="preprocessor"></span>
-00118 <span class="preprocessor">#if _WIN32||_WIN64</span>
-00119 <span class="preprocessor"></span><span class="comment">// define the parts of stdint.h that are needed, but put them inside tbb::internal</span>
-00120 <span class="keyword">namespace </span>tbb {
-00121 <span class="keyword">namespace </span>internal {
-00122     <span class="keyword">typedef</span> __int8 int8_t;
-00123     <span class="keyword">typedef</span> __int16 int16_t;
-00124     <span class="keyword">typedef</span> __int32 int32_t;
-00125     <span class="keyword">typedef</span> __int64 int64_t;
-00126     <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> __int8 uint8_t;
-00127     <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> __int16 uint16_t;
-00128     <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> __int32 uint32_t;
-00129     <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> __int64 uint64_t;
-00130 } <span class="comment">// namespace internal</span>
-00131 } <span class="comment">// namespace tbb</span>
-00132 <span class="preprocessor">#else</span>
-00133 <span class="preprocessor"></span><span class="preprocessor">#include <stdint.h></span>
-00134 <span class="preprocessor">#endif</span>
-00135 <span class="preprocessor"></span>
-00136 <span class="preprocessor">#if _MSC_VER >=1400</span>
-00137 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_EXPORTED_FUNC   __cdecl</span>
-00138 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_EXPORTED_METHOD __thiscall</span>
-00139 <span class="preprocessor"></span><span class="preprocessor">#else</span>
-00140 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_EXPORTED_FUNC</span>
-00141 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_EXPORTED_METHOD</span>
-00142 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00143 <span class="preprocessor"></span>
-00144 <span class="preprocessor">#include <cstddef></span>      <span class="comment">/* Need size_t and ptrdiff_t (the latter on Windows only) from here. */</span>
-00145 
-00146 <span class="preprocessor">#if _WIN32||_WIN64</span>
-00147 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_tbb_windef_H</span>
-00148 <span class="preprocessor"></span><span class="preprocessor">#include "_tbb_windef.h"</span>
-00149 <span class="preprocessor">#undef __TBB_tbb_windef_H</span>
-00150 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
-00151 
-00152 <span class="preprocessor">#ifndef TBB_USE_DEBUG</span>
-00153 <span class="preprocessor"></span><span class="preprocessor">#ifdef TBB_DO_ASSERT</span>
-00154 <span class="preprocessor"></span><span class="preprocessor">#define TBB_USE_DEBUG TBB_DO_ASSERT</span>
-00155 <span class="preprocessor"></span><span class="preprocessor">#else</span>
-00156 <span class="preprocessor"></span><span class="preprocessor">#define TBB_USE_DEBUG 0</span>
-00157 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* TBB_DO_ASSERT */</span>
-00158 <span class="preprocessor">#else</span>
-00159 <span class="preprocessor"></span><span class="preprocessor">#define TBB_DO_ASSERT TBB_USE_DEBUG</span>
-00160 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_DEBUG */</span>
-00161 
-00162 <span class="preprocessor">#ifndef TBB_USE_ASSERT</span>
-00163 <span class="preprocessor"></span><span class="preprocessor">#ifdef TBB_DO_ASSERT</span>
-00164 <span class="preprocessor"></span><span class="preprocessor">#define TBB_USE_ASSERT TBB_DO_ASSERT</span>
-00165 <span class="preprocessor"></span><span class="preprocessor">#else </span>
-00166 <span class="preprocessor"></span><span class="preprocessor">#define TBB_USE_ASSERT TBB_USE_DEBUG</span>
-00167 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* TBB_DO_ASSERT */</span>
-00168 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
-00169 
-00170 <span class="preprocessor">#ifndef TBB_USE_THREADING_TOOLS</span>
-00171 <span class="preprocessor"></span><span class="preprocessor">#ifdef TBB_DO_THREADING_TOOLS</span>
-00172 <span class="preprocessor"></span><span class="preprocessor">#define TBB_USE_THREADING_TOOLS TBB_DO_THREADING_TOOLS</span>
-00173 <span class="preprocessor"></span><span class="preprocessor">#else </span>
-00174 <span class="preprocessor"></span><span class="preprocessor">#define TBB_USE_THREADING_TOOLS TBB_USE_DEBUG</span>
-00175 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* TBB_DO_THREADING_TOOLS */</span>
-00176 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_THREADING_TOOLS */</span>
-00177 
-00178 <span class="preprocessor">#ifndef TBB_USE_PERFORMANCE_WARNINGS</span>
-00179 <span class="preprocessor"></span><span class="preprocessor">#ifdef TBB_PERFORMANCE_WARNINGS</span>
-00180 <span class="preprocessor"></span><span class="preprocessor">#define TBB_USE_PERFORMANCE_WARNINGS TBB_PERFORMANCE_WARNINGS</span>
-00181 <span class="preprocessor"></span><span class="preprocessor">#else </span>
-00182 <span class="preprocessor"></span><span class="preprocessor">#define TBB_USE_PERFORMANCE_WARNINGS TBB_USE_DEBUG</span>
-00183 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* TBB_PEFORMANCE_WARNINGS */</span>
-00184 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_PERFORMANCE_WARNINGS */</span>
-00185 
-00186 <span class="keyword">namespace </span>tbb {
-<a name="l00188"></a><a class="code" href="a00318.html#a6">00188</a>     <span class="keyword">typedef</span> void(*assertion_handler_type)( <span class="keyword">const</span> <span class="keywordtype">char</span>* filename, <span class="keywordtype">int</span> line, <span class="keyword">const</span> <span class="keywordtype">char</span>* expression, <span class="keyword">const</span> <span class="keywordtype">char</span> * comment );
-00189 }
-00190 
-00191 <span class="preprocessor">#if TBB_USE_ASSERT</span>
-00192 <span class="preprocessor"></span>
-00194 
-00197 <span class="preprocessor">#define __TBB_ASSERT(predicate,message) ((predicate)?((void)0):tbb::assertion_failure(__FILE__,__LINE__,#predicate,message))</span>
-00198 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_ASSERT_EX __TBB_ASSERT</span>
-00199 <span class="preprocessor"></span>
-00200 <span class="keyword">namespace </span>tbb {
-00202     assertion_handler_type __TBB_EXPORTED_FUNC set_assertion_handler( assertion_handler_type new_handler );
-00203 
-00205 
-00208     <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC assertion_failure( <span class="keyword">const</span> <span class="keywordtype">char</span>* filename, <span class="keywordtype">int</span> line, <span class="keyword">const</span> <span class="keywordtype">char</span>* expression, <span class="keyword">const</span> <span class="keywordtype">char</span>* comment );
-00209 } <span class="comment">// namespace tbb</span>
-00210 
-00211 <span class="preprocessor">#else</span>
-00212 <span class="preprocessor"></span>
-00214 <span class="preprocessor">#define __TBB_ASSERT(predicate,comment) ((void)0)</span>
-00215 <span class="preprocessor"></span>
-00216 <span class="preprocessor">#define __TBB_ASSERT_EX(predicate,comment) ((void)(1 && (predicate)))</span>
-00217 <span class="preprocessor"></span>
-00218 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
-00219 
-00221 <span class="keyword">namespace </span>tbb {
-00222 
-00224 
-00228 <span class="keyword">extern</span> <span class="stringliteral">"C"</span> <span class="keywordtype">int</span> __TBB_EXPORTED_FUNC <a class="code" href="a00318.html#a53">TBB_runtime_interface_version</a>();
-00229 
-00231 
-<a name="l00235"></a><a class="code" href="a00254.html">00235</a> <span class="keyword">class </span><a class="code" href="a00254.html">split</a> {
-00236 };
-00237 
-00242 <span class="keyword">namespace </span>internal {
-00243 
-00244 <span class="keyword">using</span> std::size_t;
-00245 
-00247 
-<a name="l00249"></a><a class="code" href="a00319.html#a21">00249</a> <span class="keyword">typedef</span> size_t <a class="code" href="a00319.html#a21">uintptr</a>;
-00250 
-00252 
-<a name="l00254"></a><a class="code" href="a00319.html#a22">00254</a> <span class="keyword">typedef</span> std::ptrdiff_t intptr;
-00255 
-00257 <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC <a class="code" href="a00319.html#a76">runtime_warning</a>( <span class="keyword">const</span> <span class="keywordtype">char</span>* format, ... );
-00258 
-00259 <span class="preprocessor">#if TBB_USE_ASSERT</span>
-00260 <span class="preprocessor"></span>
-00261 <span class="keyword">template</span><<span class="keyword">typename</span> T>
-<a name="l00262"></a><a class="code" href="a00319.html#a77">00262</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="a00319.html#a77">poison_pointer</a>( T* & p ) {
-00263     p = reinterpret_cast<T*>(-1);
-00264 }
-00265 <span class="preprocessor">#else</span>
-00266 <span class="preprocessor"></span><span class="keyword">template</span><<span class="keyword">typename</span> T>
-00267 <span class="keyword">inline</span> <span class="keywordtype">void</span> poison_pointer( T* ) {<span class="comment">/*do nothing*/</span>}
-00268 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
-00269 
-<a name="l00271"></a><a class="code" href="a00229.html">00271</a> <span class="keyword">class </span><a class="code" href="a00229.html">no_assign</a> {
-00272     <span class="comment">// Deny assignment</span>
-00273     <span class="keywordtype">void</span> operator=( <span class="keyword">const</span> <a class="code" href="a00229.html">no_assign</a>& );
-00274 <span class="keyword">public</span>:
-00275 <span class="preprocessor">#if __GNUC__</span>
-00276 <span class="preprocessor"></span>
-<a name="l00277"></a><a class="code" href="a00229.html#a0">00277</a>     <a class="code" href="a00229.html">no_assign</a>() {}
-00278 <span class="preprocessor">#endif </span><span class="comment">/* __GNUC__ */</span>
-00279 };
-00280 
-<a name="l00282"></a><a class="code" href="a00230.html">00282</a> <span class="keyword">class </span><a class="code" href="a00230.html">no_copy</a>: <a class="code" href="a00229.html">no_assign</a> {
-00284     <a class="code" href="a00230.html">no_copy</a>( <span class="keyword">const</span> <a class="code" href="a00230.html">no_copy</a>& );
-00285 <span class="keyword">public</span>:
-<a name="l00287"></a><a class="code" href="a00230.html#a0">00287</a>     <a class="code" href="a00230.html">no_copy</a>() {}
-00288 };
-00289 
-00290 <span class="comment">// Struct to be used as a version tag for inline functions.</span>
-<a name="l00293"></a><a class="code" href="a00275.html">00293</a> <span class="comment"></span><span class="keyword">struct </span><a class="code" href="a00275.html">version_tag_v3</a> {};
-00294 
-00295 <span class="keyword">typedef</span> <a class="code" href="a00275.html">version_tag_v3</a> <a class="code" href="a00275.html">version_tag</a>;
-00296 
-00297 } <span class="comment">// internal</span>
-00299 <span class="comment"></span>
-00300 } <span class="comment">// tbb</span>
-00301 
-00302 <span class="preprocessor">#if defined(__EXCEPTIONS) || defined(_CPPUNWIND) || defined(__SUNPRO_CC)</span>
-00303 <span class="preprocessor"></span><span class="preprocessor">#ifndef __TBB_EXCEPTIONS</span>
-00304 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_EXCEPTIONS 1</span>
-00305 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* __TBB_EXCEPTIONS */</span>
-00306 <span class="preprocessor">#endif</span>
-00307 <span class="preprocessor"></span>
-00308 <span class="preprocessor">#ifndef __TBB_SCHEDULER_OBSERVER</span>
-00309 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_SCHEDULER_OBSERVER 1</span>
-00310 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* __TBB_SCHEDULER_OBSERVER */</span>
-00311 
-00312 <span class="preprocessor">#ifndef __TBB_NAMING_API_SUPPORT</span>
-00313 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_NAMING_API_SUPPORT 1</span>
-00314 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* __TBB_NAMING_API_SUPPORT */</span>
-00315 
-00316 
-00317 <span class="preprocessor">#endif </span><span class="comment">/* RC_INVOKED */</span>
-00318 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_tbb_stddef_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00357.html b/doc/html/a00357.html
deleted file mode 100644
index f249694..0000000
--- a/doc/html/a00357.html
+++ /dev/null
@@ -1,284 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tbb_thread.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tbb_thread.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_tbb_thread_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_tbb_thread_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#if _WIN32||_WIN64</span>
-00025 <span class="preprocessor"></span><span class="preprocessor">#include <windows.h></span>
-00026 <span class="preprocessor">#define __TBB_NATIVE_THREAD_ROUTINE unsigned WINAPI</span>
-00027 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_NATIVE_THREAD_ROUTINE_PTR(r) unsigned (WINAPI* r)( void* )</span>
-00028 <span class="preprocessor"></span><span class="preprocessor">#else</span>
-00029 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_NATIVE_THREAD_ROUTINE void*</span>
-00030 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_NATIVE_THREAD_ROUTINE_PTR(r) void* (*r)( void* )</span>
-00031 <span class="preprocessor"></span><span class="preprocessor">#include <pthread.h></span>
-00032 <span class="preprocessor">#endif // _WIN32||_WIN64</span>
-00033 <span class="preprocessor"></span>
-00034 <span class="preprocessor">#include <iosfwd></span>
-00035 <span class="preprocessor">#include <exception></span>             <span class="comment">// Need std::terminate from here.</span>
-00036 <span class="preprocessor">#include "tbb_stddef.h"</span>
-00037 <span class="preprocessor">#include "tick_count.h"</span>
-00038 
-00039 <span class="keyword">namespace </span>tbb {
-00040 
-00042 <span class="keyword">namespace </span>internal {
-00043     
-00044     <span class="keyword">class </span>tbb_thread_v3;
-00045 
-00046 } <span class="comment">// namespace internal</span>
-00047 
-00048 <span class="keywordtype">void</span> swap( internal::tbb_thread_v3& t1, internal::tbb_thread_v3& t2 ); 
-00049 
-00050 <span class="keyword">namespace </span>internal {
-00051 
-00053     <span class="keywordtype">void</span>* __TBB_EXPORTED_FUNC <a class="code" href="a00319.html#a79">allocate_closure_v3</a>( size_t size );
-00055     <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC <a class="code" href="a00319.html#a80">free_closure_v3</a>( <span class="keywordtype">void</span>* );
-00056    
-00057     <span class="keyword">struct </span>thread_closure_base {
-00058         <span class="keywordtype">void</span>* operator new( size_t size ) {<span class="keywordflow">return</span> <a class="code" href="a00319.html#a79">allocate_closure_v3</a>(size);}
-00059         <span class="keywordtype">void</span> operator delete( <span class="keywordtype">void</span>* ptr ) {<a class="code" href="a00319.html#a80">free_closure_v3</a>(ptr);}
-00060     };
-00061 
-00062     <span class="keyword">template</span><<span class="keyword">class</span> F> <span class="keyword">struct </span>thread_closure_0: thread_closure_base {
-00063         F function;
-00064 
-00065         <span class="keyword">static</span> __TBB_NATIVE_THREAD_ROUTINE start_routine( <span class="keywordtype">void</span>* c ) {
-00066             thread_closure_0 *<span class="keyword">self</span> = static_cast<thread_closure_0*>(c);
-00067             <span class="keywordflow">try</span> {
-00068                 <span class="keyword">self</span>->function();
-00069             } <span class="keywordflow">catch</span> ( ... ) {
-00070                 std::terminate();
-00071             }
-00072             <span class="keyword">delete</span> <span class="keyword">self</span>;
-00073             <span class="keywordflow">return</span> 0;
-00074         }
-00075         thread_closure_0( <span class="keyword">const</span> F& f ) : function(f) {}
-00076     };
-<a name="l00078"></a><a class="code" href="a00271.html">00078</a>     <span class="keyword">template</span><<span class="keyword">class</span> F, <span class="keyword">class</span> X> <span class="keyword">struct </span><a class="code" href="a00271.html">thread_closure_1</a>: thread_closure_base {
-00079         F function;
-00080         X arg1;
-<a name="l00082"></a><a class="code" href="a00271.html#e0">00082</a>         <span class="keyword">static</span> __TBB_NATIVE_THREAD_ROUTINE start_routine( <span class="keywordtype">void</span>* c ) {
-00083             <a class="code" href="a00271.html">thread_closure_1</a> *<span class="keyword">self</span> = static_cast<thread_closure_1*>(c);
-00084             <span class="keywordflow">try</span> {
-00085                 <span class="keyword">self</span>->function(self->arg1);
-00086             } <span class="keywordflow">catch</span> ( ... ) {
-00087                 std::terminate();
-00088             }
-00089             <span class="keyword">delete</span> <span class="keyword">self</span>;
-00090             <span class="keywordflow">return</span> 0;
-00091         }
-00092         <a class="code" href="a00271.html">thread_closure_1</a>( <span class="keyword">const</span> F& f, <span class="keyword">const</span> X& x ) : function(f), arg1(x) {}
-00093     };
-00094     <span class="keyword">template</span><<span class="keyword">class</span> F, <span class="keyword">class</span> X, <span class="keyword">class</span> Y> <span class="keyword">struct </span>thread_closure_2: thread_closure_base {
-00095         F function;
-00096         X arg1;
-00097         Y arg2;
-00099         <span class="keyword">static</span> __TBB_NATIVE_THREAD_ROUTINE start_routine( <span class="keywordtype">void</span>* c ) {
-00100             thread_closure_2 *<span class="keyword">self</span> = static_cast<thread_closure_2*>(c);
-00101             <span class="keywordflow">try</span> {
-00102                 <span class="keyword">self</span>->function(self->arg1, self->arg2);
-00103             } <span class="keywordflow">catch</span> ( ... ) {
-00104                 std::terminate();
-00105             }
-00106             <span class="keyword">delete</span> <span class="keyword">self</span>;
-00107             <span class="keywordflow">return</span> 0;
-00108         }
-00109         thread_closure_2( <span class="keyword">const</span> F& f, <span class="keyword">const</span> X& x, <span class="keyword">const</span> Y& y ) : function(f), arg1(x), arg2(y) {}
-00110     };
-00111 
-<a name="l00113"></a><a class="code" href="a00270.html">00113</a>     <span class="keyword">class </span><a class="code" href="a00270.html">tbb_thread_v3</a> {
-00114         <a class="code" href="a00270.html">tbb_thread_v3</a>(<span class="keyword">const</span> <a class="code" href="a00270.html">tbb_thread_v3</a>&); <span class="comment">// = delete;   // Deny access</span>
-00115     <span class="keyword">public</span>:
-00116 <span class="preprocessor">#if _WIN32||_WIN64</span>
-00117 <span class="preprocessor"></span>        <span class="keyword">typedef</span> HANDLE native_handle_type; 
-00118 <span class="preprocessor">#else</span>
-00119 <span class="preprocessor"></span>        <span class="keyword">typedef</span> pthread_t native_handle_type; 
-00120 <span class="preprocessor">#endif // _WIN32||_WIN64</span>
-00121 <span class="preprocessor"></span>
-00122         <span class="keyword">class </span>id;
-<a name="l00124"></a><a class="code" href="a00270.html#a0">00124</a>         <a class="code" href="a00270.html">tbb_thread_v3</a>() : my_handle(0)
-00125 #if _WIN32||_WIN64
-00126             , my_thread_id(0)
-00127 #endif <span class="comment">// _WIN32||_WIN64</span>
-00128         {}
-00129         
-<a name="l00131"></a><a class="code" href="a00270.html#a1">00131</a>         <span class="keyword">template</span> <<span class="keyword">class</span> F> <span class="keyword">explicit</span> <a class="code" href="a00270.html">tbb_thread_v3</a>(F f) {
-00132             <span class="keyword">typedef</span> internal::thread_closure_0<F> closure_type;
-00133             internal_start(closure_type::start_routine, <span class="keyword">new</span> closure_type(f));
-00134         }
-<a name="l00136"></a><a class="code" href="a00270.html#a2">00136</a>         <span class="keyword">template</span> <<span class="keyword">class</span> F, <span class="keyword">class</span> X> <a class="code" href="a00270.html">tbb_thread_v3</a>(F f, X x) {
-00137             <span class="keyword">typedef</span> <a class="code" href="a00271.html">internal::thread_closure_1<F,X></a> closure_type;
-00138             internal_start(closure_type::start_routine, <span class="keyword">new</span> closure_type(f,x));
-00139         }
-<a name="l00141"></a><a class="code" href="a00270.html#a3">00141</a>         <span class="keyword">template</span> <<span class="keyword">class</span> F, <span class="keyword">class</span> X, <span class="keyword">class</span> Y> <a class="code" href="a00270.html">tbb_thread_v3</a>(F f, X x, Y y) {
-00142             <span class="keyword">typedef</span> internal::thread_closure_2<F,X,Y> closure_type;
-00143             internal_start(closure_type::start_routine, <span class="keyword">new</span> closure_type(f,x,y));
-00144         }
-00145 
-00146         <a class="code" href="a00270.html">tbb_thread_v3</a>& operator=(<a class="code" href="a00270.html">tbb_thread_v3</a>& x) {
-00147             <span class="keywordflow">if</span> (joinable()) detach();
-00148             my_handle = x.<a class="code" href="a00270.html#r0">my_handle</a>;
-00149             x.<a class="code" href="a00270.html#r0">my_handle</a> = 0;
-00150 <span class="preprocessor">#if _WIN32||_WIN64</span>
-00151 <span class="preprocessor"></span>            my_thread_id = x.<a class="code" href="a00270.html#r1">my_thread_id</a>;
-00152             x.<a class="code" href="a00270.html#r1">my_thread_id</a> = 0;
-00153 <span class="preprocessor">#endif // _WIN32||_WIN64</span>
-00154 <span class="preprocessor"></span>            <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-00155         }
-00156         <span class="keywordtype">bool</span> joinable()<span class="keyword"> const </span>{<span class="keywordflow">return</span> my_handle!=0; }
-00158         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD join();
-00160         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD detach();
-00161         ~tbb_thread_v3() {<span class="keywordflow">if</span>( joinable() ) detach();}
-00162         <span class="keyword">inline</span> <span class="keywordtype">id</span> get_id() <span class="keyword">const</span>;
-00163         native_handle_type native_handle() { <span class="keywordflow">return</span> my_handle; }
-00164     
-00166         <span class="keyword">static</span> <span class="keywordtype">unsigned</span> __TBB_EXPORTED_FUNC hardware_concurrency();
-00167     <span class="keyword">private</span>:
-00168         native_handle_type my_handle; 
-00169 <span class="preprocessor">#if _WIN32||_WIN64</span>
-00170 <span class="preprocessor"></span>        DWORD my_thread_id;
-00171 <span class="preprocessor">#endif // _WIN32||_WIN64</span>
-00172 <span class="preprocessor"></span>
-00174         <span class="keywordtype">void</span> __TBB_EXPORTED_METHOD internal_start( __TBB_NATIVE_THREAD_ROUTINE_PTR(start_routine), 
-00175                              <span class="keywordtype">void</span>* closure );
-00176         <span class="keyword">friend</span> <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC move_v3( tbb_thread_v3& t1, tbb_thread_v3& t2 );
-00177         <span class="keyword">friend</span> <span class="keywordtype">void</span> tbb::swap( tbb_thread_v3& t1, tbb_thread_v3& t2 ); 
-00178     };
-00179         
-00180     <span class="keyword">class </span>tbb_thread_v3::id { 
-00181 <span class="preprocessor">#if _WIN32||_WIN64</span>
-00182 <span class="preprocessor"></span>        DWORD my_id;
-00183         id( DWORD my_id ) : my_id(my_id) {}
-00184 <span class="preprocessor">#else</span>
-00185 <span class="preprocessor"></span>        pthread_t my_id;
-00186         id( pthread_t my_id ) : my_id(my_id) {}
-00187 <span class="preprocessor">#endif // _WIN32||_WIN64</span>
-00188 <span class="preprocessor"></span>        <span class="keyword">friend</span> <span class="keyword">class </span>tbb_thread_v3;
-00189     <span class="keyword">public</span>:
-00190         id() : my_id(0) {}
-00191 
-00192         <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator==( tbb_thread_v3::id x, tbb_thread_v3::id y );
-00193         <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator!=( tbb_thread_v3::id x, tbb_thread_v3::id y );
-00194         <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator<( tbb_thread_v3::id x, tbb_thread_v3::id y );
-00195         <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator<=( tbb_thread_v3::id x, tbb_thread_v3::id y );
-00196         <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator>( tbb_thread_v3::id x, tbb_thread_v3::id y );
-00197         <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator>=( tbb_thread_v3::id x, tbb_thread_v3::id y );
-00198         
-00199         <span class="keyword">template</span><<span class="keyword">class</span> <span class="keywordtype">char</span>T, <span class="keyword">class</span> traits>
-00200         <span class="keyword">friend</span> std::basic_ostream<charT, traits>&
-00201         operator<< (std::basic_ostream<charT, traits> &out, 
-00202                     tbb_thread_v3::id id)
-00203         {
-00204             out << <span class="keywordtype">id</span>.my_id;
-00205             <span class="keywordflow">return</span> out;
-00206         }
-00207         <span class="keyword">friend</span> tbb_thread_v3::id __TBB_EXPORTED_FUNC thread_get_id_v3();
-00208     }; <span class="comment">// tbb_thread_v3::id</span>
-00209 
-00210     tbb_thread_v3::id tbb_thread_v3::get_id()<span class="keyword"> const </span>{
-00211 <span class="preprocessor">#if _WIN32||_WIN64</span>
-00212 <span class="preprocessor"></span>        <span class="keywordflow">return</span> id(my_thread_id);
-00213 <span class="preprocessor">#else</span>
-00214 <span class="preprocessor"></span>        <span class="keywordflow">return</span> id(my_handle);
-00215 <span class="preprocessor">#endif // _WIN32||_WIN64</span>
-00216 <span class="preprocessor"></span>    }
-00217     <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC move_v3( tbb_thread_v3& t1, tbb_thread_v3& t2 );
-00218     tbb_thread_v3::id __TBB_EXPORTED_FUNC thread_get_id_v3();
-00219     <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC thread_yield_v3();
-00220     <span class="keywordtype">void</span> __TBB_EXPORTED_FUNC thread_sleep_v3(<span class="keyword">const</span> tick_count::interval_t &i);
-00221 
-00222     <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator==(tbb_thread_v3::id x, tbb_thread_v3::id y)
-00223     {
-00224         <span class="keywordflow">return</span> x.my_id == y.my_id;
-00225     }
-00226     <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator!=(tbb_thread_v3::id x, tbb_thread_v3::id y)
-00227     {
-00228         <span class="keywordflow">return</span> x.my_id != y.my_id;
-00229     }
-00230     <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator<(tbb_thread_v3::id x, tbb_thread_v3::id y)
-00231     {
-00232         <span class="keywordflow">return</span> x.my_id < y.my_id;
-00233     }
-00234     <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator<=(tbb_thread_v3::id x, tbb_thread_v3::id y)
-00235     {
-00236         <span class="keywordflow">return</span> x.my_id <= y.my_id;
-00237     }
-00238     <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator>(tbb_thread_v3::id x, tbb_thread_v3::id y)
-00239     {
-00240         <span class="keywordflow">return</span> x.my_id > y.my_id;
-00241     }
-00242     <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator>=(tbb_thread_v3::id x, tbb_thread_v3::id y)
-00243     {
-00244         <span class="keywordflow">return</span> x.my_id >= y.my_id;
-00245     }
-00246 
-00247 } <span class="comment">// namespace internal;</span>
-00248 
-<a name="l00250"></a><a class="code" href="a00318.html#a7">00250</a> <span class="keyword">typedef</span> <a class="code" href="a00270.html">internal::tbb_thread_v3</a> <a class="code" href="a00270.html">tbb_thread</a>;
-00251 
-00252 <span class="keyword">using</span> internal::operator==;
-00253 <span class="keyword">using</span> internal::operator!=;
-00254 <span class="keyword">using</span> internal::operator<;
-00255 <span class="keyword">using</span> internal::operator>;
-00256 <span class="keyword">using</span> internal::operator<=;
-00257 <span class="keyword">using</span> internal::operator>=;
-00258 
-00259 <span class="keyword">inline</span> <span class="keywordtype">void</span> move( tbb_thread& t1, tbb_thread& t2 ) {
-00260     internal::move_v3(t1, t2);
-00261 }
-00262 
-00263 <span class="keyword">inline</span> <span class="keywordtype">void</span> swap( internal::tbb_thread_v3& t1, internal::tbb_thread_v3& t2 ) {
-00264     tbb::tbb_thread::native_handle_type h = t1.<a class="code" href="a00270.html#r0">my_handle</a>;
-00265     t1.<a class="code" href="a00270.html#r0">my_handle</a> = t2.<a class="code" href="a00270.html#r0">my_handle</a>;
-00266     t2.<a class="code" href="a00270.html#r0">my_handle</a> = h;
-00267 <span class="preprocessor">#if _WIN32||_WIN64</span>
-00268 <span class="preprocessor"></span>    DWORD i = t1.<a class="code" href="a00270.html#r1">my_thread_id</a>;
-00269     t1.<a class="code" href="a00270.html#r1">my_thread_id</a> = t2.<a class="code" href="a00270.html#r1">my_thread_id</a>;
-00270     t2.<a class="code" href="a00270.html#r1">my_thread_id</a> = i;
-00271 <span class="preprocessor">#endif </span><span class="comment">/* _WIN32||_WIN64 */</span>
-00272 }
-00273 
-00274 <span class="keyword">namespace </span>this_tbb_thread {
-00275     <span class="keyword">inline</span> tbb_thread::id get_id() { <span class="keywordflow">return</span> internal::thread_get_id_v3(); }
-00277     <span class="keyword">inline</span> <span class="keywordtype">void</span> yield() { internal::thread_yield_v3(); }
-00279     <span class="keyword">inline</span> <span class="keywordtype">void</span> sleep(<span class="keyword">const</span> tick_count::interval_t &i) { 
-00280         internal::thread_sleep_v3(i);  
-00281     }
-00282 }  <span class="comment">// namespace this_tbb_thread</span>
-00283 
-00284 } <span class="comment">// namespace tbb</span>
-00285 
-00286 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_tbb_thread_H */</span>
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00358.html b/doc/html/a00358.html
deleted file mode 100644
index 951a5c5..0000000
--- a/doc/html/a00358.html
+++ /dev/null
@@ -1,150 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>tick_count.h Source File</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1>tick_count.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
-00002 <span class="comment">    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.</span>
-00003 <span class="comment"></span>
-00004 <span class="comment">    The source code contained or described herein and all documents related</span>
-00005 <span class="comment">    to the source code ("Material") are owned by Intel Corporation or its</span>
-00006 <span class="comment">    suppliers or licensors.  Title to the Material remains with Intel</span>
-00007 <span class="comment">    Corporation or its suppliers and licensors.  The Material is protected</span>
-00008 <span class="comment">    by worldwide copyright laws and treaty provisions.  No part of the</span>
-00009 <span class="comment">    Material may be used, copied, reproduced, modified, published, uploaded,</span>
-00010 <span class="comment">    posted, transmitted, distributed, or disclosed in any way without</span>
-00011 <span class="comment">    Intel's prior express written permission.</span>
-00012 <span class="comment"></span>
-00013 <span class="comment">    No license under any patent, copyright, trade secret or other</span>
-00014 <span class="comment">    intellectual property right is granted to or conferred upon you by</span>
-00015 <span class="comment">    disclosure or delivery of the Materials, either expressly, by</span>
-00016 <span class="comment">    implication, inducement, estoppel or otherwise.  Any license under such</span>
-00017 <span class="comment">    intellectual property rights must be express and approved by Intel in</span>
-00018 <span class="comment">    writing.</span>
-00019 <span class="comment">*/</span>
-00020 
-00021 <span class="preprocessor">#ifndef __TBB_tick_count_H</span>
-00022 <span class="preprocessor"></span><span class="preprocessor">#define __TBB_tick_count_H</span>
-00023 <span class="preprocessor"></span>
-00024 <span class="preprocessor">#include "tbb_stddef.h"</span>
-00025 
-00026 <span class="preprocessor">#if _WIN32||_WIN64</span>
-00027 <span class="preprocessor"></span><span class="preprocessor">#include <windows.h></span>
-00028 <span class="preprocessor">#elif __linux__</span>
-00029 <span class="preprocessor"></span><span class="preprocessor">#include <ctime></span>
-00030 <span class="preprocessor">#else </span><span class="comment">/* generic Unix */</span>
-00031 <span class="preprocessor">#include <sys/time.h></span>
-00032 <span class="preprocessor">#endif </span><span class="comment">/* (choice of OS) */</span>
-00033 
-00034 <span class="keyword">namespace </span>tbb {
-00035 
-00037 
-<a name="l00038"></a><a class="code" href="a00272.html">00038</a> <span class="keyword">class </span><a class="code" href="a00272.html">tick_count</a> {
-00039 <span class="keyword">public</span>:
-<a name="l00041"></a><a class="code" href="a00273.html">00041</a>     <span class="keyword">class </span><a class="code" href="a00273.html">interval_t</a> {
-00042         <span class="keywordtype">long</span> <span class="keywordtype">long</span> value;
-00043         <span class="keyword">explicit</span> <a class="code" href="a00273.html">interval_t</a>( <span class="keywordtype">long</span> <span class="keywordtype">long</span> value_ ) : value(value_) {}
-00044     <span class="keyword">public</span>:
-<a name="l00046"></a><a class="code" href="a00273.html#a0">00046</a>         <a class="code" href="a00273.html">interval_t</a>() : value(0) {};
-00047 
-00049         <span class="keyword">explicit</span> <a class="code" href="a00273.html">interval_t</a>( <span class="keywordtype">double</span> sec );
-00050 
-00052         <span class="keywordtype">double</span> seconds() <span class="keyword">const</span>;
-00053 
-00054         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00272.html">tbb::tick_count</a>;
-00055 
-00057         <span class="keyword">friend</span> <a class="code" href="a00273.html">interval_t</a> <a class="code" href="a00272.html#n0">operator-</a>( <span class="keyword">const</span> <a class="code" href="a00272.html">tick_count</a>& t1, <span class="keyword">const</span> <a class="code" href="a00272.html">tick_count</a>& t0 );
-00058 
-<a name="l00060"></a><a class="code" href="a00273.html#n2">00060</a>         <span class="keyword">friend</span> <a class="code" href="a00273.html">interval_t</a> operator+( <span class="keyword">const</span> <a class="code" href="a00273.html">interval_t</a>& i, <span class="keyword">const</span> <a class="code" href="a00273.html">interval_t</a>& j ) {
-00061             <span class="keywordflow">return</span> <a class="code" href="a00273.html">interval_t</a>(i.<a class="code" href="a00273.html#r0">value</a>+j.<a class="code" href="a00273.html#r0">value</a>);
-00062         }
-00063 
-<a name="l00065"></a><a class="code" href="a00273.html#n3">00065</a>         <span class="keyword">friend</span> <a class="code" href="a00273.html">interval_t</a> <a class="code" href="a00272.html#n0">operator-</a>( <span class="keyword">const</span> <a class="code" href="a00273.html">interval_t</a>& i, <span class="keyword">const</span> <a class="code" href="a00273.html">interval_t</a>& j ) {
-00066             <span class="keywordflow">return</span> <a class="code" href="a00273.html">interval_t</a>(i.<a class="code" href="a00273.html#r0">value</a>-j.<a class="code" href="a00273.html#r0">value</a>);
-00067         }
-00068 
-<a name="l00070"></a><a class="code" href="a00273.html#a3">00070</a>         <a class="code" href="a00273.html">interval_t</a>& operator+=( <span class="keyword">const</span> <a class="code" href="a00273.html">interval_t</a>& i ) {value += i.<a class="code" href="a00273.html#r0">value</a>; <span class="keywordflow">return</span> *<span class="keyword">this</span>;}
-00071 
-<a name="l00073"></a><a class="code" href="a00273.html#a4">00073</a>         <a class="code" href="a00273.html">interval_t</a>& operator-=( <span class="keyword">const</span> <a class="code" href="a00273.html">interval_t</a>& i ) {value -= i.<a class="code" href="a00273.html#r0">value</a>; <span class="keywordflow">return</span> *<span class="keyword">this</span>;}
-00074     };
-00075     
-<a name="l00077"></a><a class="code" href="a00272.html#a0">00077</a>     <a class="code" href="a00272.html#a0">tick_count</a>() : my_count(0) {};
-00078 
-00080     <span class="keyword">static</span> <a class="code" href="a00272.html">tick_count</a> <a class="code" href="a00272.html#e0">now</a>();
-00081     
-00083     <span class="keyword">friend</span> interval_t <a class="code" href="a00272.html#n0">operator-</a>( <span class="keyword">const</span> <a class="code" href="a00272.html">tick_count</a>& t1, <span class="keyword">const</span> <a class="code" href="a00272.html">tick_count</a>& t0 );
-00084 
-00085 <span class="keyword">private</span>:
-00086     <span class="keywordtype">long</span> <span class="keywordtype">long</span> my_count;
-00087 };
-00088 
-<a name="l00089"></a><a class="code" href="a00272.html#e0">00089</a> <span class="keyword">inline</span> <a class="code" href="a00272.html">tick_count</a> <a class="code" href="a00272.html#e0">tick_count::now</a>() {
-00090     <a class="code" href="a00272.html">tick_count</a> result;
-00091 <span class="preprocessor">#if _WIN32||_WIN64</span>
-00092 <span class="preprocessor"></span>    LARGE_INTEGER qpcnt;
-00093     QueryPerformanceCounter(&qpcnt);
-00094     result.<a class="code" href="a00272.html#r0">my_count</a> = qpcnt.QuadPart;
-00095 <span class="preprocessor">#elif __linux__</span>
-00096 <span class="preprocessor"></span>    <span class="keyword">struct </span>timespec ts;
-00097 <span class="preprocessor">#if TBB_USE_ASSERT</span>
-00098 <span class="preprocessor"></span>    <span class="keywordtype">int</span> status = 
-00099 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
-00100         clock_gettime( CLOCK_REALTIME, &ts );
-00101     __TBB_ASSERT( status==0, <span class="stringliteral">"CLOCK_REALTIME not supported"</span> );
-00102     result.<a class="code" href="a00272.html#r0">my_count</a> = static_cast<long long>(1000000000UL)*static_cast<long long>(ts.tv_sec) + static_cast<long long>(ts.tv_nsec);
-00103 <span class="preprocessor">#else </span><span class="comment">/* generic Unix */</span>
-00104     <span class="keyword">struct </span>timeval tv;
-00105 <span class="preprocessor">#if TBB_USE_ASSERT</span>
-00106 <span class="preprocessor"></span>    <span class="keywordtype">int</span> status = 
-00107 <span class="preprocessor">#endif </span><span class="comment">/* TBB_USE_ASSERT */</span>
-00108         gettimeofday(&tv, NULL);
-00109     __TBB_ASSERT( status==0, <span class="stringliteral">"gettimeofday failed"</span> );
-00110     result.<a class="code" href="a00272.html#r0">my_count</a> = static_cast<long long>(1000000)*static_cast<long long>(tv.tv_sec) + static_cast<long long>(tv.tv_usec);
-00111 <span class="preprocessor">#endif </span><span class="comment">/*(choice of OS) */</span>
-00112     <span class="keywordflow">return</span> result;
-00113 }
-00114 
-<a name="l00115"></a><a class="code" href="a00273.html#a1">00115</a> <span class="keyword">inline</span> tick_count::interval_t::interval_t( <span class="keywordtype">double</span> sec )
-00116 {
-00117 <span class="preprocessor">#if _WIN32||_WIN64</span>
-00118 <span class="preprocessor"></span>    LARGE_INTEGER qpfreq;
-00119     QueryPerformanceFrequency(&qpfreq);
-00120     value = static_cast<long long>(sec*qpfreq.QuadPart);
-00121 <span class="preprocessor">#elif __linux__</span>
-00122 <span class="preprocessor"></span>    value = static_cast<long long>(sec*1E9);
-00123 <span class="preprocessor">#else </span><span class="comment">/* generic Unix */</span>
-00124     value = static_cast<long long>(sec*1E6);
-00125 <span class="preprocessor">#endif </span><span class="comment">/* (choice of OS) */</span>
-00126 }
-00127 
-<a name="l00128"></a><a class="code" href="a00272.html#n0">00128</a> <span class="keyword">inline</span> <a class="code" href="a00273.html">tick_count::interval_t</a> <a class="code" href="a00272.html#n0">operator-</a>( <span class="keyword">const</span> <a class="code" href="a00272.html">tick_count</a>& t1, <span class="keyword">const</span> <a class="code" href="a00272.html">tick_count</a>& t0 ) {
-00129     <span class="keywordflow">return</span> <a class="code" href="a00273.html">tick_count::interval_t</a>( t1.<a class="code" href="a00272.html#r0">my_count</a>-t0.<a class="code" href="a00272.html#r0">my_count</a> );
-00130 }
-00131 
-<a name="l00132"></a><a class="code" href="a00273.html#a2">00132</a> <span class="keyword">inline</span> <span class="keywordtype">double</span> tick_count::interval_t::seconds()<span class="keyword"> const </span>{
-00133 <span class="preprocessor">#if _WIN32||_WIN64</span>
-00134 <span class="preprocessor"></span>    LARGE_INTEGER qpfreq;
-00135     QueryPerformanceFrequency(&qpfreq);
-00136     <span class="keywordflow">return</span> value/(double)qpfreq.QuadPart;
-00137 <span class="preprocessor">#elif __linux__</span>
-00138 <span class="preprocessor"></span>    <span class="keywordflow">return</span> value*1E-9;
-00139 <span class="preprocessor">#else </span><span class="comment">/* generic Unix */</span>
-00140     <span class="keywordflow">return</span> value*1E-6;
-00141 <span class="preprocessor">#endif </span><span class="comment">/* (choice of OS) */</span>
-00142 }
-00143 
-00144 } <span class="comment">// namespace tbb</span>
-00145 
-00146 <span class="preprocessor">#endif </span><span class="comment">/* __TBB_tick_count_H */</span>
-00147 
-</pre></div><hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/annotated.html b/doc/html/annotated.html
index 97d1532..041f9b5 100644
--- a/doc/html/annotated.html
+++ b/doc/html/annotated.html
@@ -2,102 +2,77 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Class List</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindexHL" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.htm [...]
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li id="current"><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
 <h1>Class List</h1>Here are the classes, structs, unions and interfaces with brief descriptions:<table>
-  <tr><td class="indexkey"><a class="el" href="a00188.html">tbb::affinity_partitioner</a></td><td class="indexvalue">An affinity partitioner </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00189.html">tbb::internal::affinity_partitioner_base_v3</a></td><td class="indexvalue">Defines entry points into tbb run-time library; </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00190.html">tbb::aligned_space< T, N ></a></td><td class="indexvalue">Block of space aligned sufficiently to construct an array T with N elements </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00191.html">tbb::atomic< T ></a></td><td class="indexvalue">Primary template for atomic </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00192.html">tbb::internal::AtomicBackoff</a></td><td class="indexvalue">Class that implements exponential backoff </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00193.html">tbb::auto_partitioner</a></td><td class="indexvalue">An auto partitioner </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00194.html">tbb::bad_last_alloc</a></td><td class="indexvalue">Exception for concurrent containers </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00195.html">tbb::blocked_range< Value ></a></td><td class="indexvalue">A range over which to iterate </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00196.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="indexvalue">A 2-dimensional range that models the Range concept </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00197.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="indexvalue">A 3-dimensional range that models the Range concept </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a></td><td class="indexvalue">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5 </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00199.html">tbb::cache_aligned_allocator< void ></a></td><td class="indexvalue">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1 </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00200.html">tbb::captured_exception</a></td><td class="indexvalue">This class is used by TBB to propagate information about unhandled exceptions into the root thread </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="indexvalue">Unordered map from Key to T </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00202.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a></td><td class="indexvalue">Allows write access to elements and combines data access, locking, and garbage collection </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00203.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="indexvalue">Combines data access, locking, and garbage collection </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a></td><td class="indexvalue">A high-performance thread-safe queue </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a></td><td class="indexvalue">For internal use only </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00206.html">tbb::internal::concurrent_queue_base_v3::page</a></td><td class="indexvalue">Prefix on a page </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00207.html">tbb::internal::concurrent_queue_iterator< Container, Value ></a></td><td class="indexvalue">Meets requirements of a forward iterator for STL </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00208.html">tbb::internal::concurrent_queue_iterator_base_v3</a></td><td class="indexvalue">Type-independent portion of <a class="el" href="a00207.html">concurrent_queue_iterator</a> </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a></td><td class="indexvalue">Concurrent vector container </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a></td><td class="indexvalue">Base class of concurrent vector implementation </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00211.html">tbb::internal::concurrent_vector_base_v3::internal_segments_table</a></td><td class="indexvalue">Internal structure for compact() </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00212.html">tbb::internal::do_group_task_forward< Iterator, Body, Item ></a></td><td class="indexvalue">For internal use only </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00213.html">tbb::internal::do_iteration_task< Body, Item ></a></td><td class="indexvalue">For internal use only </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00214.html">tbb::internal::do_task_iter< Iterator, Body, Item ></a></td><td class="indexvalue">For internal use only </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00215.html">tbb::empty_task</a></td><td class="indexvalue">Task that does nothing. Useful for synchronization </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00216.html">tbb::filter</a></td><td class="indexvalue">A stage in a pipeline </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00217.html">tbb::final_scan_tag</a></td><td class="indexvalue">Used to indicate that the final scan is being performed </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00218.html">tbb::internal::final_sum< Range, Body ></a></td><td class="indexvalue">Performs final scan for a leaf </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00219.html">tbb::internal::finish_reduce< Body ></a></td><td class="indexvalue">Task type use to combine the partial results of parallel_reduce </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00220.html">tbb::internal::finish_reduce_with_affinity< Body ></a></td><td class="indexvalue">Task type use to combine the partial results of parallel_reduce with <a class="el" href="a00188.html">affinity_partitioner</a> </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00221.html">tbb::internal::finish_scan< Range, Body ></a></td><td class="indexvalue">Combine partial results </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00222.html">tbb::internal::hash_map_base</a></td><td class="indexvalue">Base class of <a class="el" href="a00201.html">concurrent_hash_map</a> </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a></td><td class="indexvalue">Meets requirements of a forward iterator for STL */ </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a></td><td class="indexvalue">Range class used with <a class="el" href="a00201.html">concurrent_hash_map</a> </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00225.html">tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction ></a></td><td class="indexvalue">Auxiliary class for parallel_reduce; for internal use only </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00226.html">tbb::movable_exception< ExceptionData ></a></td><td class="indexvalue">Template that can be used to implement exception that transfers arbitrary ExceptionData to the root thread </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00227.html">tbb::mutex</a></td><td class="indexvalue">Wrapper around the platform's native reader-writer lock </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00228.html">tbb::mutex::scoped_lock</a></td><td class="indexvalue">The scoped locking pattern </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00229.html">tbb::internal::no_assign</a></td><td class="indexvalue">Base class for types that should not be assigned </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00230.html">tbb::internal::no_copy</a></td><td class="indexvalue">Base class for types that should not be copied or assigned </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00231.html">tbb::parallel_do_feeder< Item ></a></td><td class="indexvalue">Class the user supplied algorithm body uses to add new tasks </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00232.html">tbb::internal::parallel_do_feeder_impl< Body, Item ></a></td><td class="indexvalue">For internal use only </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00233.html">tbb::internal::parallel_do_operator_selector< Body, Item ></a></td><td class="indexvalue">For internal use only </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00234.html">tbb::parallel_while< Body ></a></td><td class="indexvalue">Parallel iteration over a stream, with optional addition of more work </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00235.html">tbb::internal::partition_type_base</a></td><td class="indexvalue">Provides default methods for partition objects without affinity </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00236.html">tbb::pipeline</a></td><td class="indexvalue">A processing pipeling that applies filters to items </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00237.html">tbb::pre_scan_tag</a></td><td class="indexvalue">Used to indicate that the initial scan is being performed </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00238.html">tbb::queuing_mutex</a></td><td class="indexvalue">Queuing lock with local-only spinning </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00239.html">tbb::queuing_mutex::scoped_lock</a></td><td class="indexvalue">The scoped locking pattern </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00240.html">tbb::queuing_rw_mutex</a></td><td class="indexvalue">Reader-writer lock with local-only spinning </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00241.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td class="indexvalue">The scoped locking pattern </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00242.html">tbb::internal::quick_sort_body< RandomAccessIterator, Compare ></a></td><td class="indexvalue">Body class used to sort elements in a range that is smaller than the grainsize </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00243.html">tbb::internal::quick_sort_pretest_body< RandomAccessIterator, Compare ></a></td><td class="indexvalue">Body class used to test if elements in a range are presorted </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00244.html">tbb::internal::quick_sort_range< RandomAccessIterator, Compare ></a></td><td class="indexvalue">Range used in quicksort to split elements into subranges based on a value </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00245.html">tbb::recursive_mutex</a></td><td class="indexvalue">Mutex that allows recursive mutex acquisition </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00246.html">tbb::recursive_mutex::scoped_lock</a></td><td class="indexvalue">The scoped locking pattern </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00247.html">tbb::scalable_allocator< T ></a></td><td class="indexvalue">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5 </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00248.html">tbb::scalable_allocator< void ></a></td><td class="indexvalue">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1 </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00249.html">tbb::simple_partitioner</a></td><td class="indexvalue">A simple partitioner </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00250.html">tbb::spin_mutex</a></td><td class="indexvalue">A lock that occupies a single byte </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00251.html">tbb::spin_mutex::scoped_lock</a></td><td class="indexvalue">Represents acquisition of a mutex </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00252.html">tbb::spin_rw_mutex_v3</a></td><td class="indexvalue">Fast, unfair, spinning reader-writer lock with backoff and writer-preference </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00253.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="indexvalue">The scoped locking pattern </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00254.html">tbb::split</a></td><td class="indexvalue">Dummy type that distinguishes splitting constructor from copy constructor </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00255.html">tbb::internal::start_for< Range, Body, Partitioner ></a></td><td class="indexvalue">Task type used in parallel_for </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00256.html">tbb::internal::start_reduce< Range, Body, Partitioner ></a></td><td class="indexvalue">Task type used to split the work of parallel_reduce </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00257.html">tbb::internal::start_reduce_with_affinity< Range, Body ></a></td><td class="indexvalue">Task type used to split the work of parallel_reduce with <a class="el" href="a00188.html">affinity_partitioner</a> </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00258.html">tbb::internal::start_scan< Range, Body, Partitioner ></a></td><td class="indexvalue">Initial task to split the work </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00259.html">tbb::internal::strip< T ></a></td><td class="indexvalue">Strips its template type argument from 'cv' and '&' qualifiers </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00260.html">tbb::internal::sum_node< Range, Body ></a></td><td class="indexvalue">Split work to be done in the scan </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00261.html">tbb::task</a></td><td class="indexvalue">Base class for user-defined tasks </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00262.html">tbb::task_group_context</a></td><td class="indexvalue">Used to form groups of tasks </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00263.html">tbb::task_list</a></td><td class="indexvalue">A list of children </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00264.html">tbb::internal::task_prefix</a></td><td class="indexvalue">Memory prefix to a task object </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00265.html">tbb::task_scheduler_init</a></td><td class="indexvalue">Class representing reference to tbb scheduler </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00266.html">tbb::tbb_allocator< T ></a></td><td class="indexvalue">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5 </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00267.html">tbb::tbb_allocator< void ></a></td><td class="indexvalue">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1 </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00268.html">tbb::tbb_exception</a></td><td class="indexvalue">Interface to be implemented by all exceptions TBB recognizes and propagates across the threads </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00269.html">tbb::tbb_hash_compare< T ></a></td><td class="indexvalue">hash_compare - default argument </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a></td><td class="indexvalue">Versioned thread class </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00271.html">tbb::internal::thread_closure_1< F, X ></a></td><td class="indexvalue">Structure used to pass user function with 1 argument to thread </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00272.html">tbb::tick_count</a></td><td class="indexvalue">Absolute timestamp </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00273.html">tbb::tick_count::interval_t</a></td><td class="indexvalue">Relative time interval </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a></td><td class="indexvalue">Meets requirements of a forward iterator for STL and a Value for a <a class="el" href="a00195.html">blocked_range</a>.*/ </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00275.html">tbb::internal::version_tag_v3</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00276.html">tbb::internal::while_group_task< Body ></a></td><td class="indexvalue">For internal use only </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00277.html">tbb::internal::while_iteration_task< Body ></a></td><td class="indexvalue">For internal use only </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00278.html">tbb::internal::while_task< Stream, Body ></a></td><td class="indexvalue">For internal use only </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00279.html">tbb::internal::work_around_alignment_bug< Size, T ></a></td><td class="indexvalue">Work around for bug in GNU 3.2 and MSVC compilers </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00091.html">tbb::affinity_partitioner</a></td><td class="indexvalue">An affinity partitioner </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00092.html">tbb::aligned_space< T, N ></a></td><td class="indexvalue">Block of space aligned sufficiently to construct an array T with N elements </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00093.html">tbb::atomic< T ></a></td><td class="indexvalue">Primary template for atomic </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00094.html">tbb::internal::AtomicBackoff</a></td><td class="indexvalue">Class that implements exponential backoff </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00095.html">tbb::auto_partitioner</a></td><td class="indexvalue">An auto partitioner </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00096.html">tbb::bad_last_alloc</a></td><td class="indexvalue">Exception for concurrent containers </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00097.html">tbb::blocked_range< Value ></a></td><td class="indexvalue">A range over which to iterate </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00098.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="indexvalue">A 2-dimensional range that models the Range concept </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00099.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="indexvalue">A 3-dimensional range that models the Range concept </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a></td><td class="indexvalue">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5 </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00101.html">tbb::cache_aligned_allocator< void ></a></td><td class="indexvalue">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1 </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00102.html">tbb::captured_exception</a></td><td class="indexvalue">This class is used by TBB to propagate information about unhandled exceptions into the root thread </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="indexvalue">Unordered map from Key to T </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00104.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a></td><td class="indexvalue">Allows write access to elements and combines data access, locking, and garbage collection </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00105.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="indexvalue">Combines data access, locking, and garbage collection </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a></td><td class="indexvalue">A high-performance thread-safe queue </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a></td><td class="indexvalue">Concurrent vector container </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00108.html">tbb::empty_task</a></td><td class="indexvalue">Task that does nothing. Useful for synchronization </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00109.html">tbb::filter</a></td><td class="indexvalue">A stage in a pipeline </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00110.html">tbb::final_scan_tag</a></td><td class="indexvalue">Used to indicate that the final scan is being performed </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00111.html">tbb::movable_exception< ExceptionData ></a></td><td class="indexvalue">Template that can be used to implement exception that transfers arbitrary ExceptionData to the root thread </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00112.html">tbb::mutex</a></td><td class="indexvalue">Wrapper around the platform's native reader-writer lock </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00113.html">tbb::mutex::scoped_lock</a></td><td class="indexvalue">The scoped locking pattern </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00114.html">tbb::parallel_do_feeder< Item ></a></td><td class="indexvalue">Class the user supplied algorithm body uses to add new tasks </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00115.html">tbb::parallel_while< Body ></a></td><td class="indexvalue">Parallel iteration over a stream, with optional addition of more work </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00116.html">tbb::pipeline</a></td><td class="indexvalue">A processing pipeling that applies filters to items </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00117.html">tbb::pre_scan_tag</a></td><td class="indexvalue">Used to indicate that the initial scan is being performed </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00118.html">tbb::queuing_mutex</a></td><td class="indexvalue">Queuing lock with local-only spinning </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00119.html">tbb::queuing_mutex::scoped_lock</a></td><td class="indexvalue">The scoped locking pattern </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00120.html">tbb::queuing_rw_mutex</a></td><td class="indexvalue">Reader-writer lock with local-only spinning </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00121.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td class="indexvalue">The scoped locking pattern </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00122.html">tbb::recursive_mutex</a></td><td class="indexvalue">Mutex that allows recursive mutex acquisition </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00123.html">tbb::recursive_mutex::scoped_lock</a></td><td class="indexvalue">The scoped locking pattern </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00124.html">tbb::scalable_allocator< T ></a></td><td class="indexvalue">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5 </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00125.html">tbb::scalable_allocator< void ></a></td><td class="indexvalue">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1 </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00126.html">tbb::simple_partitioner</a></td><td class="indexvalue">A simple partitioner </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00127.html">tbb::spin_mutex</a></td><td class="indexvalue">A lock that occupies a single byte </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00128.html">tbb::spin_mutex::scoped_lock</a></td><td class="indexvalue">Represents acquisition of a mutex </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00129.html">tbb::spin_rw_mutex_v3</a></td><td class="indexvalue">Fast, unfair, spinning reader-writer lock with backoff and writer-preference </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00130.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="indexvalue">The scoped locking pattern </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00131.html">tbb::split</a></td><td class="indexvalue">Dummy type that distinguishes splitting constructor from copy constructor </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00132.html">tbb::task</a></td><td class="indexvalue">Base class for user-defined tasks </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00133.html">tbb::task_group_context</a></td><td class="indexvalue">Used to form groups of tasks </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00134.html">tbb::task_list</a></td><td class="indexvalue">A list of children </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00135.html">tbb::task_scheduler_init</a></td><td class="indexvalue">Class representing reference to tbb scheduler </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00136.html">tbb::tbb_allocator< T ></a></td><td class="indexvalue">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5 </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00137.html">tbb::tbb_allocator< void ></a></td><td class="indexvalue">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1 </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00138.html">tbb::tbb_exception</a></td><td class="indexvalue">Interface to be implemented by all exceptions TBB recognizes and propagates across the threads </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00139.html">tbb::tbb_hash_compare< T ></a></td><td class="indexvalue">Hash_compare - default argument </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00140.html">tbb::tick_count</a></td><td class="indexvalue">Absolute timestamp </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00141.html">tbb::tick_count::interval_t</a></td><td class="indexvalue">Relative time interval </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00142.html">tbb::internal::work_around_alignment_bug< Size, T ></a></td><td class="indexvalue">Work around for bug in GNU 3.2 and MSVC compilers </td></tr>
 </table>
 <hr>
 <p></p>
diff --git a/doc/html/concepts.html b/doc/html/concepts.html
index 9880d31..5bc1b55 100644
--- a/doc/html/concepts.html
+++ b/doc/html/concepts.html
@@ -2,13 +2,24 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>TBB concepts</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="index.html">Main Page</a></div>
 <h1><a class="anchor" name="concepts">TBB concepts</a></h1>A concept is a set of requirements to a type, which are necessary and sufficient for the type to model a particular behavior or a set of behaviors. Some concepts are specific to a particular algorithm (e.g. algorithm body), while other ones are common to several algorithms (e.g. range concept).<p>
 All TBB algorithms make use of different classes implementing various concepts. Implementation classes are supplied by the user as type arguments of template parameters and/or as objects passed as function call arguments. The library provides predefined implementations of some concepts (e.g. several kinds of <a class="el" href="range_req.html">ranges</a>), while other ones must always be implemented by the user.<p>
 TBB defines a set of minimal requirements each concept must conform to. Here is the list of different concepts hyperlinked to the corresponding requirements specifications:<ul>
-<li>range_req</li><li>parallel_do_body_req</li><li>parallel_for_body_req</li><li>parallel_reduce_body_req</li><li>parallel_scan_body_req</li><li>parallel_sort_iter_req </li></ul>
+<li><a class="el" href="range_req.html">Requirements on range concept</a></li><li><a class="el" href="parallel_do_body_req.html">Requirements on parallel_do body</a></li><li><a class="el" href="parallel_for_body_req.html">Requirements on parallel_for body</a></li><li><a class="el" href="parallel_reduce_body_req.html">Requirements on parallel_reduce body</a></li><li><a class="el" href="parallel_scan_body_req.html">Requirements on parallel_scan body</a></li><li><a class="el" href="parallel [...]
 <hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/deprecated.html b/doc/html/deprecated.html
index 9f07048..48d9466 100644
--- a/doc/html/deprecated.html
+++ b/doc/html/deprecated.html
@@ -2,12 +2,21 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Deprecated List</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
 <h1><a class="anchor" name="deprecated">Deprecated List</a></h1><a class="anchor" name="_deprecated000001"></a> <dl>
-<dt>Member <a class="el" href="a00216.html#w4w3">tbb::filter::serial</a>  </dt>
-<dd>use serial_in_order instead</dd>
+<dt>Member <a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cff8662693d85bd1cd3df052b761edd237">tbb::filter::serial</a>  </dt>
+<dd>use serial_in_order instead </dd>
 </dl>
 <hr>
 <p></p>
diff --git a/doc/html/doxygen.css b/doc/html/doxygen.css
index 1d4d631..5d58369 100644
--- a/doc/html/doxygen.css
+++ b/doc/html/doxygen.css
@@ -1,14 +1,24 @@
 BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
 	font-family: Geneva, Arial, Helvetica, sans-serif;
 }
+BODY,TD {
+       font-size: 90%;
+}
 H1 {
 	text-align: center;
+       font-size: 160%;
+}
+H2 {
+       font-size: 120%;
+}
+H3 {
+       font-size: 100%;
 }
 CAPTION { font-weight: bold }
 DIV.qindex {
 	width: 100%;
-	background-color: #eeeeff;
-	border: 1px solid #b0b0b0;
+	background-color: #e8eef2;
+	border: 1px solid #84b0c7;
 	text-align: center;
 	margin: 2px;
 	padding: 2px;
@@ -16,13 +26,24 @@ DIV.qindex {
 }
 DIV.nav {
 	width: 100%;
-	background-color: #eeeeff;
-	border: 1px solid #b0b0b0;
+	background-color: #e8eef2;
+	border: 1px solid #84b0c7;
 	text-align: center;
 	margin: 2px;
 	padding: 2px;
 	line-height: 140%;
 }
+DIV.navtab {
+       background-color: #e8eef2;
+       border: 1px solid #84b0c7;
+       text-align: center;
+       margin: 2px;
+       margin-right: 15px;
+       padding: 2px;
+}
+TD.navtab {
+       font-size: 70%;
+}
 A.qindex {
        text-decoration: none;
        font-weight: bold;
@@ -59,7 +80,8 @@ A.codeRef:visited { font-weight: normal; color: #0000FF}
 A:hover { text-decoration: none; background-color: #f2f2ff }
 DL.el { margin-left: -1cm }
 .fragment {
-       font-family: monospace
+       font-family: monospace, fixed;
+       font-size: 95%;
 }
 PRE.fragment {
 	border: 1px solid #CCCCCC;
@@ -74,16 +96,14 @@ PRE.fragment {
 	padding-bottom: 4px;
 }
 DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
-TD.md { background-color: #F4F4FB; font-weight: bold; }
-TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; }
-TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; }
+
 DIV.groupHeader {
        margin-left: 16px;
        margin-top: 12px;
        margin-bottom: 6px;
        font-weight: bold;
 }
-DIV.groupText { margin-left: 16px; font-style: italic; font-size: 14px }
+DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% }
 BODY {
 	background: white;
 	color: black;
@@ -91,7 +111,7 @@ BODY {
 	margin-left: 20px;
 }
 TD.indexkey {
-	background-color: #eeeeff;
+	background-color: #e8eef2;
 	font-weight: bold;
 	padding-right  : 10px;
 	padding-top    : 2px;
@@ -104,7 +124,7 @@ TD.indexkey {
 	border: 1px solid #CCCCCC;
 }
 TD.indexvalue {
-	background-color: #eeeeff;
+	background-color: #e8eef2;
 	font-style: italic;
 	padding-right  : 10px;
 	padding-top    : 2px;
@@ -129,16 +149,9 @@ SPAN.comment       { color: #800000 }
 SPAN.preprocessor  { color: #806020 }
 SPAN.stringliteral { color: #002080 }
 SPAN.charliteral   { color: #008080 }
-.mdTable {
-	border: 1px solid #868686;
-	background-color: #F4F4FB;
-}
-.mdRow {
-	padding: 8px 10px;
-}
 .mdescLeft {
        padding: 0px 8px 4px 8px;
-	font-size: 12px;
+	font-size: 80%;
 	font-style: italic;
 	background-color: #FAFAFA;
 	border-top: 1px none #E0E0E0;
@@ -149,7 +162,7 @@ SPAN.charliteral   { color: #008080 }
 }
 .mdescRight {
        padding: 0px 8px 4px 8px;
-	font-size: 12px;
+	font-size: 80%;
 	font-style: italic;
 	background-color: #FAFAFA;
 	border-top: 1px none #E0E0E0;
@@ -174,7 +187,7 @@ SPAN.charliteral   { color: #008080 }
 	border-bottom-style: none;
 	border-left-style: none;
 	background-color: #FAFAFA;
-	font-size: 12px;
+	font-size: 80%;
 }
 .memItemRight {
 	padding: 1px 8px 0px 8px;
@@ -192,7 +205,7 @@ SPAN.charliteral   { color: #008080 }
 	border-bottom-style: none;
 	border-left-style: none;
 	background-color: #FAFAFA;
-	font-size: 13px;
+	font-size: 80%;
 }
 .memTemplItemLeft {
 	padding: 1px 0px 0px 8px;
@@ -210,7 +223,7 @@ SPAN.charliteral   { color: #008080 }
 	border-bottom-style: none;
 	border-left-style: none;
 	background-color: #FAFAFA;
-	font-size: 12px;
+	font-size: 80%;
 }
 .memTemplItemRight {
 	padding: 1px 8px 0px 8px;
@@ -228,7 +241,7 @@ SPAN.charliteral   { color: #008080 }
 	border-bottom-style: none;
 	border-left-style: none;
 	background-color: #FAFAFA;
-	font-size: 13px;
+	font-size: 80%;
 }
 .memTemplParams {
 	padding: 1px 0px 0px 8px;
@@ -247,7 +260,7 @@ SPAN.charliteral   { color: #008080 }
 	border-left-style: none;
        color: #606060;
 	background-color: #FAFAFA;
-	font-size: 12px;
+	font-size: 80%;
 }
 .search     { color: #003399;
               font-weight: bold;
@@ -259,13 +272,87 @@ FORM.search {
 INPUT.search { font-size: 75%;
                color: #000080;
                font-weight: normal;
-               background-color: #eeeeff;
+               background-color: #e8eef2;
 }
 TD.tiny      { font-size: 75%;
 }
 a {
-	color: #252E78;
+	color: #1A41A8;
 }
 a:visited {
-	color: #3D2185;
+	color: #2A3798;
+}
+.dirtab { padding: 4px;
+          border-collapse: collapse;
+          border: 1px solid #84b0c7;
+}
+TH.dirtab { background: #e8eef2;
+            font-weight: bold;
+}
+HR { height: 1px;
+     border: none;
+     border-top: 1px solid black;
+}
+
+/* Style for detailed member documentation */
+.memtemplate {
+  font-size: 80%;
+  color: #606060;
+  font-weight: normal;
+} 
+.memnav { 
+  background-color: #e8eef2;
+  border: 1px solid #84b0c7;
+  text-align: center;
+  margin: 2px;
+  margin-right: 15px;
+  padding: 2px;
+}
+.memitem {
+  padding: 4px;
+  background-color: #eef3f5;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #dedeee;
+  -moz-border-radius: 8px 8px 8px 8px;
+}
+.memname {
+  white-space: nowrap;
+  font-weight: bold;
+}
+.memdoc{
+  padding-left: 10px;
+}
+.memproto {
+  background-color: #d5e1e8;
+  width: 100%;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #84b0c7;
+  font-weight: bold;
+  -moz-border-radius: 8px 8px 8px 8px;
+}
+.paramkey {
+  text-align: right;
+}
+.paramtype {
+  white-space: nowrap;
+}
+.paramname {
+  color: #602020;
+  font-style: italic;
+}
+/* End Styling for detailed member documentation */
+
+/* for the tree view */
+.ftvtree {
+	font-family: sans-serif;
+	margin:0.5em;
 }
+.directory { font-size: 9pt; font-weight: bold; }
+.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; }
+.directory > h3 { margin-top: 0; }
+.directory p { margin: 0px; white-space: nowrap; }
+.directory div { display: none; margin: 0px; }
+.directory img { vertical-align: -30%; }
+
diff --git a/doc/html/files.html b/doc/html/files.html
index a19e2ae..0553d16 100644
--- a/doc/html/files.html
+++ b/doc/html/files.html
@@ -2,47 +2,61 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>File Index</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindexHL" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.htm [...]
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li id="current"><a href="files.html"><span>File List</span></a></li>
+    <li><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
 <h1>File List</h1>Here is a list of all documented files with brief descriptions:<table>
-  <tr><td class="indexkey"><b>_tbb_windef.h</b> <a href="a00322.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>aligned_space.h</b> <a href="a00323.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>atomic.h</b> <a href="a00324.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>blocked_range.h</b> <a href="a00325.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>blocked_range2d.h</b> <a href="a00326.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>blocked_range3d.h</b> <a href="a00327.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>cache_aligned_allocator.h</b> <a href="a00328.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>concurrent_hash_map.h</b> <a href="a00329.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>concurrent_queue.h</b> <a href="a00330.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>concurrent_vector.h</b> <a href="a00331.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>mutex.h</b> <a href="a00332.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>null_mutex.h</b> <a href="a00333.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>null_rw_mutex.h</b> <a href="a00334.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>parallel_do.h</b> <a href="a00335.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>parallel_for.h</b> <a href="a00336.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>parallel_reduce.h</b> <a href="a00337.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>parallel_scan.h</b> <a href="a00338.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>parallel_sort.h</b> <a href="a00339.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>parallel_while.h</b> <a href="a00340.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>partitioner.h</b> <a href="a00341.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>pipeline.h</b> <a href="a00342.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>queuing_mutex.h</b> <a href="a00343.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>queuing_rw_mutex.h</b> <a href="a00344.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>recursive_mutex.h</b> <a href="a00345.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00304.html">scalable_allocator.h</a> <a href="a00346.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>spin_mutex.h</b> <a href="a00347.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>spin_rw_mutex.h</b> <a href="a00348.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>task.h</b> <a href="a00349.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>task_scheduler_init.h</b> <a href="a00350.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>task_scheduler_observer.h</b> <a href="a00351.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>tbb_allocator.h</b> <a href="a00352.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>tbb_exception.h</b> <a href="a00353.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>tbb_machine.h</b> <a href="a00354.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>tbb_profiling.h</b> <a href="a00355.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>tbb_stddef.h</b> <a href="a00356.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>tbb_thread.h</b> <a href="a00357.html">[code]</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><b>tick_count.h</b> <a href="a00358.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>_tbb_windef.h</b> <a href="a00189.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>aligned_space.h</b> <a href="a00191.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>atomic.h</b> <a href="a00193.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>blocked_range.h</b> <a href="a00200.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>blocked_range2d.h</b> <a href="a00201.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>blocked_range3d.h</b> <a href="a00202.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>cache_aligned_allocator.h</b> <a href="a00203.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>concurrent_hash_map.h</b> <a href="a00205.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>concurrent_queue.h</b> <a href="a00213.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>concurrent_vector.h</b> <a href="a00219.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>mutex.h</b> <a href="a00228.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>null_mutex.h</b> <a href="a00229.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>null_rw_mutex.h</b> <a href="a00232.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>parallel_do.h</b> <a href="a00234.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>parallel_for.h</b> <a href="a00243.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>parallel_reduce.h</b> <a href="a00245.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>parallel_scan.h</b> <a href="a00251.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>parallel_sort.h</b> <a href="a00256.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>parallel_while.h</b> <a href="a00260.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>partitioner.h</b> <a href="a00264.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>pipeline.h</b> <a href="a00269.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>queuing_mutex.h</b> <a href="a00270.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>queuing_rw_mutex.h</b> <a href="a00271.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>recursive_mutex.h</b> <a href="a00272.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00167.html">scalable_allocator.h</a> <a href="a00273.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>spin_mutex.h</b> <a href="a00274.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>spin_rw_mutex.h</b> <a href="a00275.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>task.h</b> <a href="a00276.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>task_scheduler_init.h</b> <a href="a00285.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>task_scheduler_observer.h</b> <a href="a00286.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>tbb_allocator.h</b> <a href="a00288.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>tbb_exception.h</b> <a href="a00289.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>tbb_machine.h</b> <a href="a00290.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>tbb_profiling.h</b> <a href="a00293.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>tbb_stddef.h</b> <a href="a00294.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>tbb_thread.h</b> <a href="a00299.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>tick_count.h</b> <a href="a00307.html">[code]</a></td><td class="indexvalue"></td></tr>
 </table>
 <hr>
 <p></p>
diff --git a/doc/html/functions.html b/doc/html/functions.html
index 1554171..7069415 100644
--- a/doc/html/functions.html
+++ b/doc/html/functions.html
@@ -2,262 +2,264 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Class Members</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.htm [...]
-<div class="qindex"><a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_type.html">Typedefs</a> | <a class="qindex" href="functions_enum.html">Enumerations</a> | <a class="qindex" href="functions_eval.html">Enumeration values</a> | <a class="qindex" href="functions_rela.html">Related Functions</a></div>
-<div class="qindex"><a class="qindex" href="#index_a">a</a> | <a class="qindex" href="#index_b">b</a> | <a class="qindex" href="#index_c">c</a> | <a class="qindex" href="#index_d">d</a> | <a class="qindex" href="#index_e">e</a> | <a class="qindex" href="#index_f">f</a> | <a class="qindex" href="#index_g">g</a> | <a class="qindex" href="#index_h">h</a> | <a class="qindex" href="#index_i">i</a> | <a class="qindex" href="#index_j">j</a> | <a class="qindex" href="#index_m">m</a> | <a class=" [...]
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li id="current"><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li id="current"><a href="functions.html"><span>All</span></a></li>
+    <li><a href="functions_func.html"><span>Functions</span></a></li>
+    <li><a href="functions_vars.html"><span>Variables</span></a></li>
+    <li><a href="functions_type.html"><span>Typedefs</span></a></li>
+    <li><a href="functions_enum.html"><span>Enumerations</span></a></li>
+    <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
+    <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
+  </ul>
+</div>
+<div class="tabs">
+  <ul>
+    <li><a href="#index_a"><span>a</span></a></li>
+    <li><a href="#index_b"><span>b</span></a></li>
+    <li><a href="#index_c"><span>c</span></a></li>
+    <li><a href="#index_d"><span>d</span></a></li>
+    <li><a href="#index_e"><span>e</span></a></li>
+    <li><a href="#index_f"><span>f</span></a></li>
+    <li><a href="#index_g"><span>g</span></a></li>
+    <li><a href="#index_i"><span>i</span></a></li>
+    <li><a href="#index_m"><span>m</span></a></li>
+    <li><a href="#index_n"><span>n</span></a></li>
+    <li><a href="#index_o"><span>o</span></a></li>
+    <li><a href="#index_p"><span>p</span></a></li>
+    <li><a href="#index_q"><span>q</span></a></li>
+    <li><a href="#index_r"><span>r</span></a></li>
+    <li><a href="#index_s"><span>s</span></a></li>
+    <li><a href="#index_t"><span>t</span></a></li>
+    <li><a href="#index_u"><span>u</span></a></li>
+    <li><a href="#index_v"><span>v</span></a></li>
+    <li><a href="#index_w"><span>w</span></a></li>
+    <li><a href="#index_~"><span>~</span></a></li>
+  </ul>
+</div>
 
 <p>
-
+Here is a list of all documented class members with links to the class documentation for each member:
 <p>
-Here is a list of all documented class members with links to the class documentation for each member:<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
+<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
 <li>acquire()
-: <a class="el" href="a00253.html#a3">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00251.html#a2">tbb::spin_mutex::scoped_lock</a>, <a class="el" href="a00246.html#a3">tbb::recursive_mutex::scoped_lock</a>, <a class="el" href="a00241.html#a3">tbb::queuing_rw_mutex::scoped_lock</a>, <a class="el" href="a00239.html#a3">tbb::queuing_mutex::scoped_lock</a>, <a class="el" href="a00228.html#a3">tbb::mutex::scoped_lock</a><li>add()
-: <a class="el" href="a00234.html#a3">tbb::parallel_while< Body ></a>, <a class="el" href="a00231.html#a0">tbb::parallel_do_feeder< Item ></a><li>add_filter()
-: <a class="el" href="a00236.html#a2">tbb::pipeline</a><li>add_to_depth()
-: <a class="el" href="a00261.html#a12">tbb::task</a><li>advance()
-: <a class="el" href="a00208.html#b4">tbb::internal::concurrent_queue_iterator_base_v3</a><li>affinity()
-: <a class="el" href="a00261.html#a25">tbb::task</a><li>affinity_id
-: <a class="el" href="a00261.html#w1">tbb::task</a><li>allocate()
-: <a class="el" href="a00266.html#a5">tbb::tbb_allocator< T ></a>, <a class="el" href="a00247.html#a5">tbb::scalable_allocator< T ></a>, <a class="el" href="a00198.html#a5">tbb::cache_aligned_allocator< T ></a><li>allocate_additional_child_of()
-: <a class="el" href="a00261.html#a4">tbb::task</a><li>allocate_child()
-: <a class="el" href="a00261.html#a3">tbb::task</a><li>allocate_continuation()
-: <a class="el" href="a00261.html#a2">tbb::task</a><li>allocate_page()
-: <a class="el" href="a00205.html#b8">tbb::internal::concurrent_queue_base_v3</a><li>allocate_root()
-: <a class="el" href="a00261.html#e1">tbb::task</a><li>allocated
-: <a class="el" href="a00261.html#w8w5">tbb::task</a><li>allocator_type
-: <a class="el" href="a00266.html#e0">tbb::tbb_allocator< T ></a>, <a class="el" href="a00204.html#w1">tbb::concurrent_queue< T, A ></a><li>assign()
-: <a class="el" href="a00209.html#a38">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00208.html#b3">tbb::internal::concurrent_queue_iterator_base_v3</a>, <a class="el" href="a00205.html#b12">tbb::internal::concurrent_queue_base_v3</a><li>at()
-: <a class="el" href="a00209.html#a15">tbb::concurrent_vector< T, A ></a><li>automatic
-: <a class="el" href="a00265.html#s0">tbb::task_scheduler_init</a></ul>
+: <a class="el" href="a00130.html#b0b646ec5be02a127d159bbb7ca65353">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00128.html#3ee3c338732b1f64b0b32a757807a30d">tbb::spin_mutex::scoped_lock</a>, <a class="el" href="a00123.html#7fb04da37cccf8c99b1f9102d9074f9a">tbb::recursive_mutex::scoped_lock</a>, <a class="el" href="a00121.html#a8dd5ab8686e76de21587544dbb681e0">tbb::queuing_rw_mutex::scoped_lock</a>, <a class="el" href="a00119.html#533e4fc8355ee321206a0609c42d909d">tbb::qu [...]
+: <a class="el" href="a00115.html#e131c560057a58229992b61eb8dba4c6">tbb::parallel_while< Body ></a>, <a class="el" href="a00114.html#40baaf0f6856f4491dd0adf896c93516">tbb::parallel_do_feeder< Item ></a><li>add_filter()
+: <a class="el" href="a00116.html#38fb5c9c8395dd6f89a4ae2011a83e0d">tbb::pipeline</a><li>add_to_depth()
+: <a class="el" href="a00132.html#b0f98c633647fc73b978fe4cd2277ac4">tbb::task</a><li>affinity()
+: <a class="el" href="a00132.html#3a920a56b0bcf2801518fb45b2c9d2be">tbb::task</a><li>affinity_id
+: <a class="el" href="a00132.html#d61bb32389d3857bf7511d69beaafb76">tbb::task</a><li>allocate()
+: <a class="el" href="a00136.html#f6cb487b1bdce0b581f265a77dca6d53">tbb::tbb_allocator< T ></a>, <a class="el" href="a00124.html#726b1586d05d44665a36e1c7b2699bfd">tbb::scalable_allocator< T ></a>, <a class="el" href="a00100.html#4cdeea67af6c1fcd8f1d5e9c4cab61e8">tbb::cache_aligned_allocator< T ></a><li>allocate_additional_child_of()
+: <a class="el" href="a00132.html#43bfe64c0e9333c0ca895cc0c375512b">tbb::task</a><li>allocate_child()
+: <a class="el" href="a00132.html#1ff794f7053cd9148d5f280fbf07377f">tbb::task</a><li>allocate_continuation()
+: <a class="el" href="a00132.html#1434c79a5138993269d034008bff7329">tbb::task</a><li>allocate_root()
+: <a class="el" href="a00132.html#8ccc518caf31075a3e073996d2d240a4">tbb::task</a><li>allocated
+: <a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293ebe94d3348dd038e41107819f00c1884c">tbb::task</a><li>allocator_type
+: <a class="el" href="a00136.html#78701e7454ef8e1a25b5acd364367080">tbb::tbb_allocator< T ></a>, <a class="el" href="a00106.html#94ef8d1e9a05c53e3b637ea5eb553a6d">tbb::concurrent_queue< T, A ></a><li>assign()
+: <a class="el" href="a00107.html#93a06b3112cb804f42f40efb5e7387b4">tbb::concurrent_vector< T, A ></a><li>at()
+: <a class="el" href="a00107.html#23e14a38af748edff96a7adc3a0f1c58">tbb::concurrent_vector< T, A ></a><li>automatic
+: <a class="el" href="a00135.html#8f5988e2b0fbb2d533fcbb7f2583743f">tbb::task_scheduler_init</a></ul>
 <h3><a class="anchor" name="index_b">- b -</a></h3><ul>
 <li>back()
-: <a class="el" href="a00209.html#a35">tbb::concurrent_vector< T, A ></a><li>begin()
-: <a class="el" href="a00209.html#a26">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00195.html#a2">tbb::blocked_range< Value ></a>, <a class="el" href="a00190.html#a0">tbb::aligned_space< T, N ></a><li>blocked_range()
-: <a class="el" href="a00195.html#a8">tbb::blocked_range< Value ></a></ul>
+: <a class="el" href="a00107.html#bd518e204107d07fd08d0ec5bdfd383d">tbb::concurrent_vector< T, A ></a><li>begin()
+: <a class="el" href="a00107.html#78a06182276ff758788d4c0623ae0d71">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00097.html#18d2258400756ac1446dac7676b18df3">tbb::blocked_range< Value ></a>, <a class="el" href="a00092.html#0d702fc6b9e9d061ace3501b3c861cdf">tbb::aligned_space< T, N ></a><li>blocked_range()
+: <a class="el" href="a00097.html#4c0efd2be3f96a0ab3ba5085e8b3fcc7">tbb::blocked_range< Value ></a></ul>
 <h3><a class="anchor" name="index_c">- c -</a></h3><ul>
 <li>cancel_group_execution()
-: <a class="el" href="a00261.html#a27">tbb::task</a>, <a class="el" href="a00262.html#a3">tbb::task_group_context</a><li>capacity()
-: <a class="el" href="a00209.html#a20">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00204.html#a8">tbb::concurrent_queue< T, A ></a><li>clear()
-: <a class="el" href="a00263.html#a5">tbb::task_list</a>, <a class="el" href="a00236.html#a5">tbb::pipeline</a>, <a class="el" href="a00209.html#a40">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00204.html#a11">tbb::concurrent_queue< T, A ></a>, <a class="el" href="a00201.html#a4">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>cols()
-: <a class="el" href="a00197.html#a7">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>, <a class="el" href="a00196.html#a6">tbb::blocked_range2d< RowValue, ColValue ></a><li>compact()
-: <a class="el" href="a00209.html#a22">tbb::concurrent_vector< T, A ></a><li>concurrent_hash_map()
-: <a class="el" href="a00201.html#a2">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>concurrent_queue()
-: <a class="el" href="a00204.html#a17">tbb::concurrent_queue< T, A ></a><li>concurrent_queue_iterator()
-: <a class="el" href="a00207.html#a2">tbb::internal::concurrent_queue_iterator< Container, Value ></a><li>concurrent_queue_iterator_base_v3()
-: <a class="el" href="a00208.html#b2">tbb::internal::concurrent_queue_iterator_base_v3</a><li>concurrent_vector()
-: <a class="el" href="a00209.html#a5">tbb::concurrent_vector< T, A ></a><li>const_accessor()
-: <a class="el" href="a00203.html#a4">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a><li>const_iterator
-: <a class="el" href="a00195.html#w0">tbb::blocked_range< Value ></a><li>const_reference
-: <a class="el" href="a00204.html#w3">tbb::concurrent_queue< T, A ></a><li>construct()
-: <a class="el" href="a00266.html#a8">tbb::tbb_allocator< T ></a>, <a class="el" href="a00198.html#a8">tbb::cache_aligned_allocator< T ></a><li>count()
-: <a class="el" href="a00201.html#a19">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></ul>
+: <a class="el" href="a00132.html#0f3fb4aac549ab642022450a4bd13326">tbb::task</a>, <a class="el" href="a00133.html#8bcdfdf4e6bfb76125b6de15c00b571d">tbb::task_group_context</a><li>capacity()
+: <a class="el" href="a00107.html#3ed6b9ae7217af5103d974045b6f5cd5">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00106.html#95796a6ad29ea6fe102ac1663a776d07">tbb::concurrent_queue< T, A ></a><li>clear()
+: <a class="el" href="a00134.html#fce446ee13e025969945328f3ff59b95">tbb::task_list</a>, <a class="el" href="a00116.html#2c84aef5b834b555ee220b176e25931e">tbb::pipeline</a>, <a class="el" href="a00107.html#26f937a359a66b6aae904c3cd9a3c444">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00106.html#8a6a8a7a8d977d86ae8bd254b9794af1">tbb::concurrent_queue< T, A ></a>, <a class="el" href="a00103.html#36bcd50fd5383f3682032323b2d74333">tbb::concurrent_hash_map< Key, T, H [...]
+: <a class="el" href="a00099.html#3336ba9480fd6c43e158f9beb024c050">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>, <a class="el" href="a00098.html#392a46759af2c884957115771affa7f4">tbb::blocked_range2d< RowValue, ColValue ></a><li>compact()
+: <a class="el" href="a00107.html#1693d1da41b1a8235871be9c6633be35">tbb::concurrent_vector< T, A ></a><li>concurrent_hash_map()
+: <a class="el" href="a00103.html#51cccc7b42e83884462dcadede034822">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>concurrent_queue()
+: <a class="el" href="a00106.html#d3ec1af9c793007ec2ecbdcf637f8ec5">tbb::concurrent_queue< T, A ></a><li>concurrent_vector()
+: <a class="el" href="a00107.html#4450de83c5862ea4bcd9443fd7e67419">tbb::concurrent_vector< T, A ></a><li>const_accessor()
+: <a class="el" href="a00105.html#2a73cc49914e218e579eb77d3d9d6551">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a><li>const_iterator
+: <a class="el" href="a00097.html#1a8d05842c2b3dfc177bc4d347e4cef7">tbb::blocked_range< Value ></a><li>const_reference
+: <a class="el" href="a00106.html#981c7c13a4aef3d03f35797ebe214d59">tbb::concurrent_queue< T, A ></a><li>construct()
+: <a class="el" href="a00136.html#ab228ab9e324ed041c2226e1d717df5f">tbb::tbb_allocator< T ></a>, <a class="el" href="a00100.html#958ee8745c86c275bfc9533af565e017">tbb::cache_aligned_allocator< T ></a><li>count()
+: <a class="el" href="a00103.html#345daf26f2f7e2b4d93382fea80b3a7f">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></ul>
 <h3><a class="anchor" name="index_d">- d -</a></h3><ul>
 <li>deallocate()
-: <a class="el" href="a00266.html#a6">tbb::tbb_allocator< T ></a>, <a class="el" href="a00247.html#a6">tbb::scalable_allocator< T ></a>, <a class="el" href="a00198.html#a6">tbb::cache_aligned_allocator< T ></a><li>deallocate_page()
-: <a class="el" href="a00205.html#b9">tbb::internal::concurrent_queue_base_v3</a><li>default_num_threads()
-: <a class="el" href="a00265.html#e0">tbb::task_scheduler_init</a><li>deferred
-: <a class="el" href="a00265.html#s1">tbb::task_scheduler_init</a><li>depth()
-: <a class="el" href="a00261.html#a10">tbb::task</a><li>depth_type
-: <a class="el" href="a00261.html#w0">tbb::task</a><li>destroy()
-: <a class="el" href="a00226.html#a9">tbb::movable_exception< ExceptionData ></a>, <a class="el" href="a00200.html#a5">tbb::captured_exception</a>, <a class="el" href="a00268.html#a1">tbb::tbb_exception</a>, <a class="el" href="a00266.html#a9">tbb::tbb_allocator< T ></a>, <a class="el" href="a00261.html#a5">tbb::task</a>, <a class="el" href="a00198.html#a9">tbb::cache_aligned_allocator< T ></a><li>detach()
-: <a class="el" href="a00270.html#a7">tbb::internal::tbb_thread_v3</a><li>difference_type
-: <a class="el" href="a00204.html#w5">tbb::concurrent_queue< T, A ></a><li>downgrade_to_reader()
-: <a class="el" href="a00253.html#a6">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00241.html#a7">tbb::queuing_rw_mutex::scoped_lock</a></ul>
+: <a class="el" href="a00136.html#fdd011fdf2f9ad07006dc7c0a7ec1da2">tbb::tbb_allocator< T ></a>, <a class="el" href="a00124.html#f806a238c18cbcfb531e1e0a0d2ec59d">tbb::scalable_allocator< T ></a>, <a class="el" href="a00100.html#3d4eadf188f7d85d3805ae534e0b8e1c">tbb::cache_aligned_allocator< T ></a><li>default_num_threads()
+: <a class="el" href="a00135.html#ba00714c33a41a3c2216f48613971cab">tbb::task_scheduler_init</a><li>deferred
+: <a class="el" href="a00135.html#e6c860f1e559026ff3ef4599c0d6c514">tbb::task_scheduler_init</a><li>depth()
+: <a class="el" href="a00132.html#5be823a972b3c3b9901c5963eeb050fd">tbb::task</a><li>depth_type
+: <a class="el" href="a00132.html#d8815c39bb61bd7e2d2691c476ed03b9">tbb::task</a><li>destroy()
+: <a class="el" href="a00111.html#7a46873119d9f85a7b0009c13e41a258">tbb::movable_exception< ExceptionData ></a>, <a class="el" href="a00102.html#667812a82f1525e968c52593dea0ef4c">tbb::captured_exception</a>, <a class="el" href="a00138.html#66c94938eca8bf88b76f3eccaaf215d8">tbb::tbb_exception</a>, <a class="el" href="a00136.html#ef133522bf55f05a605bee0763208281">tbb::tbb_allocator< T ></a>, <a class="el" href="a00132.html#a57def00c8e9d932dbea0b3ee23991b9">tbb::task</a>, <a cla [...]
+: <a class="el" href="a00106.html#3c0b5f19b820719ab4f69eeb9bf75afc">tbb::concurrent_queue< T, A ></a><li>downgrade_to_reader()
+: <a class="el" href="a00130.html#c2c2c38a08cb9080e87099fac3e5bc94">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00121.html#0d2f93edf7b15ec4bcee138823220c52">tbb::queuing_rw_mutex::scoped_lock</a></ul>
 <h3><a class="anchor" name="index_e">- e -</a></h3><ul>
 <li>empty()
-: <a class="el" href="a00263.html#a2">tbb::task_list</a>, <a class="el" href="a00209.html#a19">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00204.html#a7">tbb::concurrent_queue< T, A ></a>, <a class="el" href="a00201.html#a15">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>, <a class="el" href="a00203.html#a0">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>, <a class="el" href="a00224.html#a0">tbb::internal::hash_map_range [...]
-: <a class="el" href="a00209.html#a27">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00195.html#a3">tbb::blocked_range< Value ></a>, <a class="el" href="a00190.html#a1">tbb::aligned_space< T, N ></a><li>erase()
-: <a class="el" href="a00201.html#a30">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>execute()
-: <a class="el" href="a00261.html#a1">tbb::task</a>, <a class="el" href="a00221.html#a0">tbb::internal::finish_scan< Range, Body ></a><li>executing
-: <a class="el" href="a00261.html#w8w2">tbb::task</a></ul>
+: <a class="el" href="a00134.html#f3ac31e092814b90929f81bb30441959">tbb::task_list</a>, <a class="el" href="a00107.html#c6426cb93cf20d3af40f3c90f1f0481a">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00106.html#313c369998b69de6e039b9afb9ca3237">tbb::concurrent_queue< T, A ></a>, <a class="el" href="a00103.html#b9599dd587892366ed31dea23e5c5837">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>, <a class="el" href="a00105.html#38712b9809d23d2fba5e4780bb3c4 [...]
+: <a class="el" href="a00107.html#1e6aa764ce5a1cbd24526f68bc0a2f6b">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00097.html#8b929d93ddc13f148b11bceef3a3bdf8">tbb::blocked_range< Value ></a>, <a class="el" href="a00092.html#024be075c23c0394c9a2518d993bcd9e">tbb::aligned_space< T, N ></a><li>erase()
+: <a class="el" href="a00103.html#b5bd8c8f49f8d0e72afedca53caa6b15">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>execute()
+: <a class="el" href="a00132.html#22c298cd40937a431a06777423f002f6">tbb::task</a><li>executing
+: <a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293ead0fe2302ccc360923f738c2ed7ec1b9">tbb::task</a></ul>
 <h3><a class="anchor" name="index_f">- f -</a></h3><ul>
 <li>finalize()
-: <a class="el" href="a00216.html#a4">tbb::filter</a><li>find()
-: <a class="el" href="a00201.html#a21">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>freed
-: <a class="el" href="a00261.html#w8w6">tbb::task</a><li>front()
-: <a class="el" href="a00209.html#a33">tbb::concurrent_vector< T, A ></a></ul>
+: <a class="el" href="a00109.html#56275eb889c77c4807967133e21401bd">tbb::filter</a><li>find()
+: <a class="el" href="a00103.html#68a6bd5b8a0bc2d5066e5eb175fd5ba9">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>freed
+: <a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293ecc67ca92bd6f1ce9738a1e9e7206b735">tbb::task</a><li>front()
+: <a class="el" href="a00107.html#502615a858eb9fa0390ee59169065e90">tbb::concurrent_vector< T, A ></a></ul>
 <h3><a class="anchor" name="index_g">- g -</a></h3><ul>
 <li>get_allocator()
-: <a class="el" href="a00209.html#a36">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00204.html#a10">tbb::concurrent_queue< T, A ></a>, <a class="el" href="a00201.html#a17">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>grainsize()
-: <a class="el" href="a00224.html#a7">tbb::internal::hash_map_range< Iterator ></a>, <a class="el" href="a00195.html#a5">tbb::blocked_range< Value ></a><li>grow_by()
-: <a class="el" href="a00209.html#a9">tbb::concurrent_vector< T, A ></a><li>grow_to_at_least()
-: <a class="el" href="a00209.html#a10">tbb::concurrent_vector< T, A ></a></ul>
-<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
-<li>hardware_concurrency()
-: <a class="el" href="a00270.html#e0">tbb::internal::tbb_thread_v3</a><li>hash_map_iterator()
-: <a class="el" href="a00223.html#a1">tbb::internal::hash_map_iterator< Container, Value ></a><li>hash_map_range()
-: <a class="el" href="a00224.html#a4">tbb::internal::hash_map_range< Iterator ></a><li>hashcode_t
-: <a class="el" href="a00222.html#w3">tbb::internal::hash_map_base</a></ul>
+: <a class="el" href="a00107.html#2fdba8e90de6a4d2300222236d46758e">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00106.html#11a088eee45cc1cb0c0b32adadbff92e">tbb::concurrent_queue< T, A ></a>, <a class="el" href="a00103.html#14255f38f7b10bb892b233fce283fbce">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>grainsize()
+: <a class="el" href="a00097.html#fcd2e5b8b6c11fd3f20fc0aa9f11bbc2">tbb::blocked_range< Value ></a><li>grow_by()
+: <a class="el" href="a00107.html#38274ab3f772ecba600c7daca7690102">tbb::concurrent_vector< T, A ></a><li>grow_to_at_least()
+: <a class="el" href="a00107.html#47fe588214dd5fa06ab6e8ab78d83874">tbb::concurrent_vector< T, A ></a></ul>
 <h3><a class="anchor" name="index_i">- i -</a></h3><ul>
 <li>init()
-: <a class="el" href="a00262.html#b0">tbb::task_group_context</a><li>initialize()
-: <a class="el" href="a00265.html#a1">tbb::task_scheduler_init</a><li>insert()
-: <a class="el" href="a00201.html#a27">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>internal_array_op1
-: <a class="el" href="a00210.html#x2">tbb::internal::concurrent_vector_base_v3</a><li>internal_array_op2
-: <a class="el" href="a00210.html#x3">tbb::internal::concurrent_vector_base_v3</a><li>internal_finish_clear()
-: <a class="el" href="a00205.html#b10">tbb::internal::concurrent_queue_base_v3</a><li>internal_pop()
-: <a class="el" href="a00205.html#b3">tbb::internal::concurrent_queue_base_v3</a><li>internal_pop_if_present()
-: <a class="el" href="a00205.html#b5">tbb::internal::concurrent_queue_base_v3</a><li>internal_push()
-: <a class="el" href="a00205.html#b2">tbb::internal::concurrent_queue_base_v3</a><li>internal_push_if_not_full()
-: <a class="el" href="a00205.html#b4">tbb::internal::concurrent_queue_base_v3</a><li>internal_set_capacity()
-: <a class="el" href="a00205.html#b7">tbb::internal::concurrent_queue_base_v3</a><li>internal_size()
-: <a class="el" href="a00205.html#b6">tbb::internal::concurrent_queue_base_v3</a><li>internal_throw_exception()
-: <a class="el" href="a00205.html#b11">tbb::internal::concurrent_queue_base_v3</a><li>interval_t()
-: <a class="el" href="a00273.html#a1">tbb::tick_count::interval_t</a><li>is_active()
-: <a class="el" href="a00265.html#a5">tbb::task_scheduler_init</a><li>is_cancelled()
-: <a class="el" href="a00261.html#a28">tbb::task</a><li>is_divisible()
-: <a class="el" href="a00224.html#a1">tbb::internal::hash_map_range< Iterator ></a>, <a class="el" href="a00197.html#a3">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>, <a class="el" href="a00196.html#a3">tbb::blocked_range2d< RowValue, ColValue ></a>, <a class="el" href="a00195.html#a7">tbb::blocked_range< Value ></a><li>is_group_execution_cancelled()
-: <a class="el" href="a00262.html#a4">tbb::task_group_context</a><li>is_owned_by_current_thread()
-: <a class="el" href="a00261.html#a23">tbb::task</a><li>is_serial()
-: <a class="el" href="a00216.html#a0">tbb::filter</a><li>is_stolen_task()
-: <a class="el" href="a00261.html#a20">tbb::task</a><li>item_size
-: <a class="el" href="a00205.html#p2">tbb::internal::concurrent_queue_base_v3</a><li>items_per_page
-: <a class="el" href="a00205.html#p1">tbb::internal::concurrent_queue_base_v3</a></ul>
-<h3><a class="anchor" name="index_j">- j -</a></h3><ul>
-<li>join()
-: <a class="el" href="a00270.html#a6">tbb::internal::tbb_thread_v3</a></ul>
+: <a class="el" href="a00133.html#49a55352084fd44b8863d182e839e6dc">tbb::task_group_context</a><li>initialize()
+: <a class="el" href="a00135.html#d5ed214a8bb53b0466ed91ff4734b9a3">tbb::task_scheduler_init</a><li>insert()
+: <a class="el" href="a00103.html#06a95a56a40fcbdf3897051d22aaab19">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>interval_t()
+: <a class="el" href="a00141.html#1a21a428e00cced2e6a49e0f5f2258bf">tbb::tick_count::interval_t</a><li>is_active()
+: <a class="el" href="a00135.html#12752282977029f23416642bc03e8b74">tbb::task_scheduler_init</a><li>is_cancelled()
+: <a class="el" href="a00132.html#025f18118c057c4c8db87ff2ce8df975">tbb::task</a><li>is_divisible()
+: <a class="el" href="a00099.html#39d69191721c488e737ae5d9c5336b9c">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>, <a class="el" href="a00098.html#ad36a9b38e4fef26d376f99552ce2d92">tbb::blocked_range2d< RowValue, ColValue ></a>, <a class="el" href="a00097.html#41a58b703d574b6e1ca155df3576f578">tbb::blocked_range< Value ></a><li>is_group_execution_cancelled()
+: <a class="el" href="a00133.html#4db72f16210b0a991b2c134d6763a4cc">tbb::task_group_context</a><li>is_owned_by_current_thread()
+: <a class="el" href="a00132.html#c26718b3b247cd13deb1a741902e7105">tbb::task</a><li>is_serial()
+: <a class="el" href="a00109.html#fcfec27656a69ff2072802ac001e936f">tbb::filter</a><li>is_stolen_task()
+: <a class="el" href="a00132.html#f9169402702f56bf519448aaf34450aa">tbb::task</a></ul>
 <h3><a class="anchor" name="index_m">- m -</a></h3><ul>
 <li>malloc_type
-: <a class="el" href="a00266.html#w9">tbb::tbb_allocator< T ></a><li>max_physical_size
-: <a class="el" href="a00222.html#s2">tbb::internal::hash_map_base</a><li>max_size()
-: <a class="el" href="a00266.html#a7">tbb::tbb_allocator< T ></a>, <a class="el" href="a00247.html#a7">tbb::scalable_allocator< T ></a>, <a class="el" href="a00209.html#a23">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00201.html#a16">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>, <a class="el" href="a00198.html#a7">tbb::cache_aligned_allocator< T ></a><li>mode
-: <a class="el" href="a00216.html#w4">tbb::filter</a><li>move()
-: <a class="el" href="a00226.html#a8">tbb::movable_exception< ExceptionData ></a>, <a class="el" href="a00200.html#a4">tbb::captured_exception</a>, <a class="el" href="a00268.html#a0">tbb::tbb_exception</a><li>mutex()
-: <a class="el" href="a00227.html#a0">tbb::mutex</a><li>my_capacity
-: <a class="el" href="a00205.html#p0">tbb::internal::concurrent_queue_base_v3</a><li>my_early_size
-: <a class="el" href="a00210.html#p2">tbb::internal::concurrent_vector_base_v3</a><li>my_exception_data
-: <a class="el" href="a00226.html#p0">tbb::movable_exception< ExceptionData ></a><li>my_first_block
-: <a class="el" href="a00210.html#p1">tbb::internal::concurrent_vector_base_v3</a><li>my_item
-: <a class="el" href="a00208.html#p0">tbb::internal::concurrent_queue_iterator_base_v3</a><li>my_segment
-: <a class="el" href="a00210.html#p3">tbb::internal::concurrent_vector_base_v3</a><li>my_storage
-: <a class="el" href="a00210.html#p4">tbb::internal::concurrent_vector_base_v3</a></ul>
+: <a class="el" href="a00136.html#09a7f81fb2c3055aaecf058b11538544">tbb::tbb_allocator< T ></a><li>max_size()
+: <a class="el" href="a00136.html#f059ca2c96243024f0d562ee3a87a3a5">tbb::tbb_allocator< T ></a>, <a class="el" href="a00124.html#880e766f1d913988c21973dbdd874fd5">tbb::scalable_allocator< T ></a>, <a class="el" href="a00107.html#2c248a017f0576df3e7cd99627836fd6">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00103.html#62d1fdc2c4d37d84b0dca1cd45f1cf1f">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>, <a class="el" href="a00100.html#fb23b687b4c0429 [...]
+: <a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf">tbb::filter</a><li>move()
+: <a class="el" href="a00111.html#1aea0ad179d6f0481fe7f3495f66adf9">tbb::movable_exception< ExceptionData ></a>, <a class="el" href="a00102.html#df6bbb78a362fe862a341e81e2999810">tbb::captured_exception</a>, <a class="el" href="a00138.html#3e3482bf264d4ca4dde046cd9c02c766">tbb::tbb_exception</a><li>mutex()
+: <a class="el" href="a00112.html#05313cb77d4f85213103d4dab74ed454">tbb::mutex</a><li>my_exception_data
+: <a class="el" href="a00111.html#a8c0ae2089ae784b28907cf748b89416">tbb::movable_exception< ExceptionData ></a></ul>
 <h3><a class="anchor" name="index_n">- n -</a></h3><ul>
-<li>n_segment
-: <a class="el" href="a00222.html#s1">tbb::internal::hash_map_base</a><li>n_segment_bits
-: <a class="el" href="a00222.html#s0">tbb::internal::hash_map_base</a><li>name()
-: <a class="el" href="a00226.html#a6">tbb::movable_exception< ExceptionData ></a>, <a class="el" href="a00200.html#a7">tbb::captured_exception</a>, <a class="el" href="a00268.html#a3">tbb::tbb_exception</a><li>no_assign()
-: <a class="el" href="a00229.html#a0">tbb::internal::no_assign</a><li>no_copy()
-: <a class="el" href="a00230.html#a0">tbb::internal::no_copy</a><li>note_affinity()
-: <a class="el" href="a00261.html#a26">tbb::task</a><li>now()
-: <a class="el" href="a00272.html#e0">tbb::tick_count</a></ul>
+<li>name()
+: <a class="el" href="a00111.html#bc5f5c4739b17ac5211ac58226c2f5a5">tbb::movable_exception< ExceptionData ></a>, <a class="el" href="a00102.html#5af82fd677449c5ca727fa1d7e16f9f5">tbb::captured_exception</a>, <a class="el" href="a00138.html#d00f6497e552fee978a02bfcbebf46e2">tbb::tbb_exception</a><li>note_affinity()
+: <a class="el" href="a00132.html#713c338c8eeaebdc5a6b10a69c039b06">tbb::task</a><li>now()
+: <a class="el" href="a00140.html#fb7f78ca61cf28398645ace66e284473">tbb::tick_count</a></ul>
 <h3><a class="anchor" name="index_o">- o -</a></h3><ul>
 <li>operator *()
-: <a class="el" href="a00207.html#a4">tbb::internal::concurrent_queue_iterator< Container, Value ></a>, <a class="el" href="a00202.html#a0">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>, <a class="el" href="a00203.html#a2">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a><li>operator()()
-: <a class="el" href="a00216.html#a2">tbb::filter</a><li>operator+
-: <a class="el" href="a00273.html#n2">tbb::tick_count::interval_t</a><li>operator++()
-: <a class="el" href="a00274.html#a12">tbb::internal::vector_iterator< Container, Value ></a>, <a class="el" href="a00207.html#a7">tbb::internal::concurrent_queue_iterator< Container, Value ></a>, <a class="el" href="a00223.html#a6">tbb::internal::hash_map_iterator< Container, Value ></a><li>operator+=()
-: <a class="el" href="a00273.html#a3">tbb::tick_count::interval_t</a><li>operator-
-: <a class="el" href="a00272.html#n0">tbb::tick_count</a>, <a class="el" href="a00273.html#n3">tbb::tick_count::interval_t</a><li>operator--()
-: <a class="el" href="a00274.html#a13">tbb::internal::vector_iterator< Container, Value ></a><li>operator-=()
-: <a class="el" href="a00273.html#a4">tbb::tick_count::interval_t</a><li>operator->()
-: <a class="el" href="a00202.html#a1">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>, <a class="el" href="a00203.html#a3">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a><li>operator=()
-: <a class="el" href="a00209.html#a7">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00207.html#a3">tbb::internal::concurrent_queue_iterator< Container, Value ></a>, <a class="el" href="a00201.html#a3">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>operator[]()
-: <a class="el" href="a00209.html#a13">tbb::concurrent_vector< T, A ></a></ul>
+: <a class="el" href="a00104.html#52334dd5411e7b95635b90527d7d6062">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>, <a class="el" href="a00105.html#ea4d48e45dd039a2be10178df9336001">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a><li>operator()()
+: <a class="el" href="a00109.html#fa1b3dc1f4f47563ccab7f4d92f5b543">tbb::filter</a><li>operator+
+: <a class="el" href="a00141.html#5871ead1ca230efbe52a5008470e6428">tbb::tick_count::interval_t</a><li>operator+=()
+: <a class="el" href="a00141.html#cd9814947902e26463a69a111530f81b">tbb::tick_count::interval_t</a><li>operator-
+: <a class="el" href="a00140.html#09dde78a4100800c11bb883d6204b586">tbb::tick_count</a>, <a class="el" href="a00141.html#fa509691e1d689830931e36edd274f76">tbb::tick_count::interval_t</a><li>operator-=()
+: <a class="el" href="a00141.html#35ff7eaf7c2031b4a991402ac9ecb940">tbb::tick_count::interval_t</a><li>operator->()
+: <a class="el" href="a00104.html#0fae0495144540e2b011a6530f68f1cb">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>, <a class="el" href="a00105.html#def170ba3b18905cd4e9d90f8a9a9cd9">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a><li>operator=()
+: <a class="el" href="a00107.html#19f4ab88a01b0fd056af3bba463e7bd6">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00103.html#d70ad33f97ce38d004620580bb1b09ba">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>operator[]()
+: <a class="el" href="a00107.html#c6fade5c732cc95274d1d8277ea619d1">tbb::concurrent_vector< T, A ></a></ul>
 <h3><a class="anchor" name="index_p">- p -</a></h3><ul>
 <li>page_range_type
-: <a class="el" href="a00197.html#w0">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a><li>pages()
-: <a class="el" href="a00197.html#a5">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a><li>parallel
-: <a class="el" href="a00216.html#w4w0">tbb::filter</a><li>parallel_while()
-: <a class="el" href="a00234.html#a0">tbb::parallel_while< Body ></a><li>parent()
-: <a class="el" href="a00261.html#a19">tbb::task</a><li>pause()
-: <a class="el" href="a00192.html#a1">tbb::internal::AtomicBackoff</a><li>pipeline()
-: <a class="el" href="a00236.html#a0">tbb::pipeline</a><li>pointers_per_short_table
-: <a class="el" href="a00210.html#x7x5">tbb::internal::concurrent_vector_base_v3</a><li>pop()
-: <a class="el" href="a00204.html#a3">tbb::concurrent_queue< T, A ></a><li>pop_front()
-: <a class="el" href="a00263.html#a4">tbb::task_list</a><li>pop_if_present()
-: <a class="el" href="a00204.html#a5">tbb::concurrent_queue< T, A ></a><li>push()
-: <a class="el" href="a00204.html#a2">tbb::concurrent_queue< T, A ></a><li>push_back()
-: <a class="el" href="a00263.html#a3">tbb::task_list</a>, <a class="el" href="a00209.html#a11">tbb::concurrent_vector< T, A ></a><li>push_if_not_full()
-: <a class="el" href="a00204.html#a4">tbb::concurrent_queue< T, A ></a></ul>
+: <a class="el" href="a00099.html#b8ebf17a552ba47825e9b3887855b719">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a><li>pages()
+: <a class="el" href="a00099.html#cf971430aa12361d3ed245344b7c6764">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a><li>parallel
+: <a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf75740556347260927e94ce3b23a34abe">tbb::filter</a><li>parallel_while()
+: <a class="el" href="a00115.html#36e26ba3880c7bcf804a97ba0cbe133f">tbb::parallel_while< Body ></a><li>parent()
+: <a class="el" href="a00132.html#314e98ee4347ccec83efcb9ee22e8596">tbb::task</a><li>pause()
+: <a class="el" href="a00094.html#cb1ca420dfc4aa21eca699d3fa4711c7">tbb::internal::AtomicBackoff</a><li>pipeline()
+: <a class="el" href="a00116.html#596dc3beba27099c4c8581cb419e1a59">tbb::pipeline</a><li>pop()
+: <a class="el" href="a00106.html#170ab4b57a20f0ff00fb8642d4f55e5c">tbb::concurrent_queue< T, A ></a><li>pop_front()
+: <a class="el" href="a00134.html#5fe85df5ed524418389d34051750347d">tbb::task_list</a><li>pop_if_present()
+: <a class="el" href="a00106.html#7088b06d6c226c44a07a310c12176a0c">tbb::concurrent_queue< T, A ></a><li>push()
+: <a class="el" href="a00106.html#28259b68d5ba6cc77abf72b8d7d22e69">tbb::concurrent_queue< T, A ></a><li>push_back()
+: <a class="el" href="a00134.html#4cd34756bc4763dafb8c84838a0124ff">tbb::task_list</a>, <a class="el" href="a00107.html#e0087c0f58b49e43b6322ff1ec0bc98d">tbb::concurrent_vector< T, A ></a><li>push_if_not_full()
+: <a class="el" href="a00106.html#0a91166177c0ceb5a1ddd22827509345">tbb::concurrent_queue< T, A ></a></ul>
 <h3><a class="anchor" name="index_q">- q -</a></h3><ul>
 <li>queuing_mutex()
-: <a class="el" href="a00238.html#a0">tbb::queuing_mutex</a><li>queuing_rw_mutex()
-: <a class="el" href="a00240.html#a0">tbb::queuing_rw_mutex</a></ul>
+: <a class="el" href="a00118.html#b389ad9c4db7293e4bdb5b8cda69ec04">tbb::queuing_mutex</a><li>queuing_rw_mutex()
+: <a class="el" href="a00120.html#85c90877c3447690ac4e2ac4ff8dea5e">tbb::queuing_rw_mutex</a></ul>
 <h3><a class="anchor" name="index_r">- r -</a></h3><ul>
 <li>range()
-: <a class="el" href="a00209.html#a17">tbb::concurrent_vector< T, A ></a><li>rbegin()
-: <a class="el" href="a00209.html#a30">tbb::concurrent_vector< T, A ></a><li>ready
-: <a class="el" href="a00261.html#w8w4">tbb::task</a><li>recursive_mutex()
-: <a class="el" href="a00245.html#a0">tbb::recursive_mutex</a><li>recycle
-: <a class="el" href="a00261.html#w8w7">tbb::task</a><li>recycle_as_child_of()
-: <a class="el" href="a00261.html#a8">tbb::task</a><li>recycle_as_continuation()
-: <a class="el" href="a00261.html#a6">tbb::task</a><li>recycle_as_safe_continuation()
-: <a class="el" href="a00261.html#a7">tbb::task</a><li>recycle_to_reexecute()
-: <a class="el" href="a00261.html#a9">tbb::task</a><li>reexecute
-: <a class="el" href="a00261.html#w8w3">tbb::task</a><li>ref_count()
-: <a class="el" href="a00261.html#a22">tbb::task</a><li>reference
-: <a class="el" href="a00204.html#w2">tbb::concurrent_queue< T, A ></a><li>release()
-: <a class="el" href="a00253.html#a5">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00251.html#a4">tbb::spin_mutex::scoped_lock</a>, <a class="el" href="a00246.html#a5">tbb::recursive_mutex::scoped_lock</a>, <a class="el" href="a00241.html#a5">tbb::queuing_rw_mutex::scoped_lock</a>, <a class="el" href="a00239.html#a5">tbb::queuing_mutex::scoped_lock</a>, <a class="el" href="a00228.html#a5">tbb::mutex::scoped_lock</a>, <a class="el" href="a00203.html#a1">tbb::concurrent_has [...]
-: <a class="el" href="a00209.html#a31">tbb::concurrent_vector< T, A ></a><li>reserve()
-: <a class="el" href="a00209.html#a21">tbb::concurrent_vector< T, A ></a><li>reset()
-: <a class="el" href="a00262.html#a2">tbb::task_group_context</a><li>row_range_type
-: <a class="el" href="a00196.html#w0">tbb::blocked_range2d< RowValue, ColValue ></a><li>rows()
-: <a class="el" href="a00197.html#a6">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>, <a class="el" href="a00196.html#a5">tbb::blocked_range2d< RowValue, ColValue ></a><li>run()
-: <a class="el" href="a00236.html#a4">tbb::pipeline</a>, <a class="el" href="a00234.html#a2">tbb::parallel_while< Body ></a></ul>
+: <a class="el" href="a00107.html#3d09ccfb581b879ae64203741035e193">tbb::concurrent_vector< T, A ></a><li>rbegin()
+: <a class="el" href="a00107.html#9f9c103e18d5f212703805354074ad44">tbb::concurrent_vector< T, A ></a><li>ready
+: <a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e0841dcf1c2a96dee9aa7b69f636cb81a">tbb::task</a><li>recursive_mutex()
+: <a class="el" href="a00122.html#d2fceb7f95c24a8cd1457d4527e4b8c6">tbb::recursive_mutex</a><li>recycle
+: <a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e58debec6ab130290640d0cc2eedba35d">tbb::task</a><li>recycle_as_child_of()
+: <a class="el" href="a00132.html#db399855177438bbc9cc61d508dae8d2">tbb::task</a><li>recycle_as_continuation()
+: <a class="el" href="a00132.html#a67a79e18f62b43a623a00cfbd76db4c">tbb::task</a><li>recycle_as_safe_continuation()
+: <a class="el" href="a00132.html#3b290d14109704e2b69dc1ac980a7a76">tbb::task</a><li>recycle_to_reexecute()
+: <a class="el" href="a00132.html#4f1be9bbcdb487830dbe298b68d85144">tbb::task</a><li>reexecute
+: <a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e3bf499aa6e6487cd1ace883a63100513">tbb::task</a><li>ref_count()
+: <a class="el" href="a00132.html#ad774f55eaec008ae02b236423209ced">tbb::task</a><li>reference
+: <a class="el" href="a00106.html#ea0fab9094080138fef0802125160739">tbb::concurrent_queue< T, A ></a><li>release()
+: <a class="el" href="a00130.html#61b14d00a78185c9b2d206ebfc379124">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00128.html#eeb615e68e963e6bf8d9c11402d0ce8e">tbb::spin_mutex::scoped_lock</a>, <a class="el" href="a00123.html#ac480ea0e9d5ea0345a67d57008b6263">tbb::recursive_mutex::scoped_lock</a>, <a class="el" href="a00121.html#67ae221109ddc69510ab593874e435d4">tbb::queuing_rw_mutex::scoped_lock</a>, <a class="el" href="a00119.html#3bf2b8c87ff22115be9b2eac179f2d30">tbb::qu [...]
+: <a class="el" href="a00107.html#d438b9b32ea3a8ffb703015b6dce055b">tbb::concurrent_vector< T, A ></a><li>reserve()
+: <a class="el" href="a00107.html#5a0ce05026994b010018f72cfdeb72c1">tbb::concurrent_vector< T, A ></a><li>reset()
+: <a class="el" href="a00133.html#6d30d16bf1cd22f86c6afaf29c2b430c">tbb::task_group_context</a><li>row_range_type
+: <a class="el" href="a00098.html#a807a22fe658ec38b8edfd69521d0383">tbb::blocked_range2d< RowValue, ColValue ></a><li>rows()
+: <a class="el" href="a00099.html#1584623e59ff32a8aa82006827508be4">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>, <a class="el" href="a00098.html#f496e7348a82652fba581203477cc07c">tbb::blocked_range2d< RowValue, ColValue ></a><li>run()
+: <a class="el" href="a00116.html#93d7fec8cd607b803dd2d79fb46bd260">tbb::pipeline</a>, <a class="el" href="a00115.html#b32a0a6e5e09ebb7fad3e6652c19afe5">tbb::parallel_while< Body ></a></ul>
 <h3><a class="anchor" name="index_s">- s -</a></h3><ul>
 <li>scoped_lock()
-: <a class="el" href="a00253.html#a1">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00251.html#a1">tbb::spin_mutex::scoped_lock</a>, <a class="el" href="a00246.html#a1">tbb::recursive_mutex::scoped_lock</a>, <a class="el" href="a00241.html#a1">tbb::queuing_rw_mutex::scoped_lock</a>, <a class="el" href="a00239.html#a1">tbb::queuing_mutex::scoped_lock</a>, <a class="el" href="a00228.html#a1">tbb::mutex::scoped_lock</a><li>seconds()
-: <a class="el" href="a00273.html#a2">tbb::tick_count::interval_t</a><li>self()
-: <a class="el" href="a00261.html#e4">tbb::task</a><li>serial
-: <a class="el" href="a00216.html#w4w3">tbb::filter</a><li>serial_in_order
-: <a class="el" href="a00216.html#w4w1">tbb::filter</a><li>serial_out_of_order
-: <a class="el" href="a00216.html#w4w2">tbb::filter</a><li>set_affinity()
-: <a class="el" href="a00261.html#a24">tbb::task</a><li>set_capacity()
-: <a class="el" href="a00204.html#a9">tbb::concurrent_queue< T, A ></a><li>set_depth()
-: <a class="el" href="a00261.html#a11">tbb::task</a><li>set_ref_count()
-: <a class="el" href="a00261.html#a13">tbb::task</a><li>size()
-: <a class="el" href="a00209.html#a18">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00204.html#a6">tbb::concurrent_queue< T, A ></a>, <a class="el" href="a00201.html#a14">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>, <a class="el" href="a00195.html#a4">tbb::blocked_range< Value ></a><li>size_type
-: <a class="el" href="a00204.html#w4">tbb::concurrent_queue< T, A ></a>, <a class="el" href="a00224.html#w0">tbb::internal::hash_map_range< Iterator ></a>, <a class="el" href="a00195.html#w1">tbb::blocked_range< Value ></a><li>spawn()
-: <a class="el" href="a00261.html#a15">tbb::task</a><li>spawn_and_wait_for_all()
-: <a class="el" href="a00261.html#a17">tbb::task</a><li>spawn_root_and_wait()
-: <a class="el" href="a00261.html#e3">tbb::task</a><li>spin_mutex()
-: <a class="el" href="a00250.html#a0">tbb::spin_mutex</a><li>spin_rw_mutex_v3()
-: <a class="el" href="a00252.html#a0">tbb::spin_rw_mutex_v3</a><li>start_routine()
-: <a class="el" href="a00271.html#e0">tbb::internal::thread_closure_1< F, X ></a><li>state()
-: <a class="el" href="a00261.html#a21">tbb::task</a><li>state_type
-: <a class="el" href="a00261.html#w8">tbb::task</a><li>swap()
-: <a class="el" href="a00209.html#a39">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00201.html#a18">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></ul>
+: <a class="el" href="a00130.html#42a92d4f8fdde425b111cfa8a9228071">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00128.html#5ce6807050a9e8f87bcb4a65dccb12ef">tbb::spin_mutex::scoped_lock</a>, <a class="el" href="a00123.html#dec17713c4c1321ac8fec66816d0c602">tbb::recursive_mutex::scoped_lock</a>, <a class="el" href="a00121.html#fbb8798792d3aebb136c46fc63d2529e">tbb::queuing_rw_mutex::scoped_lock</a>, <a class="el" href="a00119.html#9b51ef972f5618ac17caadb58841ab6d">tbb::qu [...]
+: <a class="el" href="a00141.html#d5d8429c0bc59cf6131b2abc7929fa59">tbb::tick_count::interval_t</a><li>self()
+: <a class="el" href="a00132.html#bd43e8d6249738efafd12d6a4c72c5e3">tbb::task</a><li>serial
+: <a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cff8662693d85bd1cd3df052b761edd237">tbb::filter</a><li>serial_in_order
+: <a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf5645f2f2a541e53009d3e719c06c5f93">tbb::filter</a><li>serial_out_of_order
+: <a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf7fb70bcb663107adfc2938de89bab7d9">tbb::filter</a><li>set_affinity()
+: <a class="el" href="a00132.html#dca19d7a45487a7d67a0db517e2b57c9">tbb::task</a><li>set_capacity()
+: <a class="el" href="a00106.html#92977e1eb9af259f3aef69f0181476c1">tbb::concurrent_queue< T, A ></a><li>set_depth()
+: <a class="el" href="a00132.html#fc4d4e61a56823aa1efdbb5d59e42973">tbb::task</a><li>set_ref_count()
+: <a class="el" href="a00132.html#06a4206a57e8e12a439b14d6d41cfd92">tbb::task</a><li>size()
+: <a class="el" href="a00107.html#715fe313c4a9c22731cc404dd80c9ec9">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00106.html#94499bca8d540a1927f9368b386dabea">tbb::concurrent_queue< T, A ></a>, <a class="el" href="a00103.html#75bb57a153952ffadfcf2e4c73deabb1">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>, <a class="el" href="a00097.html#9eaa0b6beff1420f688570bbf6b8c462">tbb::blocked_range< Value ></a><li>size_type
+: <a class="el" href="a00106.html#75868c28b0e431caa3ac36404adff4cf">tbb::concurrent_queue< T, A ></a>, <a class="el" href="a00097.html#f5707bffea38eee5c9680f37358afb8e">tbb::blocked_range< Value ></a><li>spawn()
+: <a class="el" href="a00132.html#db841c647eb6d754440c2f4e4a73c80b">tbb::task</a><li>spawn_and_wait_for_all()
+: <a class="el" href="a00132.html#894ab68378e502776d8220eea7ce9fa1">tbb::task</a><li>spawn_root_and_wait()
+: <a class="el" href="a00132.html#c33c7edbaec67aa8a56f48986a9dc69f">tbb::task</a><li>spin_mutex()
+: <a class="el" href="a00127.html#3d8fb44644fd8d41ada1fbeba7409be3">tbb::spin_mutex</a><li>spin_rw_mutex_v3()
+: <a class="el" href="a00129.html#61332b2756de89f3f5f69310cbb6e70c">tbb::spin_rw_mutex_v3</a><li>state()
+: <a class="el" href="a00132.html#0af7b2d7e6e8b4333b2accfce3dfb374">tbb::task</a><li>state_type
+: <a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e">tbb::task</a><li>swap()
+: <a class="el" href="a00107.html#96c9c4bd968ed3edb8dd276854d2dae0">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00103.html#74990f452286f35ad6aa08cab6c5a8cd">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></ul>
 <h3><a class="anchor" name="index_t">- t -</a></h3><ul>
 <li>task()
-: <a class="el" href="a00261.html#b0">tbb::task</a><li>task_group_context()
-: <a class="el" href="a00262.html#a0">tbb::task_group_context</a><li>task_list()
-: <a class="el" href="a00263.html#a0">tbb::task_list</a><li>task_scheduler_init()
-: <a class="el" href="a00265.html#a3">tbb::task_scheduler_init</a><li>tbb_thread_v3()
-: <a class="el" href="a00270.html#a3">tbb::internal::tbb_thread_v3</a><li>terminate()
-: <a class="el" href="a00265.html#a2">tbb::task_scheduler_init</a><li>throw_self()
-: <a class="el" href="a00226.html#a10">tbb::movable_exception< ExceptionData ></a>, <a class="el" href="a00200.html#a6">tbb::captured_exception</a>, <a class="el" href="a00268.html#a2">tbb::tbb_exception</a><li>tick_count()
-: <a class="el" href="a00272.html#a0">tbb::tick_count</a><li>try_acquire()
-: <a class="el" href="a00253.html#a7">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00251.html#a3">tbb::spin_mutex::scoped_lock</a>, <a class="el" href="a00246.html#a4">tbb::recursive_mutex::scoped_lock</a>, <a class="el" href="a00241.html#a4">tbb::queuing_rw_mutex::scoped_lock</a>, <a class="el" href="a00239.html#a4">tbb::queuing_mutex::scoped_lock</a>, <a class="el" href="a00228.html#a4">tbb::mutex::scoped_lock</a></ul>
+: <a class="el" href="a00132.html#2bce8ec6e44706e70128f5cf91b76e67">tbb::task</a><li>task_group_context()
+: <a class="el" href="a00133.html#6fc0ba6f3abcdb4d43277c05bd67bdd4">tbb::task_group_context</a><li>task_list()
+: <a class="el" href="a00134.html#416341c2047eaef50417b41eaf7e9de6">tbb::task_list</a><li>task_scheduler_init()
+: <a class="el" href="a00135.html#421600bf9bf9338bcf937063f2ff0e90">tbb::task_scheduler_init</a><li>terminate()
+: <a class="el" href="a00135.html#f73257e04cb7fb9bd5be2b635d9016f1">tbb::task_scheduler_init</a><li>throw_self()
+: <a class="el" href="a00111.html#17cffba35811c92b7e65d63506b69602">tbb::movable_exception< ExceptionData ></a>, <a class="el" href="a00102.html#2dd1be66ab32fa27e0ddef5707fa67ef">tbb::captured_exception</a>, <a class="el" href="a00138.html#8588e07fa49692f4d734e4f2e4f048f4">tbb::tbb_exception</a><li>tick_count()
+: <a class="el" href="a00140.html#34593326ae4191e02a13c7cbdab9de4c">tbb::tick_count</a><li>try_acquire()
+: <a class="el" href="a00130.html#9879626968d9b9a04cd2ec0fb2e84ae1">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00128.html#9297ec188534b45dc0ca48f2f39a0501">tbb::spin_mutex::scoped_lock</a>, <a class="el" href="a00123.html#36bfc3e93e3ef6340abef4901444d340">tbb::recursive_mutex::scoped_lock</a>, <a class="el" href="a00121.html#2e4ff6c9ec2fee6682f95290d1f42baa">tbb::queuing_rw_mutex::scoped_lock</a>, <a class="el" href="a00119.html#e5a014fb817599386a87170cf2cf51a9">tbb::qu [...]
 <h3><a class="anchor" name="index_u">- u -</a></h3><ul>
 <li>upgrade_to_writer()
-: <a class="el" href="a00253.html#a4">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00241.html#a6">tbb::queuing_rw_mutex::scoped_lock</a></ul>
+: <a class="el" href="a00130.html#3f0b1e3f2efab63336400348bd070226">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00121.html#11ba1da4a722c9e6f73339a52c487e82">tbb::queuing_rw_mutex::scoped_lock</a></ul>
 <h3><a class="anchor" name="index_v">- v -</a></h3><ul>
 <li>value_type
-: <a class="el" href="a00234.html#w0">tbb::parallel_while< Body ></a>, <a class="el" href="a00204.html#w0">tbb::concurrent_queue< T, A ></a>, <a class="el" href="a00202.html#w0">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>, <a class="el" href="a00203.html#w0">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a><li>vector_allocator_ptr
-: <a class="el" href="a00210.html#p0">tbb::internal::concurrent_vector_base_v3</a><li>vector_iterator()
-: <a class="el" href="a00274.html#a1">tbb::internal::vector_iterator< Container, Value ></a></ul>
+: <a class="el" href="a00115.html#fa297e53d3af2a101e712bc200233e9c">tbb::parallel_while< Body ></a>, <a class="el" href="a00106.html#ec587adbe0da968d828c0178b2d863b0">tbb::concurrent_queue< T, A ></a>, <a class="el" href="a00104.html#8bc15c9c07f3e21583ab1a4ad0901ce5">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>, <a class="el" href="a00105.html#b5fe45b58ccc252b8ce70ac6c896c648">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></ul>
 <h3><a class="anchor" name="index_w">- w -</a></h3><ul>
 <li>wait_for_all()
-: <a class="el" href="a00261.html#a18">tbb::task</a><li>what()
-: <a class="el" href="a00226.html#a7">tbb::movable_exception< ExceptionData ></a>, <a class="el" href="a00200.html#a8">tbb::captured_exception</a>, <a class="el" href="a00268.html#a4">tbb::tbb_exception</a></ul>
+: <a class="el" href="a00132.html#53d2615ad9c38859b4c8080936600283">tbb::task</a><li>what()
+: <a class="el" href="a00111.html#b33a89bccf0c63106f1270c7bfaaf54f">tbb::movable_exception< ExceptionData ></a>, <a class="el" href="a00102.html#6b5988ef74a1fe2a58998d110b3633e0">tbb::captured_exception</a>, <a class="el" href="a00138.html#e8157689ecb66bc6c72d3618bf3cc371">tbb::tbb_exception</a></ul>
 <h3><a class="anchor" name="index_~">- ~ -</a></h3><ul>
 <li>~concurrent_hash_map()
-: <a class="el" href="a00201.html#a5">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>~concurrent_queue()
-: <a class="el" href="a00204.html#a1">tbb::concurrent_queue< T, A ></a><li>~concurrent_queue_iterator_base_v3()
-: <a class="el" href="a00208.html#b5">tbb::internal::concurrent_queue_iterator_base_v3</a><li>~concurrent_vector()
-: <a class="el" href="a00209.html#a41">tbb::concurrent_vector< T, A ></a><li>~const_accessor()
-: <a class="el" href="a00203.html#a5">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a><li>~filter()
-: <a class="el" href="a00216.html#a3">tbb::filter</a><li>~parallel_while()
-: <a class="el" href="a00234.html#a1">tbb::parallel_while< Body ></a><li>~pipeline()
-: <a class="el" href="a00236.html#a1">tbb::pipeline</a><li>~queuing_rw_mutex()
-: <a class="el" href="a00240.html#a1">tbb::queuing_rw_mutex</a><li>~scoped_lock()
-: <a class="el" href="a00253.html#a2">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00251.html#a5">tbb::spin_mutex::scoped_lock</a>, <a class="el" href="a00246.html#a2">tbb::recursive_mutex::scoped_lock</a>, <a class="el" href="a00241.html#a2">tbb::queuing_rw_mutex::scoped_lock</a>, <a class="el" href="a00239.html#a2">tbb::queuing_mutex::scoped_lock</a>, <a class="el" href="a00228.html#a2">tbb::mutex::scoped_lock</a><li>~spin_rw_mutex_v3()
-: <a class="el" href="a00252.html#a1">tbb::spin_rw_mutex_v3</a><li>~task()
-: <a class="el" href="a00261.html#a0">tbb::task</a><li>~task_list()
-: <a class="el" href="a00263.html#a1">tbb::task_list</a><li>~task_scheduler_init()
-: <a class="el" href="a00265.html#a4">tbb::task_scheduler_init</a></ul>
+: <a class="el" href="a00103.html#5a683e8db50438b9976e46e7d4f60e65">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>~concurrent_queue()
+: <a class="el" href="a00106.html#43480ba7f4ba2401d1213ee23248e4cd">tbb::concurrent_queue< T, A ></a><li>~concurrent_vector()
+: <a class="el" href="a00107.html#da2444b28bb840d38f60d0030333a5fc">tbb::concurrent_vector< T, A ></a><li>~const_accessor()
+: <a class="el" href="a00105.html#9b3fdcb8850d6f6dc749b72dbf2d593d">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a><li>~filter()
+: <a class="el" href="a00109.html#66d159f362293e3964ba3da8bc1d2604">tbb::filter</a><li>~parallel_while()
+: <a class="el" href="a00115.html#6fcfc973cc56b79c6d0fbb8a31be7e84">tbb::parallel_while< Body ></a><li>~pipeline()
+: <a class="el" href="a00116.html#49513c6c24f9d5bbbb27edca5efe01c9">tbb::pipeline</a><li>~queuing_rw_mutex()
+: <a class="el" href="a00120.html#1ba73e3d95cfdf8323880bc623af9099">tbb::queuing_rw_mutex</a><li>~scoped_lock()
+: <a class="el" href="a00130.html#d7eaaa3f2e2c5dc11e7005811b1bdd04">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00128.html#ac6fa425d1f06c56d8b70abc51aac844">tbb::spin_mutex::scoped_lock</a>, <a class="el" href="a00123.html#c1197ffb8f3cd9d4fed71d7e06265b7c">tbb::recursive_mutex::scoped_lock</a>, <a class="el" href="a00121.html#32c7d67a660d23ebbaab1a1d2826d31a">tbb::queuing_rw_mutex::scoped_lock</a>, <a class="el" href="a00119.html#ac2c576a93570957d694192a5f491443">tbb::qu [...]
+: <a class="el" href="a00129.html#9a815fb2759e55072ed413f1b6970cf3">tbb::spin_rw_mutex_v3</a><li>~task()
+: <a class="el" href="a00132.html#98245ee0473f84cb19dbbf8c81134908">tbb::task</a><li>~task_list()
+: <a class="el" href="a00134.html#6d438f1499a02db1e59c24ab6043e5ba">tbb::task_list</a><li>~task_scheduler_init()
+: <a class="el" href="a00135.html#4da6c86292d80c703a66c1f6f5299488">tbb::task_scheduler_init</a></ul>
 <hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/functions_enum.html b/doc/html/functions_enum.html
index 16026f7..58d6696 100644
--- a/doc/html/functions_enum.html
+++ b/doc/html/functions_enum.html
@@ -2,17 +2,42 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Class Members - Enumerations</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.htm [...]
-<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_type.html">Typedefs</a> | <a class="qindexHL" href="functions_enum.html">Enumerations</a> | <a class="qindex" href="functions_eval.html">Enumeration values</a> | <a class="qindex" href="functions_rela.html">Related Functions</a></div>
-
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li id="current"><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="functions.html"><span>All</span></a></li>
+    <li><a href="functions_func.html"><span>Functions</span></a></li>
+    <li><a href="functions_vars.html"><span>Variables</span></a></li>
+    <li><a href="functions_type.html"><span>Typedefs</span></a></li>
+    <li id="current"><a href="functions_enum.html"><span>Enumerations</span></a></li>
+    <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
+    <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
+  </ul>
+</div>
+ 
 <p>
 <ul>
 <li>malloc_type
-: <a class="el" href="a00266.html#w9">tbb::tbb_allocator< T ></a><li>mode
-: <a class="el" href="a00216.html#w4">tbb::filter</a><li>state_type
-: <a class="el" href="a00261.html#w8">tbb::task</a></ul>
+: <a class="el" href="a00136.html#09a7f81fb2c3055aaecf058b11538544">tbb::tbb_allocator< T ></a><li>mode
+: <a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf">tbb::filter</a><li>state_type
+: <a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e">tbb::task</a></ul>
 <hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/functions_eval.html b/doc/html/functions_eval.html
index 6ceb0c2..9821f89 100644
--- a/doc/html/functions_eval.html
+++ b/doc/html/functions_eval.html
@@ -1,26 +1,50 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Class Members - Enumeration values</title>
+<title>Class Members - Enumerator</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.htm [...]
-<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_type.html">Typedefs</a> | <a class="qindex" href="functions_enum.html">Enumerations</a> | <a class="qindexHL" href="functions_eval.html">Enumeration values</a> | <a class="qindex" href="functions_rela.html">Related Functions</a></div>
-
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li id="current"><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="functions.html"><span>All</span></a></li>
+    <li><a href="functions_func.html"><span>Functions</span></a></li>
+    <li><a href="functions_vars.html"><span>Variables</span></a></li>
+    <li><a href="functions_type.html"><span>Typedefs</span></a></li>
+    <li><a href="functions_enum.html"><span>Enumerations</span></a></li>
+    <li id="current"><a href="functions_eval.html"><span>Enumerator</span></a></li>
+    <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
+  </ul>
+</div>
+ 
 <p>
 <ul>
 <li>allocated
-: <a class="el" href="a00261.html#w8w5">tbb::task</a><li>executing
-: <a class="el" href="a00261.html#w8w2">tbb::task</a><li>freed
-: <a class="el" href="a00261.html#w8w6">tbb::task</a><li>parallel
-: <a class="el" href="a00216.html#w4w0">tbb::filter</a><li>pointers_per_short_table
-: <a class="el" href="a00210.html#x7x5">tbb::internal::concurrent_vector_base_v3</a><li>ready
-: <a class="el" href="a00261.html#w8w4">tbb::task</a><li>recycle
-: <a class="el" href="a00261.html#w8w7">tbb::task</a><li>reexecute
-: <a class="el" href="a00261.html#w8w3">tbb::task</a><li>serial
-: <a class="el" href="a00216.html#w4w3">tbb::filter</a><li>serial_in_order
-: <a class="el" href="a00216.html#w4w1">tbb::filter</a><li>serial_out_of_order
-: <a class="el" href="a00216.html#w4w2">tbb::filter</a></ul>
+: <a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293ebe94d3348dd038e41107819f00c1884c">tbb::task</a><li>executing
+: <a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293ead0fe2302ccc360923f738c2ed7ec1b9">tbb::task</a><li>freed
+: <a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293ecc67ca92bd6f1ce9738a1e9e7206b735">tbb::task</a><li>parallel
+: <a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf75740556347260927e94ce3b23a34abe">tbb::filter</a><li>ready
+: <a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e0841dcf1c2a96dee9aa7b69f636cb81a">tbb::task</a><li>recycle
+: <a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e58debec6ab130290640d0cc2eedba35d">tbb::task</a><li>reexecute
+: <a class="el" href="a00132.html#4a3c415562d17905390ea5b49d12293e3bf499aa6e6487cd1ace883a63100513">tbb::task</a><li>serial
+: <a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cff8662693d85bd1cd3df052b761edd237">tbb::filter</a><li>serial_in_order
+: <a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf5645f2f2a541e53009d3e719c06c5f93">tbb::filter</a><li>serial_out_of_order
+: <a class="el" href="a00109.html#d3b6ed2c517144199d0c39c62ddfd8cf7fb70bcb663107adfc2938de89bab7d9">tbb::filter</a></ul>
 <hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html
index 2ffc147..34610e2 100644
--- a/doc/html/functions_func.html
+++ b/doc/html/functions_func.html
@@ -2,218 +2,233 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Class Members - Functions</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.htm [...]
-<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_type.html">Typedefs</a> | <a class="qindex" href="functions_enum.html">Enumerations</a> | <a class="qindex" href="functions_eval.html">Enumeration values</a> | <a class="qindex" href="functions_rela.html">Related Functions</a></div>
-<div class="qindex"><a class="qindex" href="#index_a">a</a> | <a class="qindex" href="#index_b">b</a> | <a class="qindex" href="#index_c">c</a> | <a class="qindex" href="#index_d">d</a> | <a class="qindex" href="#index_e">e</a> | <a class="qindex" href="#index_f">f</a> | <a class="qindex" href="#index_g">g</a> | <a class="qindex" href="#index_h">h</a> | <a class="qindex" href="#index_i">i</a> | <a class="qindex" href="#index_j">j</a> | <a class="qindex" href="#index_m">m</a> | <a class=" [...]
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li id="current"><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="functions.html"><span>All</span></a></li>
+    <li id="current"><a href="functions_func.html"><span>Functions</span></a></li>
+    <li><a href="functions_vars.html"><span>Variables</span></a></li>
+    <li><a href="functions_type.html"><span>Typedefs</span></a></li>
+    <li><a href="functions_enum.html"><span>Enumerations</span></a></li>
+    <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
+    <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
+  </ul>
+</div>
+<div class="tabs">
+  <ul>
+    <li><a href="#index_a"><span>a</span></a></li>
+    <li><a href="#index_b"><span>b</span></a></li>
+    <li><a href="#index_c"><span>c</span></a></li>
+    <li><a href="#index_d"><span>d</span></a></li>
+    <li><a href="#index_e"><span>e</span></a></li>
+    <li><a href="#index_f"><span>f</span></a></li>
+    <li><a href="#index_g"><span>g</span></a></li>
+    <li><a href="#index_i"><span>i</span></a></li>
+    <li><a href="#index_m"><span>m</span></a></li>
+    <li><a href="#index_n"><span>n</span></a></li>
+    <li><a href="#index_o"><span>o</span></a></li>
+    <li><a href="#index_p"><span>p</span></a></li>
+    <li><a href="#index_q"><span>q</span></a></li>
+    <li><a href="#index_r"><span>r</span></a></li>
+    <li><a href="#index_s"><span>s</span></a></li>
+    <li><a href="#index_t"><span>t</span></a></li>
+    <li><a href="#index_u"><span>u</span></a></li>
+    <li><a href="#index_w"><span>w</span></a></li>
+    <li><a href="#index_~"><span>~</span></a></li>
+  </ul>
+</div>
 
 <p>
-
+ 
 <p>
 <h3><a class="anchor" name="index_a">- a -</a></h3><ul>
 <li>acquire()
-: <a class="el" href="a00253.html#a3">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00251.html#a2">tbb::spin_mutex::scoped_lock</a>, <a class="el" href="a00246.html#a3">tbb::recursive_mutex::scoped_lock</a>, <a class="el" href="a00241.html#a3">tbb::queuing_rw_mutex::scoped_lock</a>, <a class="el" href="a00239.html#a3">tbb::queuing_mutex::scoped_lock</a>, <a class="el" href="a00228.html#a3">tbb::mutex::scoped_lock</a><li>add()
-: <a class="el" href="a00234.html#a3">tbb::parallel_while< Body ></a>, <a class="el" href="a00231.html#a0">tbb::parallel_do_feeder< Item ></a><li>add_filter()
-: <a class="el" href="a00236.html#a2">tbb::pipeline</a><li>add_to_depth()
-: <a class="el" href="a00261.html#a12">tbb::task</a><li>advance()
-: <a class="el" href="a00208.html#b4">tbb::internal::concurrent_queue_iterator_base_v3</a><li>affinity()
-: <a class="el" href="a00261.html#a25">tbb::task</a><li>allocate()
-: <a class="el" href="a00266.html#a5">tbb::tbb_allocator< T ></a>, <a class="el" href="a00247.html#a5">tbb::scalable_allocator< T ></a>, <a class="el" href="a00198.html#a5">tbb::cache_aligned_allocator< T ></a><li>allocate_additional_child_of()
-: <a class="el" href="a00261.html#a4">tbb::task</a><li>allocate_child()
-: <a class="el" href="a00261.html#a3">tbb::task</a><li>allocate_continuation()
-: <a class="el" href="a00261.html#a2">tbb::task</a><li>allocate_page()
-: <a class="el" href="a00205.html#b8">tbb::internal::concurrent_queue_base_v3</a><li>allocate_root()
-: <a class="el" href="a00261.html#e1">tbb::task</a><li>allocator_type()
-: <a class="el" href="a00266.html#e0">tbb::tbb_allocator< T ></a>, <a class="el" href="a00204.html#w1">tbb::concurrent_queue< T, A ></a><li>assign()
-: <a class="el" href="a00209.html#a38">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00208.html#b3">tbb::internal::concurrent_queue_iterator_base_v3</a>, <a class="el" href="a00205.html#b12">tbb::internal::concurrent_queue_base_v3</a><li>at()
-: <a class="el" href="a00209.html#a15">tbb::concurrent_vector< T, A ></a></ul>
+: <a class="el" href="a00130.html#b0b646ec5be02a127d159bbb7ca65353">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00128.html#3ee3c338732b1f64b0b32a757807a30d">tbb::spin_mutex::scoped_lock</a>, <a class="el" href="a00123.html#7fb04da37cccf8c99b1f9102d9074f9a">tbb::recursive_mutex::scoped_lock</a>, <a class="el" href="a00121.html#a8dd5ab8686e76de21587544dbb681e0">tbb::queuing_rw_mutex::scoped_lock</a>, <a class="el" href="a00119.html#533e4fc8355ee321206a0609c42d909d">tbb::qu [...]
+: <a class="el" href="a00115.html#e131c560057a58229992b61eb8dba4c6">tbb::parallel_while< Body ></a>, <a class="el" href="a00114.html#40baaf0f6856f4491dd0adf896c93516">tbb::parallel_do_feeder< Item ></a><li>add_filter()
+: <a class="el" href="a00116.html#38fb5c9c8395dd6f89a4ae2011a83e0d">tbb::pipeline</a><li>add_to_depth()
+: <a class="el" href="a00132.html#b0f98c633647fc73b978fe4cd2277ac4">tbb::task</a><li>affinity()
+: <a class="el" href="a00132.html#3a920a56b0bcf2801518fb45b2c9d2be">tbb::task</a><li>allocate()
+: <a class="el" href="a00136.html#f6cb487b1bdce0b581f265a77dca6d53">tbb::tbb_allocator< T ></a>, <a class="el" href="a00124.html#726b1586d05d44665a36e1c7b2699bfd">tbb::scalable_allocator< T ></a>, <a class="el" href="a00100.html#4cdeea67af6c1fcd8f1d5e9c4cab61e8">tbb::cache_aligned_allocator< T ></a><li>allocate_additional_child_of()
+: <a class="el" href="a00132.html#43bfe64c0e9333c0ca895cc0c375512b">tbb::task</a><li>allocate_child()
+: <a class="el" href="a00132.html#1ff794f7053cd9148d5f280fbf07377f">tbb::task</a><li>allocate_continuation()
+: <a class="el" href="a00132.html#1434c79a5138993269d034008bff7329">tbb::task</a><li>allocate_root()
+: <a class="el" href="a00132.html#8ccc518caf31075a3e073996d2d240a4">tbb::task</a><li>allocator_type()
+: <a class="el" href="a00136.html#78701e7454ef8e1a25b5acd364367080">tbb::tbb_allocator< T ></a>, <a class="el" href="a00106.html#94ef8d1e9a05c53e3b637ea5eb553a6d">tbb::concurrent_queue< T, A ></a><li>assign()
+: <a class="el" href="a00107.html#93a06b3112cb804f42f40efb5e7387b4">tbb::concurrent_vector< T, A ></a><li>at()
+: <a class="el" href="a00107.html#23e14a38af748edff96a7adc3a0f1c58">tbb::concurrent_vector< T, A ></a></ul>
 <h3><a class="anchor" name="index_b">- b -</a></h3><ul>
 <li>back()
-: <a class="el" href="a00209.html#a35">tbb::concurrent_vector< T, A ></a><li>begin()
-: <a class="el" href="a00209.html#a26">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00195.html#a2">tbb::blocked_range< Value ></a>, <a class="el" href="a00190.html#a0">tbb::aligned_space< T, N ></a><li>blocked_range()
-: <a class="el" href="a00195.html#a8">tbb::blocked_range< Value ></a></ul>
+: <a class="el" href="a00107.html#bd518e204107d07fd08d0ec5bdfd383d">tbb::concurrent_vector< T, A ></a><li>begin()
+: <a class="el" href="a00107.html#78a06182276ff758788d4c0623ae0d71">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00097.html#18d2258400756ac1446dac7676b18df3">tbb::blocked_range< Value ></a>, <a class="el" href="a00092.html#0d702fc6b9e9d061ace3501b3c861cdf">tbb::aligned_space< T, N ></a><li>blocked_range()
+: <a class="el" href="a00097.html#4c0efd2be3f96a0ab3ba5085e8b3fcc7">tbb::blocked_range< Value ></a></ul>
 <h3><a class="anchor" name="index_c">- c -</a></h3><ul>
 <li>cancel_group_execution()
-: <a class="el" href="a00261.html#a27">tbb::task</a>, <a class="el" href="a00262.html#a3">tbb::task_group_context</a><li>capacity()
-: <a class="el" href="a00209.html#a20">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00204.html#a8">tbb::concurrent_queue< T, A ></a><li>clear()
-: <a class="el" href="a00263.html#a5">tbb::task_list</a>, <a class="el" href="a00236.html#a5">tbb::pipeline</a>, <a class="el" href="a00209.html#a40">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00204.html#a11">tbb::concurrent_queue< T, A ></a>, <a class="el" href="a00201.html#a4">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>cols()
-: <a class="el" href="a00197.html#a7">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>, <a class="el" href="a00196.html#a6">tbb::blocked_range2d< RowValue, ColValue ></a><li>compact()
-: <a class="el" href="a00209.html#a22">tbb::concurrent_vector< T, A ></a><li>concurrent_hash_map()
-: <a class="el" href="a00201.html#a2">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>concurrent_queue()
-: <a class="el" href="a00204.html#a17">tbb::concurrent_queue< T, A ></a><li>concurrent_queue_iterator()
-: <a class="el" href="a00207.html#a2">tbb::internal::concurrent_queue_iterator< Container, Value ></a><li>concurrent_queue_iterator_base_v3()
-: <a class="el" href="a00208.html#b2">tbb::internal::concurrent_queue_iterator_base_v3</a><li>concurrent_vector()
-: <a class="el" href="a00209.html#a5">tbb::concurrent_vector< T, A ></a><li>const_accessor()
-: <a class="el" href="a00203.html#a4">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a><li>construct()
-: <a class="el" href="a00266.html#a8">tbb::tbb_allocator< T ></a>, <a class="el" href="a00198.html#a8">tbb::cache_aligned_allocator< T ></a><li>count()
-: <a class="el" href="a00201.html#a19">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></ul>
+: <a class="el" href="a00132.html#0f3fb4aac549ab642022450a4bd13326">tbb::task</a>, <a class="el" href="a00133.html#8bcdfdf4e6bfb76125b6de15c00b571d">tbb::task_group_context</a><li>capacity()
+: <a class="el" href="a00107.html#3ed6b9ae7217af5103d974045b6f5cd5">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00106.html#95796a6ad29ea6fe102ac1663a776d07">tbb::concurrent_queue< T, A ></a><li>clear()
+: <a class="el" href="a00134.html#fce446ee13e025969945328f3ff59b95">tbb::task_list</a>, <a class="el" href="a00116.html#2c84aef5b834b555ee220b176e25931e">tbb::pipeline</a>, <a class="el" href="a00107.html#26f937a359a66b6aae904c3cd9a3c444">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00106.html#8a6a8a7a8d977d86ae8bd254b9794af1">tbb::concurrent_queue< T, A ></a>, <a class="el" href="a00103.html#36bcd50fd5383f3682032323b2d74333">tbb::concurrent_hash_map< Key, T, H [...]
+: <a class="el" href="a00099.html#3336ba9480fd6c43e158f9beb024c050">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>, <a class="el" href="a00098.html#392a46759af2c884957115771affa7f4">tbb::blocked_range2d< RowValue, ColValue ></a><li>compact()
+: <a class="el" href="a00107.html#1693d1da41b1a8235871be9c6633be35">tbb::concurrent_vector< T, A ></a><li>concurrent_hash_map()
+: <a class="el" href="a00103.html#51cccc7b42e83884462dcadede034822">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>concurrent_queue()
+: <a class="el" href="a00106.html#d3ec1af9c793007ec2ecbdcf637f8ec5">tbb::concurrent_queue< T, A ></a><li>concurrent_vector()
+: <a class="el" href="a00107.html#4450de83c5862ea4bcd9443fd7e67419">tbb::concurrent_vector< T, A ></a><li>const_accessor()
+: <a class="el" href="a00105.html#2a73cc49914e218e579eb77d3d9d6551">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a><li>construct()
+: <a class="el" href="a00136.html#ab228ab9e324ed041c2226e1d717df5f">tbb::tbb_allocator< T ></a>, <a class="el" href="a00100.html#958ee8745c86c275bfc9533af565e017">tbb::cache_aligned_allocator< T ></a><li>count()
+: <a class="el" href="a00103.html#345daf26f2f7e2b4d93382fea80b3a7f">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></ul>
 <h3><a class="anchor" name="index_d">- d -</a></h3><ul>
 <li>deallocate()
-: <a class="el" href="a00266.html#a6">tbb::tbb_allocator< T ></a>, <a class="el" href="a00247.html#a6">tbb::scalable_allocator< T ></a>, <a class="el" href="a00198.html#a6">tbb::cache_aligned_allocator< T ></a><li>deallocate_page()
-: <a class="el" href="a00205.html#b9">tbb::internal::concurrent_queue_base_v3</a><li>default_num_threads()
-: <a class="el" href="a00265.html#e0">tbb::task_scheduler_init</a><li>depth()
-: <a class="el" href="a00261.html#a10">tbb::task</a><li>destroy()
-: <a class="el" href="a00226.html#a9">tbb::movable_exception< ExceptionData ></a>, <a class="el" href="a00200.html#a5">tbb::captured_exception</a>, <a class="el" href="a00268.html#a1">tbb::tbb_exception</a>, <a class="el" href="a00266.html#a9">tbb::tbb_allocator< T ></a>, <a class="el" href="a00261.html#a5">tbb::task</a>, <a class="el" href="a00198.html#a9">tbb::cache_aligned_allocator< T ></a><li>detach()
-: <a class="el" href="a00270.html#a7">tbb::internal::tbb_thread_v3</a><li>downgrade_to_reader()
-: <a class="el" href="a00253.html#a6">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00241.html#a7">tbb::queuing_rw_mutex::scoped_lock</a></ul>
+: <a class="el" href="a00136.html#fdd011fdf2f9ad07006dc7c0a7ec1da2">tbb::tbb_allocator< T ></a>, <a class="el" href="a00124.html#f806a238c18cbcfb531e1e0a0d2ec59d">tbb::scalable_allocator< T ></a>, <a class="el" href="a00100.html#3d4eadf188f7d85d3805ae534e0b8e1c">tbb::cache_aligned_allocator< T ></a><li>default_num_threads()
+: <a class="el" href="a00135.html#ba00714c33a41a3c2216f48613971cab">tbb::task_scheduler_init</a><li>depth()
+: <a class="el" href="a00132.html#5be823a972b3c3b9901c5963eeb050fd">tbb::task</a><li>destroy()
+: <a class="el" href="a00111.html#7a46873119d9f85a7b0009c13e41a258">tbb::movable_exception< ExceptionData ></a>, <a class="el" href="a00102.html#667812a82f1525e968c52593dea0ef4c">tbb::captured_exception</a>, <a class="el" href="a00138.html#66c94938eca8bf88b76f3eccaaf215d8">tbb::tbb_exception</a>, <a class="el" href="a00136.html#ef133522bf55f05a605bee0763208281">tbb::tbb_allocator< T ></a>, <a class="el" href="a00132.html#a57def00c8e9d932dbea0b3ee23991b9">tbb::task</a>, <a cla [...]
+: <a class="el" href="a00130.html#c2c2c38a08cb9080e87099fac3e5bc94">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00121.html#0d2f93edf7b15ec4bcee138823220c52">tbb::queuing_rw_mutex::scoped_lock</a></ul>
 <h3><a class="anchor" name="index_e">- e -</a></h3><ul>
 <li>empty()
-: <a class="el" href="a00263.html#a2">tbb::task_list</a>, <a class="el" href="a00209.html#a19">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00204.html#a7">tbb::concurrent_queue< T, A ></a>, <a class="el" href="a00201.html#a15">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>, <a class="el" href="a00203.html#a0">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>, <a class="el" href="a00224.html#a0">tbb::internal::hash_map_range [...]
-: <a class="el" href="a00209.html#a27">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00195.html#a3">tbb::blocked_range< Value ></a>, <a class="el" href="a00190.html#a1">tbb::aligned_space< T, N ></a><li>erase()
-: <a class="el" href="a00201.html#a30">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>execute()
-: <a class="el" href="a00261.html#a1">tbb::task</a>, <a class="el" href="a00221.html#a0">tbb::internal::finish_scan< Range, Body ></a></ul>
+: <a class="el" href="a00134.html#f3ac31e092814b90929f81bb30441959">tbb::task_list</a>, <a class="el" href="a00107.html#c6426cb93cf20d3af40f3c90f1f0481a">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00106.html#313c369998b69de6e039b9afb9ca3237">tbb::concurrent_queue< T, A ></a>, <a class="el" href="a00103.html#b9599dd587892366ed31dea23e5c5837">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>, <a class="el" href="a00105.html#38712b9809d23d2fba5e4780bb3c4 [...]
+: <a class="el" href="a00107.html#1e6aa764ce5a1cbd24526f68bc0a2f6b">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00097.html#8b929d93ddc13f148b11bceef3a3bdf8">tbb::blocked_range< Value ></a>, <a class="el" href="a00092.html#024be075c23c0394c9a2518d993bcd9e">tbb::aligned_space< T, N ></a><li>erase()
+: <a class="el" href="a00103.html#b5bd8c8f49f8d0e72afedca53caa6b15">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>execute()
+: <a class="el" href="a00132.html#22c298cd40937a431a06777423f002f6">tbb::task</a></ul>
 <h3><a class="anchor" name="index_f">- f -</a></h3><ul>
 <li>finalize()
-: <a class="el" href="a00216.html#a4">tbb::filter</a><li>find()
-: <a class="el" href="a00201.html#a21">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>front()
-: <a class="el" href="a00209.html#a33">tbb::concurrent_vector< T, A ></a></ul>
+: <a class="el" href="a00109.html#56275eb889c77c4807967133e21401bd">tbb::filter</a><li>find()
+: <a class="el" href="a00103.html#68a6bd5b8a0bc2d5066e5eb175fd5ba9">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>front()
+: <a class="el" href="a00107.html#502615a858eb9fa0390ee59169065e90">tbb::concurrent_vector< T, A ></a></ul>
 <h3><a class="anchor" name="index_g">- g -</a></h3><ul>
 <li>get_allocator()
-: <a class="el" href="a00209.html#a36">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00204.html#a10">tbb::concurrent_queue< T, A ></a>, <a class="el" href="a00201.html#a17">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>grainsize()
-: <a class="el" href="a00224.html#a7">tbb::internal::hash_map_range< Iterator ></a>, <a class="el" href="a00195.html#a5">tbb::blocked_range< Value ></a><li>grow_by()
-: <a class="el" href="a00209.html#a9">tbb::concurrent_vector< T, A ></a><li>grow_to_at_least()
-: <a class="el" href="a00209.html#a10">tbb::concurrent_vector< T, A ></a></ul>
-<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
-<li>hardware_concurrency()
-: <a class="el" href="a00270.html#e0">tbb::internal::tbb_thread_v3</a><li>hash_map_iterator()
-: <a class="el" href="a00223.html#a1">tbb::internal::hash_map_iterator< Container, Value ></a><li>hash_map_range()
-: <a class="el" href="a00224.html#a4">tbb::internal::hash_map_range< Iterator ></a></ul>
+: <a class="el" href="a00107.html#2fdba8e90de6a4d2300222236d46758e">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00106.html#11a088eee45cc1cb0c0b32adadbff92e">tbb::concurrent_queue< T, A ></a>, <a class="el" href="a00103.html#14255f38f7b10bb892b233fce283fbce">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>grainsize()
+: <a class="el" href="a00097.html#fcd2e5b8b6c11fd3f20fc0aa9f11bbc2">tbb::blocked_range< Value ></a><li>grow_by()
+: <a class="el" href="a00107.html#38274ab3f772ecba600c7daca7690102">tbb::concurrent_vector< T, A ></a><li>grow_to_at_least()
+: <a class="el" href="a00107.html#47fe588214dd5fa06ab6e8ab78d83874">tbb::concurrent_vector< T, A ></a></ul>
 <h3><a class="anchor" name="index_i">- i -</a></h3><ul>
 <li>init()
-: <a class="el" href="a00262.html#b0">tbb::task_group_context</a><li>initialize()
-: <a class="el" href="a00265.html#a1">tbb::task_scheduler_init</a><li>insert()
-: <a class="el" href="a00201.html#a27">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>internal_finish_clear()
-: <a class="el" href="a00205.html#b10">tbb::internal::concurrent_queue_base_v3</a><li>internal_pop()
-: <a class="el" href="a00205.html#b3">tbb::internal::concurrent_queue_base_v3</a><li>internal_pop_if_present()
-: <a class="el" href="a00205.html#b5">tbb::internal::concurrent_queue_base_v3</a><li>internal_push()
-: <a class="el" href="a00205.html#b2">tbb::internal::concurrent_queue_base_v3</a><li>internal_push_if_not_full()
-: <a class="el" href="a00205.html#b4">tbb::internal::concurrent_queue_base_v3</a><li>internal_set_capacity()
-: <a class="el" href="a00205.html#b7">tbb::internal::concurrent_queue_base_v3</a><li>internal_size()
-: <a class="el" href="a00205.html#b6">tbb::internal::concurrent_queue_base_v3</a><li>internal_throw_exception()
-: <a class="el" href="a00205.html#b11">tbb::internal::concurrent_queue_base_v3</a><li>interval_t()
-: <a class="el" href="a00273.html#a1">tbb::tick_count::interval_t</a><li>is_active()
-: <a class="el" href="a00265.html#a5">tbb::task_scheduler_init</a><li>is_cancelled()
-: <a class="el" href="a00261.html#a28">tbb::task</a><li>is_divisible()
-: <a class="el" href="a00224.html#a1">tbb::internal::hash_map_range< Iterator ></a>, <a class="el" href="a00197.html#a3">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>, <a class="el" href="a00196.html#a3">tbb::blocked_range2d< RowValue, ColValue ></a>, <a class="el" href="a00195.html#a7">tbb::blocked_range< Value ></a><li>is_group_execution_cancelled()
-: <a class="el" href="a00262.html#a4">tbb::task_group_context</a><li>is_owned_by_current_thread()
-: <a class="el" href="a00261.html#a23">tbb::task</a><li>is_serial()
-: <a class="el" href="a00216.html#a0">tbb::filter</a><li>is_stolen_task()
-: <a class="el" href="a00261.html#a20">tbb::task</a></ul>
-<h3><a class="anchor" name="index_j">- j -</a></h3><ul>
-<li>join()
-: <a class="el" href="a00270.html#a6">tbb::internal::tbb_thread_v3</a></ul>
+: <a class="el" href="a00133.html#49a55352084fd44b8863d182e839e6dc">tbb::task_group_context</a><li>initialize()
+: <a class="el" href="a00135.html#d5ed214a8bb53b0466ed91ff4734b9a3">tbb::task_scheduler_init</a><li>insert()
+: <a class="el" href="a00103.html#06a95a56a40fcbdf3897051d22aaab19">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>interval_t()
+: <a class="el" href="a00141.html#1a21a428e00cced2e6a49e0f5f2258bf">tbb::tick_count::interval_t</a><li>is_active()
+: <a class="el" href="a00135.html#12752282977029f23416642bc03e8b74">tbb::task_scheduler_init</a><li>is_cancelled()
+: <a class="el" href="a00132.html#025f18118c057c4c8db87ff2ce8df975">tbb::task</a><li>is_divisible()
+: <a class="el" href="a00099.html#39d69191721c488e737ae5d9c5336b9c">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>, <a class="el" href="a00098.html#ad36a9b38e4fef26d376f99552ce2d92">tbb::blocked_range2d< RowValue, ColValue ></a>, <a class="el" href="a00097.html#41a58b703d574b6e1ca155df3576f578">tbb::blocked_range< Value ></a><li>is_group_execution_cancelled()
+: <a class="el" href="a00133.html#4db72f16210b0a991b2c134d6763a4cc">tbb::task_group_context</a><li>is_owned_by_current_thread()
+: <a class="el" href="a00132.html#c26718b3b247cd13deb1a741902e7105">tbb::task</a><li>is_serial()
+: <a class="el" href="a00109.html#fcfec27656a69ff2072802ac001e936f">tbb::filter</a><li>is_stolen_task()
+: <a class="el" href="a00132.html#f9169402702f56bf519448aaf34450aa">tbb::task</a></ul>
 <h3><a class="anchor" name="index_m">- m -</a></h3><ul>
 <li>max_size()
-: <a class="el" href="a00266.html#a7">tbb::tbb_allocator< T ></a>, <a class="el" href="a00247.html#a7">tbb::scalable_allocator< T ></a>, <a class="el" href="a00209.html#a23">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00201.html#a16">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>, <a class="el" href="a00198.html#a7">tbb::cache_aligned_allocator< T ></a><li>move()
-: <a class="el" href="a00226.html#a8">tbb::movable_exception< ExceptionData ></a>, <a class="el" href="a00200.html#a4">tbb::captured_exception</a>, <a class="el" href="a00268.html#a0">tbb::tbb_exception</a><li>mutex()
-: <a class="el" href="a00227.html#a0">tbb::mutex</a></ul>
+: <a class="el" href="a00136.html#f059ca2c96243024f0d562ee3a87a3a5">tbb::tbb_allocator< T ></a>, <a class="el" href="a00124.html#880e766f1d913988c21973dbdd874fd5">tbb::scalable_allocator< T ></a>, <a class="el" href="a00107.html#2c248a017f0576df3e7cd99627836fd6">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00103.html#62d1fdc2c4d37d84b0dca1cd45f1cf1f">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>, <a class="el" href="a00100.html#fb23b687b4c0429 [...]
+: <a class="el" href="a00111.html#1aea0ad179d6f0481fe7f3495f66adf9">tbb::movable_exception< ExceptionData ></a>, <a class="el" href="a00102.html#df6bbb78a362fe862a341e81e2999810">tbb::captured_exception</a>, <a class="el" href="a00138.html#3e3482bf264d4ca4dde046cd9c02c766">tbb::tbb_exception</a><li>mutex()
+: <a class="el" href="a00112.html#05313cb77d4f85213103d4dab74ed454">tbb::mutex</a></ul>
 <h3><a class="anchor" name="index_n">- n -</a></h3><ul>
 <li>name()
-: <a class="el" href="a00226.html#a6">tbb::movable_exception< ExceptionData ></a>, <a class="el" href="a00200.html#a7">tbb::captured_exception</a>, <a class="el" href="a00268.html#a3">tbb::tbb_exception</a><li>no_assign()
-: <a class="el" href="a00229.html#a0">tbb::internal::no_assign</a><li>no_copy()
-: <a class="el" href="a00230.html#a0">tbb::internal::no_copy</a><li>note_affinity()
-: <a class="el" href="a00261.html#a26">tbb::task</a><li>now()
-: <a class="el" href="a00272.html#e0">tbb::tick_count</a></ul>
+: <a class="el" href="a00111.html#bc5f5c4739b17ac5211ac58226c2f5a5">tbb::movable_exception< ExceptionData ></a>, <a class="el" href="a00102.html#5af82fd677449c5ca727fa1d7e16f9f5">tbb::captured_exception</a>, <a class="el" href="a00138.html#d00f6497e552fee978a02bfcbebf46e2">tbb::tbb_exception</a><li>note_affinity()
+: <a class="el" href="a00132.html#713c338c8eeaebdc5a6b10a69c039b06">tbb::task</a><li>now()
+: <a class="el" href="a00140.html#fb7f78ca61cf28398645ace66e284473">tbb::tick_count</a></ul>
 <h3><a class="anchor" name="index_o">- o -</a></h3><ul>
 <li>operator *()
-: <a class="el" href="a00207.html#a4">tbb::internal::concurrent_queue_iterator< Container, Value ></a>, <a class="el" href="a00202.html#a0">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>, <a class="el" href="a00203.html#a2">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a><li>operator()()
-: <a class="el" href="a00216.html#a2">tbb::filter</a><li>operator++()
-: <a class="el" href="a00274.html#a12">tbb::internal::vector_iterator< Container, Value ></a>, <a class="el" href="a00207.html#a7">tbb::internal::concurrent_queue_iterator< Container, Value ></a>, <a class="el" href="a00223.html#a6">tbb::internal::hash_map_iterator< Container, Value ></a><li>operator+=()
-: <a class="el" href="a00273.html#a3">tbb::tick_count::interval_t</a><li>operator--()
-: <a class="el" href="a00274.html#a13">tbb::internal::vector_iterator< Container, Value ></a><li>operator-=()
-: <a class="el" href="a00273.html#a4">tbb::tick_count::interval_t</a><li>operator->()
-: <a class="el" href="a00202.html#a1">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>, <a class="el" href="a00203.html#a3">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a><li>operator=()
-: <a class="el" href="a00209.html#a7">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00207.html#a3">tbb::internal::concurrent_queue_iterator< Container, Value ></a>, <a class="el" href="a00201.html#a3">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>operator[]()
-: <a class="el" href="a00209.html#a13">tbb::concurrent_vector< T, A ></a></ul>
+: <a class="el" href="a00104.html#52334dd5411e7b95635b90527d7d6062">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>, <a class="el" href="a00105.html#ea4d48e45dd039a2be10178df9336001">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a><li>operator()()
+: <a class="el" href="a00109.html#fa1b3dc1f4f47563ccab7f4d92f5b543">tbb::filter</a><li>operator+=()
+: <a class="el" href="a00141.html#cd9814947902e26463a69a111530f81b">tbb::tick_count::interval_t</a><li>operator-=()
+: <a class="el" href="a00141.html#35ff7eaf7c2031b4a991402ac9ecb940">tbb::tick_count::interval_t</a><li>operator->()
+: <a class="el" href="a00104.html#0fae0495144540e2b011a6530f68f1cb">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>, <a class="el" href="a00105.html#def170ba3b18905cd4e9d90f8a9a9cd9">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a><li>operator=()
+: <a class="el" href="a00107.html#19f4ab88a01b0fd056af3bba463e7bd6">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00103.html#d70ad33f97ce38d004620580bb1b09ba">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>operator[]()
+: <a class="el" href="a00107.html#c6fade5c732cc95274d1d8277ea619d1">tbb::concurrent_vector< T, A ></a></ul>
 <h3><a class="anchor" name="index_p">- p -</a></h3><ul>
 <li>pages()
-: <a class="el" href="a00197.html#a5">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a><li>parallel_while()
-: <a class="el" href="a00234.html#a0">tbb::parallel_while< Body ></a><li>parent()
-: <a class="el" href="a00261.html#a19">tbb::task</a><li>pause()
-: <a class="el" href="a00192.html#a1">tbb::internal::AtomicBackoff</a><li>pipeline()
-: <a class="el" href="a00236.html#a0">tbb::pipeline</a><li>pop()
-: <a class="el" href="a00204.html#a3">tbb::concurrent_queue< T, A ></a><li>pop_front()
-: <a class="el" href="a00263.html#a4">tbb::task_list</a><li>pop_if_present()
-: <a class="el" href="a00204.html#a5">tbb::concurrent_queue< T, A ></a><li>push()
-: <a class="el" href="a00204.html#a2">tbb::concurrent_queue< T, A ></a><li>push_back()
-: <a class="el" href="a00263.html#a3">tbb::task_list</a>, <a class="el" href="a00209.html#a11">tbb::concurrent_vector< T, A ></a><li>push_if_not_full()
-: <a class="el" href="a00204.html#a4">tbb::concurrent_queue< T, A ></a></ul>
+: <a class="el" href="a00099.html#cf971430aa12361d3ed245344b7c6764">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a><li>parallel_while()
+: <a class="el" href="a00115.html#36e26ba3880c7bcf804a97ba0cbe133f">tbb::parallel_while< Body ></a><li>parent()
+: <a class="el" href="a00132.html#314e98ee4347ccec83efcb9ee22e8596">tbb::task</a><li>pause()
+: <a class="el" href="a00094.html#cb1ca420dfc4aa21eca699d3fa4711c7">tbb::internal::AtomicBackoff</a><li>pipeline()
+: <a class="el" href="a00116.html#596dc3beba27099c4c8581cb419e1a59">tbb::pipeline</a><li>pop()
+: <a class="el" href="a00106.html#170ab4b57a20f0ff00fb8642d4f55e5c">tbb::concurrent_queue< T, A ></a><li>pop_front()
+: <a class="el" href="a00134.html#5fe85df5ed524418389d34051750347d">tbb::task_list</a><li>pop_if_present()
+: <a class="el" href="a00106.html#7088b06d6c226c44a07a310c12176a0c">tbb::concurrent_queue< T, A ></a><li>push()
+: <a class="el" href="a00106.html#28259b68d5ba6cc77abf72b8d7d22e69">tbb::concurrent_queue< T, A ></a><li>push_back()
+: <a class="el" href="a00134.html#4cd34756bc4763dafb8c84838a0124ff">tbb::task_list</a>, <a class="el" href="a00107.html#e0087c0f58b49e43b6322ff1ec0bc98d">tbb::concurrent_vector< T, A ></a><li>push_if_not_full()
+: <a class="el" href="a00106.html#0a91166177c0ceb5a1ddd22827509345">tbb::concurrent_queue< T, A ></a></ul>
 <h3><a class="anchor" name="index_q">- q -</a></h3><ul>
 <li>queuing_mutex()
-: <a class="el" href="a00238.html#a0">tbb::queuing_mutex</a><li>queuing_rw_mutex()
-: <a class="el" href="a00240.html#a0">tbb::queuing_rw_mutex</a></ul>
+: <a class="el" href="a00118.html#b389ad9c4db7293e4bdb5b8cda69ec04">tbb::queuing_mutex</a><li>queuing_rw_mutex()
+: <a class="el" href="a00120.html#85c90877c3447690ac4e2ac4ff8dea5e">tbb::queuing_rw_mutex</a></ul>
 <h3><a class="anchor" name="index_r">- r -</a></h3><ul>
 <li>range()
-: <a class="el" href="a00209.html#a17">tbb::concurrent_vector< T, A ></a><li>rbegin()
-: <a class="el" href="a00209.html#a30">tbb::concurrent_vector< T, A ></a><li>recursive_mutex()
-: <a class="el" href="a00245.html#a0">tbb::recursive_mutex</a><li>recycle_as_child_of()
-: <a class="el" href="a00261.html#a8">tbb::task</a><li>recycle_as_continuation()
-: <a class="el" href="a00261.html#a6">tbb::task</a><li>recycle_as_safe_continuation()
-: <a class="el" href="a00261.html#a7">tbb::task</a><li>recycle_to_reexecute()
-: <a class="el" href="a00261.html#a9">tbb::task</a><li>ref_count()
-: <a class="el" href="a00261.html#a22">tbb::task</a><li>release()
-: <a class="el" href="a00253.html#a5">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00251.html#a4">tbb::spin_mutex::scoped_lock</a>, <a class="el" href="a00246.html#a5">tbb::recursive_mutex::scoped_lock</a>, <a class="el" href="a00241.html#a5">tbb::queuing_rw_mutex::scoped_lock</a>, <a class="el" href="a00239.html#a5">tbb::queuing_mutex::scoped_lock</a>, <a class="el" href="a00228.html#a5">tbb::mutex::scoped_lock</a>, <a class="el" href="a00203.html#a1">tbb::concurrent_has [...]
-: <a class="el" href="a00209.html#a31">tbb::concurrent_vector< T, A ></a><li>reserve()
-: <a class="el" href="a00209.html#a21">tbb::concurrent_vector< T, A ></a><li>reset()
-: <a class="el" href="a00262.html#a2">tbb::task_group_context</a><li>rows()
-: <a class="el" href="a00197.html#a6">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>, <a class="el" href="a00196.html#a5">tbb::blocked_range2d< RowValue, ColValue ></a><li>run()
-: <a class="el" href="a00236.html#a4">tbb::pipeline</a>, <a class="el" href="a00234.html#a2">tbb::parallel_while< Body ></a></ul>
+: <a class="el" href="a00107.html#3d09ccfb581b879ae64203741035e193">tbb::concurrent_vector< T, A ></a><li>rbegin()
+: <a class="el" href="a00107.html#9f9c103e18d5f212703805354074ad44">tbb::concurrent_vector< T, A ></a><li>recursive_mutex()
+: <a class="el" href="a00122.html#d2fceb7f95c24a8cd1457d4527e4b8c6">tbb::recursive_mutex</a><li>recycle_as_child_of()
+: <a class="el" href="a00132.html#db399855177438bbc9cc61d508dae8d2">tbb::task</a><li>recycle_as_continuation()
+: <a class="el" href="a00132.html#a67a79e18f62b43a623a00cfbd76db4c">tbb::task</a><li>recycle_as_safe_continuation()
+: <a class="el" href="a00132.html#3b290d14109704e2b69dc1ac980a7a76">tbb::task</a><li>recycle_to_reexecute()
+: <a class="el" href="a00132.html#4f1be9bbcdb487830dbe298b68d85144">tbb::task</a><li>ref_count()
+: <a class="el" href="a00132.html#ad774f55eaec008ae02b236423209ced">tbb::task</a><li>release()
+: <a class="el" href="a00130.html#61b14d00a78185c9b2d206ebfc379124">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00128.html#eeb615e68e963e6bf8d9c11402d0ce8e">tbb::spin_mutex::scoped_lock</a>, <a class="el" href="a00123.html#ac480ea0e9d5ea0345a67d57008b6263">tbb::recursive_mutex::scoped_lock</a>, <a class="el" href="a00121.html#67ae221109ddc69510ab593874e435d4">tbb::queuing_rw_mutex::scoped_lock</a>, <a class="el" href="a00119.html#3bf2b8c87ff22115be9b2eac179f2d30">tbb::qu [...]
+: <a class="el" href="a00107.html#d438b9b32ea3a8ffb703015b6dce055b">tbb::concurrent_vector< T, A ></a><li>reserve()
+: <a class="el" href="a00107.html#5a0ce05026994b010018f72cfdeb72c1">tbb::concurrent_vector< T, A ></a><li>reset()
+: <a class="el" href="a00133.html#6d30d16bf1cd22f86c6afaf29c2b430c">tbb::task_group_context</a><li>rows()
+: <a class="el" href="a00099.html#1584623e59ff32a8aa82006827508be4">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>, <a class="el" href="a00098.html#f496e7348a82652fba581203477cc07c">tbb::blocked_range2d< RowValue, ColValue ></a><li>run()
+: <a class="el" href="a00116.html#93d7fec8cd607b803dd2d79fb46bd260">tbb::pipeline</a>, <a class="el" href="a00115.html#b32a0a6e5e09ebb7fad3e6652c19afe5">tbb::parallel_while< Body ></a></ul>
 <h3><a class="anchor" name="index_s">- s -</a></h3><ul>
 <li>scoped_lock()
-: <a class="el" href="a00253.html#a1">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00251.html#a1">tbb::spin_mutex::scoped_lock</a>, <a class="el" href="a00246.html#a1">tbb::recursive_mutex::scoped_lock</a>, <a class="el" href="a00241.html#a1">tbb::queuing_rw_mutex::scoped_lock</a>, <a class="el" href="a00239.html#a1">tbb::queuing_mutex::scoped_lock</a>, <a class="el" href="a00228.html#a1">tbb::mutex::scoped_lock</a><li>seconds()
-: <a class="el" href="a00273.html#a2">tbb::tick_count::interval_t</a><li>self()
-: <a class="el" href="a00261.html#e4">tbb::task</a><li>set_affinity()
-: <a class="el" href="a00261.html#a24">tbb::task</a><li>set_capacity()
-: <a class="el" href="a00204.html#a9">tbb::concurrent_queue< T, A ></a><li>set_depth()
-: <a class="el" href="a00261.html#a11">tbb::task</a><li>set_ref_count()
-: <a class="el" href="a00261.html#a13">tbb::task</a><li>size()
-: <a class="el" href="a00209.html#a18">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00204.html#a6">tbb::concurrent_queue< T, A ></a>, <a class="el" href="a00201.html#a14">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>, <a class="el" href="a00195.html#a4">tbb::blocked_range< Value ></a><li>spawn()
-: <a class="el" href="a00261.html#a15">tbb::task</a><li>spawn_and_wait_for_all()
-: <a class="el" href="a00261.html#a17">tbb::task</a><li>spawn_root_and_wait()
-: <a class="el" href="a00261.html#e3">tbb::task</a><li>spin_mutex()
-: <a class="el" href="a00250.html#a0">tbb::spin_mutex</a><li>spin_rw_mutex_v3()
-: <a class="el" href="a00252.html#a0">tbb::spin_rw_mutex_v3</a><li>start_routine()
-: <a class="el" href="a00271.html#e0">tbb::internal::thread_closure_1< F, X ></a><li>state()
-: <a class="el" href="a00261.html#a21">tbb::task</a><li>swap()
-: <a class="el" href="a00209.html#a39">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00201.html#a18">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></ul>
+: <a class="el" href="a00130.html#42a92d4f8fdde425b111cfa8a9228071">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00128.html#5ce6807050a9e8f87bcb4a65dccb12ef">tbb::spin_mutex::scoped_lock</a>, <a class="el" href="a00123.html#dec17713c4c1321ac8fec66816d0c602">tbb::recursive_mutex::scoped_lock</a>, <a class="el" href="a00121.html#fbb8798792d3aebb136c46fc63d2529e">tbb::queuing_rw_mutex::scoped_lock</a>, <a class="el" href="a00119.html#9b51ef972f5618ac17caadb58841ab6d">tbb::qu [...]
+: <a class="el" href="a00141.html#d5d8429c0bc59cf6131b2abc7929fa59">tbb::tick_count::interval_t</a><li>self()
+: <a class="el" href="a00132.html#bd43e8d6249738efafd12d6a4c72c5e3">tbb::task</a><li>set_affinity()
+: <a class="el" href="a00132.html#dca19d7a45487a7d67a0db517e2b57c9">tbb::task</a><li>set_capacity()
+: <a class="el" href="a00106.html#92977e1eb9af259f3aef69f0181476c1">tbb::concurrent_queue< T, A ></a><li>set_depth()
+: <a class="el" href="a00132.html#fc4d4e61a56823aa1efdbb5d59e42973">tbb::task</a><li>set_ref_count()
+: <a class="el" href="a00132.html#06a4206a57e8e12a439b14d6d41cfd92">tbb::task</a><li>size()
+: <a class="el" href="a00107.html#715fe313c4a9c22731cc404dd80c9ec9">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00106.html#94499bca8d540a1927f9368b386dabea">tbb::concurrent_queue< T, A ></a>, <a class="el" href="a00103.html#75bb57a153952ffadfcf2e4c73deabb1">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>, <a class="el" href="a00097.html#9eaa0b6beff1420f688570bbf6b8c462">tbb::blocked_range< Value ></a><li>spawn()
+: <a class="el" href="a00132.html#db841c647eb6d754440c2f4e4a73c80b">tbb::task</a><li>spawn_and_wait_for_all()
+: <a class="el" href="a00132.html#894ab68378e502776d8220eea7ce9fa1">tbb::task</a><li>spawn_root_and_wait()
+: <a class="el" href="a00132.html#c33c7edbaec67aa8a56f48986a9dc69f">tbb::task</a><li>spin_mutex()
+: <a class="el" href="a00127.html#3d8fb44644fd8d41ada1fbeba7409be3">tbb::spin_mutex</a><li>spin_rw_mutex_v3()
+: <a class="el" href="a00129.html#61332b2756de89f3f5f69310cbb6e70c">tbb::spin_rw_mutex_v3</a><li>state()
+: <a class="el" href="a00132.html#0af7b2d7e6e8b4333b2accfce3dfb374">tbb::task</a><li>swap()
+: <a class="el" href="a00107.html#96c9c4bd968ed3edb8dd276854d2dae0">tbb::concurrent_vector< T, A ></a>, <a class="el" href="a00103.html#74990f452286f35ad6aa08cab6c5a8cd">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a></ul>
 <h3><a class="anchor" name="index_t">- t -</a></h3><ul>
 <li>task()
-: <a class="el" href="a00261.html#b0">tbb::task</a><li>task_group_context()
-: <a class="el" href="a00262.html#a0">tbb::task_group_context</a><li>task_list()
-: <a class="el" href="a00263.html#a0">tbb::task_list</a><li>task_scheduler_init()
-: <a class="el" href="a00265.html#a3">tbb::task_scheduler_init</a><li>tbb_thread_v3()
-: <a class="el" href="a00270.html#a3">tbb::internal::tbb_thread_v3</a><li>terminate()
-: <a class="el" href="a00265.html#a2">tbb::task_scheduler_init</a><li>throw_self()
-: <a class="el" href="a00226.html#a10">tbb::movable_exception< ExceptionData ></a>, <a class="el" href="a00200.html#a6">tbb::captured_exception</a>, <a class="el" href="a00268.html#a2">tbb::tbb_exception</a><li>tick_count()
-: <a class="el" href="a00272.html#a0">tbb::tick_count</a><li>try_acquire()
-: <a class="el" href="a00253.html#a7">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00251.html#a3">tbb::spin_mutex::scoped_lock</a>, <a class="el" href="a00246.html#a4">tbb::recursive_mutex::scoped_lock</a>, <a class="el" href="a00241.html#a4">tbb::queuing_rw_mutex::scoped_lock</a>, <a class="el" href="a00239.html#a4">tbb::queuing_mutex::scoped_lock</a>, <a class="el" href="a00228.html#a4">tbb::mutex::scoped_lock</a></ul>
+: <a class="el" href="a00132.html#2bce8ec6e44706e70128f5cf91b76e67">tbb::task</a><li>task_group_context()
+: <a class="el" href="a00133.html#6fc0ba6f3abcdb4d43277c05bd67bdd4">tbb::task_group_context</a><li>task_list()
+: <a class="el" href="a00134.html#416341c2047eaef50417b41eaf7e9de6">tbb::task_list</a><li>task_scheduler_init()
+: <a class="el" href="a00135.html#421600bf9bf9338bcf937063f2ff0e90">tbb::task_scheduler_init</a><li>terminate()
+: <a class="el" href="a00135.html#f73257e04cb7fb9bd5be2b635d9016f1">tbb::task_scheduler_init</a><li>throw_self()
+: <a class="el" href="a00111.html#17cffba35811c92b7e65d63506b69602">tbb::movable_exception< ExceptionData ></a>, <a class="el" href="a00102.html#2dd1be66ab32fa27e0ddef5707fa67ef">tbb::captured_exception</a>, <a class="el" href="a00138.html#8588e07fa49692f4d734e4f2e4f048f4">tbb::tbb_exception</a><li>tick_count()
+: <a class="el" href="a00140.html#34593326ae4191e02a13c7cbdab9de4c">tbb::tick_count</a><li>try_acquire()
+: <a class="el" href="a00130.html#9879626968d9b9a04cd2ec0fb2e84ae1">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00128.html#9297ec188534b45dc0ca48f2f39a0501">tbb::spin_mutex::scoped_lock</a>, <a class="el" href="a00123.html#36bfc3e93e3ef6340abef4901444d340">tbb::recursive_mutex::scoped_lock</a>, <a class="el" href="a00121.html#2e4ff6c9ec2fee6682f95290d1f42baa">tbb::queuing_rw_mutex::scoped_lock</a>, <a class="el" href="a00119.html#e5a014fb817599386a87170cf2cf51a9">tbb::qu [...]
 <h3><a class="anchor" name="index_u">- u -</a></h3><ul>
 <li>upgrade_to_writer()
-: <a class="el" href="a00253.html#a4">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00241.html#a6">tbb::queuing_rw_mutex::scoped_lock</a></ul>
-<h3><a class="anchor" name="index_v">- v -</a></h3><ul>
-<li>vector_iterator()
-: <a class="el" href="a00274.html#a1">tbb::internal::vector_iterator< Container, Value ></a></ul>
+: <a class="el" href="a00130.html#3f0b1e3f2efab63336400348bd070226">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00121.html#11ba1da4a722c9e6f73339a52c487e82">tbb::queuing_rw_mutex::scoped_lock</a></ul>
 <h3><a class="anchor" name="index_w">- w -</a></h3><ul>
 <li>wait_for_all()
-: <a class="el" href="a00261.html#a18">tbb::task</a><li>what()
-: <a class="el" href="a00226.html#a7">tbb::movable_exception< ExceptionData ></a>, <a class="el" href="a00200.html#a8">tbb::captured_exception</a>, <a class="el" href="a00268.html#a4">tbb::tbb_exception</a></ul>
+: <a class="el" href="a00132.html#53d2615ad9c38859b4c8080936600283">tbb::task</a><li>what()
+: <a class="el" href="a00111.html#b33a89bccf0c63106f1270c7bfaaf54f">tbb::movable_exception< ExceptionData ></a>, <a class="el" href="a00102.html#6b5988ef74a1fe2a58998d110b3633e0">tbb::captured_exception</a>, <a class="el" href="a00138.html#e8157689ecb66bc6c72d3618bf3cc371">tbb::tbb_exception</a></ul>
 <h3><a class="anchor" name="index_~">- ~ -</a></h3><ul>
 <li>~concurrent_hash_map()
-: <a class="el" href="a00201.html#a5">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>~concurrent_queue()
-: <a class="el" href="a00204.html#a1">tbb::concurrent_queue< T, A ></a><li>~concurrent_queue_iterator_base_v3()
-: <a class="el" href="a00208.html#b5">tbb::internal::concurrent_queue_iterator_base_v3</a><li>~concurrent_vector()
-: <a class="el" href="a00209.html#a41">tbb::concurrent_vector< T, A ></a><li>~const_accessor()
-: <a class="el" href="a00203.html#a5">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a><li>~filter()
-: <a class="el" href="a00216.html#a3">tbb::filter</a><li>~parallel_while()
-: <a class="el" href="a00234.html#a1">tbb::parallel_while< Body ></a><li>~pipeline()
-: <a class="el" href="a00236.html#a1">tbb::pipeline</a><li>~queuing_rw_mutex()
-: <a class="el" href="a00240.html#a1">tbb::queuing_rw_mutex</a><li>~scoped_lock()
-: <a class="el" href="a00253.html#a2">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00251.html#a5">tbb::spin_mutex::scoped_lock</a>, <a class="el" href="a00246.html#a2">tbb::recursive_mutex::scoped_lock</a>, <a class="el" href="a00241.html#a2">tbb::queuing_rw_mutex::scoped_lock</a>, <a class="el" href="a00239.html#a2">tbb::queuing_mutex::scoped_lock</a>, <a class="el" href="a00228.html#a2">tbb::mutex::scoped_lock</a><li>~spin_rw_mutex_v3()
-: <a class="el" href="a00252.html#a1">tbb::spin_rw_mutex_v3</a><li>~task()
-: <a class="el" href="a00261.html#a0">tbb::task</a><li>~task_list()
-: <a class="el" href="a00263.html#a1">tbb::task_list</a><li>~task_scheduler_init()
-: <a class="el" href="a00265.html#a4">tbb::task_scheduler_init</a></ul>
+: <a class="el" href="a00103.html#5a683e8db50438b9976e46e7d4f60e65">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a><li>~concurrent_queue()
+: <a class="el" href="a00106.html#43480ba7f4ba2401d1213ee23248e4cd">tbb::concurrent_queue< T, A ></a><li>~concurrent_vector()
+: <a class="el" href="a00107.html#da2444b28bb840d38f60d0030333a5fc">tbb::concurrent_vector< T, A ></a><li>~const_accessor()
+: <a class="el" href="a00105.html#9b3fdcb8850d6f6dc749b72dbf2d593d">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a><li>~filter()
+: <a class="el" href="a00109.html#66d159f362293e3964ba3da8bc1d2604">tbb::filter</a><li>~parallel_while()
+: <a class="el" href="a00115.html#6fcfc973cc56b79c6d0fbb8a31be7e84">tbb::parallel_while< Body ></a><li>~pipeline()
+: <a class="el" href="a00116.html#49513c6c24f9d5bbbb27edca5efe01c9">tbb::pipeline</a><li>~queuing_rw_mutex()
+: <a class="el" href="a00120.html#1ba73e3d95cfdf8323880bc623af9099">tbb::queuing_rw_mutex</a><li>~scoped_lock()
+: <a class="el" href="a00130.html#d7eaaa3f2e2c5dc11e7005811b1bdd04">tbb::spin_rw_mutex_v3::scoped_lock</a>, <a class="el" href="a00128.html#ac6fa425d1f06c56d8b70abc51aac844">tbb::spin_mutex::scoped_lock</a>, <a class="el" href="a00123.html#c1197ffb8f3cd9d4fed71d7e06265b7c">tbb::recursive_mutex::scoped_lock</a>, <a class="el" href="a00121.html#32c7d67a660d23ebbaab1a1d2826d31a">tbb::queuing_rw_mutex::scoped_lock</a>, <a class="el" href="a00119.html#ac2c576a93570957d694192a5f491443">tbb::qu [...]
+: <a class="el" href="a00129.html#9a815fb2759e55072ed413f1b6970cf3">tbb::spin_rw_mutex_v3</a><li>~task()
+: <a class="el" href="a00132.html#98245ee0473f84cb19dbbf8c81134908">tbb::task</a><li>~task_list()
+: <a class="el" href="a00134.html#6d438f1499a02db1e59c24ab6043e5ba">tbb::task_list</a><li>~task_scheduler_init()
+: <a class="el" href="a00135.html#4da6c86292d80c703a66c1f6f5299488">tbb::task_scheduler_init</a></ul>
 <hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/functions_rela.html b/doc/html/functions_rela.html
index a706a26..a6c5769 100644
--- a/doc/html/functions_rela.html
+++ b/doc/html/functions_rela.html
@@ -2,16 +2,41 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Class Members - Related Functions</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.htm [...]
-<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_type.html">Typedefs</a> | <a class="qindex" href="functions_enum.html">Enumerations</a> | <a class="qindex" href="functions_eval.html">Enumeration values</a> | <a class="qindexHL" href="functions_rela.html">Related Functions</a></div>
-
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li id="current"><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="functions.html"><span>All</span></a></li>
+    <li><a href="functions_func.html"><span>Functions</span></a></li>
+    <li><a href="functions_vars.html"><span>Variables</span></a></li>
+    <li><a href="functions_type.html"><span>Typedefs</span></a></li>
+    <li><a href="functions_enum.html"><span>Enumerations</span></a></li>
+    <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
+    <li id="current"><a href="functions_rela.html"><span>Related Functions</span></a></li>
+  </ul>
+</div>
+ 
 <p>
 <ul>
 <li>operator+
-: <a class="el" href="a00273.html#n2">tbb::tick_count::interval_t</a><li>operator-
-: <a class="el" href="a00272.html#n0">tbb::tick_count</a>, <a class="el" href="a00273.html#n3">tbb::tick_count::interval_t</a></ul>
+: <a class="el" href="a00141.html#5871ead1ca230efbe52a5008470e6428">tbb::tick_count::interval_t</a><li>operator-
+: <a class="el" href="a00140.html#09dde78a4100800c11bb883d6204b586">tbb::tick_count</a>, <a class="el" href="a00141.html#fa509691e1d689830931e36edd274f76">tbb::tick_count::interval_t</a></ul>
 <hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/functions_type.html b/doc/html/functions_type.html
index 62b8833..4ae18cb 100644
--- a/doc/html/functions_type.html
+++ b/doc/html/functions_type.html
@@ -2,28 +2,50 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Class Members - Typedefs</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.htm [...]
-<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_vars.html">Variables</a> | <a class="qindexHL" href="functions_type.html">Typedefs</a> | <a class="qindex" href="functions_enum.html">Enumerations</a> | <a class="qindex" href="functions_eval.html">Enumeration values</a> | <a class="qindex" href="functions_rela.html">Related Functions</a></div>
-
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li id="current"><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="functions.html"><span>All</span></a></li>
+    <li><a href="functions_func.html"><span>Functions</span></a></li>
+    <li><a href="functions_vars.html"><span>Variables</span></a></li>
+    <li id="current"><a href="functions_type.html"><span>Typedefs</span></a></li>
+    <li><a href="functions_enum.html"><span>Enumerations</span></a></li>
+    <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
+    <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
+  </ul>
+</div>
+ 
 <p>
 <ul>
 <li>affinity_id
-: <a class="el" href="a00261.html#w1">tbb::task</a><li>allocator_type
-: <a class="el" href="a00266.html#e0">tbb::tbb_allocator< T ></a>, <a class="el" href="a00204.html#w1">tbb::concurrent_queue< T, A ></a><li>const_iterator
-: <a class="el" href="a00195.html#w0">tbb::blocked_range< Value ></a><li>const_reference
-: <a class="el" href="a00204.html#w3">tbb::concurrent_queue< T, A ></a><li>depth_type
-: <a class="el" href="a00261.html#w0">tbb::task</a><li>difference_type
-: <a class="el" href="a00204.html#w5">tbb::concurrent_queue< T, A ></a><li>hashcode_t
-: <a class="el" href="a00222.html#w3">tbb::internal::hash_map_base</a><li>internal_array_op1
-: <a class="el" href="a00210.html#x2">tbb::internal::concurrent_vector_base_v3</a><li>internal_array_op2
-: <a class="el" href="a00210.html#x3">tbb::internal::concurrent_vector_base_v3</a><li>page_range_type
-: <a class="el" href="a00197.html#w0">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a><li>reference
-: <a class="el" href="a00204.html#w2">tbb::concurrent_queue< T, A ></a><li>row_range_type
-: <a class="el" href="a00196.html#w0">tbb::blocked_range2d< RowValue, ColValue ></a><li>size_type
-: <a class="el" href="a00204.html#w4">tbb::concurrent_queue< T, A ></a>, <a class="el" href="a00224.html#w0">tbb::internal::hash_map_range< Iterator ></a>, <a class="el" href="a00195.html#w1">tbb::blocked_range< Value ></a><li>value_type
-: <a class="el" href="a00234.html#w0">tbb::parallel_while< Body ></a>, <a class="el" href="a00204.html#w0">tbb::concurrent_queue< T, A ></a>, <a class="el" href="a00202.html#w0">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>, <a class="el" href="a00203.html#w0">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></ul>
+: <a class="el" href="a00132.html#d61bb32389d3857bf7511d69beaafb76">tbb::task</a><li>allocator_type
+: <a class="el" href="a00136.html#78701e7454ef8e1a25b5acd364367080">tbb::tbb_allocator< T ></a>, <a class="el" href="a00106.html#94ef8d1e9a05c53e3b637ea5eb553a6d">tbb::concurrent_queue< T, A ></a><li>const_iterator
+: <a class="el" href="a00097.html#1a8d05842c2b3dfc177bc4d347e4cef7">tbb::blocked_range< Value ></a><li>const_reference
+: <a class="el" href="a00106.html#981c7c13a4aef3d03f35797ebe214d59">tbb::concurrent_queue< T, A ></a><li>depth_type
+: <a class="el" href="a00132.html#d8815c39bb61bd7e2d2691c476ed03b9">tbb::task</a><li>difference_type
+: <a class="el" href="a00106.html#3c0b5f19b820719ab4f69eeb9bf75afc">tbb::concurrent_queue< T, A ></a><li>page_range_type
+: <a class="el" href="a00099.html#b8ebf17a552ba47825e9b3887855b719">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a><li>reference
+: <a class="el" href="a00106.html#ea0fab9094080138fef0802125160739">tbb::concurrent_queue< T, A ></a><li>row_range_type
+: <a class="el" href="a00098.html#a807a22fe658ec38b8edfd69521d0383">tbb::blocked_range2d< RowValue, ColValue ></a><li>size_type
+: <a class="el" href="a00106.html#75868c28b0e431caa3ac36404adff4cf">tbb::concurrent_queue< T, A ></a>, <a class="el" href="a00097.html#f5707bffea38eee5c9680f37358afb8e">tbb::blocked_range< Value ></a><li>value_type
+: <a class="el" href="a00115.html#fa297e53d3af2a101e712bc200233e9c">tbb::parallel_while< Body ></a>, <a class="el" href="a00106.html#ec587adbe0da968d828c0178b2d863b0">tbb::concurrent_queue< T, A ></a>, <a class="el" href="a00104.html#8bc15c9c07f3e21583ab1a4ad0901ce5">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>, <a class="el" href="a00105.html#b5fe45b58ccc252b8ce70ac6c896c648">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></ul>
 <hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html
index d697b0f..c1b38db 100644
--- a/doc/html/functions_vars.html
+++ b/doc/html/functions_vars.html
@@ -2,29 +2,42 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Class Members - Variables</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindexHL" href="functions.htm [...]
-<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindexHL" href="functions_vars.html">Variables</a> | <a class="qindex" href="functions_type.html">Typedefs</a> | <a class="qindex" href="functions_enum.html">Enumerations</a> | <a class="qindex" href="functions_eval.html">Enumeration values</a> | <a class="qindex" href="functions_rela.html">Related Functions</a></div>
-
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li id="current"><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="functions.html"><span>All</span></a></li>
+    <li><a href="functions_func.html"><span>Functions</span></a></li>
+    <li id="current"><a href="functions_vars.html"><span>Variables</span></a></li>
+    <li><a href="functions_type.html"><span>Typedefs</span></a></li>
+    <li><a href="functions_enum.html"><span>Enumerations</span></a></li>
+    <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
+    <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
+  </ul>
+</div>
+ 
 <p>
 <ul>
 <li>automatic
-: <a class="el" href="a00265.html#s0">tbb::task_scheduler_init</a><li>deferred
-: <a class="el" href="a00265.html#s1">tbb::task_scheduler_init</a><li>item_size
-: <a class="el" href="a00205.html#p2">tbb::internal::concurrent_queue_base_v3</a><li>items_per_page
-: <a class="el" href="a00205.html#p1">tbb::internal::concurrent_queue_base_v3</a><li>max_physical_size
-: <a class="el" href="a00222.html#s2">tbb::internal::hash_map_base</a><li>my_capacity
-: <a class="el" href="a00205.html#p0">tbb::internal::concurrent_queue_base_v3</a><li>my_early_size
-: <a class="el" href="a00210.html#p2">tbb::internal::concurrent_vector_base_v3</a><li>my_exception_data
-: <a class="el" href="a00226.html#p0">tbb::movable_exception< ExceptionData ></a><li>my_first_block
-: <a class="el" href="a00210.html#p1">tbb::internal::concurrent_vector_base_v3</a><li>my_item
-: <a class="el" href="a00208.html#p0">tbb::internal::concurrent_queue_iterator_base_v3</a><li>my_segment
-: <a class="el" href="a00210.html#p3">tbb::internal::concurrent_vector_base_v3</a><li>my_storage
-: <a class="el" href="a00210.html#p4">tbb::internal::concurrent_vector_base_v3</a><li>n_segment
-: <a class="el" href="a00222.html#s1">tbb::internal::hash_map_base</a><li>n_segment_bits
-: <a class="el" href="a00222.html#s0">tbb::internal::hash_map_base</a><li>vector_allocator_ptr
-: <a class="el" href="a00210.html#p0">tbb::internal::concurrent_vector_base_v3</a></ul>
+: <a class="el" href="a00135.html#8f5988e2b0fbb2d533fcbb7f2583743f">tbb::task_scheduler_init</a><li>deferred
+: <a class="el" href="a00135.html#e6c860f1e559026ff3ef4599c0d6c514">tbb::task_scheduler_init</a><li>my_exception_data
+: <a class="el" href="a00111.html#a8c0ae2089ae784b28907cf748b89416">tbb::movable_exception< ExceptionData ></a></ul>
 <hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/globals.html b/doc/html/globals.html
index a25f050..d371b16 100644
--- a/doc/html/globals.html
+++ b/doc/html/globals.html
@@ -1,23 +1,42 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>File Members</title>
+<title>Class Members</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<div class="qindex"><a class="qindexHL" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a></div>
-
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li id="current"><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li id="current"><a href="globals.html"><span>All</span></a></li>
+    <li><a href="globals_func.html"><span>Functions</span></a></li>
+  </ul>
+</div>
+Here is a list of all documented file members with links to the documentation:
 <p>
-Here is a list of all documented file members with links to the documentation:<ul>
+<ul>
 <li>scalable_aligned_free()
-: <a class="el" href="a00304.html#a7">scalable_allocator.h</a><li>scalable_aligned_malloc()
-: <a class="el" href="a00304.html#a5">scalable_allocator.h</a><li>scalable_aligned_realloc()
-: <a class="el" href="a00304.html#a6">scalable_allocator.h</a><li>scalable_calloc()
-: <a class="el" href="a00304.html#a3">scalable_allocator.h</a><li>scalable_free()
-: <a class="el" href="a00304.html#a1">scalable_allocator.h</a><li>scalable_malloc()
-: <a class="el" href="a00304.html#a0">scalable_allocator.h</a><li>scalable_posix_memalign()
-: <a class="el" href="a00304.html#a4">scalable_allocator.h</a><li>scalable_realloc()
-: <a class="el" href="a00304.html#a2">scalable_allocator.h</a></ul>
+: <a class="el" href="a00185.html#g65a20e812012f15ec7442d5b45d0cba5">scalable_allocator.h</a><li>scalable_aligned_malloc()
+: <a class="el" href="a00185.html#gc1c7aaa1fe85c17ba5a3a96f7e8d89e7">scalable_allocator.h</a><li>scalable_aligned_realloc()
+: <a class="el" href="a00185.html#gbaea91376be80dfabd7c93eaffd9abaa">scalable_allocator.h</a><li>scalable_calloc()
+: <a class="el" href="a00185.html#g3f5a2fde0bcaa3eda35be32c8658f444">scalable_allocator.h</a><li>scalable_free()
+: <a class="el" href="a00185.html#gca3579c21244dba9f0c351e5984d4565">scalable_allocator.h</a><li>scalable_malloc()
+: <a class="el" href="a00185.html#gc25b8e6c76db0b346a8249796a7a2475">scalable_allocator.h</a><li>scalable_posix_memalign()
+: <a class="el" href="a00185.html#g05dcec987480bb2c82ecdead6a085899">scalable_allocator.h</a><li>scalable_realloc()
+: <a class="el" href="a00185.html#g951bbbbd2d041acb59ba5fa910b52543">scalable_allocator.h</a></ul>
 <hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/globals_func.html b/doc/html/globals_func.html
index ad1a9c6..fb986db 100644
--- a/doc/html/globals_func.html
+++ b/doc/html/globals_func.html
@@ -1,23 +1,42 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>File Members - Functions</title>
+<title>Class Members</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindexHL" href="globals_func.html">Functions</a></div>
-
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File List</span></a></li>
+    <li id="current"><a href="globals.html"><span>File Members</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="globals.html"><span>All</span></a></li>
+    <li id="current"><a href="globals_func.html"><span>Functions</span></a></li>
+  </ul>
+</div>
+ 
 <p>
 <ul>
 <li>scalable_aligned_free()
-: <a class="el" href="a00304.html#a7">scalable_allocator.h</a><li>scalable_aligned_malloc()
-: <a class="el" href="a00304.html#a5">scalable_allocator.h</a><li>scalable_aligned_realloc()
-: <a class="el" href="a00304.html#a6">scalable_allocator.h</a><li>scalable_calloc()
-: <a class="el" href="a00304.html#a3">scalable_allocator.h</a><li>scalable_free()
-: <a class="el" href="a00304.html#a1">scalable_allocator.h</a><li>scalable_malloc()
-: <a class="el" href="a00304.html#a0">scalable_allocator.h</a><li>scalable_posix_memalign()
-: <a class="el" href="a00304.html#a4">scalable_allocator.h</a><li>scalable_realloc()
-: <a class="el" href="a00304.html#a2">scalable_allocator.h</a></ul>
+: <a class="el" href="a00185.html#g65a20e812012f15ec7442d5b45d0cba5">scalable_allocator.h</a><li>scalable_aligned_malloc()
+: <a class="el" href="a00185.html#gc1c7aaa1fe85c17ba5a3a96f7e8d89e7">scalable_allocator.h</a><li>scalable_aligned_realloc()
+: <a class="el" href="a00185.html#gbaea91376be80dfabd7c93eaffd9abaa">scalable_allocator.h</a><li>scalable_calloc()
+: <a class="el" href="a00185.html#g3f5a2fde0bcaa3eda35be32c8658f444">scalable_allocator.h</a><li>scalable_free()
+: <a class="el" href="a00185.html#gca3579c21244dba9f0c351e5984d4565">scalable_allocator.h</a><li>scalable_malloc()
+: <a class="el" href="a00185.html#gc25b8e6c76db0b346a8249796a7a2475">scalable_allocator.h</a><li>scalable_posix_memalign()
+: <a class="el" href="a00185.html#g05dcec987480bb2c82ecdead6a085899">scalable_allocator.h</a><li>scalable_realloc()
+: <a class="el" href="a00185.html#g951bbbbd2d041acb59ba5fa910b52543">scalable_allocator.h</a></ul>
 <hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/graph_legend.html b/doc/html/graph_legend.html
index 347cf3f..72aae12 100644
--- a/doc/html/graph_legend.html
+++ b/doc/html/graph_legend.html
@@ -2,9 +2,18 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Graph Legend</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
 <h1>Graph Legend</h1>This page explains how to interpret the graphs that are generated by doxygen.<p>
 Consider the following example: <div class="fragment"><pre class="fragment"><span class="comment">/*! Invisible class because of truncation */</span>
 <span class="keyword">class </span>Invisible { };
@@ -40,9 +49,9 @@ Consider the following example: <div class="fragment"><pre class="fragment"><spa
   <span class="keyword">private</span>:
     Used *m_usedClass;
 };
-</pre></div>If the <code>MAX_DOT_GRAPH_HEIGHT</code> tag in the configuration file is set to 240 this will result in the following graph:<p>
+</pre></div> If the <code>MAX_DOT_GRAPH_HEIGHT</code> tag in the configuration file is set to 240 this will result in the following graph:<p>
 <center><div align="center">
-<img src="graph_legend.gif" alt="graph_legend.gif" alt>
+<img src="graph_legend.gif" alt="graph_legend.gif">
 </div>
 </center> <p>
 The boxes in the above graph have the following meaning: <ul>
diff --git a/doc/html/hierarchy.html b/doc/html/hierarchy.html
index d7e7024..b39b46b 100644
--- a/doc/html/hierarchy.html
+++ b/doc/html/hierarchy.html
@@ -2,125 +2,84 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Hierarchical Index</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindexHL" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.htm [...]
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="annotated.html"><span>Class List</span></a></li>
+    <li id="current"><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class Members</span></a></li>
+  </ul></div>
 <h1>Class Hierarchy</h1>This inheritance list is sorted roughly, but not completely, alphabetically:<ul>
-<li><b>tbb::internal::__TBB_machine_type_with_strictest_alignment</b><li><a class="el" href="a00190.html">tbb::aligned_space< T, N ></a>
-<li><b>tbb::internal::allocator_base< T, A ></b><li><a class="el" href="a00191.html">tbb::atomic< T ></a>
-<li><b>tbb::atomic< bool ></b><li><b>tbb::atomic< void * ></b><li><b>tbb::internal::atomic_base< I ></b><li><b>tbb::internal::atomic_base< int64_t ></b><li><b>tbb::internal::atomic_base< uint64_t ></b><li><b>tbb::internal::atomic_impl</b><li><b>tbb::internal::atomic_traits< Size, M ></b><li><b>tbb::internal::atomic_word< Size ></b><li><b>tbb::internal::atomic_word< 1 ></b><li><b>tbb::internal::atomic_word< 2 ></b><li><b>tbb::internal: [...]
-<li><a class="el" href="a00193.html">tbb::auto_partitioner</a>
-<li><a class="el" href="a00194.html">tbb::bad_last_alloc</a>
-<li><a class="el" href="a00195.html">tbb::blocked_range< Value ></a>
-<li><a class="el" href="a00196.html">tbb::blocked_range2d< RowValue, ColValue ></a>
-<li><a class="el" href="a00197.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
-<li><a class="el" href="a00195.html">tbb::blocked_range< I ></a>
-<li><a class="el" href="a00198.html">tbb::cache_aligned_allocator< T ></a>
-<li><b>tbb::cache_aligned_allocator< T >::rebind< U ></b><li><a class="el" href="a00199.html">tbb::cache_aligned_allocator< void ></a>
-<li><b>tbb::cache_aligned_allocator< void >::rebind< U ></b><li><a class="el" href="a00203.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
+<li><a class="el" href="a00091.html">tbb::affinity_partitioner</a>
+<li><a class="el" href="a00092.html">tbb::aligned_space< T, N ></a>
+<li><a class="el" href="a00093.html">tbb::atomic< T ></a>
+<li><a class="el" href="a00094.html">tbb::internal::AtomicBackoff</a>
+<li><a class="el" href="a00095.html">tbb::auto_partitioner</a>
+<li><a class="el" href="a00096.html">tbb::bad_last_alloc</a>
+<li><a class="el" href="a00097.html">tbb::blocked_range< Value ></a>
+<li><a class="el" href="a00098.html">tbb::blocked_range2d< RowValue, ColValue ></a>
+<li><a class="el" href="a00099.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
+<li><a class="el" href="a00097.html">tbb::blocked_range< I ></a>
+<li><a class="el" href="a00100.html">tbb::cache_aligned_allocator< T ></a>
+<li><a class="el" href="a00101.html">tbb::cache_aligned_allocator< void ></a>
+<li><a class="el" href="a00103.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>
+<li><a class="el" href="a00105.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
 <ul>
-<li><a class="el" href="a00202.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>
+<li><a class="el" href="a00104.html">tbb::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>
 </ul>
-<li><a class="el" href="a00206.html">tbb::internal::concurrent_queue_base_v3::page</a>
-<li><a class="el" href="a00208.html">tbb::internal::concurrent_queue_iterator_base_v3</a>
+<li><a class="el" href="a00106.html">tbb::concurrent_queue< T, A ></a>
+<li><a class="el" href="a00107.html">tbb::concurrent_vector< T, A ></a>
+<li><a class="el" href="a00109.html">tbb::filter</a>
+<li><a class="el" href="a00110.html">tbb::final_scan_tag</a>
+<li><a class="el" href="a00112.html">tbb::mutex</a>
+<li><a class="el" href="a00113.html">tbb::mutex::scoped_lock</a>
+<li><a class="el" href="a00114.html">tbb::parallel_do_feeder< Item ></a>
+<li><a class="el" href="a00115.html">tbb::parallel_while< Body ></a>
+<li><a class="el" href="a00116.html">tbb::pipeline</a>
+<li><a class="el" href="a00117.html">tbb::pre_scan_tag</a>
+<li><a class="el" href="a00118.html">tbb::queuing_mutex</a>
+<li><a class="el" href="a00119.html">tbb::queuing_mutex::scoped_lock</a>
+<li><a class="el" href="a00120.html">tbb::queuing_rw_mutex</a>
+<li><a class="el" href="a00121.html">tbb::queuing_rw_mutex::scoped_lock</a>
+<li><a class="el" href="a00122.html">tbb::recursive_mutex</a>
+<li><a class="el" href="a00123.html">tbb::recursive_mutex::scoped_lock</a>
+<li><a class="el" href="a00124.html">tbb::scalable_allocator< T ></a>
+<li><a class="el" href="a00125.html">tbb::scalable_allocator< void ></a>
+<li><a class="el" href="a00126.html">tbb::simple_partitioner</a>
+<li><a class="el" href="a00127.html">tbb::spin_mutex</a>
+<li><a class="el" href="a00128.html">tbb::spin_mutex::scoped_lock</a>
+<li><a class="el" href="a00129.html">tbb::spin_rw_mutex_v3</a>
+<li><a class="el" href="a00130.html">tbb::spin_rw_mutex_v3::scoped_lock</a>
+<li><a class="el" href="a00131.html">tbb::split</a>
+<li><a class="el" href="a00132.html">tbb::task</a>
 <ul>
-<li><a class="el" href="a00207.html">tbb::internal::concurrent_queue_iterator< Container, Value ></a>
+<li><a class="el" href="a00108.html">tbb::empty_task</a>
 </ul>
-<li><a class="el" href="a00210.html">tbb::internal::concurrent_vector_base_v3</a>
+<li><a class="el" href="a00133.html">tbb::task_group_context</a>
+<li><a class="el" href="a00134.html">tbb::task_list</a>
+<li><a class="el" href="a00135.html">tbb::task_scheduler_init</a>
+<li><a class="el" href="a00136.html">tbb::tbb_allocator< T ></a>
+<li><a class="el" href="a00137.html">tbb::tbb_allocator< void ></a>
+<li><a class="el" href="a00138.html">tbb::tbb_exception</a>
 <ul>
-<li><a class="el" href="a00209.html">tbb::concurrent_vector< T, A ></a>
+<li><a class="el" href="a00102.html">tbb::captured_exception</a>
+<li><a class="el" href="a00111.html">tbb::movable_exception< ExceptionData ></a>
 </ul>
-<li><a class="el" href="a00211.html">tbb::internal::concurrent_vector_base_v3::internal_segments_table</a>
-<li><b>tbb::internal::concurrent_vector_base_v3::segment_t</b><li><b>tbb::internal::context_list_node_t</b><li><a class="el" href="a00217.html">tbb::final_scan_tag</a>
-<li><a class="el" href="a00222.html">tbb::internal::hash_map_base</a>
-<ul>
-<li><a class="el" href="a00201.html">tbb::concurrent_hash_map< Key, T, HashCompare, A ></a>
-</ul>
-<li><a class="el" href="a00223.html">tbb::internal::hash_map_iterator< Container, Value ></a>
-<li><a class="el" href="a00224.html">tbb::internal::hash_map_range< Iterator ></a>
-<li><b>tbb::internal::hash_map_segment_base</b><li><a class="el" href="a00225.html">tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction ></a>
-<li><a class="el" href="a00227.html">tbb::mutex</a>
-<li><a class="el" href="a00229.html">tbb::internal::no_assign</a>
-<ul>
-<li><b>tbb::internal::allocate_additional_child_of_proxy</b><li><b>tbb::internal::allocate_child_proxy</b><li><b>tbb::internal::allocate_continuation_proxy</b><li><b>tbb::internal::allocate_root_proxy</b><li><b>tbb::internal::allocate_root_with_context_proxy</b><li><a class="el" href="a00230.html">tbb::internal::no_copy</a>
-<ul>
-<li><a class="el" href="a00216.html">tbb::filter</a>
-<li><b>tbb::internal::affinity_partition_type</b><li><a class="el" href="a00189.html">tbb::internal::affinity_partitioner_base_v3</a>
-<ul>
-<li><a class="el" href="a00188.html">tbb::affinity_partitioner</a>
-</ul>
-<li><a class="el" href="a00205.html">tbb::internal::concurrent_queue_base_v3</a>
-<ul>
-<li><a class="el" href="a00204.html">tbb::concurrent_queue< T, A ></a>
-</ul>
-<li><b>tbb::internal::scheduler</b><li><a class="el" href="a00228.html">tbb::mutex::scoped_lock</a>
-<li><a class="el" href="a00231.html">tbb::parallel_do_feeder< Item ></a>
-<ul>
-<li><a class="el" href="a00232.html">tbb::internal::parallel_do_feeder_impl< Body, Item ></a>
-</ul>
-<li><a class="el" href="a00234.html">tbb::parallel_while< Body ></a>
-<li><a class="el" href="a00239.html">tbb::queuing_mutex::scoped_lock</a>
-<li><a class="el" href="a00241.html">tbb::queuing_rw_mutex::scoped_lock</a>
-<li><a class="el" href="a00246.html">tbb::recursive_mutex::scoped_lock</a>
-<li><a class="el" href="a00251.html">tbb::spin_mutex::scoped_lock</a>
-<li><a class="el" href="a00253.html">tbb::spin_rw_mutex_v3::scoped_lock</a>
-<li><a class="el" href="a00261.html">tbb::task</a>
-<ul>
-<li><a class="el" href="a00215.html">tbb::empty_task</a>
-<li><a class="el" href="a00212.html">tbb::internal::do_group_task_forward< Iterator, Body, Item ></a>
-<li><b>tbb::internal::do_group_task_input</b><li><a class="el" href="a00213.html">tbb::internal::do_iteration_task< Body, Item ></a>
-<li><b>tbb::internal::do_iteration_task_iter</b><li><a class="el" href="a00214.html">tbb::internal::do_task_iter< Iterator, Body, Item ></a>
-<li><a class="el" href="a00218.html">tbb::internal::final_sum< Range, Body ></a>
-<li><a class="el" href="a00219.html">tbb::internal::finish_reduce< Body ></a>
-<li><a class="el" href="a00220.html">tbb::internal::finish_reduce_with_affinity< Body ></a>
-<li><a class="el" href="a00221.html">tbb::internal::finish_scan< Range, Body ></a>
-<li><a class="el" href="a00255.html">tbb::internal::start_for< Range, Body, Partitioner ></a>
-<li><a class="el" href="a00256.html">tbb::internal::start_reduce< Range, Body, Partitioner ></a>
-<li><a class="el" href="a00257.html">tbb::internal::start_reduce_with_affinity< Range, Body ></a>
-<li><a class="el" href="a00258.html">tbb::internal::start_scan< Range, Body, Partitioner ></a>
-<li><a class="el" href="a00260.html">tbb::internal::sum_node< Range, Body ></a>
-<li><a class="el" href="a00276.html">tbb::internal::while_group_task< Body ></a>
-<li><a class="el" href="a00277.html">tbb::internal::while_iteration_task< Body ></a>
-<li><a class="el" href="a00278.html">tbb::internal::while_task< Stream, Body ></a>
-</ul>
-<li><a class="el" href="a00262.html">tbb::task_group_context</a>
-<li><a class="el" href="a00263.html">tbb::task_list</a>
-<li><a class="el" href="a00265.html">tbb::task_scheduler_init</a>
-</ul>
-<li><a class="el" href="a00243.html">tbb::internal::quick_sort_pretest_body< RandomAccessIterator, Compare ></a>
-<li><a class="el" href="a00244.html">tbb::internal::quick_sort_range< RandomAccessIterator, Compare ></a>
-</ul>
-<li><b>tbb::null_mutex</b><li><b>tbb::null_mutex::scoped_lock</b><li><b>tbb::null_rw_mutex</b><li><b>tbb::null_rw_mutex::scoped_lock</b><li><a class="el" href="a00233.html">tbb::internal::parallel_do_operator_selector< Body, Item ></a>
-<li><a class="el" href="a00235.html">tbb::internal::partition_type_base</a>
-<li><a class="el" href="a00236.html">tbb::pipeline</a>
-<li><a class="el" href="a00237.html">tbb::pre_scan_tag</a>
-<li><a class="el" href="a00238.html">tbb::queuing_mutex</a>
-<li><a class="el" href="a00240.html">tbb::queuing_rw_mutex</a>
-<li><a class="el" href="a00242.html">tbb::internal::quick_sort_body< RandomAccessIterator, Compare ></a>
-<li><a class="el" href="a00245.html">tbb::recursive_mutex</a>
-<li><a class="el" href="a00247.html">tbb::scalable_allocator< T ></a>
-<li><b>tbb::scalable_allocator< T >::rebind< U ></b><li><a class="el" href="a00248.html">tbb::scalable_allocator< void ></a>
-<li><b>tbb::scalable_allocator< void >::rebind< U ></b><li><a class="el" href="a00249.html">tbb::simple_partitioner</a>
-<li><a class="el" href="a00250.html">tbb::spin_mutex</a>
-<li><a class="el" href="a00252.html">tbb::spin_rw_mutex_v3</a>
-<li><a class="el" href="a00254.html">tbb::split</a>
-<li><a class="el" href="a00259.html">tbb::internal::strip< T ></a>
-<li><b>tbb::internal::strip< const T & ></b><li><b>tbb::internal::strip< const T ></b><li><b>tbb::internal::strip< const volatile T & ></b><li><b>tbb::internal::strip< const volatile T ></b><li><b>tbb::internal::strip< T & ></b><li><b>tbb::internal::strip< volatile T & ></b><li><b>tbb::internal::strip< volatile T ></b><li><a class="el" href="a00264.html">tbb::internal::task_prefix</a>
-<li><b>tbb::internal::task_scheduler_observer_v3</b><li><a class="el" href="a00266.html">tbb::tbb_allocator< T ></a>
-<li><b>tbb::tbb_allocator< T >::rebind< U ></b><li><a class="el" href="a00267.html">tbb::tbb_allocator< void ></a>
-<li><b>tbb::tbb_allocator< void >::rebind< U ></b><li><a class="el" href="a00268.html">tbb::tbb_exception</a>
-<ul>
-<li><a class="el" href="a00200.html">tbb::captured_exception</a>
-<li><a class="el" href="a00226.html">tbb::movable_exception< ExceptionData ></a>
-</ul>
-<li><a class="el" href="a00269.html">tbb::tbb_hash_compare< T ></a>
-<li><a class="el" href="a00270.html">tbb::internal::tbb_thread_v3</a>
-<li><b>tbb::internal::tbb_thread_v3::id</b><li><b>tbb::internal::thread_closure_0< F ></b><li><a class="el" href="a00271.html">tbb::internal::thread_closure_1< F, X ></a>
-<li><b>tbb::internal::thread_closure_2< F, X, Y ></b><li><b>tbb::internal::thread_closure_base</b><li><a class="el" href="a00272.html">tbb::tick_count</a>
-<li><a class="el" href="a00273.html">tbb::tick_count::interval_t</a>
-<li><b>tbb::internal::type_with_alignment< N ></b><li><b>tbb::internal::type_with_alignment< 1 ></b><li><b>tbb::internal::type_with_alignment< 2 ></b><li><b>tbb::internal::type_with_alignment< 4 ></b><li><b>tbb::internal::type_with_alignment< 8 ></b><li><a class="el" href="a00274.html">tbb::internal::vector_iterator< Container, Value ></a>
-<li><a class="el" href="a00275.html">tbb::internal::version_tag_v3</a>
-<li><a class="el" href="a00279.html">tbb::internal::work_around_alignment_bug< Size, T ></a>
+<li><a class="el" href="a00139.html">tbb::tbb_hash_compare< T ></a>
+<li><a class="el" href="a00140.html">tbb::tick_count</a>
+<li><a class="el" href="a00141.html">tbb::tick_count::interval_t</a>
+<li><a class="el" href="a00142.html">tbb::internal::work_around_alignment_bug< Size, T ></a>
 </ul>
 <hr>
 <p></p>
diff --git a/doc/html/index.html b/doc/html/index.html
index a686b8d..7625a32 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -2,16 +2,25 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Main Page</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindexHL" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.htm [...]
-<h1>Main Page </h1>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li id="current"><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<h1>Main Page</h1>
 <p>
 Click the tabs above for information about the<ul>
 <li><a href="./modules.html">Modules</a> (groups of functionality) implemented by the library</li><li><a href="./annotated.html">Classes</a> provided by the library</li><li><a href="./files.html">Files</a> constituting the library.</li></ul>
 Please note that significant part of TBB functionality is implemented in the form of template functions, descriptions of which are not accessible on the <a href="./annotated.html">Classes</a> tab. Use <a href="./modules.html">Modules</a> or <a href="./namespacemembers.html">Namespace/Namespace Members</a> tabs to find them.<p>
 Additional pieces of information can be found here<ul>
-<li>concepts</li></ul>
+<li><a class="el" href="concepts.html">TBB concepts</a></li></ul>
 <hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/modules.html b/doc/html/modules.html
index bb806ba..44f7763 100644
--- a/doc/html/modules.html
+++ b/doc/html/modules.html
@@ -2,11 +2,25 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Module Index</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindexHL" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.htm [...]
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li id="current"><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
 <h1>Modules</h1>Here is a list of all modules:<ul>
-<li><a class="el" href="a00321.html">Algorithms</a>
+<li><a class="el" href="a00183.html">Algorithms</a>
+<li><a class="el" href="a00184.html">Containers</a>
+<li><a class="el" href="a00185.html">Memory Allocation</a>
+<li><a class="el" href="a00186.html">Synchronization</a>
+<li><a class="el" href="a00187.html">Timing</a>
+<li><a class="el" href="a00188.html">Task Scheduling</a>
 </ul>
 <hr>
 <p></p>
diff --git a/doc/html/namespacemembers.html b/doc/html/namespacemembers.html
index ce109a8..4c2f73f 100644
--- a/doc/html/namespacemembers.html
+++ b/doc/html/namespacemembers.html
@@ -1,82 +1,50 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Namespace Members</title>
+<title>Class Members</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindexHL" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.htm [...]
-<div class="qindex"><a class="qindexHL" href="namespacemembers.html">All</a> | <a class="qindex" href="namespacemembers_func.html">Functions</a> | <a class="qindex" href="namespacemembers_vars.html">Variables</a> | <a class="qindex" href="namespacemembers_type.html">Typedefs</a> | <a class="qindex" href="namespacemembers_enum.html">Enumerations</a> | <a class="qindex" href="namespacemembers_eval.html">Enumeration values</a></div>
-<div class="qindex"><a class="qindex" href="#index__">_</a> | <a class="qindex" href="#index_a">a</a> | <a class="qindex" href="#index_d">d</a> | <a class="qindex" href="#index_f">f</a> | <a class="qindex" href="#index_h">h</a> | <a class="qindex" href="#index_i">i</a> | <a class="qindex" href="#index_m">m</a> | <a class="qindex" href="#index_n">n</a> | <a class="qindex" href="#index_p">p</a> | <a class="qindex" href="#index_r">r</a> | <a class="qindex" href="#index_s">s</a> | <a class=" [...]
-
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li id="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="namespaces.html"><span>Namespace List</span></a></li>
+    <li id="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li id="current"><a href="namespacemembers.html"><span>All</span></a></li>
+    <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
+    <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
+    <li><a href="namespacemembers_enum.html"><span>Enumerations</span></a></li>
+    <li><a href="namespacemembers_eval.html"><span>Enumerator</span></a></li>
+  </ul>
+</div>
+Here is a list of all documented namespace members with links to the namespaces they belong to:
 <p>
-
-<p>
-Here is a list of all documented namespace members with links to the namespaces they belong to:<h3><a class="anchor" name="index__">- _ -</a></h3><ul>
-<li>__TBB_DECL_ATOMIC_PRIMITIVES()
-: <a class="el" href="a00319.html#a30">tbb::internal</a><li>__TBB_full_fence
-: <a class="el" href="a00318.html#a57a0">tbb</a></ul>
-<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
-<li>acquire
-: <a class="el" href="a00318.html#a57a1">tbb</a><li>affinity_id
-: <a class="el" href="a00319.html#a11">tbb::internal</a><li>allocate_closure_v3()
-: <a class="el" href="a00319.html#a79">tbb::internal</a><li>allocate_via_handler_v3()
-: <a class="el" href="a00319.html#a62">tbb::internal</a><li>assertion_failure()
-: <a class="el" href="a00318.html#a52">tbb</a><li>assertion_handler_type
-: <a class="el" href="a00318.html#a6">tbb</a></ul>
-<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
-<li>deallocate_via_handler_v3()
-: <a class="el" href="a00319.html#a61">tbb::internal</a></ul>
-<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
-<li>free_closure_v3()
-: <a class="el" href="a00319.html#a80">tbb::internal</a></ul>
-<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
-<li>hash_multiplier
-: <a class="el" href="a00319.html#a3">tbb::internal</a><li>hashcode_t
-: <a class="el" href="a00319.html#a2">tbb::internal</a><li>hasher()
-: <a class="el" href="a00319.html#a36">tbb::internal</a></ul>
-<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
-<li>intptr
-: <a class="el" href="a00319.html#a22">tbb::internal</a><li>is_malloc_used_v3()
-: <a class="el" href="a00319.html#a63">tbb::internal</a><li>itt_load_pointer_v3()
-: <a class="el" href="a00319.html#a42">tbb::internal</a><li>itt_load_pointer_with_acquire_v3()
-: <a class="el" href="a00319.html#a56">tbb::internal</a><li>itt_store_pointer_with_release_v3()
-: <a class="el" href="a00319.html#a55">tbb::internal</a></ul>
-<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
-<li>memory_semantics
-: <a class="el" href="a00318.html#a57">tbb</a></ul>
-<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
-<li>NFS_Allocate()
-: <a class="el" href="a00319.html#a32">tbb::internal</a><li>NFS_Free()
-: <a class="el" href="a00319.html#a33">tbb::internal</a><li>NFS_GetLineSize()
-: <a class="el" href="a00319.html#a31">tbb::internal</a><li>NFS_MaxLineSize
-: <a class="el" href="a00319.html#a1">tbb::internal</a></ul>
-<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
-<li>parallel_do()
-: <a class="el" href="a00321.html#ga4">tbb</a><li>parallel_for()
-: <a class="el" href="a00321.html#ga10">tbb</a><li>parallel_quick_sort()
-: <a class="el" href="a00321.html#ga25">tbb::internal</a><li>parallel_reduce()
-: <a class="el" href="a00321.html#ga22">tbb</a><li>parallel_scan()
-: <a class="el" href="a00321.html#ga24">tbb</a><li>parallel_sort()
-: <a class="el" href="a00321.html#ga28">tbb</a><li>poison_pointer()
-: <a class="el" href="a00319.html#a77">tbb::internal</a></ul>
-<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
-<li>reduction_context
-: <a class="el" href="a00319.html#a7">tbb::internal</a><li>reference_count
-: <a class="el" href="a00319.html#a10">tbb::internal</a><li>release
-: <a class="el" href="a00318.html#a57a2">tbb</a><li>run_parallel_do()
-: <a class="el" href="a00321.html#ga0">tbb::internal</a><li>runtime_warning()
-: <a class="el" href="a00319.html#a76">tbb::internal</a></ul>
-<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
-<li>select_parallel_do()
-: <a class="el" href="a00321.html#ga2">tbb::internal</a><li>set_assertion_handler()
-: <a class="el" href="a00318.html#a51">tbb</a></ul>
-<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
-<li>TBB_runtime_interface_version()
-: <a class="el" href="a00318.html#a53">tbb</a><li>tbb_thread
-: <a class="el" href="a00318.html#a7">tbb</a></ul>
-<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
-<li>uintptr
-: <a class="el" href="a00319.html#a21">tbb::internal</a></ul>
+<ul>
+<li>__TBB_full_fence
+: <a class="el" href="a00181.html#a8686246bb5d3664bd07563749970fefc6db01678b1749dff7554688d079520c">tbb</a><li>acquire
+: <a class="el" href="a00181.html#a8686246bb5d3664bd07563749970fef5f1fafe8d229d348ff91d937f64e79c7">tbb</a><li>assertion_failure()
+: <a class="el" href="a00181.html#3d1252787be39b4aef311f1cadaff9e8">tbb</a><li>assertion_handler_type
+: <a class="el" href="a00181.html#ed375248ff6019a70ca0f9da528e5d0b">tbb</a><li>memory_semantics
+: <a class="el" href="a00181.html#a8686246bb5d3664bd07563749970fef">tbb</a><li>parallel_do()
+: <a class="el" href="a00183.html#g2617dc9b88b3285a7212599d49f74228">tbb</a><li>parallel_for()
+: <a class="el" href="a00183.html#g04b4696b67370c01353ff5974c8f1196">tbb</a><li>parallel_reduce()
+: <a class="el" href="a00183.html#g496bd7eadb3b97495ccb5655ef90319e">tbb</a><li>parallel_scan()
+: <a class="el" href="a00183.html#g62fde400a37bbca1a2fddc8e3d22f556">tbb</a><li>parallel_sort()
+: <a class="el" href="a00183.html#gc7576f82fdedc8a701a6c17ad9415926">tbb</a><li>release
+: <a class="el" href="a00181.html#a8686246bb5d3664bd07563749970fefaa1fa107db0245c41fb109d976ae8d70">tbb</a><li>set_assertion_handler()
+: <a class="el" href="a00181.html#823fa1c15dd829d1d9167157450ddcd9">tbb</a><li>TBB_runtime_interface_version()
+: <a class="el" href="a00181.html#a6858b22e90041c9c4669674ff39b056">tbb</a></ul>
 <hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/namespacemembers_enum.html b/doc/html/namespacemembers_enum.html
index 5b4d083..5281a39 100644
--- a/doc/html/namespacemembers_enum.html
+++ b/doc/html/namespacemembers_enum.html
@@ -1,16 +1,38 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Namespace Members - Enumerations</title>
+<title>Class Members</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindexHL" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.htm [...]
-<div class="qindex"><a class="qindex" href="namespacemembers.html">All</a> | <a class="qindex" href="namespacemembers_func.html">Functions</a> | <a class="qindex" href="namespacemembers_vars.html">Variables</a> | <a class="qindex" href="namespacemembers_type.html">Typedefs</a> | <a class="qindexHL" href="namespacemembers_enum.html">Enumerations</a> | <a class="qindex" href="namespacemembers_eval.html">Enumeration values</a></div>
-
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li id="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="namespaces.html"><span>Namespace List</span></a></li>
+    <li id="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="namespacemembers.html"><span>All</span></a></li>
+    <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
+    <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
+    <li id="current"><a href="namespacemembers_enum.html"><span>Enumerations</span></a></li>
+    <li><a href="namespacemembers_eval.html"><span>Enumerator</span></a></li>
+  </ul>
+</div>
+ 
 <p>
 <ul>
 <li>memory_semantics
-: <a class="el" href="a00318.html#a57">tbb</a></ul>
+: <a class="el" href="a00181.html#a8686246bb5d3664bd07563749970fef">tbb</a></ul>
 <hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/namespacemembers_eval.html b/doc/html/namespacemembers_eval.html
index bd7a7a2..ec77e63 100644
--- a/doc/html/namespacemembers_eval.html
+++ b/doc/html/namespacemembers_eval.html
@@ -1,18 +1,40 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Namespace Members - Enumeration values</title>
+<title>Class Members</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindexHL" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.htm [...]
-<div class="qindex"><a class="qindex" href="namespacemembers.html">All</a> | <a class="qindex" href="namespacemembers_func.html">Functions</a> | <a class="qindex" href="namespacemembers_vars.html">Variables</a> | <a class="qindex" href="namespacemembers_type.html">Typedefs</a> | <a class="qindex" href="namespacemembers_enum.html">Enumerations</a> | <a class="qindexHL" href="namespacemembers_eval.html">Enumeration values</a></div>
-
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li id="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="namespaces.html"><span>Namespace List</span></a></li>
+    <li id="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="namespacemembers.html"><span>All</span></a></li>
+    <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
+    <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
+    <li><a href="namespacemembers_enum.html"><span>Enumerations</span></a></li>
+    <li id="current"><a href="namespacemembers_eval.html"><span>Enumerator</span></a></li>
+  </ul>
+</div>
+ 
 <p>
 <ul>
 <li>__TBB_full_fence
-: <a class="el" href="a00318.html#a57a0">tbb</a><li>acquire
-: <a class="el" href="a00318.html#a57a1">tbb</a><li>release
-: <a class="el" href="a00318.html#a57a2">tbb</a></ul>
+: <a class="el" href="a00181.html#a8686246bb5d3664bd07563749970fefc6db01678b1749dff7554688d079520c">tbb</a><li>acquire
+: <a class="el" href="a00181.html#a8686246bb5d3664bd07563749970fef5f1fafe8d229d348ff91d937f64e79c7">tbb</a><li>release
+: <a class="el" href="a00181.html#a8686246bb5d3664bd07563749970fefaa1fa107db0245c41fb109d976ae8d70">tbb</a></ul>
 <hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/namespacemembers_func.html b/doc/html/namespacemembers_func.html
index 6948d64..3618eed 100644
--- a/doc/html/namespacemembers_func.html
+++ b/doc/html/namespacemembers_func.html
@@ -1,41 +1,45 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Namespace Members - Functions</title>
+<title>Class Members</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindexHL" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.htm [...]
-<div class="qindex"><a class="qindex" href="namespacemembers.html">All</a> | <a class="qindexHL" href="namespacemembers_func.html">Functions</a> | <a class="qindex" href="namespacemembers_vars.html">Variables</a> | <a class="qindex" href="namespacemembers_type.html">Typedefs</a> | <a class="qindex" href="namespacemembers_enum.html">Enumerations</a> | <a class="qindex" href="namespacemembers_eval.html">Enumeration values</a></div>
-
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li id="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="namespaces.html"><span>Namespace List</span></a></li>
+    <li id="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="namespacemembers.html"><span>All</span></a></li>
+    <li id="current"><a href="namespacemembers_func.html"><span>Functions</span></a></li>
+    <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
+    <li><a href="namespacemembers_enum.html"><span>Enumerations</span></a></li>
+    <li><a href="namespacemembers_eval.html"><span>Enumerator</span></a></li>
+  </ul>
+</div>
+ 
 <p>
 <ul>
-<li>__TBB_DECL_ATOMIC_PRIMITIVES()
-: <a class="el" href="a00319.html#a30">tbb::internal</a><li>allocate_closure_v3()
-: <a class="el" href="a00319.html#a79">tbb::internal</a><li>allocate_via_handler_v3()
-: <a class="el" href="a00319.html#a62">tbb::internal</a><li>assertion_failure()
-: <a class="el" href="a00318.html#a52">tbb</a><li>deallocate_via_handler_v3()
-: <a class="el" href="a00319.html#a61">tbb::internal</a><li>free_closure_v3()
-: <a class="el" href="a00319.html#a80">tbb::internal</a><li>hasher()
-: <a class="el" href="a00319.html#a36">tbb::internal</a><li>is_malloc_used_v3()
-: <a class="el" href="a00319.html#a63">tbb::internal</a><li>itt_load_pointer_v3()
-: <a class="el" href="a00319.html#a42">tbb::internal</a><li>itt_load_pointer_with_acquire_v3()
-: <a class="el" href="a00319.html#a56">tbb::internal</a><li>itt_store_pointer_with_release_v3()
-: <a class="el" href="a00319.html#a55">tbb::internal</a><li>NFS_Allocate()
-: <a class="el" href="a00319.html#a32">tbb::internal</a><li>NFS_Free()
-: <a class="el" href="a00319.html#a33">tbb::internal</a><li>NFS_GetLineSize()
-: <a class="el" href="a00319.html#a31">tbb::internal</a><li>parallel_do()
-: <a class="el" href="a00321.html#ga4">tbb</a><li>parallel_for()
-: <a class="el" href="a00321.html#ga10">tbb</a><li>parallel_quick_sort()
-: <a class="el" href="a00321.html#ga25">tbb::internal</a><li>parallel_reduce()
-: <a class="el" href="a00321.html#ga22">tbb</a><li>parallel_scan()
-: <a class="el" href="a00321.html#ga24">tbb</a><li>parallel_sort()
-: <a class="el" href="a00321.html#ga28">tbb</a><li>poison_pointer()
-: <a class="el" href="a00319.html#a77">tbb::internal</a><li>run_parallel_do()
-: <a class="el" href="a00321.html#ga0">tbb::internal</a><li>runtime_warning()
-: <a class="el" href="a00319.html#a76">tbb::internal</a><li>select_parallel_do()
-: <a class="el" href="a00321.html#ga2">tbb::internal</a><li>set_assertion_handler()
-: <a class="el" href="a00318.html#a51">tbb</a><li>TBB_runtime_interface_version()
-: <a class="el" href="a00318.html#a53">tbb</a></ul>
+<li>assertion_failure()
+: <a class="el" href="a00181.html#3d1252787be39b4aef311f1cadaff9e8">tbb</a><li>parallel_do()
+: <a class="el" href="a00183.html#g2617dc9b88b3285a7212599d49f74228">tbb</a><li>parallel_for()
+: <a class="el" href="a00183.html#g04b4696b67370c01353ff5974c8f1196">tbb</a><li>parallel_reduce()
+: <a class="el" href="a00183.html#g496bd7eadb3b97495ccb5655ef90319e">tbb</a><li>parallel_scan()
+: <a class="el" href="a00183.html#g62fde400a37bbca1a2fddc8e3d22f556">tbb</a><li>parallel_sort()
+: <a class="el" href="a00183.html#gc7576f82fdedc8a701a6c17ad9415926">tbb</a><li>set_assertion_handler()
+: <a class="el" href="a00181.html#823fa1c15dd829d1d9167157450ddcd9">tbb</a><li>TBB_runtime_interface_version()
+: <a class="el" href="a00181.html#a6858b22e90041c9c4669674ff39b056">tbb</a></ul>
 <hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/namespacemembers_type.html b/doc/html/namespacemembers_type.html
index e682a8e..0c1c3cb 100644
--- a/doc/html/namespacemembers_type.html
+++ b/doc/html/namespacemembers_type.html
@@ -1,23 +1,38 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Namespace Members - Typedefs</title>
+<title>Class Members</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindexHL" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.htm [...]
-<div class="qindex"><a class="qindex" href="namespacemembers.html">All</a> | <a class="qindex" href="namespacemembers_func.html">Functions</a> | <a class="qindex" href="namespacemembers_vars.html">Variables</a> | <a class="qindexHL" href="namespacemembers_type.html">Typedefs</a> | <a class="qindex" href="namespacemembers_enum.html">Enumerations</a> | <a class="qindex" href="namespacemembers_eval.html">Enumeration values</a></div>
-
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li id="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="namespaces.html"><span>Namespace List</span></a></li>
+    <li id="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="namespacemembers.html"><span>All</span></a></li>
+    <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
+    <li id="current"><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
+    <li><a href="namespacemembers_enum.html"><span>Enumerations</span></a></li>
+    <li><a href="namespacemembers_eval.html"><span>Enumerator</span></a></li>
+  </ul>
+</div>
+ 
 <p>
 <ul>
-<li>affinity_id
-: <a class="el" href="a00319.html#a11">tbb::internal</a><li>assertion_handler_type
-: <a class="el" href="a00318.html#a6">tbb</a><li>hashcode_t
-: <a class="el" href="a00319.html#a2">tbb::internal</a><li>intptr
-: <a class="el" href="a00319.html#a22">tbb::internal</a><li>reduction_context
-: <a class="el" href="a00319.html#a7">tbb::internal</a><li>reference_count
-: <a class="el" href="a00319.html#a10">tbb::internal</a><li>tbb_thread
-: <a class="el" href="a00318.html#a7">tbb</a><li>uintptr
-: <a class="el" href="a00319.html#a21">tbb::internal</a></ul>
+<li>assertion_handler_type
+: <a class="el" href="a00181.html#ed375248ff6019a70ca0f9da528e5d0b">tbb</a></ul>
 <hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/namespacemembers_vars.html b/doc/html/namespacemembers_vars.html
deleted file mode 100644
index 7993041..0000000
--- a/doc/html/namespacemembers_vars.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Namespace Members - Variables</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindexHL" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.htm [...]
-<div class="qindex"><a class="qindex" href="namespacemembers.html">All</a> | <a class="qindex" href="namespacemembers_func.html">Functions</a> | <a class="qindexHL" href="namespacemembers_vars.html">Variables</a> | <a class="qindex" href="namespacemembers_type.html">Typedefs</a> | <a class="qindex" href="namespacemembers_enum.html">Enumerations</a> | <a class="qindex" href="namespacemembers_eval.html">Enumeration values</a></div>
-
-<p>
-<ul>
-<li>hash_multiplier
-: <a class="el" href="a00319.html#a3">tbb::internal</a><li>NFS_MaxLineSize
-: <a class="el" href="a00319.html#a1">tbb::internal</a></ul>
-<hr>
-<p></p>
-Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
-<p></p>
-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.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/namespaces.html b/doc/html/namespaces.html
index 7adbd24..bfeef55 100644
--- a/doc/html/namespaces.html
+++ b/doc/html/namespaces.html
@@ -2,12 +2,25 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Namespace Index</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindexHL" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.htm [...]
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li id="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li id="current"><a href="namespaces.html"><span>Namespace List</span></a></li>
+    <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
+  </ul></div>
 <h1>Namespace List</h1>Here is a list of all documented namespaces with brief descriptions:<table>
-  <tr><td class="indexkey"><a class="el" href="a00318.html">tbb</a></td><td class="indexvalue">The namespace tbb contains all components of the library </td></tr>
-  <tr><td class="indexkey"><a class="el" href="a00319.html">tbb::internal</a></td><td class="indexvalue">INTERNAL </td></tr>
+  <tr><td class="indexkey"><a class="el" href="a00181.html">tbb</a></td><td class="indexvalue">The namespace tbb contains all components of the library </td></tr>
 </table>
 <hr>
 <p></p>
diff --git a/doc/html/pages.html b/doc/html/pages.html
index 6d52090..c865eb3 100644
--- a/doc/html/pages.html
+++ b/doc/html/pages.html
@@ -2,26 +2,21 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Page Index</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li id="current"><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
 <h1>Related Pages</h1>Here is a list of all related documentation pages:<ul>
-<li><a class="el" href="range_req.html">Requirements on range concept</a>
-
-<li><a class="el" href="parallel_do_body_req.html">Requirements on parallel_do body</a>
-
-<li><a class="el" href="parallel_for_body_req.html">Requirements on parallel_for body</a>
-
-<li><a class="el" href="parallel_reduce_body_req.html">Requirements on parallel_reduce body</a>
-
 <li><a class="el" href="parallel_reduce_lambda_req.html">Requirements on parallel_reduce anonymous function objects (lambda functions)</a>
 
-<li><a class="el" href="parallel_scan_body_req.html">Requirements on parallel_scan body</a>
-
-<li><a class="el" href="parallel_sort_iter_req.html">Requirements on iterators for parallel_sort</a>
-
-<li><a class="el" href="concepts.html">TBB concepts</a>
-
 <li><a class="el" href="deprecated.html">Deprecated List</a>
 
 </ul>
diff --git a/doc/html/parallel_do_body_req.html b/doc/html/parallel_do_body_req.html
index 415faa7..c35d5c6 100644
--- a/doc/html/parallel_do_body_req.html
+++ b/doc/html/parallel_do_body_req.html
@@ -2,11 +2,21 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Requirements on parallel_do body</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1><a class="anchor" name="parallel_do_body_req">Requirements on parallel_do body</a></h1>Class <code>Body</code> implementing the concept of parallel_do body must define:<ul>
-<li><div class="fragment"><pre class="fragment">        B::operator()( 
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="index.html">Main Page</a> &raquo <a class="el" href="concepts.html">TBB concepts</a></div>
+<h1><a class="anchor" name="parallel_do_body_req">Requirements on parallel_do body</a></h1>Class <code>Body</code> implementing the concept of parallel_do body must define: -<div class="fragment"><pre class="fragment">        B::operator()( 
                 cv_item_type item,
                 parallel_do_feeder<item_type>& feeder
         ) <span class="keyword">const</span>
@@ -14,13 +24,10 @@
         OR
 
         B::operator()( cv_item_type& item ) <span class="keyword">const</span>
-</pre></div>Process item. May be invoked concurrently for the same <code>this</code> but different <code>item</code>.</li></ul>
-<p>
-<ul>
-<li><div class="fragment"><pre class="fragment"> item_type( <span class="keyword">const</span> item_type& ) 
-</pre></div>Copy a work item.</li><li><div class="fragment"><pre class="fragment"> ~item_type() 
-</pre></div>Destroy a work item </li></ul>
-<hr>
+</pre></div> Process item. May be invoked concurrently for the same <code>this</code> but different <code>item</code>.<p>
+-<div class="fragment"><pre class="fragment"> item_type( <span class="keyword">const</span> item_type& ) 
+</pre></div> Copy a work item. -<div class="fragment"><pre class="fragment"> ~item_type() 
+</pre></div> Destroy a work item <hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/parallel_for_body_req.html b/doc/html/parallel_for_body_req.html
index 41c95f7..aa57658 100644
--- a/doc/html/parallel_for_body_req.html
+++ b/doc/html/parallel_for_body_req.html
@@ -2,15 +2,24 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Requirements on parallel_for body</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1><a class="anchor" name="parallel_for_body_req">Requirements on parallel_for body</a></h1>Class <code>Body</code> implementing the concept of parallel_for body must define:<ul>
-<li><div class="fragment"><pre class="fragment"> Body::Body( <span class="keyword">const</span> Body& ); 
-</pre></div>Copy constructor</li><li><div class="fragment"><pre class="fragment"> Body::~Body(); 
-</pre></div>Destructor</li><li><div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> Body::operator()( Range& r ) <span class="keyword">const</span>; 
-</pre></div>Function call operator applying the body to range <code>r</code>. </li></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="index.html">Main Page</a> &raquo <a class="el" href="concepts.html">TBB concepts</a></div>
+<h1><a class="anchor" name="parallel_for_body_req">Requirements on parallel_for body</a></h1>Class <code>Body</code> implementing the concept of parallel_for body must define: -<div class="fragment"><pre class="fragment"> Body::Body( <span class="keyword">const</span> Body& ); 
+</pre></div> Copy constructor -<div class="fragment"><pre class="fragment"> Body::~Body(); 
+</pre></div> Destructor -<div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> Body::operator()( Range& r ) <span class="keyword">const</span>; 
+</pre></div> Function call operator applying the body to range <code>r</code>. <hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/parallel_reduce_body_req.html b/doc/html/parallel_reduce_body_req.html
index 50c913a..32e67c4 100644
--- a/doc/html/parallel_reduce_body_req.html
+++ b/doc/html/parallel_reduce_body_req.html
@@ -2,16 +2,25 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Requirements on parallel_reduce body</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1><a class="anchor" name="parallel_reduce_body_req">Requirements on parallel_reduce body</a></h1>Class <code>Body</code> implementing the concept of parallel_reduce body must define:<ul>
-<li><div class="fragment"><pre class="fragment"> Body::Body( Body&, split ); 
-</pre></div>Splitting constructor. Must be able to run concurrently with operator() and method <code>join</code> </li><li><div class="fragment"><pre class="fragment"> Body::~Body(); 
-</pre></div>Destructor</li><li><div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> Body::operator()( Range& r ); 
-</pre></div>Function call operator applying body to range <code>r</code> and accumulating the result</li><li><div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> Body::join( Body& b ); 
-</pre></div>Join results. The result in <code>b</code> should be merged into the result of <code>this</code> </li></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="index.html">Main Page</a> &raquo <a class="el" href="concepts.html">TBB concepts</a></div>
+<h1><a class="anchor" name="parallel_reduce_body_req">Requirements on parallel_reduce body</a></h1>Class <code>Body</code> implementing the concept of parallel_reduce body must define: -<div class="fragment"><pre class="fragment"> Body::Body( Body&, split ); 
+</pre></div> Splitting constructor. Must be able to run concurrently with operator() and method <code>join</code> -<div class="fragment"><pre class="fragment"> Body::~Body(); 
+</pre></div> Destructor -<div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> Body::operator()( Range& r ); 
+</pre></div> Function call operator applying body to range <code>r</code> and accumulating the result -<div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> Body::join( Body& b ); 
+</pre></div> Join results. The result in <code>b</code> should be merged into the result of <code>this</code> <hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/parallel_reduce_lambda_req.html b/doc/html/parallel_reduce_lambda_req.html
index dffbf9e..d607d03 100644
--- a/doc/html/parallel_reduce_lambda_req.html
+++ b/doc/html/parallel_reduce_lambda_req.html
@@ -2,9 +2,18 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Requirements on parallel_reduce anonymous function objects (lambda functions)</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
 <h1><a class="anchor" name="parallel_reduce_lambda_req">Requirements on parallel_reduce anonymous function objects (lambda functions)</a></h1>TO BE DOCUMENTED <hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
diff --git a/doc/html/parallel_scan_body_req.html b/doc/html/parallel_scan_body_req.html
index dff40ed..9806d53 100644
--- a/doc/html/parallel_scan_body_req.html
+++ b/doc/html/parallel_scan_body_req.html
@@ -2,17 +2,26 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Requirements on parallel_scan body</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1><a class="anchor" name="parallel_scan_body_req">Requirements on parallel_scan body</a></h1>Class <code>Body</code> implementing the concept of parallel_reduce body must define:<ul>
-<li><div class="fragment"><pre class="fragment"> Body::Body( Body&, split ); 
-</pre></div>Splitting constructor. Split <code>b</code> so that <code>this</code> and <code>b</code> can accumulate separately</li><li><div class="fragment"><pre class="fragment"> Body::~Body(); 
-</pre></div>Destructor</li><li><div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> Body::operator()( <span class="keyword">const</span> Range& r, pre_scan_tag ); 
-</pre></div>Preprocess iterations for range <code>r</code> </li><li><div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> Body::operator()( <span class="keyword">const</span> Range& r, final_scan_tag ); 
-</pre></div>Do final processing for iterations of range <code>r</code> </li><li><div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> Body::reverse_join( Body& a ); 
-</pre></div>Merge preprocessing state of <code>a</code> into <code>this</code>, where <code>a</code> was created earlier from <code>b</code> by b's splitting constructor </li></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="index.html">Main Page</a> &raquo <a class="el" href="concepts.html">TBB concepts</a></div>
+<h1><a class="anchor" name="parallel_scan_body_req">Requirements on parallel_scan body</a></h1>Class <code>Body</code> implementing the concept of parallel_reduce body must define: -<div class="fragment"><pre class="fragment"> Body::Body( Body&, split ); 
+</pre></div> Splitting constructor. Split <code>b</code> so that <code>this</code> and <code>b</code> can accumulate separately -<div class="fragment"><pre class="fragment"> Body::~Body(); 
+</pre></div> Destructor -<div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> Body::operator()( <span class="keyword">const</span> Range& r, pre_scan_tag ); 
+</pre></div> Preprocess iterations for range <code>r</code> -<div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> Body::operator()( <span class="keyword">const</span> Range& r, final_scan_tag ); 
+</pre></div> Do final processing for iterations of range <code>r</code> -<div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> Body::reverse_join( Body& a ); 
+</pre></div> Merge preprocessing state of <code>a</code> into <code>this</code>, where <code>a</code> was created earlier from <code>b</code> by b's splitting constructor <hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/parallel_sort_iter_req.html b/doc/html/parallel_sort_iter_req.html
index b78ca9c..15b4c39 100644
--- a/doc/html/parallel_sort_iter_req.html
+++ b/doc/html/parallel_sort_iter_req.html
@@ -2,14 +2,23 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Requirements on iterators for parallel_sort</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1><a class="anchor" name="parallel_sort_iter_req">Requirements on iterators for parallel_sort</a></h1>Requirements on value type <code>T</code> of <code>RandomAccessIterator</code> for <code>parallel_sort:</code> <ul>
-<li><div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> swap( T& x, T& y ) 
-</pre></div>Swaps <code>x</code> and <code>y</code> </li><li><div class="fragment"><pre class="fragment"> <span class="keywordtype">bool</span> Compare::operator()( <span class="keyword">const</span> T& x, <span class="keyword">const</span> T& y ) 
-</pre></div>True if x comes before y; </li></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="index.html">Main Page</a> &raquo <a class="el" href="concepts.html">TBB concepts</a></div>
+<h1><a class="anchor" name="parallel_sort_iter_req">Requirements on iterators for parallel_sort</a></h1>Requirements on value type <code>T</code> of <code>RandomAccessIterator</code> for <code>parallel_sort:</code> -<div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> swap( T& x, T& y ) 
+</pre></div> Swaps <code>x</code> and <code>y</code> -<div class="fragment"><pre class="fragment"> <span class="keywordtype">bool</span> Compare::operator()( <span class="keyword">const</span> T& x, <span class="keyword">const</span> T& y ) 
+</pre></div> True if x comes before y; <hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/range_req.html b/doc/html/range_req.html
index 654dea2..5509280 100644
--- a/doc/html/range_req.html
+++ b/doc/html/range_req.html
@@ -2,17 +2,26 @@
 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 <title>Requirements on range concept</title>
 <link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
 </head><body>
-<!-- Generated by Doxygen 1.3.9.1 -->
-<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html" [...]
-<h1><a class="anchor" name="range_req">Requirements on range concept</a></h1>Class <code>R</code> implementing the concept of range must define:<ul>
-<li><div class="fragment"><pre class="fragment"> R::R( <span class="keyword">const</span> R& ); 
-</pre></div>Copy constructor</li><li><div class="fragment"><pre class="fragment"> R::~R(); 
-</pre></div>Destructor</li><li><div class="fragment"><pre class="fragment"> <span class="keywordtype">bool</span> R::is_divisible() <span class="keyword">const</span>; 
-</pre></div>True if range can be partitioned into two subranges</li><li><div class="fragment"><pre class="fragment"> <span class="keywordtype">bool</span> R::empty() <span class="keyword">const</span>; 
-</pre></div>True if range is empty</li><li><div class="fragment"><pre class="fragment"> R::R( R& r, split ); 
-</pre></div>Split range <code>r</code> into two subranges. </li></ul>
-<hr>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+    <li><a href="annotated.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li><a href="pages.html"><span>Related Pages</span></a></li>
+  </ul></div>
+<div class="nav">
+<a class="el" href="index.html">Main Page</a> &raquo <a class="el" href="concepts.html">TBB concepts</a></div>
+<h1><a class="anchor" name="range_req">Requirements on range concept</a></h1>Class <code>R</code> implementing the concept of range must define: -<div class="fragment"><pre class="fragment"> R::R( <span class="keyword">const</span> R& ); 
+</pre></div> Copy constructor -<div class="fragment"><pre class="fragment"> R::~R(); 
+</pre></div> Destructor -<div class="fragment"><pre class="fragment"> <span class="keywordtype">bool</span> R::is_divisible() <span class="keyword">const</span>; 
+</pre></div> True if range can be partitioned into two subranges -<div class="fragment"><pre class="fragment"> <span class="keywordtype">bool</span> R::empty() <span class="keyword">const</span>; 
+</pre></div> True if range is empty -<div class="fragment"><pre class="fragment"> R::R( R& r, split ); 
+</pre></div> Split range <code>r</code> into two subranges. <hr>
 <p></p>
 Copyright © 2005-2009 Intel Corporation.  All Rights Reserved.
 <p></p>
diff --git a/doc/html/tab_b.gif b/doc/html/tab_b.gif
new file mode 100644
index 0000000..0d62348
Binary files /dev/null and b/doc/html/tab_b.gif differ
diff --git a/doc/html/tab_l.gif b/doc/html/tab_l.gif
new file mode 100644
index 0000000..9b1e633
Binary files /dev/null and b/doc/html/tab_l.gif differ
diff --git a/doc/html/tab_r.gif b/doc/html/tab_r.gif
new file mode 100644
index 0000000..ce9dd9f
Binary files /dev/null and b/doc/html/tab_r.gif differ
diff --git a/doc/html/tabs.css b/doc/html/tabs.css
new file mode 100644
index 0000000..a61552a
--- /dev/null
+++ b/doc/html/tabs.css
@@ -0,0 +1,102 @@
+/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
+
+DIV.tabs
+{
+   float            : left;
+   width            : 100%;
+   background       : url("tab_b.gif") repeat-x bottom;
+   margin-bottom    : 4px;
+}
+
+DIV.tabs UL
+{
+   margin           : 0px;
+   padding-left     : 10px;
+   list-style       : none;
+}
+
+DIV.tabs LI, DIV.tabs FORM
+{
+   display          : inline;
+   margin           : 0px;
+   padding          : 0px;
+}
+
+DIV.tabs FORM
+{
+   float            : right;
+}
+
+DIV.tabs A
+{
+   float            : left;
+   background       : url("tab_r.gif") no-repeat right top;
+   border-bottom    : 1px solid #84B0C7;
+   font-size        : x-small;
+   font-weight      : bold;
+   text-decoration  : none;
+}
+
+DIV.tabs A:hover
+{
+   background-position: 100% -150px;
+}
+
+DIV.tabs A:link, DIV.tabs A:visited,
+DIV.tabs A:active, DIV.tabs A:hover
+{
+       color: #1A419D;
+}
+
+DIV.tabs SPAN
+{
+   float            : left;
+   display          : block;
+   background       : url("tab_l.gif") no-repeat left top;
+   padding          : 5px 9px;
+   white-space      : nowrap;
+}
+
+DIV.tabs INPUT
+{
+   float            : right;
+   display          : inline;
+   font-size        : 1em;
+}
+
+DIV.tabs TD
+{
+   font-size        : x-small;
+   font-weight      : bold;
+   text-decoration  : none;
+}
+
+
+
+/* Commented Backslash Hack hides rule from IE5-Mac \*/
+DIV.tabs SPAN {float : none;}
+/* End IE5-Mac hack */
+
+DIV.tabs A:hover SPAN
+{
+   background-position: 0% -150px;
+}
+
+DIV.tabs LI#current A
+{
+   background-position: 100% -150px;
+   border-width     : 0px;
+}
+
+DIV.tabs LI#current SPAN
+{
+   background-position: 0% -150px;
+   padding-bottom   : 6px;
+}
+
+DIV.nav
+{
+   background       : none;
+   border           : none;
+   border-bottom    : 1px solid #84B0C7;
+}
diff --git a/examples/GettingStarted/sub_string_finder/vc7.1/sub_string_finder.vcproj b/examples/GettingStarted/sub_string_finder/vc7.1/sub_string_finder.vcproj
index ec886cc..8b8fdf6 100644
--- a/examples/GettingStarted/sub_string_finder/vc7.1/sub_string_finder.vcproj
+++ b/examples/GettingStarted/sub_string_finder/vc7.1/sub_string_finder.vcproj
@@ -72,7 +72,8 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="TRUE"/>
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
@@ -80,6 +81,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc7.1\lib"
+				GenerateDebugInformation="TRUE"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/GettingStarted/sub_string_finder/vc7.1/sub_string_finder_extended.vcproj b/examples/GettingStarted/sub_string_finder/vc7.1/sub_string_finder_extended.vcproj
index f4270ea..9d1ac49 100644
--- a/examples/GettingStarted/sub_string_finder/vc7.1/sub_string_finder_extended.vcproj
+++ b/examples/GettingStarted/sub_string_finder/vc7.1/sub_string_finder_extended.vcproj
@@ -72,7 +72,8 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="TRUE"/>
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
@@ -80,6 +81,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc7.1\lib"
+				GenerateDebugInformation="TRUE"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/GettingStarted/sub_string_finder/vc7.1/sub_string_finder_pretty.vcproj b/examples/GettingStarted/sub_string_finder/vc7.1/sub_string_finder_pretty.vcproj
index f4ba578..cd7ff98 100644
--- a/examples/GettingStarted/sub_string_finder/vc7.1/sub_string_finder_pretty.vcproj
+++ b/examples/GettingStarted/sub_string_finder/vc7.1/sub_string_finder_pretty.vcproj
@@ -72,7 +72,8 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="TRUE"/>
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
@@ -80,6 +81,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc7.1\lib"
+				GenerateDebugInformation="TRUE"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/GettingStarted/sub_string_finder/vc8/sub_string_finder.vcproj b/examples/GettingStarted/sub_string_finder/vc8/sub_string_finder.vcproj
index 1b92805..7cf35a7 100644
--- a/examples/GettingStarted/sub_string_finder/vc8/sub_string_finder.vcproj
+++ b/examples/GettingStarted/sub_string_finder/vc8/sub_string_finder.vcproj
@@ -203,6 +203,7 @@
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
 				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -218,6 +219,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -280,6 +282,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -295,6 +298,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/GettingStarted/sub_string_finder/vc8/sub_string_finder_extended.vcproj b/examples/GettingStarted/sub_string_finder/vc8/sub_string_finder_extended.vcproj
index dcdd1fa..9a44ef5 100644
--- a/examples/GettingStarted/sub_string_finder/vc8/sub_string_finder_extended.vcproj
+++ b/examples/GettingStarted/sub_string_finder/vc8/sub_string_finder_extended.vcproj
@@ -203,6 +203,7 @@
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
 				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -218,6 +219,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -280,6 +282,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -295,6 +298,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/GettingStarted/sub_string_finder/vc8/sub_string_finder_pretty.vcproj b/examples/GettingStarted/sub_string_finder/vc8/sub_string_finder_pretty.vcproj
index fe7775d..297a4e5 100644
--- a/examples/GettingStarted/sub_string_finder/vc8/sub_string_finder_pretty.vcproj
+++ b/examples/GettingStarted/sub_string_finder/vc8/sub_string_finder_pretty.vcproj
@@ -203,6 +203,7 @@
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
 				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -218,6 +219,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -280,6 +282,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -295,6 +298,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/GettingStarted/sub_string_finder/vc9/sub_string_finder.vcproj b/examples/GettingStarted/sub_string_finder/vc9/sub_string_finder.vcproj
index 98fbd69..9aaa560 100644
--- a/examples/GettingStarted/sub_string_finder/vc9/sub_string_finder.vcproj
+++ b/examples/GettingStarted/sub_string_finder/vc9/sub_string_finder.vcproj
@@ -123,6 +123,7 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -138,6 +139,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -277,6 +279,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -292,6 +295,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/GettingStarted/sub_string_finder/vc9/sub_string_finder_extended.vcproj b/examples/GettingStarted/sub_string_finder/vc9/sub_string_finder_extended.vcproj
index c107858..63e46a5 100644
--- a/examples/GettingStarted/sub_string_finder/vc9/sub_string_finder_extended.vcproj
+++ b/examples/GettingStarted/sub_string_finder/vc9/sub_string_finder_extended.vcproj
@@ -123,6 +123,7 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -138,6 +139,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -277,6 +279,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -292,6 +295,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/GettingStarted/sub_string_finder/vc9/sub_string_finder_pretty.vcproj b/examples/GettingStarted/sub_string_finder/vc9/sub_string_finder_pretty.vcproj
index 4851c73..41a4cbc 100644
--- a/examples/GettingStarted/sub_string_finder/vc9/sub_string_finder_pretty.vcproj
+++ b/examples/GettingStarted/sub_string_finder/vc9/sub_string_finder_pretty.vcproj
@@ -123,6 +123,7 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -138,6 +139,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -277,6 +279,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -292,6 +295,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/concurrent_hash_map/count_strings/count_strings.cpp b/examples/concurrent_hash_map/count_strings/count_strings.cpp
index 2745220..d39649f 100644
--- a/examples/concurrent_hash_map/count_strings/count_strings.cpp
+++ b/examples/concurrent_hash_map/count_strings/count_strings.cpp
@@ -26,6 +26,11 @@
     the GNU General Public License.
 */
 
+// Workaround for ICC 11.0 not finding __sync_fetch_and_add_4 on some of the Linux platforms.
+#if __linux__ && defined(__INTEL_COMPILER)
+#define __sync_fetch_and_add(ptr,addend) _InterlockedExchangeAdd(const_cast<void*>(reinterpret_cast<volatile void*>(ptr)), addend)
+#endif
+
 #include <string>
 #include <cstring>
 #include <cctype>
diff --git a/examples/concurrent_hash_map/count_strings/vc7.1/count_strings.vcproj b/examples/concurrent_hash_map/count_strings/vc7.1/count_strings.vcproj
index 4dd6b6c..d32f131 100644
--- a/examples/concurrent_hash_map/count_strings/vc7.1/count_strings.vcproj
+++ b/examples/concurrent_hash_map/count_strings/vc7.1/count_strings.vcproj
@@ -72,7 +72,8 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="TRUE"/>
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
@@ -80,6 +81,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc7.1\lib"
+				GenerateDebugInformation="TRUE"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/concurrent_hash_map/count_strings/vc8/count_strings.vcproj b/examples/concurrent_hash_map/count_strings/vc8/count_strings.vcproj
index 8a4d143..ffd4c97 100644
--- a/examples/concurrent_hash_map/count_strings/vc8/count_strings.vcproj
+++ b/examples/concurrent_hash_map/count_strings/vc8/count_strings.vcproj
@@ -203,6 +203,7 @@
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
 				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -218,6 +219,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -280,6 +282,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -295,6 +298,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/concurrent_hash_map/count_strings/vc9/count_strings.vcproj b/examples/concurrent_hash_map/count_strings/vc9/count_strings.vcproj
index dfe9c2c..07bd1b9 100644
--- a/examples/concurrent_hash_map/count_strings/vc9/count_strings.vcproj
+++ b/examples/concurrent_hash_map/count_strings/vc9/count_strings.vcproj
@@ -123,6 +123,7 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -138,6 +139,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -277,6 +279,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -292,6 +295,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_do/parallel_preorder/vc7.1/parallel_preorder.vcproj b/examples/parallel_do/parallel_preorder/vc7.1/parallel_preorder.vcproj
index 0ceeb86..2b666a3 100644
--- a/examples/parallel_do/parallel_preorder/vc7.1/parallel_preorder.vcproj
+++ b/examples/parallel_do/parallel_preorder/vc7.1/parallel_preorder.vcproj
@@ -72,7 +72,8 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="TRUE"/>
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
@@ -80,6 +81,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc7.1\lib"
+				GenerateDebugInformation="TRUE"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_do/parallel_preorder/vc8/parallel_preorder.vcproj b/examples/parallel_do/parallel_preorder/vc8/parallel_preorder.vcproj
index 7c133d4..67460ba 100644
--- a/examples/parallel_do/parallel_preorder/vc8/parallel_preorder.vcproj
+++ b/examples/parallel_do/parallel_preorder/vc8/parallel_preorder.vcproj
@@ -203,6 +203,7 @@
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
 				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -218,6 +219,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -280,6 +282,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -295,6 +298,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_do/parallel_preorder/vc9/parallel_preorder.vcproj b/examples/parallel_do/parallel_preorder/vc9/parallel_preorder.vcproj
index 60c345a..ea32d82 100644
--- a/examples/parallel_do/parallel_preorder/vc9/parallel_preorder.vcproj
+++ b/examples/parallel_do/parallel_preorder/vc9/parallel_preorder.vcproj
@@ -123,6 +123,7 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -138,6 +139,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -277,6 +279,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -292,6 +295,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_for/polygon_overlay/Makefile b/examples/parallel_for/polygon_overlay/Makefile
index 5f76a3c..55c814a 100644
--- a/examples/parallel_for/polygon_overlay/Makefile
+++ b/examples/parallel_for/polygon_overlay/Makefile
@@ -76,7 +76,6 @@ all:	release test
 resources:
 ifeq ($(UI),mac)
 	mkdir -p $(APPRES)/English.lproj $(NAME).app/Contents/MacOS
-	$(PBXCP) xcode/English.lproj/InfoPlist.strings xcode/English.lproj/main.nib $(APPRES)/English.lproj
 	$(PBXCP) xcode/Info.plist $(APPRES)
 endif
 
diff --git a/examples/parallel_for/polygon_overlay/vc7.1/pover.vcproj b/examples/parallel_for/polygon_overlay/vc7.1/pover.vcproj
index 8241760..88fb672 100644
--- a/examples/parallel_for/polygon_overlay/vc7.1/pover.vcproj
+++ b/examples/parallel_for/polygon_overlay/vc7.1/pover.vcproj
@@ -85,7 +85,8 @@ copy "$(TBB21_INSTALL_DIR)\ia32\vc7.1\bin\tbbmalloc_debug.dll" "$
 				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="TRUE"
 				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="TRUE"/>
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
@@ -93,6 +94,7 @@ copy "$(TBB21_INSTALL_DIR)\ia32\vc7.1\bin\tbbmalloc_debug.dll" "$
 				AdditionalDependencies="tbb.lib tbbmalloc.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\ia32\vc7.1\lib""
+				GenerateDebugInformation="TRUE"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -141,7 +143,8 @@ copy "$(TBB21_INSTALL_DIR)\ia32\vc7.1\bin\tbbmalloc.dll" "$(OutDi
 				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="TRUE"
 				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="TRUE"/>
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
@@ -149,6 +152,7 @@ copy "$(TBB21_INSTALL_DIR)\ia32\vc7.1\bin\tbbmalloc.dll" "$(OutDi
 				AdditionalDependencies="tbb.lib tbbmalloc.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\ia32\vc7.1\lib""
+				GenerateDebugInformation="TRUE"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -312,7 +316,8 @@ copy "$(TBB21_INSTALL_DIR)\ia32\vc7.1\bin\tbbmalloc_debug.dll" "$
 				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="TRUE"
 				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="TRUE"/>
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
@@ -320,6 +325,7 @@ copy "$(TBB21_INSTALL_DIR)\ia32\vc7.1\bin\tbbmalloc_debug.dll" "$
 				AdditionalDependencies="tbb.lib tbbmalloc.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\ia32\vc7.1\lib";"$(DXSDK_DIR)\lib\x86""
+				GenerateDebugInformation="TRUE"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_for/polygon_overlay/vc8/pover.vcproj b/examples/parallel_for/polygon_overlay/vc8/pover.vcproj
index 7d7f28f..a7a6416 100644
--- a/examples/parallel_for/polygon_overlay/vc8/pover.vcproj
+++ b/examples/parallel_for/polygon_overlay/vc8/pover.vcproj
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="windows-1251"?>
 <VisualStudioProject
 	ProjectType="Visual C++"
-	Version="8.00"
+	Version="8,00"
 	Name="pover"
 	ProjectGUID="{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}"
 	RootNamespace="pover"
@@ -217,6 +217,7 @@
 				EnableFunctionLevelLinking="true"
 				UsePrecompiledHeader="0"
 				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -232,6 +233,7 @@
 				AdditionalDependencies="tbb.lib tbbmalloc.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\ia32\vc8\lib""
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -300,6 +302,7 @@
 				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="true"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -315,6 +318,7 @@
 				AdditionalDependencies="tbb.lib tbbmalloc.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\em64t\vc8\lib""
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -384,6 +388,7 @@
 				EnableFunctionLevelLinking="true"
 				UsePrecompiledHeader="0"
 				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -399,6 +404,7 @@
 				AdditionalDependencies="tbb.lib tbbmalloc.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\ia32\vc8\lib";"$(DXSDK_DIR)\lib\x86""
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -468,6 +474,7 @@
 				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="true"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -483,6 +490,7 @@
 				AdditionalDependencies="tbb.lib tbbmalloc.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\em64t\vc8\lib";"$(DXSDK_DIR)\lib\x64""
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_for/polygon_overlay/vc9/pover.sln b/examples/parallel_for/polygon_overlay/vc9/pover.sln
index dfcc3ee..83b3887 100644
--- a/examples/parallel_for/polygon_overlay/vc9/pover.sln
+++ b/examples/parallel_for/polygon_overlay/vc9/pover.sln
@@ -14,22 +14,22 @@ Global
 		GDI Release|x64 = GDI Release|x64
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Debug|Win32.ActiveCfg = DD Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Debug|Win32.Build.0 = DD Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Debug|x64.ActiveCfg = DD Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Debug|x64.Build.0 = DD Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Release|Win32.ActiveCfg = DD Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Release|Win32.Build.0 = DD Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Release|x64.ActiveCfg = DD Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Release|x64.Build.0 = DD Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDI Debug|Win32.Build.0 = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDI Debug|x64.ActiveCfg = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDI Debug|x64.Build.0 = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDI Release|Win32.ActiveCfg = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDI Release|Win32.Build.0 = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDI Release|x64.ActiveCfg = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDI Release|x64.Build.0 = Release|x64
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Debug|Win32.ActiveCfg = DD Debug|Win32
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Debug|Win32.Build.0 = DD Debug|Win32
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Debug|x64.ActiveCfg = DD Debug|x64
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Debug|x64.Build.0 = DD Debug|x64
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Release|Win32.ActiveCfg = DD Release|Win32
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Release|Win32.Build.0 = DD Release|Win32
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Release|x64.ActiveCfg = DD Release|x64
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Release|x64.Build.0 = DD Release|x64
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.GDI Debug|Win32.ActiveCfg = Debug|Win32
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.GDI Debug|Win32.Build.0 = Debug|Win32
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.GDI Debug|x64.ActiveCfg = Debug|x64
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.GDI Debug|x64.Build.0 = Debug|x64
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.GDI Release|Win32.ActiveCfg = Release|Win32
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.GDI Release|Win32.Build.0 = Release|Win32
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.GDI Release|x64.ActiveCfg = Release|x64
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.GDI Release|x64.Build.0 = Release|x64
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
diff --git a/examples/parallel_for/polygon_overlay/vc9/pover.vcproj b/examples/parallel_for/polygon_overlay/vc9/pover.vcproj
index 9e9702a..d36c0ec 100644
--- a/examples/parallel_for/polygon_overlay/vc9/pover.vcproj
+++ b/examples/parallel_for/polygon_overlay/vc9/pover.vcproj
@@ -133,6 +133,7 @@
 				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="true"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -148,6 +149,7 @@
 				AdditionalDependencies="tbb.lib tbbmalloc.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\ia32\vc9\lib""
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -215,6 +217,7 @@
 				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="true"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -230,6 +233,7 @@
 				AdditionalDependencies="tbb.lib tbbmalloc.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\ia32\vc9\lib";"$(DXSDK_DIR)\lib\x86""
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -460,6 +464,7 @@
 				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="true"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -475,6 +480,7 @@
 				AdditionalDependencies="tbb.lib tbbmalloc.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\em64t\vc9\lib""
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -544,6 +550,7 @@
 				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="true"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -559,6 +566,7 @@
 				AdditionalDependencies="tbb.lib tbbmalloc.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\em64t\vc9\lib";"$(DXSDK_DIR)\lib\x64""
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_for/polygon_overlay/xcode/English.lproj/InfoPlist.strings b/examples/parallel_for/polygon_overlay/xcode/English.lproj/InfoPlist.strings
deleted file mode 100644
index aca022d..0000000
--- a/examples/parallel_for/polygon_overlay/xcode/English.lproj/InfoPlist.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Localized versions of Info.plist keys */
-
-NSHumanReadableCopyright = "(C) Intel, 2008";
diff --git a/examples/parallel_for/polygon_overlay/xcode/PolygonOverlay.xcodeproj/project.pbxproj b/examples/parallel_for/polygon_overlay/xcode/PolygonOverlay.xcodeproj/project.pbxproj
index a37d924..8e24947 100644
--- a/examples/parallel_for/polygon_overlay/xcode/PolygonOverlay.xcodeproj/project.pbxproj
+++ b/examples/parallel_for/polygon_overlay/xcode/PolygonOverlay.xcodeproj/project.pbxproj
@@ -1,319 +1,307 @@
-// !$*UTF8*$!
-{
-	archiveVersion = 1;
-	classes = {
-	};
-	objectVersion = 42;
-	objects = {
-
-/* Begin PBXBuildFile section */
-		6A6DAA960DA2C0B3008D95BD /* polymain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6A6DAA8E0DA2C0B3008D95BD /* polymain.cpp */; };
-		6A6DAA980DA2C0B3008D95BD /* polyover.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6A6DAA900DA2C0B3008D95BD /* polyover.cpp */; };
-		6A6DAA9B0DA2C0B3008D95BD /* pover_video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6A6DAA930DA2C0B3008D95BD /* pover_video.cpp */; };
-		8D0C4E8D0486CD37000505A6 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0867D6AAFE840B52C02AAC07 /* InfoPlist.strings */; };
-		8D0C4E8E0486CD37000505A6 /* main.nib in Resources */ = {isa = PBXBuildFile; fileRef = 02345980000FD03B11CA0E72 /* main.nib */; };
-		A12649490B8392750091D5AD /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1E3E7BC0B3AD4EC007C3AB5 /* OpenGL.framework */; };
-		A126495E0B83936D0091D5AD /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 8D0C4E960486CD37000505A6 /* Info.plist */; };
-		A18D2A340B861B99007D8D2C /* libtbb.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A18D2A330B861B99007D8D2C /* libtbb.dylib */; };
-		A1976ADA0DF6A6910032C3EA /* libtbbmalloc.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = A1976AD90DF6A6910032C3EA /* libtbbmalloc.dylib */; };
-		A1976ADF0DF6A6E10032C3EA /* libtbbmalloc.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A1976AD90DF6A6910032C3EA /* libtbbmalloc.dylib */; };
-		A1A8F41E0B8B4DBE001C55B1 /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1A8F41D0B8B4DBE001C55B1 /* AGL.framework */; };
-		A1A8F4310B8B4EA8001C55B1 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1A8F4300B8B4EA8001C55B1 /* Carbon.framework */; };
-		A1D44D9A0B861E8A0006E401 /* libtbb.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = A18D2A330B861B99007D8D2C /* libtbb.dylib */; };
-		A1E3E7BD0B3AD4EC007C3AB5 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1E3E7BC0B3AD4EC007C3AB5 /* OpenGL.framework */; };
-		A1F591AC0B8DFC9600073279 /* macvideo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F591AA0B8DFC9600073279 /* macvideo.cpp */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXCopyFilesBuildPhase section */
-		A18D2A370B861BB7007D8D2C /* CopyFiles */ = {
-			isa = PBXCopyFilesBuildPhase;
-			buildActionMask = 2147483647;
-			dstPath = "";
-			dstSubfolderSpec = 16;
-			files = (
-				A1976ADA0DF6A6910032C3EA /* libtbbmalloc.dylib in CopyFiles */,
-				A1D44D9A0B861E8A0006E401 /* libtbb.dylib in CopyFiles */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXCopyFilesBuildPhase section */
-
-/* Begin PBXFileReference section */
-		0867D6ABFE840B52C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
-		1870340FFE93FCAF11CA0CD7 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/main.nib; sourceTree = "<group>"; };
-		32DBCF6D0370B57F00C91783 /* PolygonOverlay.pch */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PolygonOverlay.pch; sourceTree = "<group>"; };
-		6A6DAA8E0DA2C0B3008D95BD /* polymain.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = polymain.cpp; path = ../polymain.cpp; sourceTree = SOURCE_ROOT; };
-		6A6DAA8F0DA2C0B3008D95BD /* polymain.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = polymain.h; path = ../polymain.h; sourceTree = SOURCE_ROOT; };
-		6A6DAA900DA2C0B3008D95BD /* polyover.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = polyover.cpp; path = ../polyover.cpp; sourceTree = SOURCE_ROOT; };
-		6A6DAA910DA2C0B3008D95BD /* polyover.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = polyover.h; path = ../polyover.h; sourceTree = SOURCE_ROOT; };
-		6A6DAA920DA2C0B3008D95BD /* pover_global.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pover_global.h; path = ../pover_global.h; sourceTree = SOURCE_ROOT; };
-		6A6DAA930DA2C0B3008D95BD /* pover_video.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pover_video.cpp; path = ../pover_video.cpp; sourceTree = SOURCE_ROOT; };
-		6A6DAA940DA2C0B3008D95BD /* pover_video.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pover_video.h; path = ../pover_video.h; sourceTree = SOURCE_ROOT; };
-		6A6DAA950DA2C0B3008D95BD /* rpolygon.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = rpolygon.h; path = ../rpolygon.h; sourceTree = SOURCE_ROOT; };
-		8D0C4E960486CD37000505A6 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
-		8D0C4E970486CD37000505A6 /* PolygonOverlay.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PolygonOverlay.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		A18D2A330B861B99007D8D2C /* libtbb.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libtbb.dylib; path = /Library/Frameworks/TBB.framework/Libraries/libtbb.dylib; sourceTree = "<absolute>"; };
-		A1976AD90DF6A6910032C3EA /* libtbbmalloc.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libtbbmalloc.dylib; path = /Library/Frameworks/TBB.framework/Libraries/libtbbmalloc.dylib; sourceTree = "<absolute>"; };
-		A1A8F41D0B8B4DBE001C55B1 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = "<absolute>"; };
-		A1A8F4300B8B4EA8001C55B1 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
-		A1E3E7BC0B3AD4EC007C3AB5 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
-		A1F591AA0B8DFC9600073279 /* macvideo.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macvideo.cpp; path = ../../../common/gui/macvideo.cpp; sourceTree = SOURCE_ROOT; };
-		A1F591AB0B8DFC9600073279 /* video.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = video.h; path = ../../../common/gui/video.h; sourceTree = SOURCE_ROOT; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
-		8D0C4E910486CD37000505A6 /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				A1E3E7BD0B3AD4EC007C3AB5 /* OpenGL.framework in Frameworks */,
-				A12649490B8392750091D5AD /* OpenGL.framework in Frameworks */,
-				A18D2A340B861B99007D8D2C /* libtbb.dylib in Frameworks */,
-				A1976ADF0DF6A6E10032C3EA /* libtbbmalloc.dylib in Frameworks */,
-				A1A8F41E0B8B4DBE001C55B1 /* AGL.framework in Frameworks */,
-				A1A8F4310B8B4EA8001C55B1 /* Carbon.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
-		195DF8CFFE9D517E11CA2CBB /* Products */ = {
-			isa = PBXGroup;
-			children = (
-				8D0C4E970486CD37000505A6 /* PolygonOverlay.app */,
-			);
-			name = Products;
-			sourceTree = "<group>";
-		};
-		20286C29FDCF999611CA2CEA /* PolygonOverlay */ = {
-			isa = PBXGroup;
-			children = (
-				20286C2AFDCF999611CA2CEA /* Sources */,
-				20286C2CFDCF999611CA2CEA /* Resources */,
-				20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */,
-				195DF8CFFE9D517E11CA2CBB /* Products */,
-			);
-			name = PolygonOverlay;
-			sourceTree = "<group>";
-		};
-		20286C2AFDCF999611CA2CEA /* Sources */ = {
-			isa = PBXGroup;
-			children = (
-				6A6DAA8E0DA2C0B3008D95BD /* polymain.cpp */,
-				6A6DAA8F0DA2C0B3008D95BD /* polymain.h */,
-				6A6DAA900DA2C0B3008D95BD /* polyover.cpp */,
-				6A6DAA910DA2C0B3008D95BD /* polyover.h */,
-				6A6DAA920DA2C0B3008D95BD /* pover_global.h */,
-				6A6DAA930DA2C0B3008D95BD /* pover_video.cpp */,
-				6A6DAA940DA2C0B3008D95BD /* pover_video.h */,
-				6A6DAA950DA2C0B3008D95BD /* rpolygon.h */,
-				A1F591AA0B8DFC9600073279 /* macvideo.cpp */,
-				A1F591AB0B8DFC9600073279 /* video.h */,
-				32DBCF6D0370B57F00C91783 /* PolygonOverlay.pch */,
-			);
-			name = Sources;
-			sourceTree = "<group>";
-		};
-		20286C2CFDCF999611CA2CEA /* Resources */ = {
-			isa = PBXGroup;
-			children = (
-				8D0C4E960486CD37000505A6 /* Info.plist */,
-				0867D6AAFE840B52C02AAC07 /* InfoPlist.strings */,
-				02345980000FD03B11CA0E72 /* main.nib */,
-			);
-			name = Resources;
-			sourceTree = "<group>";
-		};
-		20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */ = {
-			isa = PBXGroup;
-			children = (
-				A1976AD90DF6A6910032C3EA /* libtbbmalloc.dylib */,
-				A18D2A330B861B99007D8D2C /* libtbb.dylib */,
-				A1A8F4300B8B4EA8001C55B1 /* Carbon.framework */,
-				A1A8F41D0B8B4DBE001C55B1 /* AGL.framework */,
-				A1E3E7BC0B3AD4EC007C3AB5 /* OpenGL.framework */,
-			);
-			name = "External Frameworks and Libraries";
-			sourceTree = "<group>";
-		};
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
-		8D0C4E890486CD37000505A6 /* PolygonOverlay */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = C0E91AC508A95435008D54AB /* Build configuration list for PBXNativeTarget "PolygonOverlay" */;
-			buildPhases = (
-				8D0C4E8C0486CD37000505A6 /* Resources */,
-				8D0C4E8F0486CD37000505A6 /* Sources */,
-				8D0C4E910486CD37000505A6 /* Frameworks */,
-				A18D2A370B861BB7007D8D2C /* CopyFiles */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-			);
-			name = PolygonOverlay;
-			productInstallPath = "$(HOME)/Applications";
-			productName = PolygonOverlay;
-			productReference = 8D0C4E970486CD37000505A6 /* PolygonOverlay.app */;
-			productType = "com.apple.product-type.application";
-		};
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
-		20286C28FDCF999611CA2CEA /* Project object */ = {
-			isa = PBXProject;
-			buildConfigurationList = C0E91AC908A95435008D54AB /* Build configuration list for PBXProject "PolygonOverlay" */;
-			hasScannedForEncodings = 1;
-			mainGroup = 20286C29FDCF999611CA2CEA /* PolygonOverlay */;
-			projectDirPath = "";
-			targets = (
-				8D0C4E890486CD37000505A6 /* PolygonOverlay */,
-			);
-		};
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
-		8D0C4E8C0486CD37000505A6 /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				8D0C4E8D0486CD37000505A6 /* InfoPlist.strings in Resources */,
-				8D0C4E8E0486CD37000505A6 /* main.nib in Resources */,
-				A126495E0B83936D0091D5AD /* Info.plist in Resources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
-		8D0C4E8F0486CD37000505A6 /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				A1F591AC0B8DFC9600073279 /* macvideo.cpp in Sources */,
-				6A6DAA960DA2C0B3008D95BD /* polymain.cpp in Sources */,
-				6A6DAA980DA2C0B3008D95BD /* polyover.cpp in Sources */,
-				6A6DAA9B0DA2C0B3008D95BD /* pover_video.cpp in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXVariantGroup section */
-		02345980000FD03B11CA0E72 /* main.nib */ = {
-			isa = PBXVariantGroup;
-			children = (
-				1870340FFE93FCAF11CA0CD7 /* English */,
-			);
-			name = main.nib;
-			sourceTree = "<group>";
-		};
-		0867D6AAFE840B52C02AAC07 /* InfoPlist.strings */ = {
-			isa = PBXVariantGroup;
-			children = (
-				0867D6ABFE840B52C02AAC07 /* English */,
-			);
-			name = InfoPlist.strings;
-			sourceTree = "<group>";
-		};
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
-		C0E91AC608A95435008D54AB /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				COPY_PHASE_STRIP = NO;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_FIX_AND_CONTINUE = YES;
-				GCC_MODEL_TUNING = "";
-				GCC_OPTIMIZATION_LEVEL = 0;
-				INSTALL_PATH = "$(HOME)/Applications";
-				LIBRARY_SEARCH_PATHS = (
-					"$(inherited)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_1)",
-				);
-				LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(LOCAL_LIBRARY_DIR)/Frameworks/TBB.framework/Libraries\"";
-				PRODUCT_NAME = PolygonOverlay;
-			};
-			name = Debug;
-		};
-		C0E91AC708A95435008D54AB /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
-				GCC_MODEL_TUNING = "";
-				INSTALL_PATH = "$(HOME)/Applications";
-				LIBRARY_SEARCH_PATHS = (
-					"$(inherited)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_1)",
-				);
-				LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(LOCAL_LIBRARY_DIR)/Frameworks/TBB.framework/Libraries\"";
-				PRODUCT_NAME = PolygonOverlay;
-			};
-			name = Release;
-		};
-		C0E91ACA08A95435008D54AB /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ARCHS = i386;
-				GCC_AUTO_VECTORIZATION = YES;
-				GCC_ENABLE_CPP_RTTI = YES;
-				GCC_ENABLE_SSE3_EXTENSIONS = YES;
-				GCC_MODEL_TUNING = "";
-				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
-				MACH_O_TYPE = mh_execute;
-				MACOSX_DEPLOYMENT_TARGET = 10.4;
-				PREBINDING = NO;
-				PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
-				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
-				SYMROOT = "/tmp/tbb-$(USER)";
-			};
-			name = Debug;
-		};
-		C0E91ACB08A95435008D54AB /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ARCHS = i386;
-				GCC_AUTO_VECTORIZATION = YES;
-				GCC_ENABLE_CPP_RTTI = YES;
-				GCC_ENABLE_SSE3_EXTENSIONS = YES;
-				GCC_MODEL_TUNING = "";
-				GCC_OPTIMIZATION_LEVEL = 3;
-				GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
-				MACH_O_TYPE = mh_execute;
-				MACOSX_DEPLOYMENT_TARGET = 10.4;
-				PREBINDING = NO;
-				PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
-				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
-				SYMROOT = "/tmp/tbb-$(USER)";
-			};
-			name = Release;
-		};
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
-		C0E91AC508A95435008D54AB /* Build configuration list for PBXNativeTarget "PolygonOverlay" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				C0E91AC608A95435008D54AB /* Debug */,
-				C0E91AC708A95435008D54AB /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-		C0E91AC908A95435008D54AB /* Build configuration list for PBXProject "PolygonOverlay" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				C0E91ACA08A95435008D54AB /* Debug */,
-				C0E91ACB08A95435008D54AB /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-/* End XCConfigurationList section */
-	};
-	rootObject = 20286C28FDCF999611CA2CEA /* Project object */;
-}
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 42;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		6A6DAA960DA2C0B3008D95BD /* polymain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6A6DAA8E0DA2C0B3008D95BD /* polymain.cpp */; };
+		6A6DAA980DA2C0B3008D95BD /* polyover.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6A6DAA900DA2C0B3008D95BD /* polyover.cpp */; };
+		6A6DAA9B0DA2C0B3008D95BD /* pover_video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6A6DAA930DA2C0B3008D95BD /* pover_video.cpp */; };
+		8D0C4E8E0486CD37000505A6 /* main.nib in Resources */ = {isa = PBXBuildFile; fileRef = 02345980000FD03B11CA0E72 /* main.nib */; };
+		A12649490B8392750091D5AD /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1E3E7BC0B3AD4EC007C3AB5 /* OpenGL.framework */; };
+		A126495E0B83936D0091D5AD /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 8D0C4E960486CD37000505A6 /* Info.plist */; };
+		A18D2A340B861B99007D8D2C /* libtbb.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A18D2A330B861B99007D8D2C /* libtbb.dylib */; };
+		A1976ADA0DF6A6910032C3EA /* libtbbmalloc.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = A1976AD90DF6A6910032C3EA /* libtbbmalloc.dylib */; };
+		A1976ADF0DF6A6E10032C3EA /* libtbbmalloc.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A1976AD90DF6A6910032C3EA /* libtbbmalloc.dylib */; };
+		A1A8F41E0B8B4DBE001C55B1 /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1A8F41D0B8B4DBE001C55B1 /* AGL.framework */; };
+		A1A8F4310B8B4EA8001C55B1 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1A8F4300B8B4EA8001C55B1 /* Carbon.framework */; };
+		A1D44D9A0B861E8A0006E401 /* libtbb.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = A18D2A330B861B99007D8D2C /* libtbb.dylib */; };
+		A1E3E7BD0B3AD4EC007C3AB5 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1E3E7BC0B3AD4EC007C3AB5 /* OpenGL.framework */; };
+		A1F591AC0B8DFC9600073279 /* macvideo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F591AA0B8DFC9600073279 /* macvideo.cpp */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+		A18D2A370B861BB7007D8D2C /* CopyFiles */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = "";
+			dstSubfolderSpec = 16;
+			files = (
+				A1976ADA0DF6A6910032C3EA /* libtbbmalloc.dylib in CopyFiles */,
+				A1D44D9A0B861E8A0006E401 /* libtbb.dylib in CopyFiles */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+		1870340FFE93FCAF11CA0CD7 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/main.nib; sourceTree = "<group>"; };
+		32DBCF6D0370B57F00C91783 /* PolygonOverlay.pch */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PolygonOverlay.pch; sourceTree = "<group>"; };
+		6A6DAA8E0DA2C0B3008D95BD /* polymain.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = polymain.cpp; path = ../polymain.cpp; sourceTree = SOURCE_ROOT; };
+		6A6DAA8F0DA2C0B3008D95BD /* polymain.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = polymain.h; path = ../polymain.h; sourceTree = SOURCE_ROOT; };
+		6A6DAA900DA2C0B3008D95BD /* polyover.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = polyover.cpp; path = ../polyover.cpp; sourceTree = SOURCE_ROOT; };
+		6A6DAA910DA2C0B3008D95BD /* polyover.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = polyover.h; path = ../polyover.h; sourceTree = SOURCE_ROOT; };
+		6A6DAA920DA2C0B3008D95BD /* pover_global.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pover_global.h; path = ../pover_global.h; sourceTree = SOURCE_ROOT; };
+		6A6DAA930DA2C0B3008D95BD /* pover_video.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pover_video.cpp; path = ../pover_video.cpp; sourceTree = SOURCE_ROOT; };
+		6A6DAA940DA2C0B3008D95BD /* pover_video.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pover_video.h; path = ../pover_video.h; sourceTree = SOURCE_ROOT; };
+		6A6DAA950DA2C0B3008D95BD /* rpolygon.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = rpolygon.h; path = ../rpolygon.h; sourceTree = SOURCE_ROOT; };
+		8D0C4E960486CD37000505A6 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
+		8D0C4E970486CD37000505A6 /* PolygonOverlay.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PolygonOverlay.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		A18D2A330B861B99007D8D2C /* libtbb.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libtbb.dylib; path = /Library/Frameworks/TBB.framework/Libraries/libtbb.dylib; sourceTree = "<absolute>"; };
+		A1976AD90DF6A6910032C3EA /* libtbbmalloc.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libtbbmalloc.dylib; path = /Library/Frameworks/TBB.framework/Libraries/libtbbmalloc.dylib; sourceTree = "<absolute>"; };
+		A1A8F41D0B8B4DBE001C55B1 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = "<absolute>"; };
+		A1A8F4300B8B4EA8001C55B1 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
+		A1E3E7BC0B3AD4EC007C3AB5 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
+		A1F591AA0B8DFC9600073279 /* macvideo.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macvideo.cpp; path = ../../../common/gui/macvideo.cpp; sourceTree = SOURCE_ROOT; };
+		A1F591AB0B8DFC9600073279 /* video.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = video.h; path = ../../../common/gui/video.h; sourceTree = SOURCE_ROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		8D0C4E910486CD37000505A6 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				A1E3E7BD0B3AD4EC007C3AB5 /* OpenGL.framework in Frameworks */,
+				A12649490B8392750091D5AD /* OpenGL.framework in Frameworks */,
+				A18D2A340B861B99007D8D2C /* libtbb.dylib in Frameworks */,
+				A1976ADF0DF6A6E10032C3EA /* libtbbmalloc.dylib in Frameworks */,
+				A1A8F41E0B8B4DBE001C55B1 /* AGL.framework in Frameworks */,
+				A1A8F4310B8B4EA8001C55B1 /* Carbon.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		195DF8CFFE9D517E11CA2CBB /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				8D0C4E970486CD37000505A6 /* PolygonOverlay.app */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		20286C29FDCF999611CA2CEA /* PolygonOverlay */ = {
+			isa = PBXGroup;
+			children = (
+				20286C2AFDCF999611CA2CEA /* Sources */,
+				20286C2CFDCF999611CA2CEA /* Resources */,
+				20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */,
+				195DF8CFFE9D517E11CA2CBB /* Products */,
+			);
+			name = PolygonOverlay;
+			sourceTree = "<group>";
+		};
+		20286C2AFDCF999611CA2CEA /* Sources */ = {
+			isa = PBXGroup;
+			children = (
+				6A6DAA8E0DA2C0B3008D95BD /* polymain.cpp */,
+				6A6DAA8F0DA2C0B3008D95BD /* polymain.h */,
+				6A6DAA900DA2C0B3008D95BD /* polyover.cpp */,
+				6A6DAA910DA2C0B3008D95BD /* polyover.h */,
+				6A6DAA920DA2C0B3008D95BD /* pover_global.h */,
+				6A6DAA930DA2C0B3008D95BD /* pover_video.cpp */,
+				6A6DAA940DA2C0B3008D95BD /* pover_video.h */,
+				6A6DAA950DA2C0B3008D95BD /* rpolygon.h */,
+				A1F591AA0B8DFC9600073279 /* macvideo.cpp */,
+				A1F591AB0B8DFC9600073279 /* video.h */,
+				32DBCF6D0370B57F00C91783 /* PolygonOverlay.pch */,
+			);
+			name = Sources;
+			sourceTree = "<group>";
+		};
+		20286C2CFDCF999611CA2CEA /* Resources */ = {
+			isa = PBXGroup;
+			children = (
+				8D0C4E960486CD37000505A6 /* Info.plist */,
+				02345980000FD03B11CA0E72 /* main.nib */,
+			);
+			name = Resources;
+			sourceTree = "<group>";
+		};
+		20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */ = {
+			isa = PBXGroup;
+			children = (
+				A1976AD90DF6A6910032C3EA /* libtbbmalloc.dylib */,
+				A18D2A330B861B99007D8D2C /* libtbb.dylib */,
+				A1A8F4300B8B4EA8001C55B1 /* Carbon.framework */,
+				A1A8F41D0B8B4DBE001C55B1 /* AGL.framework */,
+				A1E3E7BC0B3AD4EC007C3AB5 /* OpenGL.framework */,
+			);
+			name = "External Frameworks and Libraries";
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		8D0C4E890486CD37000505A6 /* PolygonOverlay */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = C0E91AC508A95435008D54AB /* Build configuration list for PBXNativeTarget "PolygonOverlay" */;
+			buildPhases = (
+				8D0C4E8C0486CD37000505A6 /* Resources */,
+				8D0C4E8F0486CD37000505A6 /* Sources */,
+				8D0C4E910486CD37000505A6 /* Frameworks */,
+				A18D2A370B861BB7007D8D2C /* CopyFiles */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = PolygonOverlay;
+			productInstallPath = "$(HOME)/Applications";
+			productName = PolygonOverlay;
+			productReference = 8D0C4E970486CD37000505A6 /* PolygonOverlay.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		20286C28FDCF999611CA2CEA /* Project object */ = {
+			isa = PBXProject;
+			buildConfigurationList = C0E91AC908A95435008D54AB /* Build configuration list for PBXProject "PolygonOverlay" */;
+			hasScannedForEncodings = 1;
+			mainGroup = 20286C29FDCF999611CA2CEA /* PolygonOverlay */;
+			projectDirPath = "";
+			targets = (
+				8D0C4E890486CD37000505A6 /* PolygonOverlay */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		8D0C4E8C0486CD37000505A6 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				8D0C4E8E0486CD37000505A6 /* main.nib in Resources */,
+				A126495E0B83936D0091D5AD /* Info.plist in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		8D0C4E8F0486CD37000505A6 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				A1F591AC0B8DFC9600073279 /* macvideo.cpp in Sources */,
+				6A6DAA960DA2C0B3008D95BD /* polymain.cpp in Sources */,
+				6A6DAA980DA2C0B3008D95BD /* polyover.cpp in Sources */,
+				6A6DAA9B0DA2C0B3008D95BD /* pover_video.cpp in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+		02345980000FD03B11CA0E72 /* main.nib */ = {
+			isa = PBXVariantGroup;
+			children = (
+				1870340FFE93FCAF11CA0CD7 /* English */,
+			);
+			name = main.nib;
+			sourceTree = "<group>";
+		};
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+		C0E91AC608A95435008D54AB /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				COPY_PHASE_STRIP = NO;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_FIX_AND_CONTINUE = YES;
+				GCC_MODEL_TUNING = "";
+				GCC_OPTIMIZATION_LEVEL = 0;
+				INSTALL_PATH = "$(HOME)/Applications";
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(LIBRARY_SEARCH_PATHS_QUOTED_1)",
+				);
+				LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(LOCAL_LIBRARY_DIR)/Frameworks/TBB.framework/Libraries\"";
+				PRODUCT_NAME = PolygonOverlay;
+			};
+			name = Debug;
+		};
+		C0E91AC708A95435008D54AB /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+				GCC_MODEL_TUNING = "";
+				INSTALL_PATH = "$(HOME)/Applications";
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(LIBRARY_SEARCH_PATHS_QUOTED_1)",
+				);
+				LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(LOCAL_LIBRARY_DIR)/Frameworks/TBB.framework/Libraries\"";
+				PRODUCT_NAME = PolygonOverlay;
+			};
+			name = Release;
+		};
+		C0E91ACA08A95435008D54AB /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ARCHS = i386;
+				GCC_AUTO_VECTORIZATION = YES;
+				GCC_ENABLE_CPP_RTTI = YES;
+				GCC_ENABLE_SSE3_EXTENSIONS = YES;
+				GCC_MODEL_TUNING = "";
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
+				MACH_O_TYPE = mh_execute;
+				MACOSX_DEPLOYMENT_TARGET = 10.4;
+				PREBINDING = NO;
+				PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
+				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
+				SYMROOT = "/tmp/tbb-$(USER)";
+			};
+			name = Debug;
+		};
+		C0E91ACB08A95435008D54AB /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ARCHS = i386;
+				GCC_AUTO_VECTORIZATION = YES;
+				GCC_ENABLE_CPP_RTTI = YES;
+				GCC_ENABLE_SSE3_EXTENSIONS = YES;
+				GCC_MODEL_TUNING = "";
+				GCC_OPTIMIZATION_LEVEL = 3;
+				GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
+				MACH_O_TYPE = mh_execute;
+				MACOSX_DEPLOYMENT_TARGET = 10.4;
+				PREBINDING = NO;
+				PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
+				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
+				SYMROOT = "/tmp/tbb-$(USER)";
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		C0E91AC508A95435008D54AB /* Build configuration list for PBXNativeTarget "PolygonOverlay" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				C0E91AC608A95435008D54AB /* Debug */,
+				C0E91AC708A95435008D54AB /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		C0E91AC908A95435008D54AB /* Build configuration list for PBXProject "PolygonOverlay" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				C0E91ACA08A95435008D54AB /* Debug */,
+				C0E91ACB08A95435008D54AB /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 20286C28FDCF999611CA2CEA /* Project object */;
+}
diff --git a/examples/parallel_for/seismic/Makefile b/examples/parallel_for/seismic/Makefile
index 3f38837..f9c86bb 100644
--- a/examples/parallel_for/seismic/Makefile
+++ b/examples/parallel_for/seismic/Makefile
@@ -74,7 +74,6 @@ all:	release test
 resources:
 ifeq ($(UI),mac)
 	mkdir -p $(APPRES)/English.lproj $(NAME).app/Contents/MacOS
-	$(PBXCP) xcode/English.lproj/InfoPlist.strings xcode/English.lproj/main.nib $(APPRES)/English.lproj
 	$(PBXCP) xcode/Info.plist $(APPRES)
 endif
 
diff --git a/examples/parallel_for/seismic/vc7.1/SeismicSimulation.vcproj b/examples/parallel_for/seismic/vc7.1/SeismicSimulation.vcproj
index 04d21f8..ab96f1c 100644
--- a/examples/parallel_for/seismic/vc7.1/SeismicSimulation.vcproj
+++ b/examples/parallel_for/seismic/vc7.1/SeismicSimulation.vcproj
@@ -84,7 +84,8 @@
 				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="TRUE"
 				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="TRUE"/>
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
@@ -92,6 +93,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\ia32\vc7.1\lib""
+				GenerateDebugInformation="TRUE"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -138,7 +140,8 @@
 				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="TRUE"
 				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="TRUE"/>
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
@@ -146,6 +149,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\ia32\vc7.1\lib";"$(DXSDK_DIR)\lib\x86""
+				GenerateDebugInformation="TRUE"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_for/seismic/vc8/SeismicSimulation.vcproj b/examples/parallel_for/seismic/vc8/SeismicSimulation.vcproj
index 9aed8f4..a093da2 100644
--- a/examples/parallel_for/seismic/vc8/SeismicSimulation.vcproj
+++ b/examples/parallel_for/seismic/vc8/SeismicSimulation.vcproj
@@ -217,6 +217,7 @@
 				EnableFunctionLevelLinking="true"
 				UsePrecompiledHeader="0"
 				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -232,6 +233,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\ia32\vc8\lib""
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -300,6 +302,7 @@
 				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="true"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -315,6 +318,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\em64t\vc8\lib""
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -384,6 +388,7 @@
 				EnableFunctionLevelLinking="true"
 				UsePrecompiledHeader="0"
 				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -399,6 +404,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\ia32\vc8\lib";"$(DXSDK_DIR)\lib\x86""
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -468,6 +474,7 @@
 				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="true"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -483,6 +490,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\em64t\vc8\lib";"$(DXSDK_DIR)\lib\x64""
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_for/seismic/vc9/SeismicSimulation.vcproj b/examples/parallel_for/seismic/vc9/SeismicSimulation.vcproj
index 7ce6aae..83a37d7 100644
--- a/examples/parallel_for/seismic/vc9/SeismicSimulation.vcproj
+++ b/examples/parallel_for/seismic/vc9/SeismicSimulation.vcproj
@@ -133,6 +133,7 @@
 				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="true"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -148,6 +149,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\ia32\vc9\lib""
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -215,6 +217,7 @@
 				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="true"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -230,6 +233,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\ia32\vc9\lib";"$(DXSDK_DIR)\lib\x86""
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -460,6 +464,7 @@
 				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="true"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -475,6 +480,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\em64t\vc9\lib""
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -544,6 +550,7 @@
 				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="true"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -559,6 +566,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\em64t\vc9\lib";"$(DXSDK_DIR)\lib\x64""
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_for/seismic/xcode/English.lproj/InfoPlist.strings b/examples/parallel_for/seismic/xcode/English.lproj/InfoPlist.strings
deleted file mode 100644
index aca022d..0000000
--- a/examples/parallel_for/seismic/xcode/English.lproj/InfoPlist.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Localized versions of Info.plist keys */
-
-NSHumanReadableCopyright = "(C) Intel, 2008";
diff --git a/examples/parallel_for/seismic/xcode/SeismicSimulation.xcodeproj/project.pbxproj b/examples/parallel_for/seismic/xcode/SeismicSimulation.xcodeproj/project.pbxproj
index 5d9071d..3ba4b1c 100644
--- a/examples/parallel_for/seismic/xcode/SeismicSimulation.xcodeproj/project.pbxproj
+++ b/examples/parallel_for/seismic/xcode/SeismicSimulation.xcodeproj/project.pbxproj
@@ -1,295 +1,283 @@
-// !$*UTF8*$!
-{
-	archiveVersion = 1;
-	classes = {
-	};
-	objectVersion = 42;
-	objects = {
-
-/* Begin PBXBuildFile section */
-		8D0C4E8D0486CD37000505A6 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0867D6AAFE840B52C02AAC07 /* InfoPlist.strings */; };
-		8D0C4E8E0486CD37000505A6 /* main.nib in Resources */ = {isa = PBXBuildFile; fileRef = 02345980000FD03B11CA0E72 /* main.nib */; };
-		A12649490B8392750091D5AD /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1E3E7BC0B3AD4EC007C3AB5 /* OpenGL.framework */; };
-		A126495E0B83936D0091D5AD /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 8D0C4E960486CD37000505A6 /* Info.plist */; };
-		A18D2A340B861B99007D8D2C /* libtbb.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A18D2A330B861B99007D8D2C /* libtbb.dylib */; };
-		A1A8F41E0B8B4DBE001C55B1 /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1A8F41D0B8B4DBE001C55B1 /* AGL.framework */; };
-		A1A8F4310B8B4EA8001C55B1 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1A8F4300B8B4EA8001C55B1 /* Carbon.framework */; };
-		A1D44D9A0B861E8A0006E401 /* libtbb.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = A18D2A330B861B99007D8D2C /* libtbb.dylib */; };
-		A1E3E7BD0B3AD4EC007C3AB5 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1E3E7BC0B3AD4EC007C3AB5 /* OpenGL.framework */; };
-		A1F591A90B8DFC7100073279 /* SeismicSimulation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F591A80B8DFC7100073279 /* SeismicSimulation.cpp */; };
-		A1F591AC0B8DFC9600073279 /* macvideo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F591AA0B8DFC9600073279 /* macvideo.cpp */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXCopyFilesBuildPhase section */
-		A18D2A370B861BB7007D8D2C /* CopyFiles */ = {
-			isa = PBXCopyFilesBuildPhase;
-			buildActionMask = 2147483647;
-			dstPath = "";
-			dstSubfolderSpec = 16;
-			files = (
-				A1D44D9A0B861E8A0006E401 /* libtbb.dylib in CopyFiles */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXCopyFilesBuildPhase section */
-
-/* Begin PBXFileReference section */
-		0867D6ABFE840B52C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
-		1870340FFE93FCAF11CA0CD7 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/main.nib; sourceTree = "<group>"; };
-		32DBCF6D0370B57F00C91783 /* SeismicSimulation.pch */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SeismicSimulation.pch; sourceTree = "<group>"; };
-		8D0C4E960486CD37000505A6 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
-		8D0C4E970486CD37000505A6 /* SeismicSimulation.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SeismicSimulation.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		A18D2A330B861B99007D8D2C /* libtbb.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libtbb.dylib; path = /Library/Frameworks/TBB.framework/Libraries/libtbb.dylib; sourceTree = "<absolute>"; };
-		A1A8F41D0B8B4DBE001C55B1 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = "<absolute>"; };
-		A1A8F4300B8B4EA8001C55B1 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
-		A1E3E7BC0B3AD4EC007C3AB5 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
-		A1F591A80B8DFC7100073279 /* SeismicSimulation.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SeismicSimulation.cpp; path = ../SeismicSimulation.cpp; sourceTree = SOURCE_ROOT; };
-		A1F591AA0B8DFC9600073279 /* macvideo.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macvideo.cpp; path = ../../../common/gui/macvideo.cpp; sourceTree = SOURCE_ROOT; };
-		A1F591AB0B8DFC9600073279 /* video.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = video.h; path = ../../../common/gui/video.h; sourceTree = SOURCE_ROOT; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
-		8D0C4E910486CD37000505A6 /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				A1E3E7BD0B3AD4EC007C3AB5 /* OpenGL.framework in Frameworks */,
-				A12649490B8392750091D5AD /* OpenGL.framework in Frameworks */,
-				A18D2A340B861B99007D8D2C /* libtbb.dylib in Frameworks */,
-				A1A8F41E0B8B4DBE001C55B1 /* AGL.framework in Frameworks */,
-				A1A8F4310B8B4EA8001C55B1 /* Carbon.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
-		195DF8CFFE9D517E11CA2CBB /* Products */ = {
-			isa = PBXGroup;
-			children = (
-				8D0C4E970486CD37000505A6 /* SeismicSimulation.app */,
-			);
-			name = Products;
-			sourceTree = "<group>";
-		};
-		20286C29FDCF999611CA2CEA /* SeismicSimulation */ = {
-			isa = PBXGroup;
-			children = (
-				20286C2AFDCF999611CA2CEA /* Sources */,
-				20286C2CFDCF999611CA2CEA /* Resources */,
-				20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */,
-				195DF8CFFE9D517E11CA2CBB /* Products */,
-			);
-			name = SeismicSimulation;
-			sourceTree = "<group>";
-		};
-		20286C2AFDCF999611CA2CEA /* Sources */ = {
-			isa = PBXGroup;
-			children = (
-				A1F591A80B8DFC7100073279 /* SeismicSimulation.cpp */,
-				A1F591AA0B8DFC9600073279 /* macvideo.cpp */,
-				A1F591AB0B8DFC9600073279 /* video.h */,
-				32DBCF6D0370B57F00C91783 /* SeismicSimulation.pch */,
-			);
-			name = Sources;
-			sourceTree = "<group>";
-		};
-		20286C2CFDCF999611CA2CEA /* Resources */ = {
-			isa = PBXGroup;
-			children = (
-				8D0C4E960486CD37000505A6 /* Info.plist */,
-				0867D6AAFE840B52C02AAC07 /* InfoPlist.strings */,
-				02345980000FD03B11CA0E72 /* main.nib */,
-			);
-			name = Resources;
-			sourceTree = "<group>";
-		};
-		20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */ = {
-			isa = PBXGroup;
-			children = (
-				A18D2A330B861B99007D8D2C /* libtbb.dylib */,
-				A1A8F4300B8B4EA8001C55B1 /* Carbon.framework */,
-				A1A8F41D0B8B4DBE001C55B1 /* AGL.framework */,
-				A1E3E7BC0B3AD4EC007C3AB5 /* OpenGL.framework */,
-			);
-			name = "External Frameworks and Libraries";
-			sourceTree = "<group>";
-		};
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
-		8D0C4E890486CD37000505A6 /* SeismicSimulation */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = C0E91AC508A95435008D54AB /* Build configuration list for PBXNativeTarget "SeismicSimulation" */;
-			buildPhases = (
-				8D0C4E8C0486CD37000505A6 /* Resources */,
-				8D0C4E8F0486CD37000505A6 /* Sources */,
-				8D0C4E910486CD37000505A6 /* Frameworks */,
-				A18D2A370B861BB7007D8D2C /* CopyFiles */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-			);
-			name = SeismicSimulation;
-			productInstallPath = "$(HOME)/Applications";
-			productName = SeismicSimulation;
-			productReference = 8D0C4E970486CD37000505A6 /* SeismicSimulation.app */;
-			productType = "com.apple.product-type.application";
-		};
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
-		20286C28FDCF999611CA2CEA /* Project object */ = {
-			isa = PBXProject;
-			buildConfigurationList = C0E91AC908A95435008D54AB /* Build configuration list for PBXProject "SeismicSimulation" */;
-			hasScannedForEncodings = 1;
-			mainGroup = 20286C29FDCF999611CA2CEA /* SeismicSimulation */;
-			projectDirPath = "";
-			targets = (
-				8D0C4E890486CD37000505A6 /* SeismicSimulation */,
-			);
-		};
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
-		8D0C4E8C0486CD37000505A6 /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				8D0C4E8D0486CD37000505A6 /* InfoPlist.strings in Resources */,
-				8D0C4E8E0486CD37000505A6 /* main.nib in Resources */,
-				A126495E0B83936D0091D5AD /* Info.plist in Resources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
-		8D0C4E8F0486CD37000505A6 /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				A1F591A90B8DFC7100073279 /* SeismicSimulation.cpp in Sources */,
-				A1F591AC0B8DFC9600073279 /* macvideo.cpp in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXVariantGroup section */
-		02345980000FD03B11CA0E72 /* main.nib */ = {
-			isa = PBXVariantGroup;
-			children = (
-				1870340FFE93FCAF11CA0CD7 /* English */,
-			);
-			name = main.nib;
-			sourceTree = "<group>";
-		};
-		0867D6AAFE840B52C02AAC07 /* InfoPlist.strings */ = {
-			isa = PBXVariantGroup;
-			children = (
-				0867D6ABFE840B52C02AAC07 /* English */,
-			);
-			name = InfoPlist.strings;
-			sourceTree = "<group>";
-		};
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
-		C0E91AC608A95435008D54AB /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				COPY_PHASE_STRIP = NO;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_FIX_AND_CONTINUE = YES;
-				GCC_MODEL_TUNING = "";
-				GCC_OPTIMIZATION_LEVEL = 0;
-				INSTALL_PATH = "$(HOME)/Applications";
-				LIBRARY_SEARCH_PATHS = (
-					"$(inherited)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_1)",
-				);
-				LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(LOCAL_LIBRARY_DIR)/Frameworks/TBB.framework/Libraries\"";
-				PRODUCT_NAME = SeismicSimulation;
-			};
-			name = Debug;
-		};
-		C0E91AC708A95435008D54AB /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
-				GCC_MODEL_TUNING = "";
-				INSTALL_PATH = "$(HOME)/Applications";
-				LIBRARY_SEARCH_PATHS = (
-					"$(inherited)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_1)",
-				);
-				LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(LOCAL_LIBRARY_DIR)/Frameworks/TBB.framework/Libraries\"";
-				PRODUCT_NAME = SeismicSimulation;
-			};
-			name = Release;
-		};
-		C0E91ACA08A95435008D54AB /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ARCHS = i386;
-				GCC_AUTO_VECTORIZATION = YES;
-				GCC_ENABLE_CPP_RTTI = YES;
-				GCC_ENABLE_SSE3_EXTENSIONS = YES;
-				GCC_MODEL_TUNING = "";
-				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
-				MACH_O_TYPE = mh_execute;
-				MACOSX_DEPLOYMENT_TARGET = 10.4;
-				PREBINDING = NO;
-				PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
-				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
-				SYMROOT = "/tmp/tbb-$(USER)";
-			};
-			name = Debug;
-		};
-		C0E91ACB08A95435008D54AB /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ARCHS = i386;
-				GCC_AUTO_VECTORIZATION = YES;
-				GCC_ENABLE_CPP_RTTI = YES;
-				GCC_ENABLE_SSE3_EXTENSIONS = YES;
-				GCC_MODEL_TUNING = "";
-				GCC_OPTIMIZATION_LEVEL = 3;
-				GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
-				MACH_O_TYPE = mh_execute;
-				MACOSX_DEPLOYMENT_TARGET = 10.4;
-				PREBINDING = NO;
-				PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
-				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
-				SYMROOT = "/tmp/tbb-$(USER)";
-			};
-			name = Release;
-		};
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
-		C0E91AC508A95435008D54AB /* Build configuration list for PBXNativeTarget "SeismicSimulation" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				C0E91AC608A95435008D54AB /* Debug */,
-				C0E91AC708A95435008D54AB /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-		C0E91AC908A95435008D54AB /* Build configuration list for PBXProject "SeismicSimulation" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				C0E91ACA08A95435008D54AB /* Debug */,
-				C0E91ACB08A95435008D54AB /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-/* End XCConfigurationList section */
-	};
-	rootObject = 20286C28FDCF999611CA2CEA /* Project object */;
-}
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 42;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		8D0C4E8E0486CD37000505A6 /* main.nib in Resources */ = {isa = PBXBuildFile; fileRef = 02345980000FD03B11CA0E72 /* main.nib */; };
+		A12649490B8392750091D5AD /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1E3E7BC0B3AD4EC007C3AB5 /* OpenGL.framework */; };
+		A126495E0B83936D0091D5AD /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 8D0C4E960486CD37000505A6 /* Info.plist */; };
+		A18D2A340B861B99007D8D2C /* libtbb.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A18D2A330B861B99007D8D2C /* libtbb.dylib */; };
+		A1A8F41E0B8B4DBE001C55B1 /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1A8F41D0B8B4DBE001C55B1 /* AGL.framework */; };
+		A1A8F4310B8B4EA8001C55B1 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1A8F4300B8B4EA8001C55B1 /* Carbon.framework */; };
+		A1D44D9A0B861E8A0006E401 /* libtbb.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = A18D2A330B861B99007D8D2C /* libtbb.dylib */; };
+		A1E3E7BD0B3AD4EC007C3AB5 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1E3E7BC0B3AD4EC007C3AB5 /* OpenGL.framework */; };
+		A1F591A90B8DFC7100073279 /* SeismicSimulation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F591A80B8DFC7100073279 /* SeismicSimulation.cpp */; };
+		A1F591AC0B8DFC9600073279 /* macvideo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F591AA0B8DFC9600073279 /* macvideo.cpp */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+		A18D2A370B861BB7007D8D2C /* CopyFiles */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = "";
+			dstSubfolderSpec = 16;
+			files = (
+				A1D44D9A0B861E8A0006E401 /* libtbb.dylib in CopyFiles */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+		1870340FFE93FCAF11CA0CD7 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/main.nib; sourceTree = "<group>"; };
+		32DBCF6D0370B57F00C91783 /* SeismicSimulation.pch */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SeismicSimulation.pch; sourceTree = "<group>"; };
+		8D0C4E960486CD37000505A6 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
+		8D0C4E970486CD37000505A6 /* SeismicSimulation.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SeismicSimulation.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		A18D2A330B861B99007D8D2C /* libtbb.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libtbb.dylib; path = /Library/Frameworks/TBB.framework/Libraries/libtbb.dylib; sourceTree = "<absolute>"; };
+		A1A8F41D0B8B4DBE001C55B1 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = "<absolute>"; };
+		A1A8F4300B8B4EA8001C55B1 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
+		A1E3E7BC0B3AD4EC007C3AB5 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
+		A1F591A80B8DFC7100073279 /* SeismicSimulation.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SeismicSimulation.cpp; path = ../SeismicSimulation.cpp; sourceTree = SOURCE_ROOT; };
+		A1F591AA0B8DFC9600073279 /* macvideo.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macvideo.cpp; path = ../../../common/gui/macvideo.cpp; sourceTree = SOURCE_ROOT; };
+		A1F591AB0B8DFC9600073279 /* video.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = video.h; path = ../../../common/gui/video.h; sourceTree = SOURCE_ROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		8D0C4E910486CD37000505A6 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				A1E3E7BD0B3AD4EC007C3AB5 /* OpenGL.framework in Frameworks */,
+				A12649490B8392750091D5AD /* OpenGL.framework in Frameworks */,
+				A18D2A340B861B99007D8D2C /* libtbb.dylib in Frameworks */,
+				A1A8F41E0B8B4DBE001C55B1 /* AGL.framework in Frameworks */,
+				A1A8F4310B8B4EA8001C55B1 /* Carbon.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		195DF8CFFE9D517E11CA2CBB /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				8D0C4E970486CD37000505A6 /* SeismicSimulation.app */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		20286C29FDCF999611CA2CEA /* SeismicSimulation */ = {
+			isa = PBXGroup;
+			children = (
+				20286C2AFDCF999611CA2CEA /* Sources */,
+				20286C2CFDCF999611CA2CEA /* Resources */,
+				20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */,
+				195DF8CFFE9D517E11CA2CBB /* Products */,
+			);
+			name = SeismicSimulation;
+			sourceTree = "<group>";
+		};
+		20286C2AFDCF999611CA2CEA /* Sources */ = {
+			isa = PBXGroup;
+			children = (
+				A1F591A80B8DFC7100073279 /* SeismicSimulation.cpp */,
+				A1F591AA0B8DFC9600073279 /* macvideo.cpp */,
+				A1F591AB0B8DFC9600073279 /* video.h */,
+				32DBCF6D0370B57F00C91783 /* SeismicSimulation.pch */,
+			);
+			name = Sources;
+			sourceTree = "<group>";
+		};
+		20286C2CFDCF999611CA2CEA /* Resources */ = {
+			isa = PBXGroup;
+			children = (
+				8D0C4E960486CD37000505A6 /* Info.plist */,
+				02345980000FD03B11CA0E72 /* main.nib */,
+			);
+			name = Resources;
+			sourceTree = "<group>";
+		};
+		20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */ = {
+			isa = PBXGroup;
+			children = (
+				A18D2A330B861B99007D8D2C /* libtbb.dylib */,
+				A1A8F4300B8B4EA8001C55B1 /* Carbon.framework */,
+				A1A8F41D0B8B4DBE001C55B1 /* AGL.framework */,
+				A1E3E7BC0B3AD4EC007C3AB5 /* OpenGL.framework */,
+			);
+			name = "External Frameworks and Libraries";
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		8D0C4E890486CD37000505A6 /* SeismicSimulation */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = C0E91AC508A95435008D54AB /* Build configuration list for PBXNativeTarget "SeismicSimulation" */;
+			buildPhases = (
+				8D0C4E8C0486CD37000505A6 /* Resources */,
+				8D0C4E8F0486CD37000505A6 /* Sources */,
+				8D0C4E910486CD37000505A6 /* Frameworks */,
+				A18D2A370B861BB7007D8D2C /* CopyFiles */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = SeismicSimulation;
+			productInstallPath = "$(HOME)/Applications";
+			productName = SeismicSimulation;
+			productReference = 8D0C4E970486CD37000505A6 /* SeismicSimulation.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		20286C28FDCF999611CA2CEA /* Project object */ = {
+			isa = PBXProject;
+			buildConfigurationList = C0E91AC908A95435008D54AB /* Build configuration list for PBXProject "SeismicSimulation" */;
+			hasScannedForEncodings = 1;
+			mainGroup = 20286C29FDCF999611CA2CEA /* SeismicSimulation */;
+			projectDirPath = "";
+			targets = (
+				8D0C4E890486CD37000505A6 /* SeismicSimulation */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		8D0C4E8C0486CD37000505A6 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				8D0C4E8E0486CD37000505A6 /* main.nib in Resources */,
+				A126495E0B83936D0091D5AD /* Info.plist in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		8D0C4E8F0486CD37000505A6 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				A1F591A90B8DFC7100073279 /* SeismicSimulation.cpp in Sources */,
+				A1F591AC0B8DFC9600073279 /* macvideo.cpp in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+		02345980000FD03B11CA0E72 /* main.nib */ = {
+			isa = PBXVariantGroup;
+			children = (
+				1870340FFE93FCAF11CA0CD7 /* English */,
+			);
+			name = main.nib;
+			sourceTree = "<group>";
+		};
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+		C0E91AC608A95435008D54AB /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				COPY_PHASE_STRIP = NO;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_FIX_AND_CONTINUE = YES;
+				GCC_MODEL_TUNING = "";
+				GCC_OPTIMIZATION_LEVEL = 0;
+				INSTALL_PATH = "$(HOME)/Applications";
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(LIBRARY_SEARCH_PATHS_QUOTED_1)",
+				);
+				LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(LOCAL_LIBRARY_DIR)/Frameworks/TBB.framework/Libraries\"";
+				PRODUCT_NAME = SeismicSimulation;
+			};
+			name = Debug;
+		};
+		C0E91AC708A95435008D54AB /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+				GCC_MODEL_TUNING = "";
+				INSTALL_PATH = "$(HOME)/Applications";
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(LIBRARY_SEARCH_PATHS_QUOTED_1)",
+				);
+				LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(LOCAL_LIBRARY_DIR)/Frameworks/TBB.framework/Libraries\"";
+				PRODUCT_NAME = SeismicSimulation;
+			};
+			name = Release;
+		};
+		C0E91ACA08A95435008D54AB /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ARCHS = i386;
+				GCC_AUTO_VECTORIZATION = YES;
+				GCC_ENABLE_CPP_RTTI = YES;
+				GCC_ENABLE_SSE3_EXTENSIONS = YES;
+				GCC_MODEL_TUNING = "";
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
+				MACH_O_TYPE = mh_execute;
+				MACOSX_DEPLOYMENT_TARGET = 10.4;
+				PREBINDING = NO;
+				PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
+				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
+				SYMROOT = "/tmp/tbb-$(USER)";
+			};
+			name = Debug;
+		};
+		C0E91ACB08A95435008D54AB /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ARCHS = i386;
+				GCC_AUTO_VECTORIZATION = YES;
+				GCC_ENABLE_CPP_RTTI = YES;
+				GCC_ENABLE_SSE3_EXTENSIONS = YES;
+				GCC_MODEL_TUNING = "";
+				GCC_OPTIMIZATION_LEVEL = 3;
+				GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
+				MACH_O_TYPE = mh_execute;
+				MACOSX_DEPLOYMENT_TARGET = 10.4;
+				PREBINDING = NO;
+				PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
+				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
+				SYMROOT = "/tmp/tbb-$(USER)";
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		C0E91AC508A95435008D54AB /* Build configuration list for PBXNativeTarget "SeismicSimulation" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				C0E91AC608A95435008D54AB /* Debug */,
+				C0E91AC708A95435008D54AB /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		C0E91AC908A95435008D54AB /* Build configuration list for PBXProject "SeismicSimulation" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				C0E91ACA08A95435008D54AB /* Debug */,
+				C0E91ACB08A95435008D54AB /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 20286C28FDCF999611CA2CEA /* Project object */;
+}
diff --git a/examples/parallel_for/tachyon/Makefile b/examples/parallel_for/tachyon/Makefile
index 5a13e39..7f2574c 100644
--- a/examples/parallel_for/tachyon/Makefile
+++ b/examples/parallel_for/tachyon/Makefile
@@ -187,7 +187,6 @@ endif
 $(EXE): $(SOURCE)
 ifeq ($(UI),mac)
 	mkdir -p $(RES)/English.lproj $(NAME).$(VERSION).app/Contents/MacOS
-	$(PBXCP) xcode/English.lproj/InfoPlist.strings xcode/English.lproj/main.nib $(RES)/English.lproj
 	$(PBXCP) xcode/Info.plist $(RES)
 endif
 	$(CXX) $(MYCXXFLAGS) -o $@ $(SOURCE) $(LIBS)
diff --git a/examples/parallel_for/tachyon/vc7.1/tachyon.serial.vcproj b/examples/parallel_for/tachyon/vc7.1/tachyon.serial.vcproj
index 031ad70..9e9b7d6 100644
--- a/examples/parallel_for/tachyon/vc7.1/tachyon.serial.vcproj
+++ b/examples/parallel_for/tachyon/vc7.1/tachyon.serial.vcproj
@@ -92,6 +92,8 @@
 				Name="VCLinkerTool"
 				AdditionalDependencies="$(OutDir)/tachyon.common.lib"
 				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/$(ProjectName).pdb"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -146,6 +148,8 @@
 				AdditionalDependencies="$(OutDir)/tachyon.common.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(DXSDK_DIR)\lib\x86"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/$(ProjectName).pdb"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_for/tachyon/vc7.1/tachyon.tbb.vcproj b/examples/parallel_for/tachyon/vc7.1/tachyon.tbb.vcproj
index 32b0486..d5f5187 100644
--- a/examples/parallel_for/tachyon/vc7.1/tachyon.tbb.vcproj
+++ b/examples/parallel_for/tachyon/vc7.1/tachyon.tbb.vcproj
@@ -97,6 +97,8 @@
 				AdditionalDependencies="$(OutDir)/tachyon.common.lib tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc7.1\lib"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/$(ProjectName).pdb"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -153,6 +155,8 @@
 				AdditionalDependencies="$(OutDir)/tachyon.common.lib tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\ia32\vc7.1\lib";"$(DXSDK_DIR)\lib\x86""
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/$(ProjectName).pdb"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_for/tachyon/vc7.1/tachyon.tbb1d.vcproj b/examples/parallel_for/tachyon/vc7.1/tachyon.tbb1d.vcproj
index c4d7603..756e916 100644
--- a/examples/parallel_for/tachyon/vc7.1/tachyon.tbb1d.vcproj
+++ b/examples/parallel_for/tachyon/vc7.1/tachyon.tbb1d.vcproj
@@ -98,6 +98,8 @@
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc7.1\lib"
 				SubSystem="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/$(ProjectName).pdb"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
 				TargetMachine="1"
@@ -154,6 +156,8 @@
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\ia32\vc7.1\lib";"$(DXSDK_DIR)\lib\x86""
 				SubSystem="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/$(ProjectName).pdb"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
 				TargetMachine="1"
diff --git a/examples/parallel_for/tachyon/vc8/tachyon.serial.vcproj b/examples/parallel_for/tachyon/vc8/tachyon.serial.vcproj
index fdca326..b59c8ba 100644
--- a/examples/parallel_for/tachyon/vc8/tachyon.serial.vcproj
+++ b/examples/parallel_for/tachyon/vc8/tachyon.serial.vcproj
@@ -231,6 +231,7 @@
 			<Tool
 				Name="VCLinkerTool"
 				LinkIncremental="1"
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -311,6 +312,7 @@
 			<Tool
 				Name="VCLinkerTool"
 				LinkIncremental="1"
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -393,6 +395,7 @@
 				Name="VCLinkerTool"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(DXSDK_DIR)\lib\x86"
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -474,6 +477,7 @@
 				Name="VCLinkerTool"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(DXSDK_DIR)\lib\x64"
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_for/tachyon/vc8/tachyon.tbb.vcproj b/examples/parallel_for/tachyon/vc8/tachyon.tbb.vcproj
index 48c5137..0a50918 100644
--- a/examples/parallel_for/tachyon/vc8/tachyon.tbb.vcproj
+++ b/examples/parallel_for/tachyon/vc8/tachyon.tbb.vcproj
@@ -244,6 +244,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -329,6 +330,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -415,6 +417,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\ia32\vc8\lib";"$(DXSDK_DIR)\lib\x86""
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -500,6 +503,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\em64t\vc8\lib";"$(DXSDK_DIR)\lib\x64""
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_for/tachyon/vc8/tachyon.tbb1d.vcproj b/examples/parallel_for/tachyon/vc8/tachyon.tbb1d.vcproj
index fb40780..7a21ac8 100644
--- a/examples/parallel_for/tachyon/vc8/tachyon.tbb1d.vcproj
+++ b/examples/parallel_for/tachyon/vc8/tachyon.tbb1d.vcproj
@@ -244,6 +244,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -329,6 +330,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -415,6 +417,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\ia32\vc8\lib";"$(DXSDK_DIR)\lib\x86""
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -500,6 +503,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\em64t\vc8\lib";"$(DXSDK_DIR)\lib\x64""
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_for/tachyon/vc9/tachyon.serial.vcproj b/examples/parallel_for/tachyon/vc9/tachyon.serial.vcproj
index c9c8c8c..81b5843 100644
--- a/examples/parallel_for/tachyon/vc9/tachyon.serial.vcproj
+++ b/examples/parallel_for/tachyon/vc9/tachyon.serial.vcproj
@@ -148,6 +148,7 @@
 			<Tool
 				Name="VCLinkerTool"
 				LinkIncremental="1"
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -228,6 +229,7 @@
 				Name="VCLinkerTool"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(DXSDK_DIR)\lib\x86"
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -469,6 +471,7 @@
 			<Tool
 				Name="VCLinkerTool"
 				LinkIncremental="1"
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -550,6 +553,7 @@
 				Name="VCLinkerTool"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(DXSDK_DIR)\lib\x64"
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_for/tachyon/vc9/tachyon.tbb.vcproj b/examples/parallel_for/tachyon/vc9/tachyon.tbb.vcproj
index c733172..7128541 100644
--- a/examples/parallel_for/tachyon/vc9/tachyon.tbb.vcproj
+++ b/examples/parallel_for/tachyon/vc9/tachyon.tbb.vcproj
@@ -156,6 +156,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -240,6 +241,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\ia32\vc9\lib";"$(DXSDK_DIR)\lib\x86""
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -495,6 +497,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -580,6 +583,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\em64t\vc9\lib";"$(DXSDK_DIR)\lib\x64""
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_for/tachyon/vc9/tachyon.tbb1d.vcproj b/examples/parallel_for/tachyon/vc9/tachyon.tbb1d.vcproj
index 4b21001..2643535 100644
--- a/examples/parallel_for/tachyon/vc9/tachyon.tbb1d.vcproj
+++ b/examples/parallel_for/tachyon/vc9/tachyon.tbb1d.vcproj
@@ -156,6 +156,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -240,6 +241,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\ia32\vc9\lib";"$(DXSDK_DIR)\lib\x86""
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -495,6 +497,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -580,6 +583,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories=""$(TBB21_INSTALL_DIR)\em64t\vc9\lib";"$(DXSDK_DIR)\lib\x64""
+				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_for/tachyon/xcode/English.lproj/InfoPlist.strings b/examples/parallel_for/tachyon/xcode/English.lproj/InfoPlist.strings
deleted file mode 100644
index aca022d..0000000
--- a/examples/parallel_for/tachyon/xcode/English.lproj/InfoPlist.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Localized versions of Info.plist keys */
-
-NSHumanReadableCopyright = "(C) Intel, 2008";
diff --git a/examples/parallel_for/tachyon/xcode/tachyon.xcodeproj/project.pbxproj b/examples/parallel_for/tachyon/xcode/tachyon.xcodeproj/project.pbxproj
index 37f6b04..d0ac70f 100644
--- a/examples/parallel_for/tachyon/xcode/tachyon.xcodeproj/project.pbxproj
+++ b/examples/parallel_for/tachyon/xcode/tachyon.xcodeproj/project.pbxproj
@@ -1,930 +1,914 @@
-// !$*UTF8*$!
-{
-	archiveVersion = 1;
-	classes = {
-	};
-	objectVersion = 42;
-	objects = {
-
-/* Begin PBXBuildFile section */
-		8D0C4E8D0486CD37000505A6 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0867D6AAFE840B52C02AAC07 /* InfoPlist.strings */; };
-		8D0C4E8E0486CD37000505A6 /* main.nib in Resources */ = {isa = PBXBuildFile; fileRef = 02345980000FD03B11CA0E72 /* main.nib */; };
-		8D0C4E920486CD37000505A6 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20286C33FDCF999611CA2CEA /* Carbon.framework */; };
-		A117DC7B0B8DC08100F62CED /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A117DC7A0B8DC08100F62CED /* AGL.framework */; };
-		A117DC800B8DC09300F62CED /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A117DC7F0B8DC09300F62CED /* OpenGL.framework */; };
-		A117DC850B8DC0EA00F62CED /* libtbb.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A117DC830B8DC0DE00F62CED /* libtbb.dylib */; };
-		A117DC950B8DC5FB00F62CED /* libtbb.dylib in Copy TBB lib */ = {isa = PBXBuildFile; fileRef = A117DC830B8DC0DE00F62CED /* libtbb.dylib */; };
-		A1F58DCD0B8DF19700073279 /* main.nib in Resources */ = {isa = PBXBuildFile; fileRef = 02345980000FD03B11CA0E72 /* main.nib */; };
-		A1F58DCE0B8DF19800073279 /* main.nib in Resources */ = {isa = PBXBuildFile; fileRef = 02345980000FD03B11CA0E72 /* main.nib */; };
-		A1F58E8C0B8DF25800073279 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A117DC7F0B8DC09300F62CED /* OpenGL.framework */; };
-		A1F58E8D0B8DF25900073279 /* libtbb.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A117DC830B8DC0DE00F62CED /* libtbb.dylib */; };
-		A1F58E8E0B8DF25A00073279 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20286C33FDCF999611CA2CEA /* Carbon.framework */; };
-		A1F58E8F0B8DF25A00073279 /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A117DC7A0B8DC08100F62CED /* AGL.framework */; };
-		A1F58E900B8DF25F00073279 /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A117DC7A0B8DC08100F62CED /* AGL.framework */; };
-		A1F58E910B8DF26000073279 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20286C33FDCF999611CA2CEA /* Carbon.framework */; };
-		A1F58E920B8DF26100073279 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A117DC7F0B8DC09300F62CED /* OpenGL.framework */; };
-		A1F58EA30B8DF32900073279 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 8D0C4E960486CD37000505A6 /* Info.plist */; };
-		A1F58EA40B8DF32A00073279 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 8D0C4E960486CD37000505A6 /* Info.plist */; };
-		A1F58EA60B8DF32B00073279 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 8D0C4E960486CD37000505A6 /* Info.plist */; };
-		A1F58EA80B8DF33100073279 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0867D6AAFE840B52C02AAC07 /* InfoPlist.strings */; };
-		A1F58EAA0B8DF33200073279 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0867D6AAFE840B52C02AAC07 /* InfoPlist.strings */; };
-		A1F58EE80B8DF4F900073279 /* libtbb.dylib in Copy TBB lib */ = {isa = PBXBuildFile; fileRef = A117DC830B8DC0DE00F62CED /* libtbb.dylib */; };
-		A1F58F960B8DF63C00073279 /* trace.tbb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1A8FB5D0B8CBB8D001C55B1 /* trace.tbb.cpp */; };
-		A1F5902C0B8DF6A700073279 /* trace.tbb1d.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F58D8B0B8DEFD900073279 /* trace.tbb1d.cpp */; };
-		A1F590300B8DF74600073279 /* trace.serial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F58D8C0B8DEFE900073279 /* trace.serial.cpp */; };
-		A1F590C30B8DF81800073279 /* api.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F5909E0B8DF81800073279 /* api.cpp */; };
-		A1F590C40B8DF81800073279 /* apigeom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F5909F0B8DF81800073279 /* apigeom.cpp */; };
-		A1F590C50B8DF81800073279 /* apitrigeom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A00B8DF81800073279 /* apitrigeom.cpp */; };
-		A1F590C60B8DF81800073279 /* bndbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A10B8DF81800073279 /* bndbox.cpp */; };
-		A1F590C70B8DF81800073279 /* box.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A20B8DF81800073279 /* box.cpp */; };
-		A1F590C80B8DF81800073279 /* camera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A30B8DF81800073279 /* camera.cpp */; };
-		A1F590C90B8DF81800073279 /* coordsys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A40B8DF81800073279 /* coordsys.cpp */; };
-		A1F590CA0B8DF81800073279 /* cylinder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A50B8DF81800073279 /* cylinder.cpp */; };
-		A1F590CB0B8DF81800073279 /* extvol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A60B8DF81800073279 /* extvol.cpp */; };
-		A1F590CC0B8DF81800073279 /* getargs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A70B8DF81800073279 /* getargs.cpp */; };
-		A1F590CD0B8DF81800073279 /* global.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A80B8DF81800073279 /* global.cpp */; };
-		A1F590CE0B8DF81800073279 /* grid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A90B8DF81800073279 /* grid.cpp */; };
-		A1F590CF0B8DF81800073279 /* imageio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AA0B8DF81800073279 /* imageio.cpp */; };
-		A1F590D00B8DF81800073279 /* imap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AB0B8DF81800073279 /* imap.cpp */; };
-		A1F590D10B8DF81800073279 /* intersect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AC0B8DF81800073279 /* intersect.cpp */; };
-		A1F590D20B8DF81800073279 /* jpeg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AD0B8DF81800073279 /* jpeg.cpp */; };
-		A1F590D30B8DF81800073279 /* light.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AE0B8DF81800073279 /* light.cpp */; };
-		A1F590D40B8DF81800073279 /* objbound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AF0B8DF81800073279 /* objbound.cpp */; };
-		A1F590D50B8DF81800073279 /* parse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B00B8DF81800073279 /* parse.cpp */; };
-		A1F590D60B8DF81800073279 /* plane.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B10B8DF81800073279 /* plane.cpp */; };
-		A1F590D70B8DF81800073279 /* ppm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B20B8DF81800073279 /* ppm.cpp */; };
-		A1F590D80B8DF81800073279 /* quadric.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B30B8DF81800073279 /* quadric.cpp */; };
-		A1F590D90B8DF81800073279 /* render.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B40B8DF81800073279 /* render.cpp */; };
-		A1F590DA0B8DF81800073279 /* ring.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B50B8DF81800073279 /* ring.cpp */; };
-		A1F590DB0B8DF81800073279 /* shade.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B60B8DF81800073279 /* shade.cpp */; };
-		A1F590DC0B8DF81800073279 /* sphere.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B70B8DF81800073279 /* sphere.cpp */; };
-		A1F590DD0B8DF81800073279 /* texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B80B8DF81800073279 /* texture.cpp */; };
-		A1F590DE0B8DF81800073279 /* tgafile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B90B8DF81800073279 /* tgafile.cpp */; };
-		A1F590DF0B8DF81800073279 /* trace_rest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590BA0B8DF81800073279 /* trace_rest.cpp */; };
-		A1F590E20B8DF81800073279 /* triangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590BD0B8DF81800073279 /* triangle.cpp */; };
-		A1F590E30B8DF81800073279 /* ui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590BE0B8DF81800073279 /* ui.cpp */; };
-		A1F590E40B8DF81800073279 /* util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590BF0B8DF81800073279 /* util.cpp */; };
-		A1F590E50B8DF81800073279 /* vector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590C00B8DF81800073279 /* vector.cpp */; };
-		A1F590E60B8DF81800073279 /* video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590C10B8DF81800073279 /* video.cpp */; };
-		A1F590E70B8DF81800073279 /* vol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590C20B8DF81800073279 /* vol.cpp */; };
-		A1F5910D0B8DF81800073279 /* api.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F5909E0B8DF81800073279 /* api.cpp */; };
-		A1F5910E0B8DF81800073279 /* apigeom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F5909F0B8DF81800073279 /* apigeom.cpp */; };
-		A1F5910F0B8DF81800073279 /* apitrigeom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A00B8DF81800073279 /* apitrigeom.cpp */; };
-		A1F591100B8DF81800073279 /* bndbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A10B8DF81800073279 /* bndbox.cpp */; };
-		A1F591110B8DF81800073279 /* box.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A20B8DF81800073279 /* box.cpp */; };
-		A1F591120B8DF81800073279 /* camera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A30B8DF81800073279 /* camera.cpp */; };
-		A1F591130B8DF81800073279 /* coordsys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A40B8DF81800073279 /* coordsys.cpp */; };
-		A1F591140B8DF81800073279 /* cylinder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A50B8DF81800073279 /* cylinder.cpp */; };
-		A1F591150B8DF81800073279 /* extvol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A60B8DF81800073279 /* extvol.cpp */; };
-		A1F591160B8DF81800073279 /* getargs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A70B8DF81800073279 /* getargs.cpp */; };
-		A1F591170B8DF81800073279 /* global.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A80B8DF81800073279 /* global.cpp */; };
-		A1F591180B8DF81800073279 /* grid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A90B8DF81800073279 /* grid.cpp */; };
-		A1F591190B8DF81800073279 /* imageio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AA0B8DF81800073279 /* imageio.cpp */; };
-		A1F5911A0B8DF81800073279 /* imap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AB0B8DF81800073279 /* imap.cpp */; };
-		A1F5911B0B8DF81800073279 /* intersect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AC0B8DF81800073279 /* intersect.cpp */; };
-		A1F5911C0B8DF81800073279 /* jpeg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AD0B8DF81800073279 /* jpeg.cpp */; };
-		A1F5911D0B8DF81800073279 /* light.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AE0B8DF81800073279 /* light.cpp */; };
-		A1F5911E0B8DF81800073279 /* objbound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AF0B8DF81800073279 /* objbound.cpp */; };
-		A1F5911F0B8DF81800073279 /* parse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B00B8DF81800073279 /* parse.cpp */; };
-		A1F591200B8DF81800073279 /* plane.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B10B8DF81800073279 /* plane.cpp */; };
-		A1F591210B8DF81800073279 /* ppm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B20B8DF81800073279 /* ppm.cpp */; };
-		A1F591220B8DF81800073279 /* quadric.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B30B8DF81800073279 /* quadric.cpp */; };
-		A1F591230B8DF81800073279 /* render.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B40B8DF81800073279 /* render.cpp */; };
-		A1F591240B8DF81800073279 /* ring.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B50B8DF81800073279 /* ring.cpp */; };
-		A1F591250B8DF81800073279 /* shade.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B60B8DF81800073279 /* shade.cpp */; };
-		A1F591260B8DF81800073279 /* sphere.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B70B8DF81800073279 /* sphere.cpp */; };
-		A1F591270B8DF81800073279 /* texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B80B8DF81800073279 /* texture.cpp */; };
-		A1F591280B8DF81800073279 /* tgafile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B90B8DF81800073279 /* tgafile.cpp */; };
-		A1F591290B8DF81800073279 /* trace_rest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590BA0B8DF81800073279 /* trace_rest.cpp */; };
-		A1F5912C0B8DF81800073279 /* triangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590BD0B8DF81800073279 /* triangle.cpp */; };
-		A1F5912D0B8DF81800073279 /* ui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590BE0B8DF81800073279 /* ui.cpp */; };
-		A1F5912E0B8DF81800073279 /* util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590BF0B8DF81800073279 /* util.cpp */; };
-		A1F5912F0B8DF81800073279 /* vector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590C00B8DF81800073279 /* vector.cpp */; };
-		A1F591300B8DF81800073279 /* video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590C10B8DF81800073279 /* video.cpp */; };
-		A1F591310B8DF81800073279 /* vol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590C20B8DF81800073279 /* vol.cpp */; };
-		A1F591320B8DF81800073279 /* api.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F5909E0B8DF81800073279 /* api.cpp */; };
-		A1F591330B8DF81800073279 /* apigeom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F5909F0B8DF81800073279 /* apigeom.cpp */; };
-		A1F591340B8DF81800073279 /* apitrigeom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A00B8DF81800073279 /* apitrigeom.cpp */; };
-		A1F591350B8DF81800073279 /* bndbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A10B8DF81800073279 /* bndbox.cpp */; };
-		A1F591360B8DF81800073279 /* box.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A20B8DF81800073279 /* box.cpp */; };
-		A1F591370B8DF81800073279 /* camera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A30B8DF81800073279 /* camera.cpp */; };
-		A1F591380B8DF81800073279 /* coordsys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A40B8DF81800073279 /* coordsys.cpp */; };
-		A1F591390B8DF81800073279 /* cylinder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A50B8DF81800073279 /* cylinder.cpp */; };
-		A1F5913A0B8DF81800073279 /* extvol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A60B8DF81800073279 /* extvol.cpp */; };
-		A1F5913B0B8DF81800073279 /* getargs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A70B8DF81800073279 /* getargs.cpp */; };
-		A1F5913C0B8DF81800073279 /* global.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A80B8DF81800073279 /* global.cpp */; };
-		A1F5913D0B8DF81800073279 /* grid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A90B8DF81800073279 /* grid.cpp */; };
-		A1F5913E0B8DF81800073279 /* imageio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AA0B8DF81800073279 /* imageio.cpp */; };
-		A1F5913F0B8DF81800073279 /* imap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AB0B8DF81800073279 /* imap.cpp */; };
-		A1F591400B8DF81800073279 /* intersect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AC0B8DF81800073279 /* intersect.cpp */; };
-		A1F591410B8DF81800073279 /* jpeg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AD0B8DF81800073279 /* jpeg.cpp */; };
-		A1F591420B8DF81800073279 /* light.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AE0B8DF81800073279 /* light.cpp */; };
-		A1F591430B8DF81800073279 /* objbound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AF0B8DF81800073279 /* objbound.cpp */; };
-		A1F591440B8DF81800073279 /* parse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B00B8DF81800073279 /* parse.cpp */; };
-		A1F591450B8DF81800073279 /* plane.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B10B8DF81800073279 /* plane.cpp */; };
-		A1F591460B8DF81800073279 /* ppm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B20B8DF81800073279 /* ppm.cpp */; };
-		A1F591470B8DF81800073279 /* quadric.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B30B8DF81800073279 /* quadric.cpp */; };
-		A1F591480B8DF81800073279 /* render.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B40B8DF81800073279 /* render.cpp */; };
-		A1F591490B8DF81800073279 /* ring.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B50B8DF81800073279 /* ring.cpp */; };
-		A1F5914A0B8DF81800073279 /* shade.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B60B8DF81800073279 /* shade.cpp */; };
-		A1F5914B0B8DF81800073279 /* sphere.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B70B8DF81800073279 /* sphere.cpp */; };
-		A1F5914C0B8DF81800073279 /* texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B80B8DF81800073279 /* texture.cpp */; };
-		A1F5914D0B8DF81800073279 /* tgafile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B90B8DF81800073279 /* tgafile.cpp */; };
-		A1F5914E0B8DF81800073279 /* trace_rest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590BA0B8DF81800073279 /* trace_rest.cpp */; };
-		A1F591510B8DF81800073279 /* triangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590BD0B8DF81800073279 /* triangle.cpp */; };
-		A1F591520B8DF81800073279 /* ui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590BE0B8DF81800073279 /* ui.cpp */; };
-		A1F591530B8DF81800073279 /* util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590BF0B8DF81800073279 /* util.cpp */; };
-		A1F591540B8DF81800073279 /* vector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590C00B8DF81800073279 /* vector.cpp */; };
-		A1F591550B8DF81800073279 /* video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590C10B8DF81800073279 /* video.cpp */; };
-		A1F591560B8DF81800073279 /* vol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590C20B8DF81800073279 /* vol.cpp */; };
-		A1F5915D0B8DF94400073279 /* macvideo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F5915C0B8DF94400073279 /* macvideo.cpp */; };
-		A1F5915E0B8DF94400073279 /* macvideo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F5915C0B8DF94400073279 /* macvideo.cpp */; };
-		A1F591600B8DF94400073279 /* macvideo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F5915C0B8DF94400073279 /* macvideo.cpp */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXCopyFilesBuildPhase section */
-		A117DC910B8DC59A00F62CED /* Copy TBB lib */ = {
-			isa = PBXCopyFilesBuildPhase;
-			buildActionMask = 2147483647;
-			dstPath = "";
-			dstSubfolderSpec = 16;
-			files = (
-				A117DC950B8DC5FB00F62CED /* libtbb.dylib in Copy TBB lib */,
-			);
-			name = "Copy TBB lib";
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		A1F58EE60B8DF4E100073279 /* Copy TBB lib */ = {
-			isa = PBXCopyFilesBuildPhase;
-			buildActionMask = 2147483647;
-			dstPath = "";
-			dstSubfolderSpec = 16;
-			files = (
-				A1F58EE80B8DF4F900073279 /* libtbb.dylib in Copy TBB lib */,
-			);
-			name = "Copy TBB lib";
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXCopyFilesBuildPhase section */
-
-/* Begin PBXFileReference section */
-		0867D6ABFE840B52C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
-		1870340FFE93FCAF11CA0CD7 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/main.nib; sourceTree = "<group>"; };
-		20286C33FDCF999611CA2CEA /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
-		32DBCF6D0370B57F00C91783 /* tachyon.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tachyon.pch; sourceTree = "<group>"; };
-		8D0C4E960486CD37000505A6 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
-		A117DC7A0B8DC08100F62CED /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = "<absolute>"; };
-		A117DC7F0B8DC09300F62CED /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
-		A117DC830B8DC0DE00F62CED /* libtbb.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libtbb.dylib; path = /Library/Frameworks/TBB.framework/Libraries/libtbb.dylib; sourceTree = "<absolute>"; };
-		A1A8FB5D0B8CBB8D001C55B1 /* trace.tbb.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = trace.tbb.cpp; path = ../src/trace.tbb.cpp; sourceTree = SOURCE_ROOT; };
-		A1F58CD90B8DE90E00073279 /* tachyon-tbb.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "tachyon-tbb.app"; sourceTree = BUILT_PRODUCTS_DIR; };
-		A1F58D3D0B8DEB8E00073279 /* trace.threads.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = trace.threads.cpp; path = ../src/trace.threads.cpp; sourceTree = SOURCE_ROOT; };
-		A1F58D8B0B8DEFD900073279 /* trace.tbb1d.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = trace.tbb1d.cpp; path = ../src/trace.tbb1d.cpp; sourceTree = SOURCE_ROOT; };
-		A1F58D8C0B8DEFE900073279 /* trace.serial.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = trace.serial.cpp; path = ../src/trace.serial.cpp; sourceTree = SOURCE_ROOT; };
-		A1F58D920B8DF03600073279 /* tachyon-tbb1d.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "tachyon-tbb1d.app"; sourceTree = BUILT_PRODUCTS_DIR; };
-		A1F58D9C0B8DF06700073279 /* tachyon-serial.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "tachyon-serial.app"; sourceTree = BUILT_PRODUCTS_DIR; };
-		A1F590320B8DF7D100073279 /* api.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = api.h; path = ../src/api.h; sourceTree = SOURCE_ROOT; };
-		A1F590330B8DF7D100073279 /* apitrigeom.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = apitrigeom.h; path = ../src/apitrigeom.h; sourceTree = SOURCE_ROOT; };
-		A1F590340B8DF7D100073279 /* bndbox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = bndbox.h; path = ../src/bndbox.h; sourceTree = SOURCE_ROOT; };
-		A1F590350B8DF7D100073279 /* box.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = box.h; path = ../src/box.h; sourceTree = SOURCE_ROOT; };
-		A1F590360B8DF7D100073279 /* camera.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = camera.h; path = ../src/camera.h; sourceTree = SOURCE_ROOT; };
-		A1F590370B8DF7D100073279 /* coordsys.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = coordsys.h; path = ../src/coordsys.h; sourceTree = SOURCE_ROOT; };
-		A1F590380B8DF7D100073279 /* cylinder.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = cylinder.h; path = ../src/cylinder.h; sourceTree = SOURCE_ROOT; };
-		A1F590390B8DF7D100073279 /* extvol.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = extvol.h; path = ../src/extvol.h; sourceTree = SOURCE_ROOT; };
-		A1F5903A0B8DF7D100073279 /* getargs.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = getargs.h; path = ../src/getargs.h; sourceTree = SOURCE_ROOT; };
-		A1F5903B0B8DF7D100073279 /* global.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = global.h; path = ../src/global.h; sourceTree = SOURCE_ROOT; };
-		A1F5903C0B8DF7D100073279 /* grid.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = grid.h; path = ../src/grid.h; sourceTree = SOURCE_ROOT; };
-		A1F5903D0B8DF7D100073279 /* imageio.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = imageio.h; path = ../src/imageio.h; sourceTree = SOURCE_ROOT; };
-		A1F5903E0B8DF7D100073279 /* imap.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = imap.h; path = ../src/imap.h; sourceTree = SOURCE_ROOT; };
-		A1F5903F0B8DF7D100073279 /* intersect.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = intersect.h; path = ../src/intersect.h; sourceTree = SOURCE_ROOT; };
-		A1F590400B8DF7D100073279 /* jpeg.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = jpeg.h; path = ../src/jpeg.h; sourceTree = SOURCE_ROOT; };
-		A1F590410B8DF7D100073279 /* light.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = light.h; path = ../src/light.h; sourceTree = SOURCE_ROOT; };
-		A1F590420B8DF7D100073279 /* machine.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = machine.h; path = ../src/machine.h; sourceTree = SOURCE_ROOT; };
-		A1F590430B8DF7D100073279 /* macros.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macros.h; path = ../src/macros.h; sourceTree = SOURCE_ROOT; };
-		A1F590440B8DF7D100073279 /* objbound.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = objbound.h; path = ../src/objbound.h; sourceTree = SOURCE_ROOT; };
-		A1F590450B8DF7D100073279 /* parse.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = parse.h; path = ../src/parse.h; sourceTree = SOURCE_ROOT; };
-		A1F590460B8DF7D100073279 /* plane.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = plane.h; path = ../src/plane.h; sourceTree = SOURCE_ROOT; };
-		A1F590470B8DF7D100073279 /* ppm.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ppm.h; path = ../src/ppm.h; sourceTree = SOURCE_ROOT; };
-		A1F590480B8DF7D100073279 /* quadric.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = quadric.h; path = ../src/quadric.h; sourceTree = SOURCE_ROOT; };
-		A1F590490B8DF7D100073279 /* render.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = render.h; path = ../src/render.h; sourceTree = SOURCE_ROOT; };
-		A1F5904A0B8DF7D100073279 /* ring.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ring.h; path = ../src/ring.h; sourceTree = SOURCE_ROOT; };
-		A1F5904B0B8DF7D100073279 /* shade.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = shade.h; path = ../src/shade.h; sourceTree = SOURCE_ROOT; };
-		A1F5904C0B8DF7D100073279 /* sphere.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sphere.h; path = ../src/sphere.h; sourceTree = SOURCE_ROOT; };
-		A1F5904D0B8DF7D100073279 /* texture.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = texture.h; path = ../src/texture.h; sourceTree = SOURCE_ROOT; };
-		A1F5904E0B8DF7D100073279 /* tgafile.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = tgafile.h; path = ../src/tgafile.h; sourceTree = SOURCE_ROOT; };
-		A1F5904F0B8DF7D100073279 /* trace.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = trace.h; path = ../src/trace.h; sourceTree = SOURCE_ROOT; };
-		A1F590500B8DF7D100073279 /* types.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = types.h; path = ../src/types.h; sourceTree = SOURCE_ROOT; };
-		A1F590510B8DF7D100073279 /* ui.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ui.h; path = ../src/ui.h; sourceTree = SOURCE_ROOT; };
-		A1F590520B8DF7D100073279 /* util.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = util.h; path = ../src/util.h; sourceTree = SOURCE_ROOT; };
-		A1F590530B8DF7D100073279 /* vector.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = vector.h; path = ../src/vector.h; sourceTree = SOURCE_ROOT; };
-		A1F590540B8DF7D100073279 /* video.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = video.h; path = ../src/video.h; sourceTree = SOURCE_ROOT; };
-		A1F590550B8DF7D100073279 /* vol.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = vol.h; path = ../src/vol.h; sourceTree = SOURCE_ROOT; };
-		A1F5909E0B8DF81800073279 /* api.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = api.cpp; path = ../src/api.cpp; sourceTree = SOURCE_ROOT; };
-		A1F5909F0B8DF81800073279 /* apigeom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = apigeom.cpp; path = ../src/apigeom.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590A00B8DF81800073279 /* apitrigeom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = apitrigeom.cpp; path = ../src/apitrigeom.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590A10B8DF81800073279 /* bndbox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = bndbox.cpp; path = ../src/bndbox.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590A20B8DF81800073279 /* box.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = box.cpp; path = ../src/box.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590A30B8DF81800073279 /* camera.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = camera.cpp; path = ../src/camera.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590A40B8DF81800073279 /* coordsys.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = coordsys.cpp; path = ../src/coordsys.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590A50B8DF81800073279 /* cylinder.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = cylinder.cpp; path = ../src/cylinder.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590A60B8DF81800073279 /* extvol.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = extvol.cpp; path = ../src/extvol.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590A70B8DF81800073279 /* getargs.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = getargs.cpp; path = ../src/getargs.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590A80B8DF81800073279 /* global.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = global.cpp; path = ../src/global.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590A90B8DF81800073279 /* grid.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = grid.cpp; path = ../src/grid.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590AA0B8DF81800073279 /* imageio.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = imageio.cpp; path = ../src/imageio.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590AB0B8DF81800073279 /* imap.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = imap.cpp; path = ../src/imap.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590AC0B8DF81800073279 /* intersect.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = intersect.cpp; path = ../src/intersect.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590AD0B8DF81800073279 /* jpeg.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = jpeg.cpp; path = ../src/jpeg.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590AE0B8DF81800073279 /* light.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = light.cpp; path = ../src/light.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590AF0B8DF81800073279 /* objbound.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = objbound.cpp; path = ../src/objbound.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590B00B8DF81800073279 /* parse.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = parse.cpp; path = ../src/parse.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590B10B8DF81800073279 /* plane.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = plane.cpp; path = ../src/plane.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590B20B8DF81800073279 /* ppm.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ppm.cpp; path = ../src/ppm.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590B30B8DF81800073279 /* quadric.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = quadric.cpp; path = ../src/quadric.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590B40B8DF81800073279 /* render.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = render.cpp; path = ../src/render.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590B50B8DF81800073279 /* ring.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ring.cpp; path = ../src/ring.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590B60B8DF81800073279 /* shade.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = shade.cpp; path = ../src/shade.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590B70B8DF81800073279 /* sphere.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = sphere.cpp; path = ../src/sphere.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590B80B8DF81800073279 /* texture.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = texture.cpp; path = ../src/texture.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590B90B8DF81800073279 /* tgafile.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = tgafile.cpp; path = ../src/tgafile.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590BA0B8DF81800073279 /* trace_rest.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = trace_rest.cpp; path = ../src/trace_rest.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590BD0B8DF81800073279 /* triangle.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = triangle.cpp; path = ../src/triangle.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590BE0B8DF81800073279 /* ui.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ui.cpp; path = ../src/ui.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590BF0B8DF81800073279 /* util.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = util.cpp; path = ../src/util.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590C00B8DF81800073279 /* vector.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = vector.cpp; path = ../src/vector.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590C10B8DF81800073279 /* video.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = video.cpp; path = ../src/video.cpp; sourceTree = SOURCE_ROOT; };
-		A1F590C20B8DF81800073279 /* vol.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = vol.cpp; path = ../src/vol.cpp; sourceTree = SOURCE_ROOT; };
-		A1F5915A0B8DF8FA00073279 /* triangle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = triangle.h; path = ../src/triangle.h; sourceTree = SOURCE_ROOT; };
-		A1F5915C0B8DF94400073279 /* macvideo.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macvideo.cpp; path = ../../../common/gui/macvideo.cpp; sourceTree = SOURCE_ROOT; };
-		A1F591610B8DF96500073279 /* video.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = video.h; path = ../../../common/gui/video.h; sourceTree = SOURCE_ROOT; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
-		8D0C4E910486CD37000505A6 /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				8D0C4E920486CD37000505A6 /* Carbon.framework in Frameworks */,
-				A117DC7B0B8DC08100F62CED /* AGL.framework in Frameworks */,
-				A117DC800B8DC09300F62CED /* OpenGL.framework in Frameworks */,
-				A117DC850B8DC0EA00F62CED /* libtbb.dylib in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		A1F58D900B8DF03600073279 /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				A1F58E8C0B8DF25800073279 /* OpenGL.framework in Frameworks */,
-				A1F58E8D0B8DF25900073279 /* libtbb.dylib in Frameworks */,
-				A1F58E8E0B8DF25A00073279 /* Carbon.framework in Frameworks */,
-				A1F58E8F0B8DF25A00073279 /* AGL.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		A1F58D9A0B8DF06700073279 /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				A1F58E900B8DF25F00073279 /* AGL.framework in Frameworks */,
-				A1F58E910B8DF26000073279 /* Carbon.framework in Frameworks */,
-				A1F58E920B8DF26100073279 /* OpenGL.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
-		20286C29FDCF999611CA2CEA /* tachyon */ = {
-			isa = PBXGroup;
-			children = (
-				20286C2AFDCF999611CA2CEA /* Sources */,
-				20286C2CFDCF999611CA2CEA /* Resources */,
-				20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */,
-				A1F58CD30B8DE85300073279 /* Products */,
-			);
-			name = tachyon;
-			sourceTree = "<group>";
-		};
-		20286C2AFDCF999611CA2CEA /* Sources */ = {
-			isa = PBXGroup;
-			children = (
-				A1F590310B8DF75E00073279 /* Tachyon */,
-				A1A8FB5F0B8CBB9E001C55B1 /* Render */,
-			);
-			name = Sources;
-			sourceTree = "<group>";
-		};
-		20286C2CFDCF999611CA2CEA /* Resources */ = {
-			isa = PBXGroup;
-			children = (
-				8D0C4E960486CD37000505A6 /* Info.plist */,
-				0867D6AAFE840B52C02AAC07 /* InfoPlist.strings */,
-				02345980000FD03B11CA0E72 /* main.nib */,
-			);
-			name = Resources;
-			sourceTree = "<group>";
-		};
-		20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */ = {
-			isa = PBXGroup;
-			children = (
-				A117DC830B8DC0DE00F62CED /* libtbb.dylib */,
-				A117DC7F0B8DC09300F62CED /* OpenGL.framework */,
-				A117DC7A0B8DC08100F62CED /* AGL.framework */,
-				20286C33FDCF999611CA2CEA /* Carbon.framework */,
-			);
-			name = "External Frameworks and Libraries";
-			sourceTree = "<group>";
-		};
-		A1A8FB5F0B8CBB9E001C55B1 /* Render */ = {
-			isa = PBXGroup;
-			children = (
-				A1F5902F0B8DF71B00073279 /* Headers */,
-				A1F5902E0B8DF71200073279 /* Sources */,
-			);
-			name = Render;
-			sourceTree = "<group>";
-		};
-		A1F58CD30B8DE85300073279 /* Products */ = {
-			isa = PBXGroup;
-			children = (
-				A1F58CD90B8DE90E00073279 /* tachyon-tbb.app */,
-				A1F58D920B8DF03600073279 /* tachyon-tbb1d.app */,
-				A1F58D9C0B8DF06700073279 /* tachyon-serial.app */,
-			);
-			name = Products;
-			sourceTree = "<group>";
-		};
-		A1F5902E0B8DF71200073279 /* Sources */ = {
-			isa = PBXGroup;
-			children = (
-				A1F5915C0B8DF94400073279 /* macvideo.cpp */,
-				A1F5909E0B8DF81800073279 /* api.cpp */,
-				A1F5909F0B8DF81800073279 /* apigeom.cpp */,
-				A1F590A00B8DF81800073279 /* apitrigeom.cpp */,
-				A1F590A10B8DF81800073279 /* bndbox.cpp */,
-				A1F590A20B8DF81800073279 /* box.cpp */,
-				A1F590A30B8DF81800073279 /* camera.cpp */,
-				A1F590A40B8DF81800073279 /* coordsys.cpp */,
-				A1F590A50B8DF81800073279 /* cylinder.cpp */,
-				A1F590A60B8DF81800073279 /* extvol.cpp */,
-				A1F590A70B8DF81800073279 /* getargs.cpp */,
-				A1F590A80B8DF81800073279 /* global.cpp */,
-				A1F590A90B8DF81800073279 /* grid.cpp */,
-				A1F590AA0B8DF81800073279 /* imageio.cpp */,
-				A1F590AB0B8DF81800073279 /* imap.cpp */,
-				A1F590AC0B8DF81800073279 /* intersect.cpp */,
-				A1F590AD0B8DF81800073279 /* jpeg.cpp */,
-				A1F590AE0B8DF81800073279 /* light.cpp */,
-				A1F590AF0B8DF81800073279 /* objbound.cpp */,
-				A1F590B00B8DF81800073279 /* parse.cpp */,
-				A1F590B10B8DF81800073279 /* plane.cpp */,
-				A1F590B20B8DF81800073279 /* ppm.cpp */,
-				A1F590B30B8DF81800073279 /* quadric.cpp */,
-				A1F590B40B8DF81800073279 /* render.cpp */,
-				A1F590B50B8DF81800073279 /* ring.cpp */,
-				A1F590B60B8DF81800073279 /* shade.cpp */,
-				A1F590B70B8DF81800073279 /* sphere.cpp */,
-				A1F590B80B8DF81800073279 /* texture.cpp */,
-				A1F590B90B8DF81800073279 /* tgafile.cpp */,
-				A1F590BA0B8DF81800073279 /* trace_rest.cpp */,
-				A1F590BD0B8DF81800073279 /* triangle.cpp */,
-				A1F590BE0B8DF81800073279 /* ui.cpp */,
-				A1F590BF0B8DF81800073279 /* util.cpp */,
-				A1F590C00B8DF81800073279 /* vector.cpp */,
-				A1F590C10B8DF81800073279 /* video.cpp */,
-				A1F590C20B8DF81800073279 /* vol.cpp */,
-			);
-			name = Sources;
-			sourceTree = "<group>";
-		};
-		A1F5902F0B8DF71B00073279 /* Headers */ = {
-			isa = PBXGroup;
-			children = (
-				A1F591610B8DF96500073279 /* video.h */,
-				A1F5915A0B8DF8FA00073279 /* triangle.h */,
-				A1F590320B8DF7D100073279 /* api.h */,
-				A1F590330B8DF7D100073279 /* apitrigeom.h */,
-				A1F590340B8DF7D100073279 /* bndbox.h */,
-				A1F590350B8DF7D100073279 /* box.h */,
-				A1F590360B8DF7D100073279 /* camera.h */,
-				A1F590370B8DF7D100073279 /* coordsys.h */,
-				A1F590380B8DF7D100073279 /* cylinder.h */,
-				A1F590390B8DF7D100073279 /* extvol.h */,
-				A1F5903A0B8DF7D100073279 /* getargs.h */,
-				A1F5903B0B8DF7D100073279 /* global.h */,
-				A1F5903C0B8DF7D100073279 /* grid.h */,
-				A1F5903D0B8DF7D100073279 /* imageio.h */,
-				A1F5903E0B8DF7D100073279 /* imap.h */,
-				A1F5903F0B8DF7D100073279 /* intersect.h */,
-				A1F590400B8DF7D100073279 /* jpeg.h */,
-				A1F590410B8DF7D100073279 /* light.h */,
-				A1F590420B8DF7D100073279 /* machine.h */,
-				A1F590430B8DF7D100073279 /* macros.h */,
-				A1F590440B8DF7D100073279 /* objbound.h */,
-				A1F590450B8DF7D100073279 /* parse.h */,
-				A1F590460B8DF7D100073279 /* plane.h */,
-				A1F590470B8DF7D100073279 /* ppm.h */,
-				A1F590480B8DF7D100073279 /* quadric.h */,
-				A1F590490B8DF7D100073279 /* render.h */,
-				A1F5904A0B8DF7D100073279 /* ring.h */,
-				A1F5904B0B8DF7D100073279 /* shade.h */,
-				A1F5904C0B8DF7D100073279 /* sphere.h */,
-				A1F5904D0B8DF7D100073279 /* texture.h */,
-				A1F5904E0B8DF7D100073279 /* tgafile.h */,
-				A1F5904F0B8DF7D100073279 /* trace.h */,
-				A1F590500B8DF7D100073279 /* types.h */,
-				A1F590510B8DF7D100073279 /* ui.h */,
-				A1F590520B8DF7D100073279 /* util.h */,
-				A1F590530B8DF7D100073279 /* vector.h */,
-				A1F590540B8DF7D100073279 /* video.h */,
-				A1F590550B8DF7D100073279 /* vol.h */,
-			);
-			name = Headers;
-			sourceTree = "<group>";
-		};
-		A1F590310B8DF75E00073279 /* Tachyon */ = {
-			isa = PBXGroup;
-			children = (
-				A1F58D8C0B8DEFE900073279 /* trace.serial.cpp */,
-				A1F58D3D0B8DEB8E00073279 /* trace.threads.cpp */,
-				A1F58D8B0B8DEFD900073279 /* trace.tbb1d.cpp */,
-				A1A8FB5D0B8CBB8D001C55B1 /* trace.tbb.cpp */,
-				32DBCF6D0370B57F00C91783 /* tachyon.pch */,
-			);
-			name = Tachyon;
-			sourceTree = "<group>";
-		};
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
-		8D0C4E890486CD37000505A6 /* tachyon-tbb */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = C0E91AC508A95435008D54AB /* Build configuration list for PBXNativeTarget "tachyon-tbb" */;
-			buildPhases = (
-				8D0C4E8C0486CD37000505A6 /* Resources */,
-				8D0C4E8F0486CD37000505A6 /* Sources */,
-				8D0C4E910486CD37000505A6 /* Frameworks */,
-				A117DC910B8DC59A00F62CED /* Copy TBB lib */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-			);
-			name = "tachyon-tbb";
-			productInstallPath = "$(HOME)/Applications";
-			productName = tachyon;
-			productReference = A1F58CD90B8DE90E00073279 /* tachyon-tbb.app */;
-			productType = "com.apple.product-type.application";
-		};
-		A1F58D910B8DF03600073279 /* tachyon-tbb1d */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = A1F58D950B8DF03600073279 /* Build configuration list for PBXNativeTarget "tachyon-tbb1d" */;
-			buildPhases = (
-				A1F58D8E0B8DF03600073279 /* Resources */,
-				A1F58D8F0B8DF03600073279 /* Sources */,
-				A1F58D900B8DF03600073279 /* Frameworks */,
-				A1F58EE60B8DF4E100073279 /* Copy TBB lib */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-			);
-			name = "tachyon-tbb1d";
-			productName = "tachyon-tbb1d";
-			productReference = A1F58D920B8DF03600073279 /* tachyon-tbb1d.app */;
-			productType = "com.apple.product-type.application";
-		};
-		A1F58D9B0B8DF06700073279 /* tachyon-serial */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = A1F58D9F0B8DF06700073279 /* Build configuration list for PBXNativeTarget "tachyon-serial" */;
-			buildPhases = (
-				A1F58D980B8DF06700073279 /* Resources */,
-				A1F58D990B8DF06700073279 /* Sources */,
-				A1F58D9A0B8DF06700073279 /* Frameworks */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-			);
-			name = "tachyon-serial";
-			productName = "tachyon-serial";
-			productReference = A1F58D9C0B8DF06700073279 /* tachyon-serial.app */;
-			productType = "com.apple.product-type.application";
-		};
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
-		20286C28FDCF999611CA2CEA /* Project object */ = {
-			isa = PBXProject;
-			buildConfigurationList = C0E91AC908A95435008D54AB /* Build configuration list for PBXProject "tachyon" */;
-			hasScannedForEncodings = 1;
-			mainGroup = 20286C29FDCF999611CA2CEA /* tachyon */;
-			productRefGroup = A1F58CD30B8DE85300073279 /* Products */;
-			projectDirPath = "";
-			targets = (
-				A1F58D9B0B8DF06700073279 /* tachyon-serial */,
-				A1F58D910B8DF03600073279 /* tachyon-tbb1d */,
-				8D0C4E890486CD37000505A6 /* tachyon-tbb */,
-			);
-		};
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
-		8D0C4E8C0486CD37000505A6 /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				8D0C4E8D0486CD37000505A6 /* InfoPlist.strings in Resources */,
-				8D0C4E8E0486CD37000505A6 /* main.nib in Resources */,
-				A1F58EA30B8DF32900073279 /* Info.plist in Resources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		A1F58D8E0B8DF03600073279 /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				A1F58DCD0B8DF19700073279 /* main.nib in Resources */,
-				A1F58EA40B8DF32A00073279 /* Info.plist in Resources */,
-				A1F58EA80B8DF33100073279 /* InfoPlist.strings in Resources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		A1F58D980B8DF06700073279 /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				A1F58DCE0B8DF19800073279 /* main.nib in Resources */,
-				A1F58EA60B8DF32B00073279 /* Info.plist in Resources */,
-				A1F58EAA0B8DF33200073279 /* InfoPlist.strings in Resources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
-		8D0C4E8F0486CD37000505A6 /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				A1F58F960B8DF63C00073279 /* trace.tbb.cpp in Sources */,
-				A1F591320B8DF81800073279 /* api.cpp in Sources */,
-				A1F591330B8DF81800073279 /* apigeom.cpp in Sources */,
-				A1F591340B8DF81800073279 /* apitrigeom.cpp in Sources */,
-				A1F591350B8DF81800073279 /* bndbox.cpp in Sources */,
-				A1F591360B8DF81800073279 /* box.cpp in Sources */,
-				A1F591370B8DF81800073279 /* camera.cpp in Sources */,
-				A1F591380B8DF81800073279 /* coordsys.cpp in Sources */,
-				A1F591390B8DF81800073279 /* cylinder.cpp in Sources */,
-				A1F5913A0B8DF81800073279 /* extvol.cpp in Sources */,
-				A1F5913B0B8DF81800073279 /* getargs.cpp in Sources */,
-				A1F5913C0B8DF81800073279 /* global.cpp in Sources */,
-				A1F5913D0B8DF81800073279 /* grid.cpp in Sources */,
-				A1F5913E0B8DF81800073279 /* imageio.cpp in Sources */,
-				A1F5913F0B8DF81800073279 /* imap.cpp in Sources */,
-				A1F591400B8DF81800073279 /* intersect.cpp in Sources */,
-				A1F591410B8DF81800073279 /* jpeg.cpp in Sources */,
-				A1F591420B8DF81800073279 /* light.cpp in Sources */,
-				A1F591430B8DF81800073279 /* objbound.cpp in Sources */,
-				A1F591440B8DF81800073279 /* parse.cpp in Sources */,
-				A1F591450B8DF81800073279 /* plane.cpp in Sources */,
-				A1F591460B8DF81800073279 /* ppm.cpp in Sources */,
-				A1F591470B8DF81800073279 /* quadric.cpp in Sources */,
-				A1F591480B8DF81800073279 /* render.cpp in Sources */,
-				A1F591490B8DF81800073279 /* ring.cpp in Sources */,
-				A1F5914A0B8DF81800073279 /* shade.cpp in Sources */,
-				A1F5914B0B8DF81800073279 /* sphere.cpp in Sources */,
-				A1F5914C0B8DF81800073279 /* texture.cpp in Sources */,
-				A1F5914D0B8DF81800073279 /* tgafile.cpp in Sources */,
-				A1F5914E0B8DF81800073279 /* trace_rest.cpp in Sources */,
-				A1F591510B8DF81800073279 /* triangle.cpp in Sources */,
-				A1F591520B8DF81800073279 /* ui.cpp in Sources */,
-				A1F591530B8DF81800073279 /* util.cpp in Sources */,
-				A1F591540B8DF81800073279 /* vector.cpp in Sources */,
-				A1F591550B8DF81800073279 /* video.cpp in Sources */,
-				A1F591560B8DF81800073279 /* vol.cpp in Sources */,
-				A1F5915D0B8DF94400073279 /* macvideo.cpp in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		A1F58D8F0B8DF03600073279 /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				A1F5902C0B8DF6A700073279 /* trace.tbb1d.cpp in Sources */,
-				A1F5910D0B8DF81800073279 /* api.cpp in Sources */,
-				A1F5910E0B8DF81800073279 /* apigeom.cpp in Sources */,
-				A1F5910F0B8DF81800073279 /* apitrigeom.cpp in Sources */,
-				A1F591100B8DF81800073279 /* bndbox.cpp in Sources */,
-				A1F591110B8DF81800073279 /* box.cpp in Sources */,
-				A1F591120B8DF81800073279 /* camera.cpp in Sources */,
-				A1F591130B8DF81800073279 /* coordsys.cpp in Sources */,
-				A1F591140B8DF81800073279 /* cylinder.cpp in Sources */,
-				A1F591150B8DF81800073279 /* extvol.cpp in Sources */,
-				A1F591160B8DF81800073279 /* getargs.cpp in Sources */,
-				A1F591170B8DF81800073279 /* global.cpp in Sources */,
-				A1F591180B8DF81800073279 /* grid.cpp in Sources */,
-				A1F591190B8DF81800073279 /* imageio.cpp in Sources */,
-				A1F5911A0B8DF81800073279 /* imap.cpp in Sources */,
-				A1F5911B0B8DF81800073279 /* intersect.cpp in Sources */,
-				A1F5911C0B8DF81800073279 /* jpeg.cpp in Sources */,
-				A1F5911D0B8DF81800073279 /* light.cpp in Sources */,
-				A1F5911E0B8DF81800073279 /* objbound.cpp in Sources */,
-				A1F5911F0B8DF81800073279 /* parse.cpp in Sources */,
-				A1F591200B8DF81800073279 /* plane.cpp in Sources */,
-				A1F591210B8DF81800073279 /* ppm.cpp in Sources */,
-				A1F591220B8DF81800073279 /* quadric.cpp in Sources */,
-				A1F591230B8DF81800073279 /* render.cpp in Sources */,
-				A1F591240B8DF81800073279 /* ring.cpp in Sources */,
-				A1F591250B8DF81800073279 /* shade.cpp in Sources */,
-				A1F591260B8DF81800073279 /* sphere.cpp in Sources */,
-				A1F591270B8DF81800073279 /* texture.cpp in Sources */,
-				A1F591280B8DF81800073279 /* tgafile.cpp in Sources */,
-				A1F591290B8DF81800073279 /* trace_rest.cpp in Sources */,
-				A1F5912C0B8DF81800073279 /* triangle.cpp in Sources */,
-				A1F5912D0B8DF81800073279 /* ui.cpp in Sources */,
-				A1F5912E0B8DF81800073279 /* util.cpp in Sources */,
-				A1F5912F0B8DF81800073279 /* vector.cpp in Sources */,
-				A1F591300B8DF81800073279 /* video.cpp in Sources */,
-				A1F591310B8DF81800073279 /* vol.cpp in Sources */,
-				A1F5915E0B8DF94400073279 /* macvideo.cpp in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		A1F58D990B8DF06700073279 /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				A1F590300B8DF74600073279 /* trace.serial.cpp in Sources */,
-				A1F590C30B8DF81800073279 /* api.cpp in Sources */,
-				A1F590C40B8DF81800073279 /* apigeom.cpp in Sources */,
-				A1F590C50B8DF81800073279 /* apitrigeom.cpp in Sources */,
-				A1F590C60B8DF81800073279 /* bndbox.cpp in Sources */,
-				A1F590C70B8DF81800073279 /* box.cpp in Sources */,
-				A1F590C80B8DF81800073279 /* camera.cpp in Sources */,
-				A1F590C90B8DF81800073279 /* coordsys.cpp in Sources */,
-				A1F590CA0B8DF81800073279 /* cylinder.cpp in Sources */,
-				A1F590CB0B8DF81800073279 /* extvol.cpp in Sources */,
-				A1F590CC0B8DF81800073279 /* getargs.cpp in Sources */,
-				A1F590CD0B8DF81800073279 /* global.cpp in Sources */,
-				A1F590CE0B8DF81800073279 /* grid.cpp in Sources */,
-				A1F590CF0B8DF81800073279 /* imageio.cpp in Sources */,
-				A1F590D00B8DF81800073279 /* imap.cpp in Sources */,
-				A1F590D10B8DF81800073279 /* intersect.cpp in Sources */,
-				A1F590D20B8DF81800073279 /* jpeg.cpp in Sources */,
-				A1F590D30B8DF81800073279 /* light.cpp in Sources */,
-				A1F590D40B8DF81800073279 /* objbound.cpp in Sources */,
-				A1F590D50B8DF81800073279 /* parse.cpp in Sources */,
-				A1F590D60B8DF81800073279 /* plane.cpp in Sources */,
-				A1F590D70B8DF81800073279 /* ppm.cpp in Sources */,
-				A1F590D80B8DF81800073279 /* quadric.cpp in Sources */,
-				A1F590D90B8DF81800073279 /* render.cpp in Sources */,
-				A1F590DA0B8DF81800073279 /* ring.cpp in Sources */,
-				A1F590DB0B8DF81800073279 /* shade.cpp in Sources */,
-				A1F590DC0B8DF81800073279 /* sphere.cpp in Sources */,
-				A1F590DD0B8DF81800073279 /* texture.cpp in Sources */,
-				A1F590DE0B8DF81800073279 /* tgafile.cpp in Sources */,
-				A1F590DF0B8DF81800073279 /* trace_rest.cpp in Sources */,
-				A1F590E20B8DF81800073279 /* triangle.cpp in Sources */,
-				A1F590E30B8DF81800073279 /* ui.cpp in Sources */,
-				A1F590E40B8DF81800073279 /* util.cpp in Sources */,
-				A1F590E50B8DF81800073279 /* vector.cpp in Sources */,
-				A1F590E60B8DF81800073279 /* video.cpp in Sources */,
-				A1F590E70B8DF81800073279 /* vol.cpp in Sources */,
-				A1F591600B8DF94400073279 /* macvideo.cpp in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXVariantGroup section */
-		02345980000FD03B11CA0E72 /* main.nib */ = {
-			isa = PBXVariantGroup;
-			children = (
-				1870340FFE93FCAF11CA0CD7 /* English */,
-			);
-			name = main.nib;
-			sourceTree = "<group>";
-		};
-		0867D6AAFE840B52C02AAC07 /* InfoPlist.strings */ = {
-			isa = PBXVariantGroup;
-			children = (
-				0867D6ABFE840B52C02AAC07 /* English */,
-			);
-			name = InfoPlist.strings;
-			sourceTree = "<group>";
-		};
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
-		A1F58D960B8DF03600073279 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				COPY_PHASE_STRIP = NO;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_FIX_AND_CONTINUE = YES;
-				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
-				INFOPLIST_FILE = Info.plist;
-				INSTALL_PATH = "$(HOME)/Applications";
-				LIBRARY_SEARCH_PATHS = (
-					"$(inherited)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_1)",
-				);
-				LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(LOCAL_LIBRARY_DIR)/Frameworks/TBB.framework/Libraries\"";
-				PREBINDING = NO;
-				PRODUCT_NAME = "tachyon-tbb1d";
-				WRAPPER_EXTENSION = app;
-				ZERO_LINK = NO;
-			};
-			name = Debug;
-		};
-		A1F58D970B8DF03600073279 /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				COPY_PHASE_STRIP = YES;
-				GCC_ENABLE_FIX_AND_CONTINUE = NO;
-				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
-				INFOPLIST_FILE = Info.plist;
-				INSTALL_PATH = "$(HOME)/Applications";
-				LIBRARY_SEARCH_PATHS = (
-					"$(inherited)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_1)",
-				);
-				LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(LOCAL_LIBRARY_DIR)/Frameworks/TBB.framework/Libraries\"";
-				PREBINDING = NO;
-				PRODUCT_NAME = "tachyon-tbb1d";
-				WRAPPER_EXTENSION = app;
-				ZERO_LINK = NO;
-			};
-			name = Release;
-		};
-		A1F58DA00B8DF06700073279 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				COPY_PHASE_STRIP = NO;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_FIX_AND_CONTINUE = YES;
-				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
-				INFOPLIST_FILE = Info.plist;
-				INSTALL_PATH = "$(HOME)/Applications";
-				PREBINDING = NO;
-				PRODUCT_NAME = "tachyon-serial";
-				WRAPPER_EXTENSION = app;
-				ZERO_LINK = NO;
-			};
-			name = Debug;
-		};
-		A1F58DA10B8DF06700073279 /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				COPY_PHASE_STRIP = YES;
-				GCC_ENABLE_FIX_AND_CONTINUE = NO;
-				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
-				INFOPLIST_FILE = Info.plist;
-				INSTALL_PATH = "$(HOME)/Applications";
-				PREBINDING = NO;
-				PRODUCT_NAME = "tachyon-serial";
-				WRAPPER_EXTENSION = app;
-				ZERO_LINK = NO;
-			};
-			name = Release;
-		};
-		C0E91AC608A95435008D54AB /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				ARCHS = i386;
-				COPY_PHASE_STRIP = NO;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_FIX_AND_CONTINUE = YES;
-				GCC_MODEL_TUNING = "";
-				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = tachyon.pch;
-				INFOPLIST_FILE = Info.plist;
-				INSTALL_PATH = "$(HOME)/Applications";
-				LIBRARY_SEARCH_PATHS = (
-					"$(inherited)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_1)",
-				);
-				LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(LOCAL_LIBRARY_DIR)/Frameworks/TBB.framework/Libraries\"";
-				PRODUCT_NAME = "tachyon-tbb";
-				WRAPPER_EXTENSION = app;
-				ZERO_LINK = NO;
-			};
-			name = Debug;
-		};
-		C0E91AC708A95435008D54AB /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				ARCHS = i386;
-				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
-				GCC_MODEL_TUNING = "";
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = tachyon.pch;
-				INFOPLIST_FILE = Info.plist;
-				INSTALL_PATH = "$(HOME)/Applications";
-				LIBRARY_SEARCH_PATHS = (
-					"$(inherited)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_1)",
-				);
-				LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(LOCAL_LIBRARY_DIR)/Frameworks/TBB.framework/Libraries\"";
-				PRODUCT_NAME = "tachyon-tbb";
-				WRAPPER_EXTENSION = app;
-				ZERO_LINK = NO;
-			};
-			name = Release;
-		};
-		C0E91ACA08A95435008D54AB /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				GCC_AUTO_VECTORIZATION = YES;
-				GCC_ENABLE_CPP_RTTI = YES;
-				GCC_ENABLE_SSE3_EXTENSIONS = YES;
-				GCC_MODEL_TUNING = "";
-				GCC_PREPROCESSOR_DEFINITIONS = "DEFAULT_MODELFILE=\"/Library/Frameworks/TBB.framework/Versions/Current/examples/parallel_for/tachyon/dat/balls.dat\"";
-				GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				PREBINDING = NO;
-				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
-				SYMROOT = "/tmp/tbb-$(USER)";
-			};
-			name = Debug;
-		};
-		C0E91ACB08A95435008D54AB /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				GCC_AUTO_VECTORIZATION = YES;
-				GCC_ENABLE_CPP_RTTI = YES;
-				GCC_ENABLE_SSE3_EXTENSIONS = YES;
-				GCC_MODEL_TUNING = "";
-				GCC_PREPROCESSOR_DEFINITIONS = "DEFAULT_MODELFILE=\"/Library/Frameworks/TBB.framework/Versions/Current/examples/parallel_for/tachyon/dat/balls.dat\"";
-				GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				PREBINDING = NO;
-				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
-				SYMROOT = "/tmp/tbb-$(USER)";
-			};
-			name = Release;
-		};
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
-		A1F58D950B8DF03600073279 /* Build configuration list for PBXNativeTarget "tachyon-tbb1d" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				A1F58D960B8DF03600073279 /* Debug */,
-				A1F58D970B8DF03600073279 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-		A1F58D9F0B8DF06700073279 /* Build configuration list for PBXNativeTarget "tachyon-serial" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				A1F58DA00B8DF06700073279 /* Debug */,
-				A1F58DA10B8DF06700073279 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-		C0E91AC508A95435008D54AB /* Build configuration list for PBXNativeTarget "tachyon-tbb" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				C0E91AC608A95435008D54AB /* Debug */,
-				C0E91AC708A95435008D54AB /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-		C0E91AC908A95435008D54AB /* Build configuration list for PBXProject "tachyon" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				C0E91ACA08A95435008D54AB /* Debug */,
-				C0E91ACB08A95435008D54AB /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-/* End XCConfigurationList section */
-	};
-	rootObject = 20286C28FDCF999611CA2CEA /* Project object */;
-}
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 42;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		8D0C4E8E0486CD37000505A6 /* main.nib in Resources */ = {isa = PBXBuildFile; fileRef = 02345980000FD03B11CA0E72 /* main.nib */; };
+		8D0C4E920486CD37000505A6 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20286C33FDCF999611CA2CEA /* Carbon.framework */; };
+		A117DC7B0B8DC08100F62CED /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A117DC7A0B8DC08100F62CED /* AGL.framework */; };
+		A117DC800B8DC09300F62CED /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A117DC7F0B8DC09300F62CED /* OpenGL.framework */; };
+		A117DC850B8DC0EA00F62CED /* libtbb.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A117DC830B8DC0DE00F62CED /* libtbb.dylib */; };
+		A117DC950B8DC5FB00F62CED /* libtbb.dylib in Copy TBB lib */ = {isa = PBXBuildFile; fileRef = A117DC830B8DC0DE00F62CED /* libtbb.dylib */; };
+		A1F58DCD0B8DF19700073279 /* main.nib in Resources */ = {isa = PBXBuildFile; fileRef = 02345980000FD03B11CA0E72 /* main.nib */; };
+		A1F58DCE0B8DF19800073279 /* main.nib in Resources */ = {isa = PBXBuildFile; fileRef = 02345980000FD03B11CA0E72 /* main.nib */; };
+		A1F58E8C0B8DF25800073279 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A117DC7F0B8DC09300F62CED /* OpenGL.framework */; };
+		A1F58E8D0B8DF25900073279 /* libtbb.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A117DC830B8DC0DE00F62CED /* libtbb.dylib */; };
+		A1F58E8E0B8DF25A00073279 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20286C33FDCF999611CA2CEA /* Carbon.framework */; };
+		A1F58E8F0B8DF25A00073279 /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A117DC7A0B8DC08100F62CED /* AGL.framework */; };
+		A1F58E900B8DF25F00073279 /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A117DC7A0B8DC08100F62CED /* AGL.framework */; };
+		A1F58E910B8DF26000073279 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20286C33FDCF999611CA2CEA /* Carbon.framework */; };
+		A1F58E920B8DF26100073279 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A117DC7F0B8DC09300F62CED /* OpenGL.framework */; };
+		A1F58EA30B8DF32900073279 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 8D0C4E960486CD37000505A6 /* Info.plist */; };
+		A1F58EA40B8DF32A00073279 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 8D0C4E960486CD37000505A6 /* Info.plist */; };
+		A1F58EA60B8DF32B00073279 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 8D0C4E960486CD37000505A6 /* Info.plist */; };
+		A1F58EE80B8DF4F900073279 /* libtbb.dylib in Copy TBB lib */ = {isa = PBXBuildFile; fileRef = A117DC830B8DC0DE00F62CED /* libtbb.dylib */; };
+		A1F58F960B8DF63C00073279 /* trace.tbb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1A8FB5D0B8CBB8D001C55B1 /* trace.tbb.cpp */; };
+		A1F5902C0B8DF6A700073279 /* trace.tbb1d.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F58D8B0B8DEFD900073279 /* trace.tbb1d.cpp */; };
+		A1F590300B8DF74600073279 /* trace.serial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F58D8C0B8DEFE900073279 /* trace.serial.cpp */; };
+		A1F590C30B8DF81800073279 /* api.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F5909E0B8DF81800073279 /* api.cpp */; };
+		A1F590C40B8DF81800073279 /* apigeom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F5909F0B8DF81800073279 /* apigeom.cpp */; };
+		A1F590C50B8DF81800073279 /* apitrigeom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A00B8DF81800073279 /* apitrigeom.cpp */; };
+		A1F590C60B8DF81800073279 /* bndbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A10B8DF81800073279 /* bndbox.cpp */; };
+		A1F590C70B8DF81800073279 /* box.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A20B8DF81800073279 /* box.cpp */; };
+		A1F590C80B8DF81800073279 /* camera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A30B8DF81800073279 /* camera.cpp */; };
+		A1F590C90B8DF81800073279 /* coordsys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A40B8DF81800073279 /* coordsys.cpp */; };
+		A1F590CA0B8DF81800073279 /* cylinder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A50B8DF81800073279 /* cylinder.cpp */; };
+		A1F590CB0B8DF81800073279 /* extvol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A60B8DF81800073279 /* extvol.cpp */; };
+		A1F590CC0B8DF81800073279 /* getargs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A70B8DF81800073279 /* getargs.cpp */; };
+		A1F590CD0B8DF81800073279 /* global.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A80B8DF81800073279 /* global.cpp */; };
+		A1F590CE0B8DF81800073279 /* grid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A90B8DF81800073279 /* grid.cpp */; };
+		A1F590CF0B8DF81800073279 /* imageio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AA0B8DF81800073279 /* imageio.cpp */; };
+		A1F590D00B8DF81800073279 /* imap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AB0B8DF81800073279 /* imap.cpp */; };
+		A1F590D10B8DF81800073279 /* intersect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AC0B8DF81800073279 /* intersect.cpp */; };
+		A1F590D20B8DF81800073279 /* jpeg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AD0B8DF81800073279 /* jpeg.cpp */; };
+		A1F590D30B8DF81800073279 /* light.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AE0B8DF81800073279 /* light.cpp */; };
+		A1F590D40B8DF81800073279 /* objbound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AF0B8DF81800073279 /* objbound.cpp */; };
+		A1F590D50B8DF81800073279 /* parse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B00B8DF81800073279 /* parse.cpp */; };
+		A1F590D60B8DF81800073279 /* plane.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B10B8DF81800073279 /* plane.cpp */; };
+		A1F590D70B8DF81800073279 /* ppm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B20B8DF81800073279 /* ppm.cpp */; };
+		A1F590D80B8DF81800073279 /* quadric.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B30B8DF81800073279 /* quadric.cpp */; };
+		A1F590D90B8DF81800073279 /* render.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B40B8DF81800073279 /* render.cpp */; };
+		A1F590DA0B8DF81800073279 /* ring.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B50B8DF81800073279 /* ring.cpp */; };
+		A1F590DB0B8DF81800073279 /* shade.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B60B8DF81800073279 /* shade.cpp */; };
+		A1F590DC0B8DF81800073279 /* sphere.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B70B8DF81800073279 /* sphere.cpp */; };
+		A1F590DD0B8DF81800073279 /* texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B80B8DF81800073279 /* texture.cpp */; };
+		A1F590DE0B8DF81800073279 /* tgafile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B90B8DF81800073279 /* tgafile.cpp */; };
+		A1F590DF0B8DF81800073279 /* trace_rest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590BA0B8DF81800073279 /* trace_rest.cpp */; };
+		A1F590E20B8DF81800073279 /* triangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590BD0B8DF81800073279 /* triangle.cpp */; };
+		A1F590E30B8DF81800073279 /* ui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590BE0B8DF81800073279 /* ui.cpp */; };
+		A1F590E40B8DF81800073279 /* util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590BF0B8DF81800073279 /* util.cpp */; };
+		A1F590E50B8DF81800073279 /* vector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590C00B8DF81800073279 /* vector.cpp */; };
+		A1F590E60B8DF81800073279 /* video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590C10B8DF81800073279 /* video.cpp */; };
+		A1F590E70B8DF81800073279 /* vol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590C20B8DF81800073279 /* vol.cpp */; };
+		A1F5910D0B8DF81800073279 /* api.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F5909E0B8DF81800073279 /* api.cpp */; };
+		A1F5910E0B8DF81800073279 /* apigeom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F5909F0B8DF81800073279 /* apigeom.cpp */; };
+		A1F5910F0B8DF81800073279 /* apitrigeom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A00B8DF81800073279 /* apitrigeom.cpp */; };
+		A1F591100B8DF81800073279 /* bndbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A10B8DF81800073279 /* bndbox.cpp */; };
+		A1F591110B8DF81800073279 /* box.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A20B8DF81800073279 /* box.cpp */; };
+		A1F591120B8DF81800073279 /* camera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A30B8DF81800073279 /* camera.cpp */; };
+		A1F591130B8DF81800073279 /* coordsys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A40B8DF81800073279 /* coordsys.cpp */; };
+		A1F591140B8DF81800073279 /* cylinder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A50B8DF81800073279 /* cylinder.cpp */; };
+		A1F591150B8DF81800073279 /* extvol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A60B8DF81800073279 /* extvol.cpp */; };
+		A1F591160B8DF81800073279 /* getargs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A70B8DF81800073279 /* getargs.cpp */; };
+		A1F591170B8DF81800073279 /* global.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A80B8DF81800073279 /* global.cpp */; };
+		A1F591180B8DF81800073279 /* grid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A90B8DF81800073279 /* grid.cpp */; };
+		A1F591190B8DF81800073279 /* imageio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AA0B8DF81800073279 /* imageio.cpp */; };
+		A1F5911A0B8DF81800073279 /* imap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AB0B8DF81800073279 /* imap.cpp */; };
+		A1F5911B0B8DF81800073279 /* intersect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AC0B8DF81800073279 /* intersect.cpp */; };
+		A1F5911C0B8DF81800073279 /* jpeg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AD0B8DF81800073279 /* jpeg.cpp */; };
+		A1F5911D0B8DF81800073279 /* light.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AE0B8DF81800073279 /* light.cpp */; };
+		A1F5911E0B8DF81800073279 /* objbound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AF0B8DF81800073279 /* objbound.cpp */; };
+		A1F5911F0B8DF81800073279 /* parse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B00B8DF81800073279 /* parse.cpp */; };
+		A1F591200B8DF81800073279 /* plane.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B10B8DF81800073279 /* plane.cpp */; };
+		A1F591210B8DF81800073279 /* ppm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B20B8DF81800073279 /* ppm.cpp */; };
+		A1F591220B8DF81800073279 /* quadric.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B30B8DF81800073279 /* quadric.cpp */; };
+		A1F591230B8DF81800073279 /* render.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B40B8DF81800073279 /* render.cpp */; };
+		A1F591240B8DF81800073279 /* ring.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B50B8DF81800073279 /* ring.cpp */; };
+		A1F591250B8DF81800073279 /* shade.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B60B8DF81800073279 /* shade.cpp */; };
+		A1F591260B8DF81800073279 /* sphere.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B70B8DF81800073279 /* sphere.cpp */; };
+		A1F591270B8DF81800073279 /* texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B80B8DF81800073279 /* texture.cpp */; };
+		A1F591280B8DF81800073279 /* tgafile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B90B8DF81800073279 /* tgafile.cpp */; };
+		A1F591290B8DF81800073279 /* trace_rest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590BA0B8DF81800073279 /* trace_rest.cpp */; };
+		A1F5912C0B8DF81800073279 /* triangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590BD0B8DF81800073279 /* triangle.cpp */; };
+		A1F5912D0B8DF81800073279 /* ui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590BE0B8DF81800073279 /* ui.cpp */; };
+		A1F5912E0B8DF81800073279 /* util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590BF0B8DF81800073279 /* util.cpp */; };
+		A1F5912F0B8DF81800073279 /* vector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590C00B8DF81800073279 /* vector.cpp */; };
+		A1F591300B8DF81800073279 /* video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590C10B8DF81800073279 /* video.cpp */; };
+		A1F591310B8DF81800073279 /* vol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590C20B8DF81800073279 /* vol.cpp */; };
+		A1F591320B8DF81800073279 /* api.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F5909E0B8DF81800073279 /* api.cpp */; };
+		A1F591330B8DF81800073279 /* apigeom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F5909F0B8DF81800073279 /* apigeom.cpp */; };
+		A1F591340B8DF81800073279 /* apitrigeom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A00B8DF81800073279 /* apitrigeom.cpp */; };
+		A1F591350B8DF81800073279 /* bndbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A10B8DF81800073279 /* bndbox.cpp */; };
+		A1F591360B8DF81800073279 /* box.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A20B8DF81800073279 /* box.cpp */; };
+		A1F591370B8DF81800073279 /* camera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A30B8DF81800073279 /* camera.cpp */; };
+		A1F591380B8DF81800073279 /* coordsys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A40B8DF81800073279 /* coordsys.cpp */; };
+		A1F591390B8DF81800073279 /* cylinder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A50B8DF81800073279 /* cylinder.cpp */; };
+		A1F5913A0B8DF81800073279 /* extvol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A60B8DF81800073279 /* extvol.cpp */; };
+		A1F5913B0B8DF81800073279 /* getargs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A70B8DF81800073279 /* getargs.cpp */; };
+		A1F5913C0B8DF81800073279 /* global.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A80B8DF81800073279 /* global.cpp */; };
+		A1F5913D0B8DF81800073279 /* grid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590A90B8DF81800073279 /* grid.cpp */; };
+		A1F5913E0B8DF81800073279 /* imageio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AA0B8DF81800073279 /* imageio.cpp */; };
+		A1F5913F0B8DF81800073279 /* imap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AB0B8DF81800073279 /* imap.cpp */; };
+		A1F591400B8DF81800073279 /* intersect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AC0B8DF81800073279 /* intersect.cpp */; };
+		A1F591410B8DF81800073279 /* jpeg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AD0B8DF81800073279 /* jpeg.cpp */; };
+		A1F591420B8DF81800073279 /* light.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AE0B8DF81800073279 /* light.cpp */; };
+		A1F591430B8DF81800073279 /* objbound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590AF0B8DF81800073279 /* objbound.cpp */; };
+		A1F591440B8DF81800073279 /* parse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B00B8DF81800073279 /* parse.cpp */; };
+		A1F591450B8DF81800073279 /* plane.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B10B8DF81800073279 /* plane.cpp */; };
+		A1F591460B8DF81800073279 /* ppm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B20B8DF81800073279 /* ppm.cpp */; };
+		A1F591470B8DF81800073279 /* quadric.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B30B8DF81800073279 /* quadric.cpp */; };
+		A1F591480B8DF81800073279 /* render.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B40B8DF81800073279 /* render.cpp */; };
+		A1F591490B8DF81800073279 /* ring.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B50B8DF81800073279 /* ring.cpp */; };
+		A1F5914A0B8DF81800073279 /* shade.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B60B8DF81800073279 /* shade.cpp */; };
+		A1F5914B0B8DF81800073279 /* sphere.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B70B8DF81800073279 /* sphere.cpp */; };
+		A1F5914C0B8DF81800073279 /* texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B80B8DF81800073279 /* texture.cpp */; };
+		A1F5914D0B8DF81800073279 /* tgafile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590B90B8DF81800073279 /* tgafile.cpp */; };
+		A1F5914E0B8DF81800073279 /* trace_rest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590BA0B8DF81800073279 /* trace_rest.cpp */; };
+		A1F591510B8DF81800073279 /* triangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590BD0B8DF81800073279 /* triangle.cpp */; };
+		A1F591520B8DF81800073279 /* ui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590BE0B8DF81800073279 /* ui.cpp */; };
+		A1F591530B8DF81800073279 /* util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590BF0B8DF81800073279 /* util.cpp */; };
+		A1F591540B8DF81800073279 /* vector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590C00B8DF81800073279 /* vector.cpp */; };
+		A1F591550B8DF81800073279 /* video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590C10B8DF81800073279 /* video.cpp */; };
+		A1F591560B8DF81800073279 /* vol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F590C20B8DF81800073279 /* vol.cpp */; };
+		A1F5915D0B8DF94400073279 /* macvideo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F5915C0B8DF94400073279 /* macvideo.cpp */; };
+		A1F5915E0B8DF94400073279 /* macvideo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F5915C0B8DF94400073279 /* macvideo.cpp */; };
+		A1F591600B8DF94400073279 /* macvideo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F5915C0B8DF94400073279 /* macvideo.cpp */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+		A117DC910B8DC59A00F62CED /* Copy TBB lib */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = "";
+			dstSubfolderSpec = 16;
+			files = (
+				A117DC950B8DC5FB00F62CED /* libtbb.dylib in Copy TBB lib */,
+			);
+			name = "Copy TBB lib";
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		A1F58EE60B8DF4E100073279 /* Copy TBB lib */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = "";
+			dstSubfolderSpec = 16;
+			files = (
+				A1F58EE80B8DF4F900073279 /* libtbb.dylib in Copy TBB lib */,
+			);
+			name = "Copy TBB lib";
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+		1870340FFE93FCAF11CA0CD7 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/main.nib; sourceTree = "<group>"; };
+		20286C33FDCF999611CA2CEA /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
+		32DBCF6D0370B57F00C91783 /* tachyon.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tachyon.pch; sourceTree = "<group>"; };
+		8D0C4E960486CD37000505A6 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
+		A117DC7A0B8DC08100F62CED /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = "<absolute>"; };
+		A117DC7F0B8DC09300F62CED /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
+		A117DC830B8DC0DE00F62CED /* libtbb.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libtbb.dylib; path = /Library/Frameworks/TBB.framework/Libraries/libtbb.dylib; sourceTree = "<absolute>"; };
+		A1A8FB5D0B8CBB8D001C55B1 /* trace.tbb.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = trace.tbb.cpp; path = ../src/trace.tbb.cpp; sourceTree = SOURCE_ROOT; };
+		A1F58CD90B8DE90E00073279 /* tachyon-tbb.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "tachyon-tbb.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+		A1F58D3D0B8DEB8E00073279 /* trace.threads.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = trace.threads.cpp; path = ../src/trace.threads.cpp; sourceTree = SOURCE_ROOT; };
+		A1F58D8B0B8DEFD900073279 /* trace.tbb1d.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = trace.tbb1d.cpp; path = ../src/trace.tbb1d.cpp; sourceTree = SOURCE_ROOT; };
+		A1F58D8C0B8DEFE900073279 /* trace.serial.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = trace.serial.cpp; path = ../src/trace.serial.cpp; sourceTree = SOURCE_ROOT; };
+		A1F58D920B8DF03600073279 /* tachyon-tbb1d.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "tachyon-tbb1d.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+		A1F58D9C0B8DF06700073279 /* tachyon-serial.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "tachyon-serial.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+		A1F590320B8DF7D100073279 /* api.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = api.h; path = ../src/api.h; sourceTree = SOURCE_ROOT; };
+		A1F590330B8DF7D100073279 /* apitrigeom.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = apitrigeom.h; path = ../src/apitrigeom.h; sourceTree = SOURCE_ROOT; };
+		A1F590340B8DF7D100073279 /* bndbox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = bndbox.h; path = ../src/bndbox.h; sourceTree = SOURCE_ROOT; };
+		A1F590350B8DF7D100073279 /* box.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = box.h; path = ../src/box.h; sourceTree = SOURCE_ROOT; };
+		A1F590360B8DF7D100073279 /* camera.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = camera.h; path = ../src/camera.h; sourceTree = SOURCE_ROOT; };
+		A1F590370B8DF7D100073279 /* coordsys.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = coordsys.h; path = ../src/coordsys.h; sourceTree = SOURCE_ROOT; };
+		A1F590380B8DF7D100073279 /* cylinder.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = cylinder.h; path = ../src/cylinder.h; sourceTree = SOURCE_ROOT; };
+		A1F590390B8DF7D100073279 /* extvol.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = extvol.h; path = ../src/extvol.h; sourceTree = SOURCE_ROOT; };
+		A1F5903A0B8DF7D100073279 /* getargs.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = getargs.h; path = ../src/getargs.h; sourceTree = SOURCE_ROOT; };
+		A1F5903B0B8DF7D100073279 /* global.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = global.h; path = ../src/global.h; sourceTree = SOURCE_ROOT; };
+		A1F5903C0B8DF7D100073279 /* grid.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = grid.h; path = ../src/grid.h; sourceTree = SOURCE_ROOT; };
+		A1F5903D0B8DF7D100073279 /* imageio.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = imageio.h; path = ../src/imageio.h; sourceTree = SOURCE_ROOT; };
+		A1F5903E0B8DF7D100073279 /* imap.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = imap.h; path = ../src/imap.h; sourceTree = SOURCE_ROOT; };
+		A1F5903F0B8DF7D100073279 /* intersect.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = intersect.h; path = ../src/intersect.h; sourceTree = SOURCE_ROOT; };
+		A1F590400B8DF7D100073279 /* jpeg.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = jpeg.h; path = ../src/jpeg.h; sourceTree = SOURCE_ROOT; };
+		A1F590410B8DF7D100073279 /* light.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = light.h; path = ../src/light.h; sourceTree = SOURCE_ROOT; };
+		A1F590420B8DF7D100073279 /* machine.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = machine.h; path = ../src/machine.h; sourceTree = SOURCE_ROOT; };
+		A1F590430B8DF7D100073279 /* macros.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macros.h; path = ../src/macros.h; sourceTree = SOURCE_ROOT; };
+		A1F590440B8DF7D100073279 /* objbound.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = objbound.h; path = ../src/objbound.h; sourceTree = SOURCE_ROOT; };
+		A1F590450B8DF7D100073279 /* parse.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = parse.h; path = ../src/parse.h; sourceTree = SOURCE_ROOT; };
+		A1F590460B8DF7D100073279 /* plane.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = plane.h; path = ../src/plane.h; sourceTree = SOURCE_ROOT; };
+		A1F590470B8DF7D100073279 /* ppm.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ppm.h; path = ../src/ppm.h; sourceTree = SOURCE_ROOT; };
+		A1F590480B8DF7D100073279 /* quadric.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = quadric.h; path = ../src/quadric.h; sourceTree = SOURCE_ROOT; };
+		A1F590490B8DF7D100073279 /* render.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = render.h; path = ../src/render.h; sourceTree = SOURCE_ROOT; };
+		A1F5904A0B8DF7D100073279 /* ring.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ring.h; path = ../src/ring.h; sourceTree = SOURCE_ROOT; };
+		A1F5904B0B8DF7D100073279 /* shade.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = shade.h; path = ../src/shade.h; sourceTree = SOURCE_ROOT; };
+		A1F5904C0B8DF7D100073279 /* sphere.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sphere.h; path = ../src/sphere.h; sourceTree = SOURCE_ROOT; };
+		A1F5904D0B8DF7D100073279 /* texture.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = texture.h; path = ../src/texture.h; sourceTree = SOURCE_ROOT; };
+		A1F5904E0B8DF7D100073279 /* tgafile.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = tgafile.h; path = ../src/tgafile.h; sourceTree = SOURCE_ROOT; };
+		A1F5904F0B8DF7D100073279 /* trace.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = trace.h; path = ../src/trace.h; sourceTree = SOURCE_ROOT; };
+		A1F590500B8DF7D100073279 /* types.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = types.h; path = ../src/types.h; sourceTree = SOURCE_ROOT; };
+		A1F590510B8DF7D100073279 /* ui.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ui.h; path = ../src/ui.h; sourceTree = SOURCE_ROOT; };
+		A1F590520B8DF7D100073279 /* util.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = util.h; path = ../src/util.h; sourceTree = SOURCE_ROOT; };
+		A1F590530B8DF7D100073279 /* vector.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = vector.h; path = ../src/vector.h; sourceTree = SOURCE_ROOT; };
+		A1F590540B8DF7D100073279 /* video.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = video.h; path = ../src/video.h; sourceTree = SOURCE_ROOT; };
+		A1F590550B8DF7D100073279 /* vol.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = vol.h; path = ../src/vol.h; sourceTree = SOURCE_ROOT; };
+		A1F5909E0B8DF81800073279 /* api.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = api.cpp; path = ../src/api.cpp; sourceTree = SOURCE_ROOT; };
+		A1F5909F0B8DF81800073279 /* apigeom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = apigeom.cpp; path = ../src/apigeom.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590A00B8DF81800073279 /* apitrigeom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = apitrigeom.cpp; path = ../src/apitrigeom.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590A10B8DF81800073279 /* bndbox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = bndbox.cpp; path = ../src/bndbox.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590A20B8DF81800073279 /* box.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = box.cpp; path = ../src/box.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590A30B8DF81800073279 /* camera.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = camera.cpp; path = ../src/camera.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590A40B8DF81800073279 /* coordsys.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = coordsys.cpp; path = ../src/coordsys.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590A50B8DF81800073279 /* cylinder.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = cylinder.cpp; path = ../src/cylinder.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590A60B8DF81800073279 /* extvol.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = extvol.cpp; path = ../src/extvol.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590A70B8DF81800073279 /* getargs.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = getargs.cpp; path = ../src/getargs.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590A80B8DF81800073279 /* global.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = global.cpp; path = ../src/global.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590A90B8DF81800073279 /* grid.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = grid.cpp; path = ../src/grid.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590AA0B8DF81800073279 /* imageio.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = imageio.cpp; path = ../src/imageio.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590AB0B8DF81800073279 /* imap.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = imap.cpp; path = ../src/imap.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590AC0B8DF81800073279 /* intersect.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = intersect.cpp; path = ../src/intersect.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590AD0B8DF81800073279 /* jpeg.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = jpeg.cpp; path = ../src/jpeg.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590AE0B8DF81800073279 /* light.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = light.cpp; path = ../src/light.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590AF0B8DF81800073279 /* objbound.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = objbound.cpp; path = ../src/objbound.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590B00B8DF81800073279 /* parse.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = parse.cpp; path = ../src/parse.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590B10B8DF81800073279 /* plane.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = plane.cpp; path = ../src/plane.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590B20B8DF81800073279 /* ppm.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ppm.cpp; path = ../src/ppm.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590B30B8DF81800073279 /* quadric.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = quadric.cpp; path = ../src/quadric.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590B40B8DF81800073279 /* render.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = render.cpp; path = ../src/render.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590B50B8DF81800073279 /* ring.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ring.cpp; path = ../src/ring.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590B60B8DF81800073279 /* shade.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = shade.cpp; path = ../src/shade.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590B70B8DF81800073279 /* sphere.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = sphere.cpp; path = ../src/sphere.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590B80B8DF81800073279 /* texture.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = texture.cpp; path = ../src/texture.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590B90B8DF81800073279 /* tgafile.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = tgafile.cpp; path = ../src/tgafile.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590BA0B8DF81800073279 /* trace_rest.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = trace_rest.cpp; path = ../src/trace_rest.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590BD0B8DF81800073279 /* triangle.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = triangle.cpp; path = ../src/triangle.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590BE0B8DF81800073279 /* ui.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ui.cpp; path = ../src/ui.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590BF0B8DF81800073279 /* util.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = util.cpp; path = ../src/util.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590C00B8DF81800073279 /* vector.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = vector.cpp; path = ../src/vector.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590C10B8DF81800073279 /* video.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = video.cpp; path = ../src/video.cpp; sourceTree = SOURCE_ROOT; };
+		A1F590C20B8DF81800073279 /* vol.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = vol.cpp; path = ../src/vol.cpp; sourceTree = SOURCE_ROOT; };
+		A1F5915A0B8DF8FA00073279 /* triangle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = triangle.h; path = ../src/triangle.h; sourceTree = SOURCE_ROOT; };
+		A1F5915C0B8DF94400073279 /* macvideo.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macvideo.cpp; path = ../../../common/gui/macvideo.cpp; sourceTree = SOURCE_ROOT; };
+		A1F591610B8DF96500073279 /* video.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = video.h; path = ../../../common/gui/video.h; sourceTree = SOURCE_ROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		8D0C4E910486CD37000505A6 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				8D0C4E920486CD37000505A6 /* Carbon.framework in Frameworks */,
+				A117DC7B0B8DC08100F62CED /* AGL.framework in Frameworks */,
+				A117DC800B8DC09300F62CED /* OpenGL.framework in Frameworks */,
+				A117DC850B8DC0EA00F62CED /* libtbb.dylib in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		A1F58D900B8DF03600073279 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				A1F58E8C0B8DF25800073279 /* OpenGL.framework in Frameworks */,
+				A1F58E8D0B8DF25900073279 /* libtbb.dylib in Frameworks */,
+				A1F58E8E0B8DF25A00073279 /* Carbon.framework in Frameworks */,
+				A1F58E8F0B8DF25A00073279 /* AGL.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		A1F58D9A0B8DF06700073279 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				A1F58E900B8DF25F00073279 /* AGL.framework in Frameworks */,
+				A1F58E910B8DF26000073279 /* Carbon.framework in Frameworks */,
+				A1F58E920B8DF26100073279 /* OpenGL.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		20286C29FDCF999611CA2CEA /* tachyon */ = {
+			isa = PBXGroup;
+			children = (
+				20286C2AFDCF999611CA2CEA /* Sources */,
+				20286C2CFDCF999611CA2CEA /* Resources */,
+				20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */,
+				A1F58CD30B8DE85300073279 /* Products */,
+			);
+			name = tachyon;
+			sourceTree = "<group>";
+		};
+		20286C2AFDCF999611CA2CEA /* Sources */ = {
+			isa = PBXGroup;
+			children = (
+				A1F590310B8DF75E00073279 /* Tachyon */,
+				A1A8FB5F0B8CBB9E001C55B1 /* Render */,
+			);
+			name = Sources;
+			sourceTree = "<group>";
+		};
+		20286C2CFDCF999611CA2CEA /* Resources */ = {
+			isa = PBXGroup;
+			children = (
+				8D0C4E960486CD37000505A6 /* Info.plist */,
+				02345980000FD03B11CA0E72 /* main.nib */,
+			);
+			name = Resources;
+			sourceTree = "<group>";
+		};
+		20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */ = {
+			isa = PBXGroup;
+			children = (
+				A117DC830B8DC0DE00F62CED /* libtbb.dylib */,
+				A117DC7F0B8DC09300F62CED /* OpenGL.framework */,
+				A117DC7A0B8DC08100F62CED /* AGL.framework */,
+				20286C33FDCF999611CA2CEA /* Carbon.framework */,
+			);
+			name = "External Frameworks and Libraries";
+			sourceTree = "<group>";
+		};
+		A1A8FB5F0B8CBB9E001C55B1 /* Render */ = {
+			isa = PBXGroup;
+			children = (
+				A1F5902F0B8DF71B00073279 /* Headers */,
+				A1F5902E0B8DF71200073279 /* Sources */,
+			);
+			name = Render;
+			sourceTree = "<group>";
+		};
+		A1F58CD30B8DE85300073279 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				A1F58CD90B8DE90E00073279 /* tachyon-tbb.app */,
+				A1F58D920B8DF03600073279 /* tachyon-tbb1d.app */,
+				A1F58D9C0B8DF06700073279 /* tachyon-serial.app */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		A1F5902E0B8DF71200073279 /* Sources */ = {
+			isa = PBXGroup;
+			children = (
+				A1F5915C0B8DF94400073279 /* macvideo.cpp */,
+				A1F5909E0B8DF81800073279 /* api.cpp */,
+				A1F5909F0B8DF81800073279 /* apigeom.cpp */,
+				A1F590A00B8DF81800073279 /* apitrigeom.cpp */,
+				A1F590A10B8DF81800073279 /* bndbox.cpp */,
+				A1F590A20B8DF81800073279 /* box.cpp */,
+				A1F590A30B8DF81800073279 /* camera.cpp */,
+				A1F590A40B8DF81800073279 /* coordsys.cpp */,
+				A1F590A50B8DF81800073279 /* cylinder.cpp */,
+				A1F590A60B8DF81800073279 /* extvol.cpp */,
+				A1F590A70B8DF81800073279 /* getargs.cpp */,
+				A1F590A80B8DF81800073279 /* global.cpp */,
+				A1F590A90B8DF81800073279 /* grid.cpp */,
+				A1F590AA0B8DF81800073279 /* imageio.cpp */,
+				A1F590AB0B8DF81800073279 /* imap.cpp */,
+				A1F590AC0B8DF81800073279 /* intersect.cpp */,
+				A1F590AD0B8DF81800073279 /* jpeg.cpp */,
+				A1F590AE0B8DF81800073279 /* light.cpp */,
+				A1F590AF0B8DF81800073279 /* objbound.cpp */,
+				A1F590B00B8DF81800073279 /* parse.cpp */,
+				A1F590B10B8DF81800073279 /* plane.cpp */,
+				A1F590B20B8DF81800073279 /* ppm.cpp */,
+				A1F590B30B8DF81800073279 /* quadric.cpp */,
+				A1F590B40B8DF81800073279 /* render.cpp */,
+				A1F590B50B8DF81800073279 /* ring.cpp */,
+				A1F590B60B8DF81800073279 /* shade.cpp */,
+				A1F590B70B8DF81800073279 /* sphere.cpp */,
+				A1F590B80B8DF81800073279 /* texture.cpp */,
+				A1F590B90B8DF81800073279 /* tgafile.cpp */,
+				A1F590BA0B8DF81800073279 /* trace_rest.cpp */,
+				A1F590BD0B8DF81800073279 /* triangle.cpp */,
+				A1F590BE0B8DF81800073279 /* ui.cpp */,
+				A1F590BF0B8DF81800073279 /* util.cpp */,
+				A1F590C00B8DF81800073279 /* vector.cpp */,
+				A1F590C10B8DF81800073279 /* video.cpp */,
+				A1F590C20B8DF81800073279 /* vol.cpp */,
+			);
+			name = Sources;
+			sourceTree = "<group>";
+		};
+		A1F5902F0B8DF71B00073279 /* Headers */ = {
+			isa = PBXGroup;
+			children = (
+				A1F591610B8DF96500073279 /* video.h */,
+				A1F5915A0B8DF8FA00073279 /* triangle.h */,
+				A1F590320B8DF7D100073279 /* api.h */,
+				A1F590330B8DF7D100073279 /* apitrigeom.h */,
+				A1F590340B8DF7D100073279 /* bndbox.h */,
+				A1F590350B8DF7D100073279 /* box.h */,
+				A1F590360B8DF7D100073279 /* camera.h */,
+				A1F590370B8DF7D100073279 /* coordsys.h */,
+				A1F590380B8DF7D100073279 /* cylinder.h */,
+				A1F590390B8DF7D100073279 /* extvol.h */,
+				A1F5903A0B8DF7D100073279 /* getargs.h */,
+				A1F5903B0B8DF7D100073279 /* global.h */,
+				A1F5903C0B8DF7D100073279 /* grid.h */,
+				A1F5903D0B8DF7D100073279 /* imageio.h */,
+				A1F5903E0B8DF7D100073279 /* imap.h */,
+				A1F5903F0B8DF7D100073279 /* intersect.h */,
+				A1F590400B8DF7D100073279 /* jpeg.h */,
+				A1F590410B8DF7D100073279 /* light.h */,
+				A1F590420B8DF7D100073279 /* machine.h */,
+				A1F590430B8DF7D100073279 /* macros.h */,
+				A1F590440B8DF7D100073279 /* objbound.h */,
+				A1F590450B8DF7D100073279 /* parse.h */,
+				A1F590460B8DF7D100073279 /* plane.h */,
+				A1F590470B8DF7D100073279 /* ppm.h */,
+				A1F590480B8DF7D100073279 /* quadric.h */,
+				A1F590490B8DF7D100073279 /* render.h */,
+				A1F5904A0B8DF7D100073279 /* ring.h */,
+				A1F5904B0B8DF7D100073279 /* shade.h */,
+				A1F5904C0B8DF7D100073279 /* sphere.h */,
+				A1F5904D0B8DF7D100073279 /* texture.h */,
+				A1F5904E0B8DF7D100073279 /* tgafile.h */,
+				A1F5904F0B8DF7D100073279 /* trace.h */,
+				A1F590500B8DF7D100073279 /* types.h */,
+				A1F590510B8DF7D100073279 /* ui.h */,
+				A1F590520B8DF7D100073279 /* util.h */,
+				A1F590530B8DF7D100073279 /* vector.h */,
+				A1F590540B8DF7D100073279 /* video.h */,
+				A1F590550B8DF7D100073279 /* vol.h */,
+			);
+			name = Headers;
+			sourceTree = "<group>";
+		};
+		A1F590310B8DF75E00073279 /* Tachyon */ = {
+			isa = PBXGroup;
+			children = (
+				A1F58D8C0B8DEFE900073279 /* trace.serial.cpp */,
+				A1F58D3D0B8DEB8E00073279 /* trace.threads.cpp */,
+				A1F58D8B0B8DEFD900073279 /* trace.tbb1d.cpp */,
+				A1A8FB5D0B8CBB8D001C55B1 /* trace.tbb.cpp */,
+				32DBCF6D0370B57F00C91783 /* tachyon.pch */,
+			);
+			name = Tachyon;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		8D0C4E890486CD37000505A6 /* tachyon-tbb */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = C0E91AC508A95435008D54AB /* Build configuration list for PBXNativeTarget "tachyon-tbb" */;
+			buildPhases = (
+				8D0C4E8C0486CD37000505A6 /* Resources */,
+				8D0C4E8F0486CD37000505A6 /* Sources */,
+				8D0C4E910486CD37000505A6 /* Frameworks */,
+				A117DC910B8DC59A00F62CED /* Copy TBB lib */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "tachyon-tbb";
+			productInstallPath = "$(HOME)/Applications";
+			productName = tachyon;
+			productReference = A1F58CD90B8DE90E00073279 /* tachyon-tbb.app */;
+			productType = "com.apple.product-type.application";
+		};
+		A1F58D910B8DF03600073279 /* tachyon-tbb1d */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = A1F58D950B8DF03600073279 /* Build configuration list for PBXNativeTarget "tachyon-tbb1d" */;
+			buildPhases = (
+				A1F58D8E0B8DF03600073279 /* Resources */,
+				A1F58D8F0B8DF03600073279 /* Sources */,
+				A1F58D900B8DF03600073279 /* Frameworks */,
+				A1F58EE60B8DF4E100073279 /* Copy TBB lib */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "tachyon-tbb1d";
+			productName = "tachyon-tbb1d";
+			productReference = A1F58D920B8DF03600073279 /* tachyon-tbb1d.app */;
+			productType = "com.apple.product-type.application";
+		};
+		A1F58D9B0B8DF06700073279 /* tachyon-serial */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = A1F58D9F0B8DF06700073279 /* Build configuration list for PBXNativeTarget "tachyon-serial" */;
+			buildPhases = (
+				A1F58D980B8DF06700073279 /* Resources */,
+				A1F58D990B8DF06700073279 /* Sources */,
+				A1F58D9A0B8DF06700073279 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "tachyon-serial";
+			productName = "tachyon-serial";
+			productReference = A1F58D9C0B8DF06700073279 /* tachyon-serial.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		20286C28FDCF999611CA2CEA /* Project object */ = {
+			isa = PBXProject;
+			buildConfigurationList = C0E91AC908A95435008D54AB /* Build configuration list for PBXProject "tachyon" */;
+			hasScannedForEncodings = 1;
+			mainGroup = 20286C29FDCF999611CA2CEA /* tachyon */;
+			productRefGroup = A1F58CD30B8DE85300073279 /* Products */;
+			projectDirPath = "";
+			targets = (
+				A1F58D9B0B8DF06700073279 /* tachyon-serial */,
+				A1F58D910B8DF03600073279 /* tachyon-tbb1d */,
+				8D0C4E890486CD37000505A6 /* tachyon-tbb */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		8D0C4E8C0486CD37000505A6 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				8D0C4E8E0486CD37000505A6 /* main.nib in Resources */,
+				A1F58EA30B8DF32900073279 /* Info.plist in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		A1F58D8E0B8DF03600073279 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				A1F58DCD0B8DF19700073279 /* main.nib in Resources */,
+				A1F58EA40B8DF32A00073279 /* Info.plist in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		A1F58D980B8DF06700073279 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				A1F58DCE0B8DF19800073279 /* main.nib in Resources */,
+				A1F58EA60B8DF32B00073279 /* Info.plist in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		8D0C4E8F0486CD37000505A6 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				A1F58F960B8DF63C00073279 /* trace.tbb.cpp in Sources */,
+				A1F591320B8DF81800073279 /* api.cpp in Sources */,
+				A1F591330B8DF81800073279 /* apigeom.cpp in Sources */,
+				A1F591340B8DF81800073279 /* apitrigeom.cpp in Sources */,
+				A1F591350B8DF81800073279 /* bndbox.cpp in Sources */,
+				A1F591360B8DF81800073279 /* box.cpp in Sources */,
+				A1F591370B8DF81800073279 /* camera.cpp in Sources */,
+				A1F591380B8DF81800073279 /* coordsys.cpp in Sources */,
+				A1F591390B8DF81800073279 /* cylinder.cpp in Sources */,
+				A1F5913A0B8DF81800073279 /* extvol.cpp in Sources */,
+				A1F5913B0B8DF81800073279 /* getargs.cpp in Sources */,
+				A1F5913C0B8DF81800073279 /* global.cpp in Sources */,
+				A1F5913D0B8DF81800073279 /* grid.cpp in Sources */,
+				A1F5913E0B8DF81800073279 /* imageio.cpp in Sources */,
+				A1F5913F0B8DF81800073279 /* imap.cpp in Sources */,
+				A1F591400B8DF81800073279 /* intersect.cpp in Sources */,
+				A1F591410B8DF81800073279 /* jpeg.cpp in Sources */,
+				A1F591420B8DF81800073279 /* light.cpp in Sources */,
+				A1F591430B8DF81800073279 /* objbound.cpp in Sources */,
+				A1F591440B8DF81800073279 /* parse.cpp in Sources */,
+				A1F591450B8DF81800073279 /* plane.cpp in Sources */,
+				A1F591460B8DF81800073279 /* ppm.cpp in Sources */,
+				A1F591470B8DF81800073279 /* quadric.cpp in Sources */,
+				A1F591480B8DF81800073279 /* render.cpp in Sources */,
+				A1F591490B8DF81800073279 /* ring.cpp in Sources */,
+				A1F5914A0B8DF81800073279 /* shade.cpp in Sources */,
+				A1F5914B0B8DF81800073279 /* sphere.cpp in Sources */,
+				A1F5914C0B8DF81800073279 /* texture.cpp in Sources */,
+				A1F5914D0B8DF81800073279 /* tgafile.cpp in Sources */,
+				A1F5914E0B8DF81800073279 /* trace_rest.cpp in Sources */,
+				A1F591510B8DF81800073279 /* triangle.cpp in Sources */,
+				A1F591520B8DF81800073279 /* ui.cpp in Sources */,
+				A1F591530B8DF81800073279 /* util.cpp in Sources */,
+				A1F591540B8DF81800073279 /* vector.cpp in Sources */,
+				A1F591550B8DF81800073279 /* video.cpp in Sources */,
+				A1F591560B8DF81800073279 /* vol.cpp in Sources */,
+				A1F5915D0B8DF94400073279 /* macvideo.cpp in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		A1F58D8F0B8DF03600073279 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				A1F5902C0B8DF6A700073279 /* trace.tbb1d.cpp in Sources */,
+				A1F5910D0B8DF81800073279 /* api.cpp in Sources */,
+				A1F5910E0B8DF81800073279 /* apigeom.cpp in Sources */,
+				A1F5910F0B8DF81800073279 /* apitrigeom.cpp in Sources */,
+				A1F591100B8DF81800073279 /* bndbox.cpp in Sources */,
+				A1F591110B8DF81800073279 /* box.cpp in Sources */,
+				A1F591120B8DF81800073279 /* camera.cpp in Sources */,
+				A1F591130B8DF81800073279 /* coordsys.cpp in Sources */,
+				A1F591140B8DF81800073279 /* cylinder.cpp in Sources */,
+				A1F591150B8DF81800073279 /* extvol.cpp in Sources */,
+				A1F591160B8DF81800073279 /* getargs.cpp in Sources */,
+				A1F591170B8DF81800073279 /* global.cpp in Sources */,
+				A1F591180B8DF81800073279 /* grid.cpp in Sources */,
+				A1F591190B8DF81800073279 /* imageio.cpp in Sources */,
+				A1F5911A0B8DF81800073279 /* imap.cpp in Sources */,
+				A1F5911B0B8DF81800073279 /* intersect.cpp in Sources */,
+				A1F5911C0B8DF81800073279 /* jpeg.cpp in Sources */,
+				A1F5911D0B8DF81800073279 /* light.cpp in Sources */,
+				A1F5911E0B8DF81800073279 /* objbound.cpp in Sources */,
+				A1F5911F0B8DF81800073279 /* parse.cpp in Sources */,
+				A1F591200B8DF81800073279 /* plane.cpp in Sources */,
+				A1F591210B8DF81800073279 /* ppm.cpp in Sources */,
+				A1F591220B8DF81800073279 /* quadric.cpp in Sources */,
+				A1F591230B8DF81800073279 /* render.cpp in Sources */,
+				A1F591240B8DF81800073279 /* ring.cpp in Sources */,
+				A1F591250B8DF81800073279 /* shade.cpp in Sources */,
+				A1F591260B8DF81800073279 /* sphere.cpp in Sources */,
+				A1F591270B8DF81800073279 /* texture.cpp in Sources */,
+				A1F591280B8DF81800073279 /* tgafile.cpp in Sources */,
+				A1F591290B8DF81800073279 /* trace_rest.cpp in Sources */,
+				A1F5912C0B8DF81800073279 /* triangle.cpp in Sources */,
+				A1F5912D0B8DF81800073279 /* ui.cpp in Sources */,
+				A1F5912E0B8DF81800073279 /* util.cpp in Sources */,
+				A1F5912F0B8DF81800073279 /* vector.cpp in Sources */,
+				A1F591300B8DF81800073279 /* video.cpp in Sources */,
+				A1F591310B8DF81800073279 /* vol.cpp in Sources */,
+				A1F5915E0B8DF94400073279 /* macvideo.cpp in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		A1F58D990B8DF06700073279 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				A1F590300B8DF74600073279 /* trace.serial.cpp in Sources */,
+				A1F590C30B8DF81800073279 /* api.cpp in Sources */,
+				A1F590C40B8DF81800073279 /* apigeom.cpp in Sources */,
+				A1F590C50B8DF81800073279 /* apitrigeom.cpp in Sources */,
+				A1F590C60B8DF81800073279 /* bndbox.cpp in Sources */,
+				A1F590C70B8DF81800073279 /* box.cpp in Sources */,
+				A1F590C80B8DF81800073279 /* camera.cpp in Sources */,
+				A1F590C90B8DF81800073279 /* coordsys.cpp in Sources */,
+				A1F590CA0B8DF81800073279 /* cylinder.cpp in Sources */,
+				A1F590CB0B8DF81800073279 /* extvol.cpp in Sources */,
+				A1F590CC0B8DF81800073279 /* getargs.cpp in Sources */,
+				A1F590CD0B8DF81800073279 /* global.cpp in Sources */,
+				A1F590CE0B8DF81800073279 /* grid.cpp in Sources */,
+				A1F590CF0B8DF81800073279 /* imageio.cpp in Sources */,
+				A1F590D00B8DF81800073279 /* imap.cpp in Sources */,
+				A1F590D10B8DF81800073279 /* intersect.cpp in Sources */,
+				A1F590D20B8DF81800073279 /* jpeg.cpp in Sources */,
+				A1F590D30B8DF81800073279 /* light.cpp in Sources */,
+				A1F590D40B8DF81800073279 /* objbound.cpp in Sources */,
+				A1F590D50B8DF81800073279 /* parse.cpp in Sources */,
+				A1F590D60B8DF81800073279 /* plane.cpp in Sources */,
+				A1F590D70B8DF81800073279 /* ppm.cpp in Sources */,
+				A1F590D80B8DF81800073279 /* quadric.cpp in Sources */,
+				A1F590D90B8DF81800073279 /* render.cpp in Sources */,
+				A1F590DA0B8DF81800073279 /* ring.cpp in Sources */,
+				A1F590DB0B8DF81800073279 /* shade.cpp in Sources */,
+				A1F590DC0B8DF81800073279 /* sphere.cpp in Sources */,
+				A1F590DD0B8DF81800073279 /* texture.cpp in Sources */,
+				A1F590DE0B8DF81800073279 /* tgafile.cpp in Sources */,
+				A1F590DF0B8DF81800073279 /* trace_rest.cpp in Sources */,
+				A1F590E20B8DF81800073279 /* triangle.cpp in Sources */,
+				A1F590E30B8DF81800073279 /* ui.cpp in Sources */,
+				A1F590E40B8DF81800073279 /* util.cpp in Sources */,
+				A1F590E50B8DF81800073279 /* vector.cpp in Sources */,
+				A1F590E60B8DF81800073279 /* video.cpp in Sources */,
+				A1F590E70B8DF81800073279 /* vol.cpp in Sources */,
+				A1F591600B8DF94400073279 /* macvideo.cpp in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+		02345980000FD03B11CA0E72 /* main.nib */ = {
+			isa = PBXVariantGroup;
+			children = (
+				1870340FFE93FCAF11CA0CD7 /* English */,
+			);
+			name = main.nib;
+			sourceTree = "<group>";
+		};
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+		A1F58D960B8DF03600073279 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				COPY_PHASE_STRIP = NO;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_FIX_AND_CONTINUE = YES;
+				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
+				INFOPLIST_FILE = Info.plist;
+				INSTALL_PATH = "$(HOME)/Applications";
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(LIBRARY_SEARCH_PATHS_QUOTED_1)",
+				);
+				LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(LOCAL_LIBRARY_DIR)/Frameworks/TBB.framework/Libraries\"";
+				PREBINDING = NO;
+				PRODUCT_NAME = "tachyon-tbb1d";
+				WRAPPER_EXTENSION = app;
+				ZERO_LINK = NO;
+			};
+			name = Debug;
+		};
+		A1F58D970B8DF03600073279 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				COPY_PHASE_STRIP = YES;
+				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
+				INFOPLIST_FILE = Info.plist;
+				INSTALL_PATH = "$(HOME)/Applications";
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(LIBRARY_SEARCH_PATHS_QUOTED_1)",
+				);
+				LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(LOCAL_LIBRARY_DIR)/Frameworks/TBB.framework/Libraries\"";
+				PREBINDING = NO;
+				PRODUCT_NAME = "tachyon-tbb1d";
+				WRAPPER_EXTENSION = app;
+				ZERO_LINK = NO;
+			};
+			name = Release;
+		};
+		A1F58DA00B8DF06700073279 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				COPY_PHASE_STRIP = NO;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_FIX_AND_CONTINUE = YES;
+				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
+				INFOPLIST_FILE = Info.plist;
+				INSTALL_PATH = "$(HOME)/Applications";
+				PREBINDING = NO;
+				PRODUCT_NAME = "tachyon-serial";
+				WRAPPER_EXTENSION = app;
+				ZERO_LINK = NO;
+			};
+			name = Debug;
+		};
+		A1F58DA10B8DF06700073279 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				COPY_PHASE_STRIP = YES;
+				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
+				INFOPLIST_FILE = Info.plist;
+				INSTALL_PATH = "$(HOME)/Applications";
+				PREBINDING = NO;
+				PRODUCT_NAME = "tachyon-serial";
+				WRAPPER_EXTENSION = app;
+				ZERO_LINK = NO;
+			};
+			name = Release;
+		};
+		C0E91AC608A95435008D54AB /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				ARCHS = i386;
+				COPY_PHASE_STRIP = NO;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_FIX_AND_CONTINUE = YES;
+				GCC_MODEL_TUNING = "";
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = tachyon.pch;
+				INFOPLIST_FILE = Info.plist;
+				INSTALL_PATH = "$(HOME)/Applications";
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(LIBRARY_SEARCH_PATHS_QUOTED_1)",
+				);
+				LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(LOCAL_LIBRARY_DIR)/Frameworks/TBB.framework/Libraries\"";
+				PRODUCT_NAME = "tachyon-tbb";
+				WRAPPER_EXTENSION = app;
+				ZERO_LINK = NO;
+			};
+			name = Debug;
+		};
+		C0E91AC708A95435008D54AB /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				ARCHS = i386;
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+				GCC_MODEL_TUNING = "";
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = tachyon.pch;
+				INFOPLIST_FILE = Info.plist;
+				INSTALL_PATH = "$(HOME)/Applications";
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(LIBRARY_SEARCH_PATHS_QUOTED_1)",
+				);
+				LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(LOCAL_LIBRARY_DIR)/Frameworks/TBB.framework/Libraries\"";
+				PRODUCT_NAME = "tachyon-tbb";
+				WRAPPER_EXTENSION = app;
+				ZERO_LINK = NO;
+			};
+			name = Release;
+		};
+		C0E91ACA08A95435008D54AB /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_AUTO_VECTORIZATION = YES;
+				GCC_ENABLE_CPP_RTTI = YES;
+				GCC_ENABLE_SSE3_EXTENSIONS = YES;
+				GCC_MODEL_TUNING = "";
+				GCC_PREPROCESSOR_DEFINITIONS = "DEFAULT_MODELFILE=\"/Library/Frameworks/TBB.framework/Versions/Current/examples/parallel_for/tachyon/dat/balls.dat\"";
+				GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				PREBINDING = NO;
+				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
+				SYMROOT = "/tmp/tbb-$(USER)";
+			};
+			name = Debug;
+		};
+		C0E91ACB08A95435008D54AB /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_AUTO_VECTORIZATION = YES;
+				GCC_ENABLE_CPP_RTTI = YES;
+				GCC_ENABLE_SSE3_EXTENSIONS = YES;
+				GCC_MODEL_TUNING = "";
+				GCC_PREPROCESSOR_DEFINITIONS = "DEFAULT_MODELFILE=\"/Library/Frameworks/TBB.framework/Versions/Current/examples/parallel_for/tachyon/dat/balls.dat\"";
+				GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				PREBINDING = NO;
+				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
+				SYMROOT = "/tmp/tbb-$(USER)";
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		A1F58D950B8DF03600073279 /* Build configuration list for PBXNativeTarget "tachyon-tbb1d" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				A1F58D960B8DF03600073279 /* Debug */,
+				A1F58D970B8DF03600073279 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		A1F58D9F0B8DF06700073279 /* Build configuration list for PBXNativeTarget "tachyon-serial" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				A1F58DA00B8DF06700073279 /* Debug */,
+				A1F58DA10B8DF06700073279 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		C0E91AC508A95435008D54AB /* Build configuration list for PBXNativeTarget "tachyon-tbb" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				C0E91AC608A95435008D54AB /* Debug */,
+				C0E91AC708A95435008D54AB /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		C0E91AC908A95435008D54AB /* Build configuration list for PBXProject "tachyon" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				C0E91ACA08A95435008D54AB /* Debug */,
+				C0E91ACB08A95435008D54AB /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 20286C28FDCF999611CA2CEA /* Project object */;
+}
diff --git a/examples/parallel_reduce/convex_hull/vc7.1/convex_hull_bench.vcproj b/examples/parallel_reduce/convex_hull/vc7.1/convex_hull_bench.vcproj
index 56b25e5..dc7e1e9 100644
--- a/examples/parallel_reduce/convex_hull/vc7.1/convex_hull_bench.vcproj
+++ b/examples/parallel_reduce/convex_hull/vc7.1/convex_hull_bench.vcproj
@@ -71,7 +71,8 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="TRUE"/>
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
@@ -79,6 +80,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc7.1\lib"
+				GenerateDebugInformation="TRUE"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_reduce/convex_hull/vc7.1/convex_hull_sample.vcproj b/examples/parallel_reduce/convex_hull/vc7.1/convex_hull_sample.vcproj
index d3eece4..5bb7163 100644
--- a/examples/parallel_reduce/convex_hull/vc7.1/convex_hull_sample.vcproj
+++ b/examples/parallel_reduce/convex_hull/vc7.1/convex_hull_sample.vcproj
@@ -71,7 +71,8 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="TRUE"/>
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
@@ -79,6 +80,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc7.1\lib"
+				GenerateDebugInformation="TRUE"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_reduce/convex_hull/vc8/convex_hull_benchmark.vcproj b/examples/parallel_reduce/convex_hull/vc8/convex_hull_benchmark.vcproj
index 795e83f..3344906 100644
--- a/examples/parallel_reduce/convex_hull/vc8/convex_hull_benchmark.vcproj
+++ b/examples/parallel_reduce/convex_hull/vc8/convex_hull_benchmark.vcproj
@@ -204,6 +204,7 @@
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
 				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -219,6 +220,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -282,6 +284,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -297,6 +300,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_reduce/convex_hull/vc8/convex_hull_sample.vcproj b/examples/parallel_reduce/convex_hull/vc8/convex_hull_sample.vcproj
index 6efd011..7f79c90 100644
--- a/examples/parallel_reduce/convex_hull/vc8/convex_hull_sample.vcproj
+++ b/examples/parallel_reduce/convex_hull/vc8/convex_hull_sample.vcproj
@@ -204,6 +204,7 @@
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
 				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -219,6 +220,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -282,6 +284,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -297,6 +300,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_reduce/convex_hull/vc9/convex_hull_benchmark.vcproj b/examples/parallel_reduce/convex_hull/vc9/convex_hull_benchmark.vcproj
index ec7ed1c..1c62ac9 100644
--- a/examples/parallel_reduce/convex_hull/vc9/convex_hull_benchmark.vcproj
+++ b/examples/parallel_reduce/convex_hull/vc9/convex_hull_benchmark.vcproj
@@ -124,6 +124,7 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -139,6 +140,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -279,6 +281,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -294,6 +297,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_reduce/convex_hull/vc9/convex_hull_sample.vcproj b/examples/parallel_reduce/convex_hull/vc9/convex_hull_sample.vcproj
index c490002..a5fd58a 100644
--- a/examples/parallel_reduce/convex_hull/vc9/convex_hull_sample.vcproj
+++ b/examples/parallel_reduce/convex_hull/vc9/convex_hull_sample.vcproj
@@ -124,6 +124,7 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -139,6 +140,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -279,6 +281,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -294,6 +297,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_reduce/primes/vc7.1/primes.vcproj b/examples/parallel_reduce/primes/vc7.1/primes.vcproj
index 955b4f2..6336f7c 100644
--- a/examples/parallel_reduce/primes/vc7.1/primes.vcproj
+++ b/examples/parallel_reduce/primes/vc7.1/primes.vcproj
@@ -72,7 +72,8 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="TRUE"/>
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
@@ -80,6 +81,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc7.1\lib"
+				GenerateDebugInformation="TRUE"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_reduce/primes/vc8/primes.vcproj b/examples/parallel_reduce/primes/vc8/primes.vcproj
index a0d51b7..2424e1e 100644
--- a/examples/parallel_reduce/primes/vc8/primes.vcproj
+++ b/examples/parallel_reduce/primes/vc8/primes.vcproj
@@ -203,6 +203,7 @@
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
 				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -218,6 +219,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -280,6 +282,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -295,6 +298,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_reduce/primes/vc9/primes.vcproj b/examples/parallel_reduce/primes/vc9/primes.vcproj
index 04ca794..5dc48fd 100644
--- a/examples/parallel_reduce/primes/vc9/primes.vcproj
+++ b/examples/parallel_reduce/primes/vc9/primes.vcproj
@@ -123,6 +123,7 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -138,6 +139,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -277,6 +279,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -292,6 +295,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_while/parallel_preorder/vc7.1/parallel_preorder.vcproj b/examples/parallel_while/parallel_preorder/vc7.1/parallel_preorder.vcproj
index 0ceeb86..2b666a3 100644
--- a/examples/parallel_while/parallel_preorder/vc7.1/parallel_preorder.vcproj
+++ b/examples/parallel_while/parallel_preorder/vc7.1/parallel_preorder.vcproj
@@ -72,7 +72,8 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="TRUE"/>
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
@@ -80,6 +81,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc7.1\lib"
+				GenerateDebugInformation="TRUE"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_while/parallel_preorder/vc8/parallel_preorder.vcproj b/examples/parallel_while/parallel_preorder/vc8/parallel_preorder.vcproj
index 7c133d4..67460ba 100644
--- a/examples/parallel_while/parallel_preorder/vc8/parallel_preorder.vcproj
+++ b/examples/parallel_while/parallel_preorder/vc8/parallel_preorder.vcproj
@@ -203,6 +203,7 @@
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
 				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -218,6 +219,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -280,6 +282,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -295,6 +298,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/parallel_while/parallel_preorder/vc9/parallel_preorder.vcproj b/examples/parallel_while/parallel_preorder/vc9/parallel_preorder.vcproj
index 60c345a..ea32d82 100644
--- a/examples/parallel_while/parallel_preorder/vc9/parallel_preorder.vcproj
+++ b/examples/parallel_while/parallel_preorder/vc9/parallel_preorder.vcproj
@@ -123,6 +123,7 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -138,6 +139,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -277,6 +279,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -292,6 +295,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/pipeline/square/square.cpp b/examples/pipeline/square/square.cpp
index 1a19ccf..15fbfb0 100644
--- a/examples/pipeline/square/square.cpp
+++ b/examples/pipeline/square/square.cpp
@@ -179,8 +179,8 @@ MyOutputFilter::MyOutputFilter( FILE* output_file ) :
 
 void* MyOutputFilter::operator()( void* item ) {
     TextSlice& output = *static_cast<TextSlice*>(item);
-    int n = fwrite( output.begin(), 1, output.size(), my_output_file );
-    if( n<=0 ) {
+    size_t n = fwrite( output.begin(), 1, output.size(), my_output_file );
+    if( n!=output.size() ) {
         fprintf(stderr,"Can't write into %s file\n", OutputFileName);
         exit(1);
     }
diff --git a/examples/pipeline/square/vc7.1/square.vcproj b/examples/pipeline/square/vc7.1/square.vcproj
index 7da592f..d29d7dd 100644
--- a/examples/pipeline/square/vc7.1/square.vcproj
+++ b/examples/pipeline/square/vc7.1/square.vcproj
@@ -76,7 +76,8 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="TRUE"/>
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
 			<Tool
 				Name="VCCustomBuildTool"
 				Description="Constructing input.txt"
@@ -88,6 +89,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc7.1\lib"
+				GenerateDebugInformation="TRUE"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/pipeline/square/vc8/square.vcproj b/examples/pipeline/square/vc8/square.vcproj
index 4e49b7d..2e4d5b2 100644
--- a/examples/pipeline/square/vc8/square.vcproj
+++ b/examples/pipeline/square/vc8/square.vcproj
@@ -215,6 +215,7 @@
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
 				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -230,6 +231,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -296,6 +298,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -311,6 +314,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/pipeline/square/vc9/square.vcproj b/examples/pipeline/square/vc9/square.vcproj
index 40a3064..b6816e8 100644
--- a/examples/pipeline/square/vc9/square.vcproj
+++ b/examples/pipeline/square/vc9/square.vcproj
@@ -212,6 +212,7 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -227,6 +228,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -292,6 +294,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -307,6 +310,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/pipeline/text_filter/vc7.1/text_filter.vcproj b/examples/pipeline/text_filter/vc7.1/text_filter.vcproj
index ada3bf3..88ab903 100644
--- a/examples/pipeline/text_filter/vc7.1/text_filter.vcproj
+++ b/examples/pipeline/text_filter/vc7.1/text_filter.vcproj
@@ -75,7 +75,8 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="TRUE"/>
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
 			<Tool
 				Name="VCCustomBuildTool"
 				Description="Constructing input.txt"
@@ -86,6 +87,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc7.1\lib"
+				GenerateDebugInformation="TRUE"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/pipeline/text_filter/vc8/text_filter.vcproj b/examples/pipeline/text_filter/vc8/text_filter.vcproj
index b0c9cc8..c923305 100644
--- a/examples/pipeline/text_filter/vc8/text_filter.vcproj
+++ b/examples/pipeline/text_filter/vc8/text_filter.vcproj
@@ -212,6 +212,7 @@
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
 				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -227,6 +228,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -292,6 +294,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -307,6 +310,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/pipeline/text_filter/vc9/text_filter.vcproj b/examples/pipeline/text_filter/vc9/text_filter.vcproj
index c825668..866e110 100644
--- a/examples/pipeline/text_filter/vc9/text_filter.vcproj
+++ b/examples/pipeline/text_filter/vc9/text_filter.vcproj
@@ -129,6 +129,7 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -144,6 +145,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -289,6 +291,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -304,6 +307,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/task/tree_sum/vc7.1/tree_sum.vcproj b/examples/task/tree_sum/vc7.1/tree_sum.vcproj
index 2b673f5..773cef4 100644
--- a/examples/task/tree_sum/vc7.1/tree_sum.vcproj
+++ b/examples/task/tree_sum/vc7.1/tree_sum.vcproj
@@ -72,7 +72,8 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="TRUE"/>
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
@@ -80,6 +81,7 @@
 				AdditionalDependencies="tbb.lib tbbmalloc.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc7.1\lib"
+				GenerateDebugInformation="TRUE"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/task/tree_sum/vc8/tree_sum.vcproj b/examples/task/tree_sum/vc8/tree_sum.vcproj
index bc4be2a..7eed458 100644
--- a/examples/task/tree_sum/vc8/tree_sum.vcproj
+++ b/examples/task/tree_sum/vc8/tree_sum.vcproj
@@ -203,6 +203,7 @@
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
 				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -218,6 +219,7 @@
 				AdditionalDependencies="tbb.lib tbbmalloc.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -280,6 +282,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -295,6 +298,7 @@
 				AdditionalDependencies="tbb.lib tbbmalloc.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/task/tree_sum/vc9/tree_sum.vcproj b/examples/task/tree_sum/vc9/tree_sum.vcproj
index fe789a7..bd0b019 100644
--- a/examples/task/tree_sum/vc9/tree_sum.vcproj
+++ b/examples/task/tree_sum/vc9/tree_sum.vcproj
@@ -123,6 +123,7 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -138,6 +139,7 @@
 				AdditionalDependencies="tbb.lib tbbmalloc.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -277,6 +279,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -292,6 +295,7 @@
 				AdditionalDependencies="tbb.lib tbbmalloc.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/test_all/fibonacci/vc7.1/fibonacci.vcproj b/examples/test_all/fibonacci/vc7.1/fibonacci.vcproj
index 5e371b5..97cf7c7 100644
--- a/examples/test_all/fibonacci/vc7.1/fibonacci.vcproj
+++ b/examples/test_all/fibonacci/vc7.1/fibonacci.vcproj
@@ -72,7 +72,8 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="TRUE"/>
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
 			<Tool
 				Name="VCCustomBuildTool"/>
 			<Tool
@@ -80,6 +81,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc7.1\lib"
+				GenerateDebugInformation="TRUE"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/test_all/fibonacci/vc8/fibonacci.vcproj b/examples/test_all/fibonacci/vc8/fibonacci.vcproj
index 7ce0093..5d1606e 100644
--- a/examples/test_all/fibonacci/vc8/fibonacci.vcproj
+++ b/examples/test_all/fibonacci/vc8/fibonacci.vcproj
@@ -203,6 +203,7 @@
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
 				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -218,6 +219,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -280,6 +282,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -295,6 +298,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc8\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/examples/test_all/fibonacci/vc9/fibonacci.vcproj b/examples/test_all/fibonacci/vc9/fibonacci.vcproj
index 886b3a8..58772d8 100644
--- a/examples/test_all/fibonacci/vc9/fibonacci.vcproj
+++ b/examples/test_all/fibonacci/vc9/fibonacci.vcproj
@@ -123,6 +123,7 @@
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -138,6 +139,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\ia32\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
@@ -277,6 +279,7 @@
 				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -292,6 +295,7 @@
 				AdditionalDependencies="tbb.lib"
 				LinkIncremental="1"
 				AdditionalLibraryDirectories="$(TBB21_INSTALL_DIR)\em64t\vc9\lib"
+				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
diff --git a/include/tbb/cache_aligned_allocator.h b/include/tbb/cache_aligned_allocator.h
index cf91281..1a7671e 100644
--- a/include/tbb/cache_aligned_allocator.h
+++ b/include/tbb/cache_aligned_allocator.h
@@ -70,11 +70,11 @@ namespace internal {
 template<typename T>
 class cache_aligned_allocator {
 public:
-    typedef T* pointer;
-    typedef const T* const_pointer;
-    typedef T& reference;
-    typedef const T& const_reference;
-    typedef T value_type;
+    typedef typename internal::allocator_type<T>::value_type value_type;
+    typedef value_type* pointer;
+    typedef const value_type* const_pointer;
+    typedef value_type& reference;
+    typedef const value_type& const_reference;
     typedef size_t size_type;
     typedef ptrdiff_t difference_type;
     template<typename U> struct rebind {
@@ -91,7 +91,7 @@ public:
     //! Allocate space for n objects, starting on a cache/sector line.
     pointer allocate( size_type n, const void* hint=0 ) {
         // The "hint" argument is always ignored in NFS_Allocate thus const_cast shouldn't hurt
-        return pointer(internal::NFS_Allocate( n, sizeof(T), const_cast<void*>(hint) ));
+        return pointer(internal::NFS_Allocate( n, sizeof(value_type), const_cast<void*>(hint) ));
     }
 
     //! Free block of memory that starts on a cache line
@@ -101,14 +101,14 @@ public:
 
     //! Largest value for which method allocate might succeed.
     size_type max_size() const throw() {
-        return (~size_t(0)-internal::NFS_MaxLineSize)/sizeof(T);
+        return (~size_t(0)-internal::NFS_MaxLineSize)/sizeof(value_type);
     }
 
     //! Copy-construct value at location pointed to by p.
-    void construct( pointer p, const T& value ) {new(static_cast<void*>(p)) T(value);}
+    void construct( pointer p, const value_type& value ) {new(static_cast<void*>(p)) value_type(value);}
 
     //! Destroy value at location pointed to by p.
-    void destroy( pointer p ) {p->~T();}
+    void destroy( pointer p ) {p->~value_type();}
 };
 
 #if _MSC_VER && !defined(__INTEL_COMPILER)
diff --git a/include/tbb/concurrent_queue.h b/include/tbb/concurrent_queue.h
index 00bf3ac..f169a51 100644
--- a/include/tbb/concurrent_queue.h
+++ b/include/tbb/concurrent_queue.h
@@ -118,7 +118,7 @@ protected:
     void __TBB_EXPORTED_METHOD assign( const concurrent_queue_base_v3& src ) ;
 
 private:
-    virtual void copy_item( page& dst, size_t dindex, const page& src, size_t sindex ) = 0;
+    virtual void copy_page_item( page& dst, size_t dindex, const page& src, size_t sindex ) = 0;
 };
 
 typedef concurrent_queue_base_v3 concurrent_queue_base ;
@@ -232,7 +232,7 @@ bool operator!=( const concurrent_queue_iterator<C,T>& i, const concurrent_queue
 
 //! A high-performance thread-safe queue.
 /** Multiple threads may each push and pop concurrently.
-    Assignment and copy construction are not allowed.
+    Assignment construction is not allowed.
     @ingroup containers */
 template<typename T, class A>
 class concurrent_queue: public internal::concurrent_queue_base_v3 {
@@ -259,7 +259,7 @@ class concurrent_queue: public internal::concurrent_queue_base_v3 {
         new( &get_ref(dst,index) ) T(*static_cast<const T*>(src)); 
     }
 
-    /*override*/ virtual void copy_item( page& dst, size_t dindex, const page& src, size_t sindex ) {
+    /*override*/ virtual void copy_page_item( page& dst, size_t dindex, const page& src, size_t sindex ) {
         new( &get_ref(dst,dindex) ) T( static_cast<const T*>(static_cast<const void*>(&src+1))[sindex] );
     }
 
diff --git a/include/tbb/concurrent_vector.h b/include/tbb/concurrent_vector.h
index 3c433c8..4e9bd09 100644
--- a/include/tbb/concurrent_vector.h
+++ b/include/tbb/concurrent_vector.h
@@ -54,7 +54,7 @@ template<typename T, class A = cache_aligned_allocator<T> >
 class concurrent_vector;
 
 //! Bad allocation marker
-#define __TBB_BAD_ALLOC reinterpret_cast<void*>(63)
+#define __TBB_BAD_ALLOC reinterpret_cast<void*>(size_t(63))
 
 //! @cond INTERNAL
 namespace internal {
@@ -619,7 +619,7 @@ public:
             internal_reserve(n, sizeof(T), max_size());
     }
 
-    //! Optimize memory usage and fragmentation. Returns true if optimization occurred.
+    //! Optimize memory usage and fragmentation.
     void compact();
 
     //! Upper bound on argument to reserve.
diff --git a/include/tbb/parallel_do.h b/include/tbb/parallel_do.h
index 2e7339d..922c968 100644
--- a/include/tbb/parallel_do.h
+++ b/include/tbb/parallel_do.h
@@ -279,7 +279,6 @@ namespace internal {
     template<typename Iterator, typename Body, typename Item>
     class do_task_iter: public task
     {
-        //typedef typename std::iterator_traits<Iterator>::value_type Item;
         typedef parallel_do_feeder_impl<Body, Item> feeder_type;
 
     public:
diff --git a/include/tbb/scalable_allocator.h b/include/tbb/scalable_allocator.h
index ef4bd48..68d4412 100644
--- a/include/tbb/scalable_allocator.h
+++ b/include/tbb/scalable_allocator.h
@@ -87,6 +87,16 @@ void __TBB_EXPORTED_FUNC scalable_aligned_free (void* ptr);
 
 #include <new>      /* To use new with the placement argument */
 
+/* Ensure that including this header does not cause implicit linkage with TBB */
+#ifndef __TBB_NO_IMPLICIT_LINKAGE
+    #define __TBB_NO_IMPLICIT_LINKAGE 1
+    #include "tbb_stddef.h"
+    #undef  __TBB_NO_IMPLICIT_LINKAGE
+#else
+    #include "tbb_stddef.h"
+#endif
+
+
 namespace tbb {
 
 #if _MSC_VER && !defined(__INTEL_COMPILER)
@@ -102,11 +112,11 @@ namespace tbb {
 template<typename T>
 class scalable_allocator {
 public:
-    typedef T* pointer;
-    typedef const T* const_pointer;
-    typedef T& reference;
-    typedef const T& const_reference;
-    typedef T value_type;
+    typedef typename internal::allocator_type<T>::value_type value_type;
+    typedef value_type* pointer;
+    typedef const value_type* const_pointer;
+    typedef value_type& reference;
+    typedef const value_type& const_reference;
     typedef size_t size_type;
     typedef ptrdiff_t difference_type;
     template<class U> struct rebind {
@@ -132,11 +142,11 @@ public:
 
     //! Largest value for which method allocate might succeed.
     size_type max_size() const throw() {
-        size_type absolutemax = static_cast<size_type>(-1) / sizeof (T);
+        size_type absolutemax = static_cast<size_type>(-1) / sizeof (value_type);
         return (absolutemax > 0 ? absolutemax : 1);
     }
-    void construct( pointer p, const T& val ) { new(static_cast<void*>(p)) T(val); }
-    void destroy( pointer p ) {p->~T();}
+    void construct( pointer p, const value_type& val ) { new(static_cast<void*>(p)) value_type(val); }
+    void destroy( pointer p ) {p->~value_type();}
 };
 
 #if _MSC_VER && !defined(__INTEL_COMPILER)
diff --git a/include/tbb/tbb_allocator.h b/include/tbb/tbb_allocator.h
index 703d481..d747427 100644
--- a/include/tbb/tbb_allocator.h
+++ b/include/tbb/tbb_allocator.h
@@ -65,11 +65,11 @@ namespace internal {
 template<typename T>
 class tbb_allocator {
 public:
-    typedef T* pointer;
-    typedef const T* const_pointer;
-    typedef T& reference;
-    typedef const T& const_reference;
-    typedef T value_type;
+    typedef typename internal::allocator_type<T>::value_type value_type;
+    typedef value_type* pointer;
+    typedef const value_type* const_pointer;
+    typedef value_type& reference;
+    typedef const value_type& const_reference;
     typedef size_t size_type;
     typedef ptrdiff_t difference_type;
     template<typename U> struct rebind {
@@ -91,7 +91,7 @@ public:
     
     //! Allocate space for n objects.
     pointer allocate( size_type n, const void* /*hint*/ = 0) {
-        return pointer(internal::allocate_via_handler_v3( n * sizeof(T) ));
+        return pointer(internal::allocate_via_handler_v3( n * sizeof(value_type) ));
     }
 
     //! Free previously allocated block of memory.
@@ -101,15 +101,15 @@ public:
 
     //! Largest value for which method allocate might succeed.
     size_type max_size() const throw() {
-        size_type max = static_cast<size_type>(-1) / sizeof (T);
+        size_type max = static_cast<size_type>(-1) / sizeof (value_type);
         return (max > 0 ? max : 1);
     }
     
     //! Copy-construct value at location pointed to by p.
-    void construct( pointer p, const T& value ) {new(static_cast<void*>(p)) T(value);}
+    void construct( pointer p, const value_type& value ) {new(static_cast<void*>(p)) value_type(value);}
 
     //! Destroy value at location pointed to by p.
-    void destroy( pointer p ) {p->~T();}
+    void destroy( pointer p ) {p->~value_type();}
 
     //! Returns current allocator
     static malloc_type allocator_type() {
diff --git a/include/tbb/tbb_stddef.h b/include/tbb/tbb_stddef.h
index 7b36b32..b21c70d 100644
--- a/include/tbb/tbb_stddef.h
+++ b/include/tbb/tbb_stddef.h
@@ -34,7 +34,7 @@
 #define TBB_VERSION_MINOR 1
 
 // Engineering-focused interface version
-#define TBB_INTERFACE_VERSION 3015
+#define TBB_INTERFACE_VERSION 3016
 #define TBB_INTERFACE_VERSION_MAJOR TBB_INTERFACE_VERSION/1000
 
 // The oldest major interface version still supported
@@ -295,6 +295,20 @@ public:
     no_copy() {}
 };
 
+//! Class for determining type of std::allocator<T>::value_type.
+template<typename T>
+struct allocator_type {
+    typedef T value_type;
+};
+
+#if _WIN32||_WIN64
+//! Microsoft std::allocator has non-standard extension that strips const from a type. 
+template<typename T>
+struct allocator_type<const T> {
+    typedef T value_type;
+};
+#endif /* _WIN32||_WIN64 */
+
 // Struct to be used as a version tag for inline functions.
 /** Version tag can be necessary to prevent loader on Linux from using the wrong 
     symbol in debug builds (when inline functions are compiled as out-of-line). **/
diff --git a/src/index.html b/src/index.html
index 121c99f..e45ad68 100644
--- a/src/index.html
+++ b/src/index.html
@@ -7,11 +7,13 @@ This directory contains the source code and unit tests for Threading Building Bl
 <H2>Directories</H2>
 <DL>
 <DT><A HREF="tbb">tbb</A>
-<DD>Source code for TBB.
+<DD>Source code of the TBB library core.
 <DT><A HREF="tbbmalloc">tbbmalloc</A>
-<DD>Source code for TBB scalable memory allocator.
+<DD>Source code of the TBB scalable memory allocator.
 <DT><A HREF="test">test</A>
-<DD>Source code for unit tests.
+<DD>Source code of the TBB unit tests.
+<DT><A HREF="old">old</A>
+<DD>Source code of deprecated TBB entities that are still shipped as part of the TBB library for the sake of backward compatibility.
 </DL>
 
 <HR>
diff --git a/src/perf/harness_barrier.h b/src/perf/harness_barrier.h
deleted file mode 100644
index 8155ea7..0000000
--- a/src/perf/harness_barrier.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
-    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
-*/
-
-#include "tbb/atomic.h"
-#include "../tbb/tbb_misc.h"
-
-#ifndef harness_barrier_H
-#define harness_barrier_H
-
-class spin_barrier
-{
-    unsigned numThreads;
-    tbb::atomic<unsigned> numThreadsFinished; /* threads reached barrier in this epoch */
-    tbb::atomic<unsigned> epoch;   /* how many times this barrier used - XXX move to a separate cache line */
-
-public:
-    spin_barrier( unsigned nthreads ) { initialize(nthreads); };
-
-    void initialize( unsigned nthreads ) {
-        numThreads = nthreads;
-        numThreadsFinished = 0;
-        epoch = 0;
-    };
-
-    bool wait()
-    { // return true if last thread
-        unsigned myEpoch = epoch;
-        int threadsLeft = numThreads - numThreadsFinished.fetch_and_increment() - 1;
-        ASSERT(threadsLeft>=0, "Broken barrier");
-        if (threadsLeft > 0) {
-            /* not the last threading reaching barrier, wait until epoch changes & return 0 */
-            tbb::internal::SpinwaitWhileEq(epoch, myEpoch);
-            return false;
-        }
-        /* No more threads left to enter, so I'm the last one reaching this epoch;
-           reset the barrier, increment epoch, and return non-zero */
-        numThreadsFinished = 0;
-        epoch = myEpoch+1; /* wakes up threads waiting to exit this epoch */
-        return true;
-    };
-};
-
-#endif //harness_barrier_H
diff --git a/src/tbb/concurrent_queue.cpp b/src/tbb/concurrent_queue.cpp
index 9ae2bf1..4b8c2ab 100644
--- a/src/tbb/concurrent_queue.cpp
+++ b/src/tbb/concurrent_queue.cpp
@@ -179,7 +179,7 @@ public:
 #else /* !__TBB_NO_BUSY_WAIT_IN_CONCURRENT_QUEUE */
     atomic<ticket> head_counter;
     atomic<size_t> n_invalid_entries;
-    char pad1[NFS_MaxLineSize-sizeof(atomic<ticket)-sizeof(size_t)>];
+    char pad1[NFS_MaxLineSize-sizeof(atomic<ticket>)-sizeof(size_t)];
     atomic<ticket> tail_counter;
     char pad2[NFS_MaxLineSize-sizeof(atomic<ticket>)];
 #endif /* __TBB_NO_BUSY_WAIT_IN_CONCURRENT_QUEUE */
@@ -334,7 +334,7 @@ concurrent_queue_base::page* micro_queue::make_copy( concurrent_queue_base& base
     new_page->mask = src_page->mask;
     for( ; begin_in_page!=end_in_page; ++begin_in_page, ++g_index )
         if( new_page->mask & uintptr(1)<<begin_in_page )
-            base.copy_item( *new_page, begin_in_page, *src_page, begin_in_page );
+            base.copy_page_item( *new_page, begin_in_page, *src_page, begin_in_page );
     return new_page;
 }
 
@@ -426,7 +426,7 @@ concurrent_queue_base_v3::~concurrent_queue_base_v3() {
 void concurrent_queue_base_v3::internal_push( const void* src ) {
     concurrent_queue_rep& r = *my_rep;
 #if !__TBB_NO_BUSY_WAIT_IN_CONCURRENT_QUEUE
-    concurrent_queue_rep::ticket k  = r.tail_counter++;
+    ticket k  = r.tail_counter++;
     ptrdiff_t e = my_capacity;
     if( e<concurrent_queue_rep::infinite_capacity ) {
         AtomicBackoff backoff;
@@ -535,7 +535,7 @@ void concurrent_queue_base_v3::internal_push( const void* src ) {
 void concurrent_queue_base_v3::internal_pop( void* dst ) {
     concurrent_queue_rep& r = *my_rep;
 #if !__TBB_NO_BUSY_WAIT_IN_CONCURRENT_QUEUE
-    concurrent_queue_rep::ticket k;
+    ticket k;
     do {
         k = r.head_counter++;
     } while( !r.choose(k).pop(dst,k,*this) );
diff --git a/src/tbb/tbb_assert_impl.h b/src/tbb/tbb_assert_impl.h
index cfbded6..abf0dfd 100644
--- a/src/tbb/tbb_assert_impl.h
+++ b/src/tbb/tbb_assert_impl.h
@@ -91,8 +91,8 @@ namespace tbb {
         {
             char str[1024]; memset(str, 0, 1024);
             va_list args; va_start(args, format);
-            vsnprintf( str, 1024-1, format, args);
-            fprintf( stderr, "TBB Warning: %s\n", str);
+            vsnprintf(str, 1024-1, format, args);
+            fprintf(stderr, "TBB Warning: %s\n", str);
         }
     } // namespace internal
 
diff --git a/src/tbbmalloc/Customize.h b/src/tbbmalloc/Customize.h
index afa7a78..e9cb824 100644
--- a/src/tbbmalloc/Customize.h
+++ b/src/tbbmalloc/Customize.h
@@ -106,4 +106,8 @@ namespace internal {
 // To support malloc replacement with LD_PRELOAD
 #include "proxy.h"
 
+#if MALLOC_LD_PRELOAD
+extern "C" void * __TBB_malloc_proxy(size_t)  __attribute__ ((weak));
+#endif
+
 #endif /* _TBB_malloc_Customize_H_ */
diff --git a/src/tbbmalloc/MemoryAllocator.cpp b/src/tbbmalloc/MemoryAllocator.cpp
index 23b0a5f..535c4f7 100644
--- a/src/tbbmalloc/MemoryAllocator.cpp
+++ b/src/tbbmalloc/MemoryAllocator.cpp
@@ -53,6 +53,7 @@
 #include <stdio.h>
 #include <string.h>
 #include <errno.h>
+#include <stdlib.h>
 
 /********* Various compile-time options        **************/
 
@@ -81,11 +82,10 @@
 // As of 06.Jun.17, using malloc is about 10x faster on Linux.
 #define USE_MALLOC_FOR_LARGE_OBJECT 1
 
-#if USE_MALLOC_FOR_LARGE_OBJECT
-#include <stdlib.h>
-#else
-extern "C" void exit( int ); /* to not include stdlib.h */
-#endif
+extern "C" {
+    void * scalable_malloc(size_t size);
+    void   scalable_free(void *object);
+}
 
 /********* End compile-time options        **************/
 
@@ -121,10 +121,7 @@ public:
 
 MallocMutex recursive_malloc_call_protector::rmc_mutex;
 
-extern "C" void __TBB_internal_malloc_proxy(size_t)  __attribute__ ((weak));
-extern "C" {
-static void (*malloc_proxy)(size_t) = __TBB_internal_malloc_proxy;
-}
+#define malloc_proxy __TBB_malloc_proxy
 
 #else /* MALLOC_LD_PRELOAD */
 class recursive_malloc_call_protector {
@@ -1357,7 +1354,7 @@ static void *reallocAligned(void *ptr, size_t size, size_t alignment = 0)
         LargeObjectHeader* loh = (LargeObjectHeader *)((uintptr_t)ptr - sizeof(LargeObjectHeader));
         MALLOC_ASSERT( loh->mallocUniqueID==theMallocUniqueID, ASSERT_TEXT );
         copySize = loh->unalignedSize-((uintptr_t)ptr-(uintptr_t)loh->unalignedResult);
-        if (size <= copySize) {
+        if (size <= copySize && (0==alignment || isAligned(ptr, alignment))) {
             loh->objectSize = size;
             return ptr;
         } else {
@@ -1368,7 +1365,7 @@ static void *reallocAligned(void *ptr, size_t size, size_t alignment = 0)
         Block* block = (Block *)alignDown(ptr, blockSize);
         MALLOC_ASSERT( block->mallocUniqueID==theMallocUniqueID, ASSERT_TEXT );
         copySize = block->objectSize;
-        if (size <= copySize) {
+        if (size <= copySize && (0==alignment || isAligned(ptr, alignment))) {
             return ptr;
         } else {
             result = alignment ? allocateAligned(size, alignment) : scalable_malloc(size);
@@ -1472,20 +1469,12 @@ extern "C" void mallocThreadShutdownNotification(void* arg)
         setThreadMallocTLS(NULL);
     }
 
-#ifndef USE_WINTHREAD
-// on Windows,  all statistics will be flushed in mallocProcessShutdownNotification
-#if COLLECT_STATISTICS
-    STAT_print(getThreadId());
-#endif
-#endif
-
     TRACEF(( "[ScalableMalloc trace] Thread id %d blocks return end\n", getThreadId() ));
 }
 
 extern "C" void mallocProcessShutdownNotification(void)
 {
     // for now, this function is only necessary for dumping statistics
-    // and it should only be called on Windows via DLL_PROCESS_DETACH
 #if COLLECT_STATISTICS
     ThreadId nThreads = ThreadIdCount;
     for( int i=1; i<=nThreads && i<MAX_THREADS; ++i )
@@ -1768,7 +1757,7 @@ extern "C" int scalable_posix_memalign(void **memptr, size_t alignment, size_t s
 
 extern "C" void * scalable_aligned_malloc(size_t size, size_t alignment)
 {
-    if (!isPowerOfTwo(alignment)) {
+    if (!isPowerOfTwo(alignment) || 0==size) {
         errno = EINVAL;
         return NULL;
     }
@@ -1787,6 +1776,13 @@ extern "C" void * scalable_aligned_realloc(void *ptr, size_t size, size_t alignm
     if (!ptr) {
         return allocateAligned(size, alignment);
     }
+    // Check if the memory was allocated by scalable_malloc
+    uint64_t id = isLargeObject(ptr)?
+                    ((LargeObjectHeader*)((uintptr_t)ptr-sizeof(LargeObjectHeader)))->mallocUniqueID:
+                    ((Block *)alignDown(ptr, blockSize))->mallocUniqueID;
+    if (id!=theMallocUniqueID)
+        return NULL;
+
     if (!size) {
         scalable_free(ptr);
         return NULL;
diff --git a/src/tbbmalloc/Statistics.h b/src/tbbmalloc/Statistics.h
index 62e1bf0..b18dd4d 100644
--- a/src/tbbmalloc/Statistics.h
+++ b/src/tbbmalloc/Statistics.h
@@ -54,6 +54,9 @@ enum common_counter_type {
 };
 
 #if COLLECT_STATISTICS
+/* Statistics reporting callback registred via a static object dtor
+   on Posix or DLL_PROCESS_DETACH on Windows.
+ */
 
 struct bin_counters {
     int counter[MaxCounters];
@@ -63,10 +66,10 @@ static bin_counters statistic[MAX_THREADS][NUM_OF_BINS+1]; //zero-initialized;
 
 static inline int STAT_increment(int thread, int bin, int ctr)
 {
-    return ++(statistic[thread][bin].counter[ctr]);
+    return thread < MAX_THREADS ? ++(statistic[thread][bin].counter[ctr]) : 0;
 }
 #else
-#define STAT_increment(a,b,c) ((int)0)
+#define STAT_increment(a,b,c) ((int)a)
 #endif
 
 static inline void STAT_print(int thread)
diff --git a/src/tbbmalloc/lin32-proxy-export.def b/src/tbbmalloc/lin32-proxy-export.def
index e5188dc..39799c7 100644
--- a/src/tbbmalloc/lin32-proxy-export.def
+++ b/src/tbbmalloc/lin32-proxy-export.def
@@ -38,7 +38,7 @@ valloc;
 pvalloc;
 mallinfo;
 mallopt;
-__TBB_internal_malloc_proxy;
+__TBB_malloc_proxy;
 __TBB_internal_find_original_malloc;
 _ZdaPv; /* next ones are new/delete */
 _ZdaPvRKSt9nothrow_t;
diff --git a/src/tbbmalloc/lin64-proxy-export.def b/src/tbbmalloc/lin64-proxy-export.def
index 989521d..dc9ceb4 100644
--- a/src/tbbmalloc/lin64-proxy-export.def
+++ b/src/tbbmalloc/lin64-proxy-export.def
@@ -38,7 +38,7 @@ valloc;
 pvalloc;
 mallinfo;
 mallopt;
-__TBB_internal_malloc_proxy;
+__TBB_malloc_proxy;
 __TBB_internal_find_original_malloc;
 _ZdaPv;  /* next ones are new/delete */
 _ZdaPvRKSt9nothrow_t;
diff --git a/src/tbbmalloc/lin64ipf-proxy-export.def b/src/tbbmalloc/lin64ipf-proxy-export.def
index 989521d..dc9ceb4 100644
--- a/src/tbbmalloc/lin64ipf-proxy-export.def
+++ b/src/tbbmalloc/lin64ipf-proxy-export.def
@@ -38,7 +38,7 @@ valloc;
 pvalloc;
 mallinfo;
 mallopt;
-__TBB_internal_malloc_proxy;
+__TBB_malloc_proxy;
 __TBB_internal_find_original_malloc;
 _ZdaPv;  /* next ones are new/delete */
 _ZdaPvRKSt9nothrow_t;
diff --git a/src/tbbmalloc/proxy.cpp b/src/tbbmalloc/proxy.cpp
index d1309fa..4264fe4 100644
--- a/src/tbbmalloc/proxy.cpp
+++ b/src/tbbmalloc/proxy.cpp
@@ -57,11 +57,11 @@ extern "C" bool __TBB_internal_find_original_malloc(int num, const char *names[]
     return true;
 }
 
-/* __TBB_internal_malloc_proxy used as a weak symbol by libtbbmalloc for: 
+/* __TBB_malloc_proxy used as a weak symbol by libtbbmalloc for: 
    1) detection that the proxy library is loaded
    2) check that dlsym("malloc") found something different from our replacement malloc
 */
-extern "C" void __TBB_internal_malloc_proxy() __attribute__ ((alias ("malloc")));
+extern "C" void *__TBB_malloc_proxy() __attribute__ ((alias ("malloc")));
 
 #ifndef __THROW
 #define __THROW
diff --git a/src/tbbmalloc/proxy.h b/src/tbbmalloc/proxy.h
index ff12deb..15c25a9 100644
--- a/src/tbbmalloc/proxy.h
+++ b/src/tbbmalloc/proxy.h
@@ -41,6 +41,7 @@ extern "C" {
     void   scalable_free(void *object);
     void * scalable_realloc(void* ptr, size_t size);
     void * scalable_aligned_malloc(size_t size, size_t alignment);
+    void * scalable_aligned_realloc(void* ptr, size_t size, size_t alignment);
     int    scalable_posix_memalign(void **memptr, size_t alignment, size_t size);
 
     void * __TBB_internal_malloc(size_t size);
diff --git a/src/tbbmalloc/tbbmalloc.cpp b/src/tbbmalloc/tbbmalloc.cpp
index 8796ada..02a9a11 100644
--- a/src/tbbmalloc/tbbmalloc.cpp
+++ b/src/tbbmalloc/tbbmalloc.cpp
@@ -49,11 +49,10 @@ void * safer_scalable_realloc( void*, size_t, void* (*)(void*,size_t) );
 
 bool __TBB_internal_find_original_malloc(int num, const char *names[], void *table[])  __attribute__ ((weak));
 
-void * __TBB_internal_malloc_proxy(size_t)  __attribute__ ((weak));
-static void * (*malloc_proxy)(size_t) = __TBB_internal_malloc_proxy;
-
 }
 
+#define malloc_proxy __TBB_malloc_proxy
+
 void* (*original_malloc_ptr)(size_t) = 0;
 void  (*original_free_ptr)(void*) = 0;
 static void* (*original_calloc_ptr)(size_t,size_t) = 0;
@@ -84,7 +83,7 @@ void MallocInitializeITT() {
 
 void init_tbbmalloc() {
 #if MALLOC_LD_PRELOAD
-    if (malloc_proxy) {
+    if (malloc_proxy && __TBB_internal_find_original_malloc) {
         const char *alloc_names[] = { "malloc", "free", "realloc", "calloc"};
         void *orig_alloc_ptrs[4];
 
@@ -108,6 +107,16 @@ void init_tbbmalloc() {
 #endif
 }
 
+#if !(_WIN32||_WIN64)
+struct RegisterProcessShutdownNotification {
+    ~RegisterProcessShutdownNotification() {
+        mallocProcessShutdownNotification();
+    }
+};
+
+static RegisterProcessShutdownNotification reg;
+#endif
+
 } } // namespaces
 
 #ifdef _WIN32
@@ -165,7 +174,7 @@ void * __TBB_internal_malloc(size_t size)
         return (void*)scalable_malloc(size);
     }
 }
-   
+
 void * __TBB_internal_calloc(size_t num, size_t size)
 {
     if ( underRecursiveMallocFlag() ) {
diff --git a/src/test/harness.h b/src/test/harness.h
index 95b70b4..603eca9 100644
--- a/src/test/harness.h
+++ b/src/test/harness.h
@@ -48,6 +48,10 @@
 #else
     #include <pthread.h>
 #endif
+#if __linux__
+#include <sys/utsname.h> /* for uname */
+#include <errno.h>       /* for use in LinuxKernelVersion() */
+#endif
 
 #if !HARNESS_NO_ASSERT
 #include "harness_assert.h"
@@ -262,3 +266,21 @@ void zero_fill(void* array, size_t N) {
         return val1 < val2 ? val2 : val1;
     }
 #endif /* !max */
+
+#if __linux__
+inline unsigned LinuxKernelVersion()
+{
+    unsigned a, b, c;
+    struct utsname utsnameBuf;
+
+    if (-1 == uname(&utsnameBuf)) {
+        printf("Can't call uname: errno %d\n", errno);
+        exit(1);
+    }
+    if (3 != sscanf(utsnameBuf.release, "%u.%u.%u", &a, &b, &c)) {
+        printf("Unable to parse OS release '%s'\n", utsnameBuf.release);
+        exit(1);
+    }
+    return 1000000*a+1000*b+c;
+}
+#endif
diff --git a/src/test/test_ScalableAllocator.cpp b/src/test/test_ScalableAllocator.cpp
index 1b0ef51..6c58bbc 100644
--- a/src/test/test_ScalableAllocator.cpp
+++ b/src/test/test_ScalableAllocator.cpp
@@ -28,12 +28,6 @@
 
 // Test whether scalable_allocator complies with the requirements in 20.1.5 of ISO C++ Standard (1998).
 
-/* to avoid dependency on TBB shared library, the following macro should be
-   defined to non-zero _before_ including any TBB or test harness headers.
-   Also tbb_assert_impl.h from src/tbb should be included right after */
-#define __TBB_NO_IMPLICIT_LINKAGE 1
-#include "../tbb/tbb_assert_impl.h"
-
 #define HARNESS_NO_PARSE_COMMAND_LINE 1
 
 #include "tbb/scalable_allocator.h"
@@ -47,7 +41,7 @@
 
 int main(void)
 {
-#if _MSC_VER && !__TBB_NO_IMPLICIT_LINKAGE
+#if _MSC_VER && !__TBBMALLOC_NO_IMPLICIT_LINKAGE
     #ifdef _DEBUG
         ASSERT(!GetModuleHandle("tbbmalloc.dll") && GetModuleHandle("tbbmalloc_debug.dll"),
             "debug application links with non-debug tbbmalloc library");
@@ -55,7 +49,7 @@ int main(void)
         ASSERT(!GetModuleHandle("tbbmalloc_debug.dll") && GetModuleHandle("tbbmalloc.dll"),
             "non-debug application links with debug tbbmalloc library");
     #endif
-#endif /* _MSC_VER && !__TBB_NO_IMPLICIT_LINKAGE */
+#endif /* _MSC_VER && !__TBBMALLOC_NO_IMPLICIT_LINKAGE */
     int result = TestMain<tbb::scalable_allocator<void> >();
     printf("done\n");
     return result;
diff --git a/src/test/test_ScalableAllocator_STL.cpp b/src/test/test_ScalableAllocator_STL.cpp
index 08c8c34..4b1397f 100644
--- a/src/test/test_ScalableAllocator_STL.cpp
+++ b/src/test/test_ScalableAllocator_STL.cpp
@@ -28,26 +28,14 @@
 
 // Test whether scalable_allocator works with some of the host's STL containers.
 
-/* to avoid dependency on TBB shared library, the following macro should be
-   defined to non-zero _before_ including any TBB or test harness headers.
-   Also tbb_assert_impl.h from src/tbb should be included right after */
-#define __TBB_NO_IMPLICIT_LINKAGE 1
-#include "../tbb/tbb_assert_impl.h"
-
 #define HARNESS_NO_PARSE_COMMAND_LINE 1
 #include "tbb/scalable_allocator.h"
 
-// the actual body of the test is there:
-#include "test/test_allocator.h"
-
-#include <vector>
-#include <list>
-#include <deque>
+// The actual body of the test is there:
+#include "test_allocator_STL.h"
 
 int main() {
-    TestContainer<std::vector<int,tbb::scalable_allocator<int> > >();
-    TestContainer<std::list<int,tbb::scalable_allocator<int> > >();
-    TestContainer<std::deque<int,tbb::scalable_allocator<int> > >();
+    TestAllocatorWithSTL<tbb::scalable_allocator>();
     printf("done\n");
     return 0;
 }
diff --git a/src/test/test_allocator.h b/src/test/test_allocator.h
index 90f7db4..87d6de3 100644
--- a/src/test/test_allocator.h
+++ b/src/test/test_allocator.h
@@ -211,14 +211,3 @@ int TestMain() {
     return 0;
 }
 
-template<typename Container>
-void TestContainer() {
-    Container c;
-    for( int i=0; i<1000; ++i )
-        c.push_back(i*i);    
-    typename Container::const_iterator p = c.begin();
-    for( int i=0; i<1000; ++i ) {
-        ASSERT( *p==i*i, NULL );
-        ++p;
-    }
-}
diff --git a/src/test/test_allocator_STL.h b/src/test/test_allocator_STL.h
new file mode 100644
index 0000000..caa81f5
--- /dev/null
+++ b/src/test/test_allocator_STL.h
@@ -0,0 +1,100 @@
+/*
+    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks.
+
+    Threading Building Blocks is free software; you can redistribute it
+    and/or modify it under the terms of the GNU General Public License
+    version 2 as published by the Free Software Foundation.
+
+    Threading Building Blocks is distributed in the hope that it will be
+    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with Threading Building Blocks; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+    As a special exception, you may use this file as part of a free software
+    library without restriction.  Specifically, if other files instantiate
+    templates or use macros or inline functions from this file, or you compile
+    this file and link it with other files to produce an executable, this
+    file does not by itself cause the resulting executable to be covered by
+    the GNU General Public License.  This exception does not however
+    invalidate any other reasons why the executable file might be covered by
+    the GNU General Public License.
+*/
+
+// Tests for compatibility with the host's STL.
+
+#include "harness.h"
+
+template<typename Container>
+void TestSequence() {
+    Container c;
+    for( int i=0; i<1000; ++i )
+        c.push_back(i*i);    
+    typename Container::const_iterator p = c.begin();
+    for( int i=0; i<1000; ++i ) {
+        ASSERT( *p==i*i, NULL );
+        ++p;
+    }
+}
+
+template<typename Set>
+void TestSet() {
+    Set s;
+    typedef typename Set::value_type value_type;
+    for( int i=0; i<100; ++i ) 
+        s.insert(value_type(3*i));
+    for( int i=0; i<300; ++i ) {
+        ASSERT( s.erase(i)==size_t(i%3==0), NULL );
+    }
+}
+
+template<typename Map>
+void TestMap() {
+    Map m;
+    typedef typename Map::value_type value_type;
+    for( int i=0; i<100; ++i ) 
+        m.insert(value_type(i,i*i));
+    for( int i=0; i<100; ++i )
+        ASSERT( m.find(i)->second==i*i, NULL );
+}
+
+#include <deque>
+#include <list>
+#include <map>
+#include <set>
+#include <vector>
+
+template<template<typename T> class Allocator>
+void TestAllocatorWithSTL() {
+    // Sequenced containers
+    TestSequence<std::deque <int,Allocator<int> > >();
+    TestSequence<std::list  <int,Allocator<int> > >();
+    TestSequence<std::vector<int,Allocator<int> > >();
+
+    // Associative containers
+    TestSet<std::set     <int, std::less<int>, Allocator<int> > >();
+    TestSet<std::multiset<int, std::less<int>, Allocator<int> > >();
+    TestMap<std::map     <int, int, std::less<int>, Allocator<std::pair<const int,int> > > >();
+    TestMap<std::multimap<int, int, std::less<int>, Allocator<std::pair<const int,int> > > >();
+
+#if _WIN32||_WIN64
+    // Test compatibility with Microsoft's implementation of std::allocator for some cases that
+    // are undefined according to the ISO standard but permitted by Microsoft.
+    TestSequence<std::deque <const int,Allocator<const int> > >();
+#if _CPPLIB_VER>=500
+    TestSequence<std::list  <const int,Allocator<const int> > >();
+#endif /* _CPPLIB_VER>=500 */
+    TestSequence<std::vector<const int,Allocator<const int> > >();
+    TestSet<std::set<const int, std::less<int>, Allocator<const int> > >();
+    TestMap<std::map<int, int, std::less<int>, Allocator<std::pair<int,int> > > >();
+    TestMap<std::map<const int, int, std::less<int>, Allocator<std::pair<const int,int> > > >();
+    TestMap<std::multimap<int, int, std::less<int>, Allocator<std::pair<int,int> > > >();
+    TestMap<std::multimap<const int, int, std::less<int>, Allocator<std::pair<const int,int> > > >();
+#endif /* _WIN32||_WIN64 */
+}
+
diff --git a/src/test/test_cache_aligned_allocator_STL.cpp b/src/test/test_cache_aligned_allocator_STL.cpp
index b806ed2..abf33db 100644
--- a/src/test/test_cache_aligned_allocator_STL.cpp
+++ b/src/test/test_cache_aligned_allocator_STL.cpp
@@ -32,21 +32,11 @@
 #include "tbb/tbb_allocator.h"
 
 #define HARNESS_NO_PARSE_COMMAND_LINE 1
-#include "test_allocator.h"
-
-// Test whether an allocator works with some of the host's STL containers.
-
-#include <vector>
-#include <list>
-#include <deque>
+#include "test_allocator_STL.h"
 
 int main() {
-    TestContainer<std::vector<int,tbb::cache_aligned_allocator<int> > >();
-    TestContainer<std::vector<int,tbb::tbb_allocator<int> > >();    
-    TestContainer<std::list<int,tbb::cache_aligned_allocator<int> > >();
-    TestContainer<std::list<int,tbb::tbb_allocator<int> > >();
-    TestContainer<std::deque<int,tbb::cache_aligned_allocator<int> > >();
-    TestContainer<std::deque<int,tbb::tbb_allocator<int> > >();
+    TestAllocatorWithSTL<tbb::cache_aligned_allocator>();
+    TestAllocatorWithSTL<tbb::tbb_allocator>();
     printf("done\n");
     return 0;
 }
diff --git a/src/test/test_malloc_compliance.cpp b/src/test/test_malloc_compliance.cpp
index 6057d3d..598677e 100644
--- a/src/test/test_malloc_compliance.cpp
+++ b/src/test/test_malloc_compliance.cpp
@@ -26,57 +26,78 @@
     the GNU General Public License.
 */
 
-#define MByte 1048576 //1MB
+const int MByte = 1048576; //1MB
 
+/* _WIN32_WINNT should be defined at the very beginning, 
+   because other headers might include <windows.h>
+*/
 #if _WIN32 || _WIN64
 #undef _WIN32_WINNT
 #define _WIN32_WINNT 0x0500
 #include <windows.h>
+#include <stdio.h>
+
 void limitMem( int limit )
 {
+    static HANDLE hJob = NULL;
     JOBOBJECT_EXTENDED_LIMIT_INFORMATION jobInfo;
+
     jobInfo.BasicLimitInformation.LimitFlags = JOB_OBJECT_LIMIT_PROCESS_MEMORY;
-    jobInfo.ProcessMemoryLimit = limit*MByte;
-    HANDLE hJob = CreateJobObject(NULL, NULL);
-    AssignProcessToJobObject(hJob, GetCurrentProcess());
-    SetInformationJobObject(hJob, JobObjectExtendedLimitInformation, &jobInfo, sizeof(jobInfo));
+    jobInfo.ProcessMemoryLimit = limit? limit*MByte : 2*1024LL*MByte;
+    if (NULL == hJob) {
+        if (NULL == (hJob = CreateJobObject(NULL, NULL))) {
+            printf("Can't assign create job object: %d\n", GetLastError());
+            exit(1);
+        }
+        if (0 == AssignProcessToJobObject(hJob, GetCurrentProcess())) {
+            printf("Can't assign process to job object: %d\n", GetLastError());
+            exit(1);
+        }
+    }
+    if (0 == SetInformationJobObject(hJob, JobObjectExtendedLimitInformation, 
+                                     &jobInfo, sizeof(jobInfo))) {
+        printf("Can't set limits: %d\n", GetLastError());
+        exit(1);
+    }
 }
 #else
 #include <sys/resource.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <errno.h>
+
 void limitMem( int limit )
 {
     rlimit rlim;
-    rlim.rlim_cur = limit*MByte;
-    rlim.rlim_max = limit*MByte;
-    setrlimit(RLIMIT_AS,&rlim);
+    rlim.rlim_cur = limit? limit*MByte : (rlim_t)RLIM_INFINITY;
+    rlim.rlim_max = (rlim_t)RLIM_INFINITY;
+    int ret = setrlimit(RLIMIT_AS,&rlim);
+    if (0 != ret) {
+        printf("Can't set limits: errno %d\n", errno);
+        exit(1);
+    }
 }
 #endif 
 
 #include <time.h>
 #include <errno.h>
 #include <vector>
-#include "tbb/scalable_allocator.h"
-
-/* to avoid dependency on TBB shared library, the following macro should be
-   defined to non-zero _before_ including any TBB or test harness headers.
-   Also tbb_assert_impl.h from src/tbb should be included right after */
 #define __TBB_NO_IMPLICIT_LINKAGE 1
-#include "../tbb/tbb_assert_impl.h"
+#include "tbb/scalable_allocator.h"
 
 #include "harness.h"
 #if __linux__
 #include <stdint.h> // uintptr_t
 #endif
+#if _WIN32 || _WIN64
+#include <malloc.h> // _aligned_(malloc|free|realloc)
+#endif
 
-#define COUNT_ELEM_CALLOC 2
-#define COUNT_TESTS 1000
-
-#define COUNT_ELEM 50000
-#define MAX 1000
-#define APPROACHES 100
-#define COUNTEXPERIMENT 10000
-#define MB 25
-#define MB_MAX 500
+const size_t COUNT_ELEM_CALLOC = 2;
+const int COUNT_TESTS = 1000;
+const int COUNT_ELEM = 50000;
+const size_t MAX_SIZE = 1000;
+const int COUNTEXPERIMENT = 10000;
 
 const char strError[]="failed";
 const char strOk[]="done";
@@ -91,50 +112,71 @@ typedef void* TestMalloc(size_t size);
 typedef void* TestCalloc(size_t num, size_t size);
 typedef void* TestRealloc(void* memblock, size_t size);
 typedef void  TestFree(void* memblock);
+typedef int   TestPosixMemalign(void **memptr, size_t alignment, size_t size);
+typedef void* TestAlignedMalloc(size_t size, size_t alignment);
+typedef void* TestAlignedRealloc(void* memblock, size_t size, size_t alignment);
+typedef void  TestAlignedFree(void* memblock);
 
 TestMalloc*  Tmalloc;
 TestCalloc*  Tcalloc;
 TestRealloc* Trealloc;
 TestFree*    Tfree;
+TestAlignedFree* Taligned_free;
+// call alignment-related function via pointer and check result's alignment
+int   Tposix_memalign(void **memptr, size_t alignment, size_t size);
+void* Taligned_malloc(size_t size, size_t alignment);
+void* Taligned_realloc(void* memblock, size_t size, size_t alignment);
+
+// pointers to alignment-related functions used while testing
+TestPosixMemalign*  Rposix_memalign;
+TestAlignedMalloc*  Raligned_malloc;
+TestAlignedRealloc* Raligned_realloc;
 
 bool error_occurred = false;
 
+#if __APPLE__
+// Tests that use the variable are skipped on Mac OS* X
+#else
+static bool perProcessLimits = true;
+#endif
+
+const size_t POWERS_OF_2 = 20;
+
 struct MemStruct
 {
-  void* Pointer;
-  UINT Size;
+    void* Pointer;
+    UINT Size;
+
+    MemStruct() : Pointer(NULL), Size(0) {}
+    MemStruct(void* Pointer, UINT Size) : Pointer(Pointer), Size(Size) {}
 };
 
-class CMemTest
+class CMemTest: NoAssign
 {
-  UINT CountErrors;
-  bool FullLog;
-  static bool firstTime;
+    UINT CountErrors;
+    int total_threads;
+    bool FullLog;
+    static bool firstTime;
 
-  CMemTest& operator=(const CMemTest& x); 
 public:
-
-  CMemTest(bool isVerbose = false)
-  : CountErrors()
-  {
-    srand((UINT)time(NULL));
-    FullLog=isVerbose;
-    rand();
-  }
-  CMemTest(const CMemTest& x)
-      : CountErrors(x.CountErrors), FullLog(x.FullLog)
-  {}
-  
-  void ReallocParam(); // realloc with different parameters
-  void InvariantDataRealloc(); //realloc does not change data
-  void NULLReturn(UINT MinSize, UINT MaxSize); // NULL pointer + check errno
-  void UniquePointer(); // unique pointer - check with padding
-  void AddrArifm(); // unique pointer - check with pointer arithmetic
-  bool ShouldReportError();
-  void Free_NULL(); // 
-  void Zerofilling(); // check if arrays are zero-filled
-  void RunAllTests(int id);
-  ~CMemTest() {}
+    CMemTest(int total_threads,
+             bool isVerbose=false) :
+        CountErrors(0), total_threads(total_threads)
+        {
+            srand((UINT)time(NULL));
+            FullLog=isVerbose;
+            rand();
+        }
+    void InvariantDataRealloc(bool aligned); //realloc does not change data
+    void NULLReturn(UINT MinSize, UINT MaxSize); // NULL pointer + check errno
+    void UniquePointer(); // unique pointer - check with padding
+    void AddrArifm(); // unique pointer - check with pointer arithmetic
+    bool ShouldReportError();
+    void Free_NULL(); // 
+    void Zerofilling(); // check if arrays are zero-filled
+    void TestAlignedParameters();
+    void RunAllTests(int total_threads);
+    ~CMemTest() {}
 };
 
 int argC;
@@ -143,573 +185,591 @@ char** argV;
 struct RoundRobin: NoAssign {
     const long number_of_threads;
     mutable CMemTest test;
-    RoundRobin( long p, bool verbose ) : number_of_threads(p), test(verbose) {}
 
-    void operator()( int id ) const 
-    {
-        test.RunAllTests(id);
-    }
+    RoundRobin( long p, bool verbose ) :
+        number_of_threads(p), test(p, verbose) {}
+    void operator()( int /*id*/ ) const 
+        {
+            test.RunAllTests(number_of_threads);
+        }
 };
 
 bool CMemTest::firstTime = true;
 
-int main(int argc, char* argv[])
+static void setSystemAllocs()
 {
-  argC=argc;
-  argV=argv;
-  MaxThread = MinThread = 1;
-  Tmalloc=scalable_malloc;
-  Trealloc=scalable_realloc;
-  Tcalloc=scalable_calloc;
-  Tfree=scalable_free;
-  // check if we were called to test standard behavior
-  for (int i=1; i< argc; i++) {
-    if (strcmp((char*)*(argv+i),"-s")==0)
+    Tmalloc=malloc;
+    Trealloc=realloc;
+    Tcalloc=calloc;
+    Tfree=free;
+#if _WIN32 || _WIN64
+    Raligned_malloc=_aligned_malloc;
+    Raligned_realloc=_aligned_realloc;
+    Taligned_free=_aligned_free;
+    Rposix_memalign=0;
+#elif  __APPLE__ || __sun //  Max OS X and Solaris don't have posix_memalign
+    Raligned_malloc=0;
+    Raligned_realloc=0;
+    Taligned_free=0;
+    Rposix_memalign=0;
+#else 
+    Raligned_malloc=0;
+    Raligned_realloc=0;
+    Taligned_free=0;
+    Rposix_memalign=posix_memalign;
+#endif
+}
+
+// check that realloc works as free and as malloc
+void ReallocParam()
+{
+    const int ITERS = 1000;
+    int i;
+    void *bufs[ITERS];
+
+    bufs[0] = Trealloc(NULL, 30*MByte);
+    ASSERT(bufs[0], "Can't get memory to start the test.");
+  
+    for (i=1; i<ITERS; i++)
     {
-      argC--;
-      Tmalloc=malloc;
-      Trealloc=realloc;
-      Tcalloc=calloc;
-      Tfree=free;
-      break;
+        bufs[i] = Trealloc(NULL, 30*MByte);
+        if (NULL == bufs[i])
+            break;
     }
-  }
-  ParseCommandLine( argC, argV );
-  limitMem( 500*MaxThread );
-  //-------------------------------------
-    for( int p=MaxThread; p>=MinThread; --p ) {
-        limitMem( 500*p );
-        if( Verbose )
-            printf("testing with %d threads\n", p );
-        NativeParallelFor( p, RoundRobin(p, Verbose) );
-    }
-  if( !error_occurred ) printf("done\n");
-  return 0;
+    ASSERT(i<ITERS, "Limits should be decreased for the test to work.");
+  
+    Trealloc(bufs[0], 0);
+    /* There is a race for the free space between different threads at 
+       this point. So, have to run the test sequentially.
+    */
+    bufs[0] = Trealloc(NULL, 30*MByte);
+    ASSERT(bufs[0], NULL);
+  
+    for (int j=0; j<i; j++)
+        Trealloc(bufs[j], 0);
 }
 
 struct TestStruct
 {
-  DWORD field1:2;
-  DWORD field2:6;
-  double field3;
-  UCHAR field4[100];
-  TestStruct* field5;
+    DWORD field1:2;
+    DWORD field2:6;
+    double field3;
+    UCHAR field4[100];
+    TestStruct* field5;
 //  std::string field6;
-  std::vector<int> field7;
-  double field8;
-  bool IzZero()
-  {
-    UCHAR *tmp;
-    tmp=(UCHAR*)this;
-    bool b=true;
-    for (int i=0; i<(int)sizeof(TestStruct); i++)
-      if (tmp[i]) b=false;
-    return b;
-  }
+    std::vector<int> field7;
+    double field8;
+    bool IzZero()
+        {
+            UCHAR *tmp;
+            tmp=(UCHAR*)this;
+            bool b=true;
+            for (int i=0; i<(int)sizeof(TestStruct); i++)
+                if (tmp[i]) b=false;
+            return b;
+        }
 };
 
-
-void CMemTest::InvariantDataRealloc()
+int Tposix_memalign(void **memptr, size_t alignment, size_t size)
 {
-  UINT size, sizeMin;
-  CountErrors=0;
-  if (FullLog) printf("\nInvariant data by realloc....");
-  UCHAR* pchar;
-  sizeMin=size=rand()%MAX+10;
-  pchar=(UCHAR*)Trealloc(NULL,size);
-  for (UINT k=0; k<size; k++)
-    pchar[k]=(UCHAR)k%255+1;
-  for (UINT i=0; i<COUNTEXPERIMENT; i++)
-  {
-    size=rand()%MAX+10;
-    sizeMin=size<sizeMin ? size : sizeMin;
-    pchar=(UCHAR*)Trealloc(pchar,size);
-    for (UINT k=0; k<sizeMin; k++)
-      if (pchar[k] != (UCHAR)k%255+1)
-      {
-        CountErrors++;
-        if (ShouldReportError())
-        {
-          printf("stand '%c', must stand '%c'\n",pchar[k],(UCHAR)k%255+1);
-          printf("error: data changed (at %d, SizeMin=%d)\n",k,sizeMin);
-        }
-      }
-  }
-  Trealloc(pchar,0);
-  if (CountErrors) printf("%s\n",strError);
-  else if (FullLog) printf("%s\n",strOk);
-  error_occurred |= ( CountErrors>0 ) ;
-  //printf("end check\n");
+    int ret = Rposix_memalign(memptr, alignment, size);
+    if (0 == ret)
+        ASSERT(0==((uintptr_t)*memptr & (alignment-1)),
+               "allocation result should be aligned");
+    return ret;
 }
-void CMemTest::ReallocParam()
+void* Taligned_malloc(size_t size, size_t alignment)
 {
-  TestStruct *TSold, *TSnew;
-  CountErrors=0;
-  UINT CountTry=0;
-  if (FullLog) printf("\nrealloc with different params....");
-  //
-  for (UINT i=0; i<COUNTEXPERIMENT; i++)
-  {
-    TSnew=(TestStruct*)Tmalloc(sizeof(TestStruct)); // allocate memory
-    TSold=TSnew;  // store address
-    Tfree(TSnew); // free memory
-    TSnew=(TestStruct*)Tmalloc(sizeof(TestStruct));
-    while (TSnew != TSold)
-    {
-      CountTry++;
-      TSold=TSnew;
-      Tfree(TSnew);
-      TSnew=(TestStruct*)Tmalloc(sizeof(TestStruct));
-    }
-    TSold=TSnew;
-    Trealloc(TSnew,0); //realloc should work as free
-    TSnew=NULL;
-    TSnew=(TestStruct*)Trealloc(NULL,sizeof(TestStruct)); //realloc should work as malloc
-    if (TSold == TSnew)
+    void *ret = Raligned_malloc(size, alignment);
+    if (0 != ret)
+        ASSERT(0==((uintptr_t)ret & (alignment-1)),
+               "allocation result should be aligned");
+    return ret;
+}
+void* Taligned_realloc(void* memblock, size_t size, size_t alignment)
+{
+    void *ret = Raligned_realloc(memblock, size, alignment);
+    if (0 != ret)
+        ASSERT(0==((uintptr_t)ret & (alignment-1)),
+               "allocation result should be aligned");
+    return ret;
+}
+
+inline size_t choose_random_alignment() {
+    return sizeof(void*)<<(rand() % POWERS_OF_2);
+}
+
+void CMemTest::InvariantDataRealloc(bool aligned)
+{
+    size_t size, sizeMin;
+    CountErrors=0;
+    if (FullLog) printf("\nInvariant data by realloc....");
+    UCHAR* pchar;
+    sizeMin=size=rand()%MAX_SIZE+10;
+    pchar = aligned?
+        (UCHAR*)Taligned_realloc(NULL,size,choose_random_alignment())
+        : (UCHAR*)Trealloc(NULL,size);
+    if (NULL == pchar)
+        return;
+    for (size_t k=0; k<size; k++)
+        pchar[k]=(UCHAR)k%255+1;
+    for (int i=0; i<COUNTEXPERIMENT; i++)
     {
-/*     if (FullLog)
-      {
-        printf("CountTry: %d\n", CountTry);
-        printf("realloc ok\n");
-      }
-*/
+        size=rand()%MAX_SIZE+10;
+        UCHAR *pcharNew = aligned?
+            (UCHAR*)Taligned_realloc(pchar,size, choose_random_alignment())
+            : (UCHAR*)Trealloc(pchar,size);
+        if (NULL == pcharNew)
+            continue;
+        pchar = pcharNew;
+        sizeMin=size<sizeMin ? size : sizeMin;
+        for (size_t k=0; k<sizeMin; k++)
+            if (pchar[k] != (UCHAR)k%255+1)
+            {
+                CountErrors++;
+                if (ShouldReportError())
+                {
+                    printf("stand '%c', must stand '%c'\n",pchar[k],(UCHAR)k%255+1);
+                    printf("error: data changed (at %llu, SizeMin=%llu)\n",
+                           (long long unsigned)k,(long long unsigned)sizeMin);
+                }
+            }
     }
+    if (aligned)
+        Taligned_realloc(pchar,0,choose_random_alignment());
     else
-    {
-      CountErrors++;
-      if (ShouldReportError()) printf("realloc error");
-    }
-  }
-  if (CountErrors) printf("%s\n",strError);
-  else if (FullLog) printf("%s\n",strOk);
-  error_occurred |= ( CountErrors>0 ) ;
+        Trealloc(pchar,0);
+    if (CountErrors) printf("%s\n",strError);
+    else if (FullLog) printf("%s\n",strOk);
+    error_occurred |= ( CountErrors>0 ) ;
+    //printf("end check\n");
 }
 
 void CMemTest::AddrArifm()
 {
-  int* MasPointer[COUNT_ELEM];
-  UINT MasCountElem[COUNT_ELEM];
-  DWORD count;
-  int* tmpAddr;
-  UINT j;
-  UINT CountZero=0;
-  CountErrors=0;
-  if (FullLog) printf("\nUnique pointer using Address arithmetics\n");
-  if (FullLog) printf("malloc....");
-  for (UINT i=0; i<COUNT_ELEM; i++)
-  {
-    count=rand()%MAX;
-    if (count == 0)
-      CountZero++;
-    tmpAddr=(int*)Tmalloc(count*sizeof(int));
-    for (j=0; j<i; j++) // find a place for the new address
+    int* MasPointer[COUNT_ELEM];
+    size_t *MasCountElem = (size_t*)Tmalloc(COUNT_ELEM*sizeof(size_t));
+    size_t count;
+    int* tmpAddr;
+    int j;
+    UINT CountZero=0;
+    CountErrors=0;
+    if (FullLog) printf("\nUnique pointer using Address arithmetics\n");
+    if (FullLog) printf("malloc....");
+    ASSERT(MasCountElem, NULL);
+    for (int i=0; i<COUNT_ELEM; i++)
     {
-      if (*(MasPointer+j)>tmpAddr) break;
-    }
-    for (UINT k=i; k>j; k--)
-    {
-      MasPointer[k]=MasPointer[k-1];
-      MasCountElem[k]=MasCountElem[k-1];
+        count=rand()%MAX_SIZE;
+        if (count == 0)
+            CountZero++;
+        tmpAddr=(int*)Tmalloc(count*sizeof(int));
+        for (j=0; j<i; j++) // find a place for the new address
+        {
+            if (*(MasPointer+j)>tmpAddr) break;
+        }
+        for (int k=i; k>j; k--)
+        {
+            MasPointer[k]=MasPointer[k-1];
+            MasCountElem[k]=MasCountElem[k-1];
+        }
+        MasPointer[j]=tmpAddr;
+        MasCountElem[j]=count*sizeof(int);/**/
     }
-    MasPointer[j]=tmpAddr;
-    MasCountElem[j]=count*sizeof(int);/**/
-  }
-  if (FullLog) printf("Count zero: %d\n",CountZero);
-  for (int i=0; i<COUNT_ELEM-1; i++)
-  {
-    if ((uintptr_t)MasPointer[i]+MasCountElem[i] > (uintptr_t)MasPointer[i+1])
+    if (FullLog) printf("Count zero: %d\n",CountZero);
+    for (int i=0; i<COUNT_ELEM-1; i++)
     {
-      CountErrors++;
-      if (ShouldReportError()) printf("intersection detect at 0x%p between %d element(int) and 0x%p\n"
-                                ,(MasPointer+i),MasCountElem[i],(MasPointer+i+1));
+        if (NULL!=MasPointer[i] && NULL!=MasPointer[i+1]
+            && (uintptr_t)MasPointer[i]+MasCountElem[i] > (uintptr_t)MasPointer[i+1])
+        {
+            CountErrors++;
+            if (ShouldReportError()) printf("malloc: intersection detect at 0x%p between %llu element(int) and 0x%p\n",
+                                            (MasPointer+i),(long long unsigned)MasCountElem[i],(MasPointer+i+1));
+        }
     }
-  }
-  if (CountErrors) printf("%s\n",strError);
-  else if (FullLog) printf("%s\n",strOk);
-  error_occurred |= ( CountErrors>0 ) ;
-  //----------------------------------------------------------------
-  CountErrors=0;
-  if (FullLog) printf("realloc....");
-  for (UINT i=0; i<COUNT_ELEM; i++)
-  {
-    count=MasCountElem[i]*2;
-    if (count == 0)
-      CountZero++;
-    tmpAddr=(int*)Trealloc(MasPointer[i],count);
-    for (j=0; j<i; j++) // find a place for the new address
+    if (CountErrors) printf("%s\n",strError);
+    else if (FullLog) printf("%s\n",strOk);
+    error_occurred |= ( CountErrors>0 ) ;
+    //----------------------------------------------------------------
+    CountErrors=0;
+    if (FullLog) printf("realloc....");
+    for (int i=0; i<COUNT_ELEM; i++)
     {
-      if (*(MasPointer+j)>tmpAddr) break;
+        count=MasCountElem[i]*2;
+        if (count == 0)
+            CountZero++;
+        tmpAddr=(int*)Trealloc(MasPointer[i],count);
+        if (NULL==tmpAddr && 0!=count)
+            Tfree(MasPointer[i]);
+        for (j=0; j<i; j++) // find a place for the new address
+        {
+            if (*(MasPointer+j)>tmpAddr) break;
+        }
+        for (int k=i; k>j; k--)
+        {
+            MasPointer[k]=MasPointer[k-1];
+            MasCountElem[k]=MasCountElem[k-1];
+        }
+        MasPointer[j]=tmpAddr;
+        MasCountElem[j]=count;//*sizeof(int);/**/
     }
-    for (UINT k=i; k>j; k--)
+    if (FullLog) printf("Count zero: %d\n",CountZero);
+
+    // now we have a sorted array of pointers
+    for (int i=0; i<COUNT_ELEM-1; i++)
     {
-      MasPointer[k]=MasPointer[k-1];
-      MasCountElem[k]=MasCountElem[k-1];
+        if (NULL!=MasPointer[i] && NULL!=MasPointer[i+1]
+            && (uintptr_t)MasPointer[i]+MasCountElem[i] > (uintptr_t)MasPointer[i+1])
+        {
+            CountErrors++;
+            if (ShouldReportError()) printf("realloc: intersection detect at 0x%p between %llu element(int) and 0x%p\n",
+                                            (MasPointer+i),(long long unsigned)MasCountElem[i],(MasPointer+i+1));
+        }
     }
-    MasPointer[j]=tmpAddr;
-    MasCountElem[j]=count;//*sizeof(int);/**/
-  }
-  if (FullLog) printf("Count zero: %d\n",CountZero);
-
-  // now we have a sorted array of pointers
-  for (int i=0; i<COUNT_ELEM-1; i++)
-  {
-    if ((uintptr_t)MasPointer[i]+MasCountElem[i] > (uintptr_t)MasPointer[i+1])
+    if (CountErrors) printf("%s\n",strError);
+    else if (FullLog) printf("%s\n",strOk);
+    error_occurred |= ( CountErrors>0 ) ;
+    for (int i=0; i<COUNT_ELEM; i++)
     {
-      CountErrors++;
-      if (ShouldReportError()) printf("intersection detect at 0x%p between %d element(int) and 0x%p\n"
-                          ,(MasPointer+i),MasCountElem[i],(MasPointer+i+1));
+        Tfree(MasPointer[i]);
     }
-  }
-  if (CountErrors) printf("%s\n",strError);
-  else if (FullLog) printf("%s\n",strOk);
-  error_occurred |= ( CountErrors>0 ) ;
-  for (int i=0; i<COUNT_ELEM; i++)
-  {
-    Tfree(MasPointer[i]);
-  }
-  //-------------------------------------------
-  CountErrors=0;
-  if (FullLog) printf("calloc....");
-  for (UINT i=0; i<COUNT_ELEM; i++)
-  {
-    count=rand()%MAX;
-    if (count == 0)
-      CountZero++;
-    tmpAddr=(int*)Tcalloc(count*sizeof(int),2);
-    for (j=0; j<i; j++) // find a place for the new address
+    //-------------------------------------------
+    CountErrors=0;
+    if (FullLog) printf("calloc....");
+    for (int i=0; i<COUNT_ELEM; i++)
     {
-      if (*(MasPointer+j)>tmpAddr) break;
+        count=rand()%MAX_SIZE;
+        if (count == 0)
+            CountZero++;
+        tmpAddr=(int*)Tcalloc(count*sizeof(int),2);
+        for (j=0; j<i; j++) // find a place for the new address
+        {
+            if (*(MasPointer+j)>tmpAddr) break;
+        }
+        for (int k=i; k>j; k--)
+        {
+            MasPointer[k]=MasPointer[k-1];
+            MasCountElem[k]=MasCountElem[k-1];
+        }
+        MasPointer[j]=tmpAddr;
+        MasCountElem[j]=count*sizeof(int)*2;/**/
     }
-    for (UINT k=i; k>j; k--)
+    if (FullLog) printf("Count zero: %d\n",CountZero);
+
+    // now we have a sorted array of pointers
+    for (int i=0; i<COUNT_ELEM-1; i++)
     {
-      MasPointer[k]=MasPointer[k-1];
-      MasCountElem[k]=MasCountElem[k-1];
+        if (NULL!=MasPointer[i] && NULL!=MasPointer[i+1]
+            && (uintptr_t)MasPointer[i]+MasCountElem[i] > (uintptr_t)MasPointer[i+1])
+        {
+            CountErrors++;
+            if (ShouldReportError()) printf("calloc: intersection detect at 0x%p between %llu element(int) and 0x%p\n",
+                                            (MasPointer+i),(long long unsigned)MasCountElem[i],(MasPointer+i+1));
+        }
     }
-    MasPointer[j]=tmpAddr;
-    MasCountElem[j]=count*sizeof(int)*2;/**/
-  }
-  if (FullLog) printf("Count zero: %d\n",CountZero);
-
-  // now we have a sorted array of pointers
-  for (int i=0; i<COUNT_ELEM-1; i++)
-  {
-    if ((uintptr_t)MasPointer[i]+MasCountElem[i] > (uintptr_t)MasPointer[i+1])
+    if (CountErrors) printf("%s\n",strError);
+    else if (FullLog) printf("%s\n",strOk);
+    error_occurred |= ( CountErrors>0 ) ;
+    for (int i=0; i<COUNT_ELEM; i++)
     {
-      CountErrors++;
-      if (ShouldReportError()) printf("intersection detect at 0x%p between %d element(int) and 0x%p\n"
-                          ,(MasPointer+i),MasCountElem[i],(MasPointer+i+1));
+        Tfree(MasPointer[i]);
     }
-  }
-  if (CountErrors) printf("%s\n",strError);
-  else if (FullLog) printf("%s\n",strOk);
-  error_occurred |= ( CountErrors>0 ) ;
-  for (int i=0; i<COUNT_ELEM; i++)
-  {
-    Tfree(MasPointer[i]);
-  }
+    Tfree(MasCountElem);
 }
 
 void CMemTest::Zerofilling()
 {
-  TestStruct* TSMas;
-  int CountElement;
-  CountErrors=0;
-  if (FullLog) printf("\nzeroings elements of array....");
-  //test struct
-  for (int i=0; i<COUNTEXPERIMENT; i++)
-  {
-    CountElement=rand()%MAX;
-    TSMas=(TestStruct*)Tcalloc(CountElement,sizeof(TestStruct));
-    for (int j=0; j<CountElement; j++)
+    TestStruct* TSMas;
+    size_t CountElement;
+    CountErrors=0;
+    if (FullLog) printf("\nzeroings elements of array....");
+    //test struct
+    for (int i=0; i<COUNTEXPERIMENT; i++)
     {
-      if (!TSMas->IzZero())
-      {
-        CountErrors++;
-        if (ShouldReportError()) printf("detect nonzero element at TestStruct\n");
-      }
+        CountElement=rand()%MAX_SIZE;
+        TSMas=(TestStruct*)Tcalloc(CountElement,sizeof(TestStruct));
+        if (NULL == TSMas)
+            continue;
+        for (size_t j=0; j<CountElement; j++)
+        {
+            if (!TSMas->IzZero())
+            {
+                CountErrors++;
+                if (ShouldReportError()) printf("detect nonzero element at TestStruct\n");
+            }
+        }
+        Tfree(TSMas);
     }
-    Tfree(TSMas);
-  }
-  if (CountErrors) printf("%s\n",strError);
-  else if (FullLog) printf("%s\n",strOk);
-  error_occurred |= ( CountErrors>0 ) ;
+    if (CountErrors) printf("%s\n",strError);
+    else if (FullLog) printf("%s\n",strOk);
+    error_occurred |= ( CountErrors>0 ) ;
 }
 
-void CMemTest::NULLReturn(UINT MinSize, UINT MaxSize)
+// As several threads concurrently trying to push to memory limits, adding to 
+// vectors may have intermittent failures.  
+void reliablePushBack(std::vector<MemStruct> *vec, const MemStruct &mStruct)
 {
-  std::vector<MemStruct> PointerList;
-  MemStruct MStruct;
-  void *tmp=Tmalloc(MByte);
-  CountErrors=0;
-  int CountNULL;
-  if (FullLog) printf("\nNULL return & check errno:\n");
-  UINT i=0;
-  UINT Size;
-  BYTE *zer;
-  /* //----------------------------------------------
-  float mb=0;
-  UINT mbInd=0;
-  if (FullLog)
-  {
-    printf("0");
-    for (i=0; i<MB_MAX/MB; i++)
-      printf(" ");
-    printf("500Mb");
-    for (i=0; i<MB_MAX/MB-4; i++)
-      printf(" ");
-    printf("1Gb\n");
-  }
-  */ //----------------------------------------------
-  while(tmp != NULL)
-  {
-    Size=rand()%(MaxSize-MinSize)+MinSize;
-  /* //----------------------------------------------
-    if (FullLog)
-    {
-      mb+=((float)Size)/MByte;
-      if (mb > mbInd)
-      {
-        printf(".");
-        mbInd+=MB;
-      }
-    }
-  */ //----------------------------------------------
-    tmp=Tmalloc(Size);
-    if (tmp != NULL)
-    {
-      zer=(BYTE*)tmp;
-      for (UINT k=0; k<Size; k++)
-        zer[k]=0;
-      MStruct.Pointer=tmp;
-      MStruct.Size=Size;
-      PointerList.push_back(MStruct);
-    }
-    i++;
-  }
-  if (FullLog) printf("\n");
-
-  // preparation complete, now running tests
-  // malloc
-  if (FullLog) printf("malloc....");
-  CountNULL = 0;
-  while (CountNULL==0)
-   for (int j=0; j<COUNT_TESTS; j++)
-  {
-    Size=rand()%(MaxSize-MinSize)+MinSize;
-    errno = ENOMEM+j+1;
-    tmp=Tmalloc(Size);
-    if (tmp == NULL)
-    {
-      CountNULL++;
-      if (errno != ENOMEM) {
-        CountErrors++;
-        if (ShouldReportError()) printf("NULL returned, error: errno != ENOMEM\n");
-      }
+    for (int i=0; i<10000; i++) {
+        try {
+            vec->push_back(mStruct);
+        } catch(std::bad_alloc) {
+            continue;
+        }
+        return;
     }
-    else
-    {
-      // Technically, if malloc returns a non-NULL pointer, it is allowed to set errno anyway.
-      // However, on most systems it does not set errno.
-      bool known_issue = false;
+    ASSERT(0, "Unable to get free memory.");
+}
+
+void CMemTest::NULLReturn(UINT MinSize, UINT MaxSize)
+{
+    std::vector<MemStruct> PointerList;
+    void *tmp;
+    CountErrors=0;
+    int CountNULL;
+    if (FullLog) printf("\nNULL return & check errno:\n");
+    UINT Size;
+    do {
+        Size=rand()%(MaxSize-MinSize)+MinSize;
+        tmp=Tmalloc(Size);
+        if (tmp != NULL)
+        {
+            memset(tmp, 0, Size);
+            reliablePushBack(&PointerList, MemStruct(tmp, Size));
+        }
+    } while(tmp != NULL);
+    if (FullLog) printf("\n");
+
+    // preparation complete, now running tests
+    // malloc
+    if (FullLog) printf("malloc....");
+    CountNULL = 0;
+    while (CountNULL==0)
+        for (int j=0; j<COUNT_TESTS; j++)
+        {
+            Size=rand()%(MaxSize-MinSize)+MinSize;
+            errno = ENOMEM+j+1;
+            tmp=Tmalloc(Size);
+            if (tmp == NULL)
+            {
+                CountNULL++;
+                if (errno != ENOMEM) {
+                    CountErrors++;
+                    if (ShouldReportError()) printf("NULL returned, error: errno (%d) != ENOMEM\n", errno);
+                }
+            }
+            else
+            {
+                // Technically, if malloc returns a non-NULL pointer, it is allowed to set errno anyway.
+                // However, on most systems it does not set errno.
+                bool known_issue = false;
 #if __linux__
-      if( errno==ENOMEM ) known_issue = true;
+                if( errno==ENOMEM ) known_issue = true;
 #endif /* __linux__ */
-      if (errno != ENOMEM+j+1 && !known_issue) {
-        CountErrors++;
-        if (ShouldReportError()) printf("error: errno changed to %d though valid pointer was returned\n", errno);
-      }      
-      zer=(BYTE*)tmp;
-      for (UINT k=0; k<Size; k++)
-        zer[k]=0;
-      MStruct.Pointer=tmp;
-      MStruct.Size=Size;
-      PointerList.push_back(MStruct);
-      i++;
-    }
-  }
-  if (FullLog) printf("end malloc\n");
-  if (CountErrors) printf("%s\n",strError);
-  else if (FullLog) printf("%s\n",strOk);
-  error_occurred |= ( CountErrors>0 ) ;
-
-  CountErrors=0;
-  //calloc
-  if (FullLog) printf("calloc....");
-  CountNULL = 0;
-  while (CountNULL==0)
-   for (int j=0; j<COUNT_TESTS; j++)
-  {
-    Size=rand()%(MaxSize-MinSize)+MinSize;
-    errno = ENOMEM+j+1;
-    tmp=Tcalloc(COUNT_ELEM_CALLOC,Size);  
-    if (tmp == NULL)
-    {
-      CountNULL++;
-      if (errno != ENOMEM) {
-        CountErrors++;
-        if (ShouldReportError()) printf("NULL returned, error: errno != ENOMEM\n");
-      }
-    }
-    else
-    {
-      // Technically, if calloc returns a non-NULL pointer, it is allowed to set errno anyway.
-      // However, on most systems it does not set errno.
-      bool known_issue = false;
+                if (errno != ENOMEM+j+1 && !known_issue) {
+                    CountErrors++;
+                    if (ShouldReportError()) printf("error: errno changed to %d though valid pointer was returned\n", errno);
+                }      
+                memset(tmp, 0, Size);
+                reliablePushBack(&PointerList, MemStruct(tmp, Size));
+            }
+        }
+    if (FullLog) printf("end malloc\n");
+    if (CountErrors) printf("%s\n",strError);
+    else if (FullLog) printf("%s\n",strOk);
+    error_occurred |= ( CountErrors>0 ) ;
+
+    CountErrors=0;
+    //calloc
+    if (FullLog) printf("calloc....");
+    CountNULL = 0;
+    while (CountNULL==0)
+        for (int j=0; j<COUNT_TESTS; j++)
+        {
+            Size=rand()%(MaxSize-MinSize)+MinSize;
+            errno = ENOMEM+j+1;
+            tmp=Tcalloc(COUNT_ELEM_CALLOC,Size);  
+            if (tmp == NULL)
+            {
+                CountNULL++;
+                if (errno != ENOMEM) {
+                    CountErrors++;
+                    if (ShouldReportError()) printf("NULL returned, error: errno(%d) != ENOMEM\n", errno);
+                }
+            }
+            else
+            {
+                // Technically, if calloc returns a non-NULL pointer, it is allowed to set errno anyway.
+                // However, on most systems it does not set errno.
+                bool known_issue = false;
 #if __linux__
-      if( errno==ENOMEM ) known_issue = true;
+                if( errno==ENOMEM ) known_issue = true;
 #endif /* __linux__ */
-      if (errno != ENOMEM+j+1 && !known_issue) {
-        CountErrors++;
-        if (ShouldReportError()) printf("error: errno changed to %d though valid pointer was returned\n", errno);
-      }      
-      MStruct.Pointer=tmp;
-      MStruct.Size=Size;
-      PointerList.push_back(MStruct);
-      i++;
-    }
-  }
-  if (FullLog) printf("end calloc\n");
-  if (CountErrors) printf("%s\n",strError);
-  else if (FullLog) printf("%s\n",strOk);
-  error_occurred |= ( CountErrors>0 ) ;
-  CountErrors=0;
-  if (FullLog) printf("realloc....");
-  CountNULL = 0;
-  while (CountNULL==0)
-   for (i=0;i<COUNT_TESTS && i<PointerList.size();i++)
-  {
-    errno = 0;
-    tmp=Trealloc(PointerList[i].Pointer,PointerList[i].Size*2);
-    if (PointerList[i].Pointer == tmp) // the same place
+                if (errno != ENOMEM+j+1 && !known_issue) {
+                    CountErrors++;
+                    if (ShouldReportError()) printf("error: errno changed to %d though valid pointer was returned\n", errno);
+                }      
+                reliablePushBack(&PointerList, MemStruct(tmp, Size));
+            }
+        }
+    if (FullLog) printf("end calloc\n");
+    if (CountErrors) printf("%s\n",strError);
+    else if (FullLog) printf("%s\n",strOk);
+    error_occurred |= ( CountErrors>0 ) ;
+    CountErrors=0;
+    if (FullLog) printf("realloc....");
+    CountNULL = 0;
+    if (PointerList.size() > 0)
+        while (CountNULL==0)
+            for (size_t i=0; i<(size_t)COUNT_TESTS && i<PointerList.size(); i++)
+            {
+                errno = 0;
+                tmp=Trealloc(PointerList[i].Pointer,PointerList[i].Size*2);
+                if (PointerList[i].Pointer == tmp) // the same place
+                {
+                    bool known_issue = false;
+#if __linux__
+                    if( errno==ENOMEM ) known_issue = true;
+#endif /* __linux__ */
+                    if (errno != 0 && !known_issue) {
+                        CountErrors++;
+                        if (ShouldReportError()) printf("valid pointer returned, error: errno not kept\n");
+                    }      
+                    PointerList[i].Size *= 2;
+                }
+                else if (tmp != PointerList[i].Pointer && tmp != NULL) // another place
+                {
+                    bool known_issue = false;
+#if __linux__
+                    if( errno==ENOMEM ) known_issue = true;
+#endif /* __linux__ */
+                    if (errno != 0 && !known_issue) {
+                        CountErrors++;
+                        if (ShouldReportError()) printf("valid pointer returned, error: errno not kept\n");
+                    }      
+                    PointerList[i].Pointer = tmp;
+                    PointerList[i].Size *= 2;
+                }
+                else if (tmp == NULL)
+                {
+                    CountNULL++;
+                    if (errno != ENOMEM)
+                    {
+                        CountErrors++;
+                        if (ShouldReportError()) printf("NULL returned, error: errno(%d) != ENOMEM\n", errno);
+                    }
+                    // check data integrity
+                    BYTE *zer=(BYTE*)PointerList[i].Pointer;
+                    for (UINT k=0; k<PointerList[i].Size; k++)
+                        if (zer[k] != 0)
+                        {
+                            CountErrors++;
+                            if (ShouldReportError()) printf("NULL returned, error: data changed\n");
+                        }
+                }
+            }
+    if (FullLog) printf("realloc end\n");
+    if (CountErrors) printf("%s\n",strError);
+    else if (FullLog) printf("%s\n",strOk);
+    error_occurred |= ( CountErrors>0 ) ;
+    for (UINT i=0; i<PointerList.size(); i++)
     {
-      if (errno != 0) {
-        CountErrors++;
-        if (ShouldReportError()) printf("valid pointer returned, error: errno not kept\n");
-      }      
-      PointerList[i].Size *= 2;
+        Tfree(PointerList[i].Pointer);
     }
-    else if (tmp != PointerList[i].Pointer && tmp != NULL) // another place
+}
+
+
+void CMemTest::UniquePointer()
+{
+    CountErrors=0;
+    int* MasPointer[COUNT_ELEM];
+    size_t *MasCountElem = (size_t*)Tmalloc(sizeof(size_t)*COUNT_ELEM);
+    if (FullLog) printf("\nUnique pointer using 0\n");
+    ASSERT(MasCountElem, NULL);
+    //
+    //-------------------------------------------------------
+    //malloc
+    for (int i=0; i<COUNT_ELEM; i++)
     {
-      if (errno != 0) {
-        CountErrors++;
-        if (ShouldReportError()) printf("valid pointer returned, error: errno not kept\n");
-      }      
-      PointerList[i].Pointer = tmp;
-      PointerList[i].Size *= 2;
+        MasCountElem[i]=rand()%MAX_SIZE;
+        MasPointer[i]=(int*)Tmalloc(MasCountElem[i]*sizeof(int));
+        if (NULL == MasPointer[i])
+            MasCountElem[i]=0;
+        for (UINT j=0; j<MasCountElem[i]; j++)
+            *(MasPointer[i]+j)=0;
     }
-    else if (tmp == NULL)
+    if (FullLog) printf("malloc....");
+    for (UINT i=0; i<COUNT_ELEM-1; i++)
     {
-      CountNULL++;
-      if (errno != ENOMEM)
-      {
-        CountErrors++;
-        if (ShouldReportError()) printf("NULL returned, error: errno != ENOMEM\n");
-      }
-      // check data integrity
-      zer=(BYTE*)PointerList[i].Pointer;
-      for (UINT k=0; k<PointerList[i].Size; k++)
-        if (zer[k] != 0)
+        for (UINT j=0; j<MasCountElem[i]; j++)
         {
-          CountErrors++;
-          if (ShouldReportError()) printf("NULL returned, error: data changed\n");
+            if (*(*(MasPointer+i)+j)!=0)
+            {
+                CountErrors++;
+                if (ShouldReportError()) printf("error, detect 1 with 0x%p\n",(*(MasPointer+i)+j));
+            }
+            *(*(MasPointer+i)+j)+=1;
         }
     }
-  }
-  if (FullLog) printf("realloc end\n");
-  if (CountErrors) printf("%s\n",strError);
-  else if (FullLog) printf("%s\n",strOk);
-  error_occurred |= ( CountErrors>0 ) ;
-  for (UINT i=0; i<PointerList.size(); i++)
-  {
-    Tfree(PointerList[i].Pointer);
-  }
-}
-
-
-void CMemTest::UniquePointer()
-{
-  CountErrors=0;
-  int* MasPointer[COUNT_ELEM];
-  UINT MasCountElem[COUNT_ELEM];
-  if (FullLog) printf("\nUnique pointer using 0\n");
-  //
-  //-------------------------------------------------------
-  //malloc
-  for (int i=0; i<COUNT_ELEM; i++)
-  {
-    MasCountElem[i]=rand()%MAX;
-    MasPointer[i]=(int*)Tmalloc(MasCountElem[i]*sizeof(int));
-    for (UINT j=0; j<MasCountElem[i]; j++)
-      *(MasPointer[i]+j)=0;
-  }
-  if (FullLog) printf("malloc....");
-  for (UINT i=0; i<COUNT_ELEM-1; i++)
-  {
-    for (UINT j=0; j<MasCountElem[i]; j++)
+    if (CountErrors) printf("%s\n",strError);
+    else if (FullLog) printf("%s\n",strOk);
+    error_occurred |= ( CountErrors>0 ) ;
+    //----------------------------------------------------------
+    //calloc
+    for (int i=0; i<COUNT_ELEM; i++)
+        Tfree(MasPointer[i]);
+    CountErrors=0;
+    for (long i=0; i<COUNT_ELEM; i++)
     {
-      if (*(*(MasPointer+i)+j)!=0)
-      {
-        CountErrors++;
-        if (ShouldReportError()) printf("error, detect 1 with 0x%p\n",(*(MasPointer+i)+j));
-      }
-      *(*(MasPointer+i)+j)+=1;
+        MasPointer[i]=(int*)Tcalloc(MasCountElem[i]*sizeof(int),2);
+        if (NULL == MasPointer[i])
+            MasCountElem[i]=0;
     }
-  }
-  if (CountErrors) printf("%s\n",strError);
-  else if (FullLog) printf("%s\n",strOk);
-  error_occurred |= ( CountErrors>0 ) ;
-  //----------------------------------------------------------
-  //calloc
-  for (int i=0; i<COUNT_ELEM; i++)
-    Tfree(MasPointer[i]);
-  CountErrors=0;
-  for (long i=0; i<COUNT_ELEM; i++)
-  {
-    MasPointer[i]=(int*)Tcalloc(MasCountElem[i]*sizeof(int),2);
-  }
-  if (FullLog) printf("calloc....");
-  for (int i=0; i<COUNT_ELEM-1; i++)
-  {
-    for (UINT j=0; j<*(MasCountElem+i); j++)
+    if (FullLog) printf("calloc....");
+    for (int i=0; i<COUNT_ELEM-1; i++)
     {
-      if (*(*(MasPointer+i)+j)!=0)
-      {
-        CountErrors++;
-        if (ShouldReportError()) printf("error, detect 1 with 0x%p\n",(*(MasPointer+i)+j));
-      }
-      *(*(MasPointer+i)+j)+=1;
+        for (UINT j=0; j<*(MasCountElem+i); j++)
+        {
+            if (*(*(MasPointer+i)+j)!=0)
+            {
+                CountErrors++;
+                if (ShouldReportError()) printf("error, detect 1 with 0x%p\n",(*(MasPointer+i)+j));
+            }
+            *(*(MasPointer+i)+j)+=1;
+        }
     }
-  }
-  if (CountErrors) printf("%s\n",strError);
-  else if (FullLog) printf("%s\n",strOk);
-  error_occurred |= ( CountErrors>0 ) ;
-  //---------------------------------------------------------
-  //realloc
-  CountErrors=0;
-  for (UINT i=0; i<COUNT_ELEM; i++)
-  {
-    MasCountElem[i]*=2;
-    *(MasPointer+i)=(int*)Trealloc(*(MasPointer+i),MasCountElem[i]*sizeof(int));
-    for (UINT j=0; j<MasCountElem[i]; j++)
-      *(*(MasPointer+i)+j)=0;
-  }
-  if (FullLog) printf("realloc....");
-  for (int i=0; i<COUNT_ELEM-1; i++)
-  {
-    for (UINT j=0; j<*(MasCountElem+i); j++)
+    if (CountErrors) printf("%s\n",strError);
+    else if (FullLog) printf("%s\n",strOk);
+    error_occurred |= ( CountErrors>0 ) ;
+    //---------------------------------------------------------
+    //realloc
+    CountErrors=0;
+    for (int i=0; i<COUNT_ELEM; i++)
     {
-      if (*(*(MasPointer+i)+j)!=0)
-      {
-        CountErrors++;
-      }
-      *(*(MasPointer+i)+j)+=1;
+        MasCountElem[i]*=2;
+        *(MasPointer+i)=
+            (int*)Trealloc(*(MasPointer+i),MasCountElem[i]*sizeof(int));
+        if (NULL == MasPointer[i])
+            MasCountElem[i]=0;
+        for (UINT j=0; j<MasCountElem[i]; j++)
+            *(*(MasPointer+i)+j)=0;
     }
-  }
-  if (CountErrors) printf("%s\n",strError);
-  else if (FullLog) printf("%s\n",strOk);
-  error_occurred |= ( CountErrors>0 ) ;
-  for (int i=0; i<COUNT_ELEM; i++)
-    Tfree(MasPointer[i]);
+    if (FullLog) printf("realloc....");
+    for (int i=0; i<COUNT_ELEM-1; i++)
+    {
+        for (UINT j=0; j<*(MasCountElem+i); j++)
+        {
+            if (*(*(MasPointer+i)+j)!=0)
+            {
+                CountErrors++;
+            }
+            *(*(MasPointer+i)+j)+=1;
+        }
+    }
+    if (CountErrors) printf("%s\n",strError);
+    else if (FullLog) printf("%s\n",strOk);
+    error_occurred |= ( CountErrors>0 ) ;
+    for (int i=0; i<COUNT_ELEM; i++)
+        Tfree(MasPointer[i]);
+    Tfree(MasCountElem);
 }
 
 bool CMemTest::ShouldReportError()
@@ -726,35 +786,166 @@ bool CMemTest::ShouldReportError()
 
 void CMemTest::Free_NULL()
 {
-  CountErrors=0;
-  if (FullLog) printf("\ncall free with parameter NULL....");
-  for (UINT i=0; i<COUNTEXPERIMENT; i++)
-  {
-    Tfree(NULL);
-    if (errno != 0)
+    CountErrors=0;
+    if (FullLog) printf("\ncall free with parameter NULL....");
+    errno = 0;
+    for (int i=0; i<COUNTEXPERIMENT; i++)
     {
-      CountErrors++;
-      if (ShouldReportError()) printf("error is found by a call free with parameter NULL\n");
+        Tfree(NULL);
+        if (errno != 0)
+        {
+            CountErrors++;
+            if (ShouldReportError()) printf("error is found by a call free with parameter NULL\n");
+        }
+    }
+    if (CountErrors) printf("%s\n",strError);
+    else if (FullLog) printf("%s\n",strOk);
+    error_occurred |= ( CountErrors>0 ) ;
+}
+
+void CMemTest::TestAlignedParameters()
+{
+    void *memptr;
+    int ret;
+
+    if (Rposix_memalign) {
+        // alignment isn't power of 2
+        for (int bad_align=3; bad_align<16; bad_align++)
+            if (bad_align&(bad_align-1)) {
+                ret = Tposix_memalign(NULL, bad_align, 100);
+                ASSERT(EINVAL==ret, NULL);
+            }
+    
+        memptr = &ret;
+        ret = Tposix_memalign(&memptr, 5*sizeof(void*), 100);
+        ASSERT(memptr == &ret,
+               "memptr should not be changed after unsuccesful call");
+        ASSERT(EINVAL==ret, NULL);
+    
+        // alignment is power of 2, but not a multiple of sizeof(void *),
+        // we expect that sizeof(void*) > 2
+        ret = Tposix_memalign(NULL, 2, 100);
+        ASSERT(EINVAL==ret, NULL);
+    }
+    if (Raligned_malloc) {
+        // alignment isn't power of 2
+        for (int bad_align=3; bad_align<16; bad_align++)
+            if (bad_align&(bad_align-1)) {
+                memptr = Taligned_malloc(100, bad_align);
+                ASSERT(NULL==memptr, NULL);
+                ASSERT(EINVAL==errno, NULL);
+            }
+    
+        // size is zero
+        memptr = Taligned_malloc(0, 16);
+        ASSERT(NULL==memptr, "size is zero, so must return NULL");
+        ASSERT(EINVAL==errno, NULL);
+    }
+    if (Taligned_free) {
+        // NULL pointer is OK to free
+        errno = 0;
+        Taligned_free(NULL);
+        /* As there is no return value for free, strictly speaking we can't 
+           check errno here. But checked implementations obey the assertion.
+        */
+        ASSERT(0==errno, NULL);
+    }
+    if (Raligned_realloc) {
+        for (int i=1; i<20; i++) {
+            // checks that calls work correctly in presence of non-zero errno
+            errno = i;
+            void *ptr = Taligned_malloc(i*10, 128);
+            ASSERT(NULL!=ptr, NULL);
+            ASSERT(0!=errno, NULL);
+            // if size is zero and pointer is not NULL, works like free
+            memptr = Taligned_realloc(ptr, 0, 64);
+            ASSERT(NULL==memptr, NULL);
+            ASSERT(0!=errno, NULL);
+        }
+        // alignment isn't power of 2
+        for (int bad_align=3; bad_align<16; bad_align++)
+            if (bad_align&(bad_align-1)) {
+                void *ptr = &bad_align;
+                memptr = Taligned_realloc(&ptr, 100, bad_align);
+                ASSERT(NULL==memptr, NULL);
+                ASSERT(&bad_align==ptr, NULL);
+                ASSERT(EINVAL==errno, NULL);
+            }
     }
-  }
-  if (CountErrors) printf("%s\n",strError);
-  else if (FullLog) printf("%s\n",strOk);
-  error_occurred |= ( CountErrors>0 ) ;
 }
 
-void CMemTest::RunAllTests(int /*id*/)
+void CMemTest::RunAllTests(int /*total_threads*/)
 {
-  Zerofilling();
-  Free_NULL();
-  InvariantDataRealloc();
-  ReallocParam();
+    Zerofilling();
+    Free_NULL();
+    InvariantDataRealloc(/*aligned=*/false);
+    if (Raligned_realloc)
+        InvariantDataRealloc(/*aligned=*/true);
+    TestAlignedParameters();
+    if (FullLog) printf("All tests ended\nclearing memory....");
+}
+
+int main(int argc, char* argv[])
+{
+    argC=argc;
+    argV=argv;
+    MaxThread = MinThread = 1;
+    Tmalloc=scalable_malloc;
+    Trealloc=scalable_realloc;
+    Tcalloc=scalable_calloc;
+    Tfree=scalable_free;
+    Rposix_memalign=scalable_posix_memalign;
+    Raligned_malloc=scalable_aligned_malloc;
+    Raligned_realloc=scalable_aligned_realloc;
+    Taligned_free=scalable_aligned_free;
+
+    // check if we were called to test standard behavior
+    for (int i=1; i< argc; i++) {
+        if (strcmp((char*)*(argv+i),"-s")==0)
+        {
+            setSystemAllocs();
+            argC--;
+            break;
+        }
+    }
+
+    ParseCommandLine( argC, argV );
+
+    CMemTest test(1, Verbose);
+    // Tests with memory limit also run in serial only
+#if __APPLE__
+    /* Skip due to lack of memory limit enforcing under Mac OS X. */
+#else
+    limitMem(200);
+    ReallocParam(); /* this test should be first to have enough unfragmented memory */
+    test.NULLReturn(1*MByte,100*MByte);
+    limitMem(0);
+#endif
+
+    // Long tests, so running in serial only. TODO - rework to make shorter
 #if __APPLE__
-  printf("Warning: skipping some tests (known issue on Mac OS* X)\n");
-  return;
+    /* TODO:  check why skipped on Mac OS X */
 #else
-  UniquePointer();
-  AddrArifm();
-  NULLReturn(1*MByte,100*MByte);
+    test.UniquePointer();
+    test.AddrArifm();
 #endif
-  if (FullLog) printf("All tests ended\nclearing memory....");
+
+#if __linux__
+    /* According to man pthreads 
+       "NPTL threads do not share resource limits (fixed in kernel 2.6.10)".
+       Use per-threads limits for affected systems.
+     */
+    if ( LinuxKernelVersion() < 2*1000000 + 6*1000 + 10)
+        perProcessLimits = false;
+#endif    
+
+    // Tests running in parallel
+    for( int p=MaxThread; p>=MinThread; --p ) {
+        if( Verbose )
+            printf("testing with %d threads\n", p );
+        NativeParallelFor( p, RoundRobin(p, Verbose) );
+    }
+
+    if( !error_occurred ) printf("done\n");
+    return 0;
 }
diff --git a/src/test/test_malloc_overload.cpp b/src/test/test_malloc_overload.cpp
new file mode 100644
index 0000000..ae58a6c
--- /dev/null
+++ b/src/test/test_malloc_overload.cpp
@@ -0,0 +1,164 @@
+/*
+    Copyright 2005-2009 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks.
+
+    Threading Building Blocks is free software; you can redistribute it
+    and/or modify it under the terms of the GNU General Public License
+    version 2 as published by the Free Software Foundation.
+
+    Threading Building Blocks is distributed in the hope that it will be
+    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with Threading Building Blocks; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+    As a special exception, you may use this file as part of a free software
+    library without restriction.  Specifically, if other files instantiate
+    templates or use macros or inline functions from this file, or you compile
+    this file and link it with other files to produce an executable, this
+    file does not by itself cause the resulting executable to be covered by
+    the GNU General Public License.  This exception does not however
+    invalidate any other reasons why the executable file might be covered by
+    the GNU General Public License.
+*/
+
+
+#if __linux__
+#define MALLOC_REPLACEMENT_AVAILABLE 1
+#endif
+
+#if MALLOC_REPLACEMENT_AVAILABLE
+
+#include "harness_assert.h"
+#include <stdlib.h>
+#include <malloc.h>
+#include <stdio.h>
+#include <new>
+
+#include <dlfcn.h>
+#include <unistd.h> // for sysconf
+#include <stdint.h> // for uintptr_t
+
+
+template<typename T>
+static inline T alignDown(T arg, uintptr_t alignment) {
+    return T( (uintptr_t)arg  & ~(alignment-1));
+}
+template<typename T>
+static inline bool isAligned(T arg, uintptr_t alignment) {
+    return 0==((uintptr_t)arg &  (alignment-1));
+}
+
+/* Below is part of MemoryAllocator.cpp. */
+
+/*
+ * The identifier to make sure that memory is allocated by scalable_malloc.
+ */
+const uint64_t theMallocUniqueID=0xE3C7AF89A1E2D8C1ULL; 
+
+struct LargeObjectHeader {
+    void        *unalignedResult;   /* The base of the memory returned from getMemory, this is what is used to return this to the OS */
+    size_t       unalignedSize;     /* The size that was requested from getMemory */
+    uint64_t     mallocUniqueID;    /* The field to check whether the memory was allocated by scalable_malloc */
+    size_t       objectSize;        /* The size originally requested by a client */
+};
+
+/*
+ * Objects of this size and larger are considered large objects.
+ */
+const uint32_t minLargeObjectSize = 8065;
+
+/* end of inclusion from MemoryAllocator.cpp */
+
+/* Correct only for arge blocks, i.e. not smaller then minLargeObjectSize */
+static bool scalableMallocLargeBlock(void *object, size_t size)
+{
+    ASSERT(size >= minLargeObjectSize, NULL);
+
+    LargeObjectHeader *h = (LargeObjectHeader*)((uintptr_t)object-sizeof(LargeObjectHeader));
+    return h->mallocUniqueID==theMallocUniqueID && h->objectSize==size;
+}
+
+struct BigStruct {
+    char f[minLargeObjectSize];
+};
+
+int main(int , char *[])
+{
+    void *ptr, *ptr1;
+
+    if (NULL == dlsym(RTLD_DEFAULT, "scalable_malloc")) {
+        printf("libtbbmalloc not found\nfail\n");
+        return 1;
+    }
+
+    ptr = malloc(minLargeObjectSize);
+    ASSERT(ptr!=NULL && scalableMallocLargeBlock(ptr, minLargeObjectSize), NULL);
+    free(ptr);
+
+    ptr = calloc(minLargeObjectSize, 2);
+    ASSERT(ptr!=NULL && scalableMallocLargeBlock(ptr, minLargeObjectSize*2), NULL);
+    ptr1 = realloc(ptr, minLargeObjectSize*10);
+    ASSERT(ptr1!=NULL && scalableMallocLargeBlock(ptr1, minLargeObjectSize*10), NULL);
+    free(ptr1);
+
+    int ret = posix_memalign(&ptr, 1024, 3*minLargeObjectSize);
+    ASSERT(0==ret && ptr!=NULL && scalableMallocLargeBlock(ptr, 3*minLargeObjectSize), NULL);
+    free(ptr);
+
+    ptr = memalign(128, 4*minLargeObjectSize);
+    ASSERT(ptr!=NULL && scalableMallocLargeBlock(ptr, 4*minLargeObjectSize), NULL);
+    free(ptr);
+
+    ptr = valloc(minLargeObjectSize);
+    ASSERT(ptr!=NULL && scalableMallocLargeBlock(ptr, minLargeObjectSize), NULL);
+    free(ptr);
+
+    long memoryPageSize = sysconf(_SC_PAGESIZE);
+    int sz = 1024*minLargeObjectSize;
+    ptr = pvalloc(sz);
+    ASSERT(ptr!=NULL &&                // align size up to the page size
+           scalableMallocLargeBlock(ptr, ((sz-1) | (memoryPageSize-1)) + 1), NULL);
+    free(ptr);
+
+    struct mallinfo info = mallinfo();
+    // right now mallinfo initialized by zero
+    ASSERT(!info.arena && !info.ordblks && !info.smblks && !info.hblks 
+           && !info.hblkhd && !info.usmblks && !info.fsmblks 
+           && !info.uordblks && !info.fordblks && !info.keepcost, NULL);
+
+    BigStruct *f = new BigStruct;
+    ASSERT(f!=NULL && scalableMallocLargeBlock(f, sizeof(BigStruct)), NULL);
+    delete f;
+
+    f = new BigStruct[10];
+    ASSERT(f!=NULL && scalableMallocLargeBlock(f, 10*sizeof(BigStruct)), NULL);
+    delete []f;
+
+    f = new(std::nothrow) BigStruct;
+    ASSERT(f!=NULL && scalableMallocLargeBlock(f, sizeof(BigStruct)), NULL);
+    delete f;
+
+    f = new(std::nothrow) BigStruct[2];
+    ASSERT(f!=NULL && scalableMallocLargeBlock(f, 2*sizeof(BigStruct)), NULL);
+    delete []f;
+
+    printf("done\n");
+    return 0;
+}
+
+#define HARNESS_NO_PARSE_COMMAND_LINE 1
+#include "harness.h"
+
+#else  /* MALLOC_REPLACEMENT_AVAILABLE */
+#include <stdio.h>
+
+int main(int , char *[])
+{
+    printf("skip\n");
+}
+#endif /* MALLOC_REPLACEMENT_AVAILABLE */
diff --git a/src/test/test_malloc_regression.cpp b/src/test/test_malloc_regression.cpp
index a92cadd..c827762 100644
--- a/src/test/test_malloc_regression.cpp
+++ b/src/test/test_malloc_regression.cpp
@@ -26,7 +26,6 @@
     the GNU General Public License.
 */
 
-#define __TBB_NO_IMPLICIT_LINKAGE 1
 #define HARNESS_NO_PARSE_COMMAND_LINE 1
 
 #include <stdio.h>
diff --git a/src/test/test_tbb_version.cpp b/src/test/test_tbb_version.cpp
index e465129..d6daecd 100644
--- a/src/test/test_tbb_version.cpp
+++ b/src/test/test_tbb_version.cpp
@@ -57,7 +57,8 @@ const char stdout_stream[] = "version_test.out";
 
 int main(int argc, char*[] )
 {
-#if TBB_INTERFACE_VERSION>=3014 /* where we first introduced runtime version identification */
+/* We first introduced runtime version identification in 3014 */
+#if TBB_INTERFACE_VERSION>=3014 
     // For now, just test that run-time TBB version matches the compile-time version,
     // since otherwise the subsequent test of "TBB: INTERFACE VERSION" string will fail anyway.
     // We need something more clever in future.
@@ -196,7 +197,7 @@ int main(int argc, char*[] )
 void initialize_strings_vector(std::vector <string_pair>* vector)
 {
     vector->push_back(string_pair("TBB: VERSION\t\t2.1", required));          // check TBB_VERSION
-    vector->push_back(string_pair("TBB: INTERFACE VERSION\t3015", required)); // check TBB_INTERFACE_VERSION
+    vector->push_back(string_pair("TBB: INTERFACE VERSION\t3016", required)); // check TBB_INTERFACE_VERSION
     vector->push_back(string_pair("TBB: BUILD_DATE", required));
     vector->push_back(string_pair("TBB: BUILD_HOST", required));
     vector->push_back(string_pair("TBB: BUILD_OS", required));

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/tbb.git



More information about the debian-science-commits mailing list