[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), ©_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), ©_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, ©_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, ©_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, ©_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 ∁
+<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 ∁
+<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), ©_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), ©_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, ©_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, ©_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, ©_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 ∁
-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 ∁
-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> » <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> » <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> » <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> » <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> » <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> » <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