$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r56299 - in sandbox/stm/branches/vbe/libs/stm/doc/html: . toward_boost_stm toward_boost_stm/appendices toward_boost_stm/overview toward_boost_stm/reference toward_boost_stm/users_guide
From: vicente.botet_at_[hidden]
Date: 2009-09-18 13:48:13
Author: viboes
Date: 2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
New Revision: 56299
URL: http://svn.boost.org/trac/boost/changeset/56299
Log:
TBoost.Stm vbe 
* Adding DRAFT documentation
Added:
   sandbox/stm/branches/vbe/libs/stm/doc/html/
   sandbox/stm/branches/vbe/libs/stm/doc/html/index.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/standalone_HTML.manifest   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/acknowledgements.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/appendix_e__tests.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/appendix_f__tickets.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/changes.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/implementation.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/rationale.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/todo.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/examples.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/overview/
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/overview.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/overview/intro.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/base_contention_manager_hpp.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/data_types_hpp.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/exceptions_hpp.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/language_like_hpp.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transaction_bookkeeping_hpp.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transaction_hpp.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transaction_object_hpp.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/tx_ptr_hpp.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/ext_references.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/getting_started.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/glosary.html   (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/tutorial.html   (contents, props changed)
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/index.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/index.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,110 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 1. Toward.Boost.STM</title>
+<link rel="stylesheet" href="../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="next" href="toward_boost_stm/overview.html" title="Overview">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="toward_boost_stm/overview.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a></div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="boost.stm"></a>Chapter 1. Toward.Boost.STM</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Justin E.</span> <span class="surname">Gottchlich</span>
+</h3></div></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Vicente J.</span> <span class="surname">Botet Escriba</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2009 Justin E. Gottchlich</p></div>
+<div><p class="copyright">Copyright © 2009 Vicente J. Botet Escriba</p></div>
+<div><div class="legalnotice">
+<a name="id4810745"></a><p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section"> Overview</span></dt>
+<dd><dl><dt><span class="section"> Introduction</span></dt></dl></dd>
+<dt><span class="section"> Users'Guide</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="toward_boost_stm/users_guide/getting_started.html"> Getting
+      Started</a></span></dt>
+<dt><span class="section"> Tutorial</span></dt>
+<dt><span class="section"> References</span></dt>
+<dt><span class="section"> Glossary</span></dt>
+</dl></dd>
+<dt><span class="section">Reference</span></dt>
+<dd><dl>
+<dt><span class="section"> Header <boost/stm/data_types.hpp></span></dt>
+<dt><span class="section"> Header <boost/stm/exceptions.hpp></span></dt>
+<dt><span class="section"><a href="toward_boost_stm/reference/transaction_hpp.html"> Header
+      <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">transaction</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="toward_boost_stm/reference/transaction_object_hpp.html"> Header
+      <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">transaction_object</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"> Header <boost/stm/tx_ptr.hpp></span></dt>
+<dt><span class="section"><a href="toward_boost_stm/reference/base_contention_manager_hpp.html">
+      Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">base_contention_manager</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="toward_boost_stm/reference/language_like_hpp.html"> Header
+      <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">language_like</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dt><span class="section"><a href="toward_boost_stm/reference/transaction_bookkeeping_hpp.html">
+      Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">transaction_bookkeeping</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section">Examples</span></dt>
+<dt><span class="section">Appendices</span></dt>
+<dd><dl>
+<dt><span class="section"> Appendix A: History</span></dt>
+<dt><span class="section"> Appendix B: Rationale</span></dt>
+<dt><span class="section"><a href="toward_boost_stm/appendices/implementation.html"> Appendix
+      C: Implementation Notes</a></span></dt>
+<dt><span class="section"><a href="toward_boost_stm/appendices/acknowledgements.html"> Appendix
+      D: Acknowledgements</a></span></dt>
+<dt><span class="section"><a href="toward_boost_stm/appendices/appendix_e__tests.html">Appendix
+      E: Tests</a></span></dt>
+<dt><span class="section"><a href="toward_boost_stm/appendices/appendix_f__tickets.html">Appendix
+      F: Tickets</a></span></dt>
+<dt><span class="section"><a href="toward_boost_stm/appendices/todo.html"> Appendix E: Future
+      plans</a></span></dt>
+</dl></dd>
+</dl>
+</div>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../doc/html/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+      STM is not a part of the Boost libraries.
+    </p></td></tr>
+</table></div>
+<p>
+    [/
+  </p>
+<p>
+    [/
+  </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: September 18, 2009 at 17:16:32 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="toward_boost_stm/overview.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a></div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/standalone_HTML.manifest
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/standalone_HTML.manifest	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,26 @@
+index.html
+toward_boost_stm/overview.html
+toward_boost_stm/overview/intro.html
+toward_boost_stm/users_guide.html
+toward_boost_stm/users_guide/getting_started.html
+toward_boost_stm/users_guide/tutorial.html
+toward_boost_stm/users_guide/ext_references.html
+toward_boost_stm/users_guide/glosary.html
+toward_boost_stm/reference.html
+toward_boost_stm/reference/data_types_hpp.html
+toward_boost_stm/reference/exceptions_hpp.html
+toward_boost_stm/reference/transaction_hpp.html
+toward_boost_stm/reference/transaction_object_hpp.html
+toward_boost_stm/reference/tx_ptr_hpp.html
+toward_boost_stm/reference/base_contention_manager_hpp.html
+toward_boost_stm/reference/language_like_hpp.html
+toward_boost_stm/reference/transaction_bookkeeping_hpp.html
+toward_boost_stm/examples.html
+toward_boost_stm/appendices.html
+toward_boost_stm/appendices/changes.html
+toward_boost_stm/appendices/rationale.html
+toward_boost_stm/appendices/implementation.html
+toward_boost_stm/appendices/acknowledgements.html
+toward_boost_stm/appendices/appendix_e__tests.html
+toward_boost_stm/appendices/appendix_f__tickets.html
+toward_boost_stm/appendices/todo.html
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,79 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Appendices</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="prev" href="examples.html" title="Examples">
+<link rel="next" href="appendices/changes.html" title="Appendix A: History">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="examples.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="appendices/changes.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="toward_boost_stm.appendices"></a><a class="link" href="appendices.html" title="Appendices">Appendices</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"> Appendix A: History</span></dt>
+<dt><span class="section"> Appendix B: Rationale</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="appendices/rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts">TM-Specific
+        Concepts</a></span></dt>
+<dt><span class="section"><a href="appendices/rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts">C++
+        and Library-Specific Concepts</a></span></dt>
+<dt><span class="section"><a href="appendices/rationale.html#toward_boost_stm.appendices.rationale.comparaison_with_other_stm_systems">Comparaison
+        with other STM systems</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="appendices/implementation.html"> Appendix
+      C: Implementation Notes</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="appendices/implementation.html#toward_boost_stm.appendices.implementation.why_there_is_a__if__0____rand___1_____else___preceding_the_for_on_the_atomi_macros_">Why
+        there is a <code class="computeroutput"><span class="keyword">if</span> <span class="special">(</span><span class="number">0</span> <span class="special">==</span> <span class="identifier">rand</span><span class="special">()+</span><span class="number">1</span><span class="special">)</span>
+        <span class="special">{}</span> <span class="keyword">else</span></code>
+        preceding the for on the atomi macros?</a></span></dt>
+<dt><span class="section">Cache</span></dt>
+</dl></dd>
+<dt><span class="section"><a href="appendices/acknowledgements.html"> Appendix
+      D: Acknowledgements</a></span></dt>
+<dt><span class="section"><a href="appendices/appendix_e__tests.html">Appendix
+      E: Tests</a></span></dt>
+<dd><dl><dt><span class="section">XXX</span></dt></dl></dd>
+<dt><span class="section"><a href="appendices/appendix_f__tickets.html">Appendix
+      F: Tickets</a></span></dt>
+<dt><span class="section"><a href="appendices/todo.html"> Appendix E: Future
+      plans</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="appendices/todo.html#toward_boost_stm.appendices.todo.tasks_to_do_before_review">Tasks
+        to do before review</a></span></dt>
+<dt><span class="section"><a href="appendices/todo.html#toward_boost_stm.appendices.todo.for_later_releases">For
+        later releases</a></span></dt>
+</dl></dd>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="examples.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="appendices/changes.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/acknowledgements.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/acknowledgements.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,47 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Appendix D: Acknowledgements</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="implementation.html" title="Appendix C: Implementation Notes">
+<link rel="next" href="appendix_e__tests.html" title="Appendix E: Tests">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="implementation.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="appendix_e__tests.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_stm.appendices.acknowledgements"></a><a class="link" href="acknowledgements.html" title="Appendix D: Acknowledgements"> Appendix
+      D: Acknowledgements</a>
+</h3></div></div></div>
+<p>
+        TBC
+      </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="implementation.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="appendix_e__tests.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/appendix_e__tests.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/appendix_e__tests.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,113 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Appendix E: Tests</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="acknowledgements.html" title="Appendix D: Acknowledgements">
+<link rel="next" href="appendix_f__tickets.html" title="Appendix F: Tickets">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="acknowledgements.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="appendix_f__tickets.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_stm.appendices.appendix_e__tests"></a><a class="link" href="appendix_e__tests.html" title="Appendix E: Tests">Appendix
+      E: Tests</a>
+</h3></div></div></div>
+<div class="toc"><dl><dt><span class="section">XXX</span></dt></dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.appendices.appendix_e__tests.xxx"></a><a class="link" href="appendix_e__tests.html#toward_boost_stm.appendices.appendix_e__tests.xxx" title="XXX">XXX</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Name
+                </p>
+                </th>
+<th>
+                <p>
+                  kind
+                </p>
+                </th>
+<th>
+                <p>
+                  Description
+                </p>
+                </th>
+<th>
+                <p>
+                  Result
+                </p>
+                </th>
+<th>
+                <p>
+                  Ticket
+                </p>
+                </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                <p>
+                  XXX
+                </p>
+                </td>
+<td>
+                <p>
+                  compile
+                </p>
+                </td>
+<td>
+                <p>
+                  XXX
+                </p>
+                </td>
+<td>
+                <p>
+                  Pass
+                </p>
+                </td>
+<td>
+                <p>
+                  #
+                </p>
+                </td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="acknowledgements.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="appendix_f__tickets.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/appendix_f__tickets.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/appendix_f__tickets.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,129 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Appendix F: Tickets</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="appendix_e__tests.html" title="Appendix E: Tests">
+<link rel="next" href="todo.html" title="Appendix E: Future plans">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="appendix_e__tests.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="todo.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_stm.appendices.appendix_f__tickets"></a><a class="link" href="appendix_f__tickets.html" title="Appendix F: Tickets">Appendix
+      F: Tickets</a>
+</h3></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+              <p>
+                Kind
+              </p>
+              </th>
+<th>
+              <p>
+                Identifier
+              </p>
+              </th>
+<th>
+              <p>
+                Description
+              </p>
+              </th>
+<th>
+              <p>
+                Resolution
+              </p>
+              </th>
+<th>
+              <p>
+                State
+              </p>
+              </th>
+<th>
+              <p>
+                Tests
+              </p>
+              </th>
+<th>
+              <p>
+                Version
+              </p>
+              </th>
+</tr></thead>
+<tbody><tr>
+<td>
+              <p>
+                feature
+              </p>
+              </td>
+<td>
+              <p>
+                v0.0#1
+              </p>
+              </td>
+<td>
+              <p>
+                boostify
+              </p>
+              </td>
+<td>
+              <p>
+                XXX
+              </p>
+              </td>
+<td>
+              <p>
+                Open
+              </p>
+              </td>
+<td>
+              <p>
+                See array_locker_tests
+              </p>
+              </td>
+<td>
+              <p>
+                v1.0
+              </p>
+              </td>
+</tr></tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="appendix_e__tests.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="todo.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/changes.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/changes.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,70 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Appendix A: History</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="../appendices.html" title="Appendices">
+<link rel="next" href="rationale.html" title="Appendix B: Rationale">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../appendices.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_stm.appendices.changes"></a><a class="link" href="changes.html" title="Appendix A: History"> Appendix A: History</a>
+</h3></div></div></div>
+<a name="toward_boost_stm.appendices.changes._emphasis_role__bold__version_0_1__xx_yy__2009__emphasis___emphasis_announcement_of_stm__emphasis_"></a><h5>
+<a name="id4885927"></a>
+        <a class="link" href="changes.html#toward_boost_stm.appendices.changes._emphasis_role__bold__version_0_1__xx_yy__2009__emphasis___emphasis_announcement_of_stm__emphasis_"><span class="bold"><strong>Version 0.1, XX YY, 2009</strong></span> <span class="emphasis"><em>Announcement of
+        STM</em></span></a>
+      </h5>
+<p>
+        <span class="bold"><strong>Features:</strong></span>
+      </p>
+<div class="itemizedlist"><ul type="disc"><li></ul></div>
+<p>
+        <span class="bold"><strong>Toolsets:</strong></span>
+      </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+          Tested with static library.
+        </li>
+<li>
+          Tested on cygwin gcc 3.4.6.
+        </li>
+</ul></div>
+<a name="toward_boost_stm.appendices.changes._emphasis_role__bold__tickets___emphasis_"></a><h5>
+<a name="id4886000"></a>
+        <a class="link" href="changes.html#toward_boost_stm.appendices.changes._emphasis_role__bold__tickets___emphasis_"><span class="bold"><strong>Tickets:</strong></span></a>
+      </h5>
+<p>
+        <span class="bold"><strong>v0.1#1: .</strong></span>
+      </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../appendices.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/implementation.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/implementation.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,95 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Appendix C: Implementation Notes</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="rationale.html" title="Appendix B: Rationale">
+<link rel="next" href="acknowledgements.html" title="Appendix D: Acknowledgements">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rationale.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_stm.appendices.implementation"></a><a class="link" href="implementation.html" title="Appendix C: Implementation Notes"> Appendix
+      C: Implementation Notes</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="implementation.html#toward_boost_stm.appendices.implementation.why_there_is_a__if__0____rand___1_____else___preceding_the_for_on_the_atomi_macros_">Why
+        there is a <code class="computeroutput"><span class="keyword">if</span> <span class="special">(</span><span class="number">0</span> <span class="special">==</span> <span class="identifier">rand</span><span class="special">()+</span><span class="number">1</span><span class="special">)</span>
+        <span class="special">{}</span> <span class="keyword">else</span></code>
+        preceding the for on the atomi macros?</a></span></dt>
+<dt><span class="section">Cache</span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.appendices.implementation.why_there_is_a__if__0____rand___1_____else___preceding_the_for_on_the_atomi_macros_"></a><a class="link" href="implementation.html#toward_boost_stm.appendices.implementation.why_there_is_a__if__0____rand___1_____else___preceding_the_for_on_the_atomi_macros_" title="Why there is a if (0 == rand()+1) {} else preceding the for on the atomi macros?">Why
+        there is a <code class="computeroutput"><span class="keyword">if</span> <span class="special">(</span><span class="number">0</span> <span class="special">==</span> <span class="identifier">rand</span><span class="special">()+</span><span class="number">1</span><span class="special">)</span>
+        <span class="special">{}</span> <span class="keyword">else</span></code>
+        preceding the for on the atomi macros?</a>
+</h4></div></div></div>
+<p>
+          The <code class="computeroutput"><span class="keyword">if</span> <span class="special">(</span><span class="number">0</span> <span class="special">==</span> <span class="identifier">rand</span><span class="special">()+</span><span class="number">1</span><span class="special">)</span>
+          <span class="special">{}</span> <span class="keyword">else</span></code>
+          expression in the preprocessor atomic macros is used to prevent for loop
+          errors in non-standard conforming C++ compilers. In these non-compliant
+          compilers, automatic objects constructed as index variables for the for
+          loop are leaked out beyond the scope of the for loop, incorrectly extending
+          the liveness of these variables. In order to correct this behavior, the
+          for loops that are not encapsulated within trys are wrapped within if statements.
+          The if statements and for loops naturally nest without delineated scope
+          (e.g., f, g) allowing programmers to execute single or multiple operations
+          based on their preference.
+        </p>
+<p>
+          (0 == rand()+1) always returns false and cannot be optimized away by an
+          optimizing compiler. By using an always false non-optimizable function
+          inside an if statement, a variable scope is generated that guarantees automatic
+          objects which are placed within these scopes are properly destroyed once
+          the scope is exited. These scopes properly terminate variables which would
+          otherwise be leaked in non-compliant for loop C++ compilers. The proper
+          termination of automatic auto_locks and transactions is necessary to release
+          acquired locks, terminate transactions and release transactional memory.
+        </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.appendices.implementation.cache"></a><a class="link" href="implementation.html#toward_boost_stm.appendices.implementation.cache" title="Cache">Cache</a>
+</h4></div></div></div>
+<a name="toward_boost_stm.appendices.implementation.cache.dispersed"></a><h6>
+<a name="id4889557"></a>
+          <a class="link" href="implementation.html#toward_boost_stm.appendices.implementation.cache.dispersed">Dispersed</a>
+        </h6>
+<a name="toward_boost_stm.appendices.implementation.cache.compact"></a><h6>
+<a name="id4889578"></a>
+          <a class="link" href="implementation.html#toward_boost_stm.appendices.implementation.cache.compact">Compact</a>
+        </h6>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rationale.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/rationale.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/rationale.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,1204 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Appendix B: Rationale</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="changes.html" title="Appendix A: History">
+<link rel="next" href="implementation.html" title="Appendix C: Implementation Notes">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="changes.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="implementation.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_stm.appendices.rationale"></a><a class="link" href="rationale.html" title="Appendix B: Rationale"> Appendix B: Rationale</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts">TM-Specific
+        Concepts</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.optimistic_concurrency">Optimistic
+          concurrency</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.aci_transactions">ACI
+          transactions</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.stm_synchronization_types">STM
+          Synchronization Types</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.updating_policies">Updating
+          policies</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.conflict_detection">Conflict
+          Detection</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.consistency_checking_policies">Consistency
+          checking policies</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.consistency_versus_updating_policies_composition">Consistency
+          versus Updating policies composition</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.memory_granularity">Memory
+          Granularity</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.memory_rollback_capability">Memory
+          Rollback Capability</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.composable_transactions">Composable
+          transactions</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.contention_management">Contention
+          management</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.unrecoverable_transactions_to_manage_with_i_o">Unrecoverable
+          transactions to manage with I/O</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction">Lock-aware
+          transaction</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts">C++
+        and Library-Specific Concepts</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.native_language_compatibility">Native
+          Language Compatibility</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.memory_management">Memory
+          Management</a></span></dt>
+<dt><span class="section">RAII</span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.exception_safety">Exception
+          Safety</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.move_semantics">Move
+          semantics</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.parametric_polymorphism_and_subtype_polymorphism">Parametric
+          Polymorphism and Subtype Polymorphism</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_atomic_transaction_macro_blocks">Language-like
+          atomic transaction macro blocks</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.comparaison_with_other_stm_systems">Comparaison
+        with other STM systems</a></span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.appendices.rationale.tm_specific_concepts"></a><a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts" title="TM-Specific Concepts">TM-Specific
+        Concepts</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.optimistic_concurrency">Optimistic
+          concurrency</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.aci_transactions">ACI
+          transactions</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.stm_synchronization_types">STM
+          Synchronization Types</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.updating_policies">Updating
+          policies</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.conflict_detection">Conflict
+          Detection</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.consistency_checking_policies">Consistency
+          checking policies</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.consistency_versus_updating_policies_composition">Consistency
+          versus Updating policies composition</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.memory_granularity">Memory
+          Granularity</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.memory_rollback_capability">Memory
+          Rollback Capability</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.composable_transactions">Composable
+          transactions</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.contention_management">Contention
+          management</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.unrecoverable_transactions_to_manage_with_i_o">Unrecoverable
+          transactions to manage with I/O</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction">Lock-aware
+          transaction</a></span></dt>
+</dl></div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.optimistic_concurrency"></a><a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.optimistic_concurrency" title="Optimistic concurrency">Optimistic
+          concurrency</a>
+</h5></div></div></div></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.aci_transactions"></a><a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.aci_transactions" title="ACI transactions">ACI
+          transactions</a>
+</h5></div></div></div>
+<p>
+            Transactional memory was founded on the database ACID principle (atomic,
+            consistent, isolated and durable), except without the D [24].
+          </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+              Transactions are atomic; the operations all commit or none of them
+              do.
+            </li>
+<li>
+              Transactions are consistent; transactions must begin and end in legal
+              memory states.
+            </li>
+<li>
+              Transactions are isolated; memory changes made within a transaction
+              are invisible until committed.
+            </li>
+</ul></div>
+<p>
+            The below example gives a basic introduction into TBoost.STM's transactional
+            framework and demonstrates TBoost.STM's ACI conformance.
+          </p>
+<pre class="programlisting"><span class="identifier">native_trans</span><span class="special"><</span><span class="keyword">int</span><span class="special">></span> <span class="identifier">global_int</span><span class="special">;</span>
+<span class="keyword">int</span> <span class="identifier">increment_global</span><span class="special">()</span> <span class="special">{</span>
+    <span class="identifier">atomic</span><span class="special">(</span><span class="identifier">t</span><span class="special">)</span> <span class="special">{</span>
+        <span class="identifier">t</span><span class="special">.</span><span class="identifier">write</span><span class="special">(</span><span class="identifier">global_int</span><span class="special">)++;</span>
+        <span class="identifier">val</span> <span class="special">=</span> <span class="identifier">t</span><span class="special">.</span><span class="identifier">read</span><span class="special">(</span><span class="identifier">global_int</span><span class="special">);</span>
+    <span class="special">}</span> <span class="identifier">end_atom</span>
+    <span class="keyword">return</span> <span class="identifier">val</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            In the above example, (A) both the t.write() and t.read() operations
+            function atomically or neither operations are performed. In addition,
+            (C) the transaction begins and ends in legal memory states, meaning global
+            int is guaranteed to be read correctly, preventing thread data races
+            from causing inconsistent results. Lastly, (I) the intermediate state
+            of the incremented global int is isolated until the transaction commits.
+            These three attributes fulfill TBoost.STM's conformance to the ACI principles.
+            The above example also gives a basic introduction into TBoost.STM's transactional
+            framework.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.stm_synchronization_types"></a><a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.stm_synchronization_types" title="STM Synchronization Types">STM
+          Synchronization Types</a>
+</h5></div></div></div>
+<p>
+            There are two ways STM systems synchronize memory:
+          </p>
+<div class="orderedlist"><ol type="1">
+<li>
+              using non-blocking mechanisms (lock-free) or
+            </li>
+<li>
+              using lock-based (or blocking) mechanisms.
+            </li>
+</ol></div>
+<p>
+            Non-blocking STM systems use atomic primitives, such as, compare-and-swap
+            (CAS) or load-linked and store-conditional (LL-SC), that do not lock
+            the STM system to perform their transactional operations. Lock-based
+            STM systems use locks, such as mutual exclusion locks, which lock the
+            STM system to perform some portion of their transactional operations.
+          </p>
+<p>
+            TBoost.STM is a lock-based STM system. At its core, TBoost.STM uses one
+            lock per thread to implement transactional reads and writes. This allows
+            multiple transactions to simultaneously read and write without blocking
+            other transactions' progress. When a transaction is committing, a global
+            locking strategy is used to temporarily block forward progress on all
+            transactions except the committing one. Once the committing transaction
+            completes, other transactions are allowed to resume their work. TBoost.STM's
+            lockbased strategy allows it to gain the performance benefits of a nonblocking
+            system, such that when transactions are not committing, the transactions
+            do not block each other and are guaranteed to make forward progress.
+            Yet TBoost.STM maintains the benefits of a lockbased system, enabling
+            it to perform commit-time invalidation, its primary consistency model
+            mechanism.
+          </p>
+<p>
+            Recent research shows lock-based STM systems outperform non-blocking
+            systems. Our own research shows that through TBoost.STM's design, scaling
+            concerns and other lock-based specific problems, such as deadlocking
+            and priority inversion, can be overcome with specific contention management
+            and conflict detection policies.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.updating_policies"></a><a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.updating_policies" title="Updating policies">Updating
+          policies</a>
+</h5></div></div></div>
+<p>
+            In any STM system, an updating protocol must be used to perform transactional
+            commits for writes. Updating policies determine how a transaction commits
+            its memory updates to global memory. Two general ways exist to perform
+            updating:
+          </p>
+<div class="orderedlist"><ol type="1">
+<li>
+              direct updating, which copies the original global memory state off
+              to the side and then writes directly to global memory, and
+            </li>
+<li>
+              deferred updating, which copies the original global memory off to the
+              side and the writes to the local copy.
+            </li>
+</ol></div>
+<p>
+            When a transaction of a direct updating system commits its changes, no
+            changes to global memory are made as the STM system has written directly
+            to global memory. When a transaction of a deferred updating system commits
+            its changes, it writes the local changes to global memory. When a direct
+            updating system aborts, it uses the original copy of memory to update
+            global memory, restoring it to its original state. When a deferred updating
+            system aborts, no changes to global memory are made as the STM system
+            has not written anything to global memory. One of TBoost.STM's novel
+            features is its implementation of both direct and deferred updating.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.conflict_detection"></a><a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.conflict_detection" title="Conflict Detection">Conflict
+          Detection</a>
+</h5></div></div></div>
+<p>
+            Conflict detection is the process of identifying when two or more transactions
+            conflict. Conflicts can exist when a transaction writes to memory that
+            another transaction then reads or writes (write after write, write after
+            read), or when a transaction reads memory that is then used in another
+            transaction's write (read after write). Unlimited readers, on the other
+            hand, can read the same piece of memory without any conflict (read after
+            read).
+          </p>
+<div class="table">
+<a name="id4886511"></a><p class="title"><b>Table 1.1. Comparaison with other STM systems</b></p>
+<div class="table-contents"><table class="table" summary="Comparaison with other STM systems">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  <span class="bold"><strong>Features</strong></span>
+                </p>
+                </th>
+<th>
+                <p>
+                  <span class="bold"><strong>after write</strong></span>
+                </p>
+                </th>
+<th>
+                <p>
+                  <span class="bold"><strong>after read</strong></span>
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <span class="bold"><strong>write</strong></span>
+                </p>
+                </td>
+<td>
+                <p>
+                  <span class="bold"><strong>YES</strong></span>
+                </p>
+                </td>
+<td>
+                <p>
+                  <span class="bold"><strong>YES</strong></span>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <span class="bold"><strong>read</strong></span>
+                </p>
+                </td>
+<td>
+                <p>
+                  <span class="bold"><strong>YES</strong></span>
+                </p>
+                </td>
+<td>
+                <p>
+                  <span class="bold"><strong>NO</strong></span>
+                </p>
+                </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+            Before determining how to handle a conflict, STM systems must determine
+            when they will detect conflicts. There are two primary ways to detect
+            conflicts:
+          </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+              Early conflict detection attempts to identify conflicts as soon as
+              a transaction reads or writes to memory.
+            </li>
+<li>
+              Late conflict detection attempts to identify conflicts some time after
+              the initial read or write.
+            </li>
+</ul></div>
+<p>
+            For direct updating, TBoost.STM implements a run-time configurable early
+            and late conflict detection mechanism. For deferred updating, TBoost.STM
+            only implements late conflict detection. The decision to have TBoost.STM
+            only support late conflict detection for deferred updating was made after
+            identifying numerous lost optimizations using early conflict detection
+            with deferred updating.
+          </p>
+<p>
+            Future work may lead to the implementation of early conflict detection
+            for deferred updating simply for symmetry.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.consistency_checking_policies"></a><a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.consistency_checking_policies" title="Consistency checking policies">Consistency
+          checking policies</a>
+</h5></div></div></div>
+<p>
+            An STM system can identify a conflict in two principal ways: through
+            validation or invalidation.
+          </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+              Validation is the process a transaction performs on its own read and
+              write set to check itself for consistency.
+            </li>
+<li>
+              Invalidation is the process a transaction performs on other transaction's
+              read and write sets to check them for consistency.
+            </li>
+</ul></div>
+<p>
+            Validation strategies usually have the the transaction abort itself if
+            an inconsistency is found. Invalidation strategies usually do just the
+            opposite, aborting the other transactions if an inconsistency is found.
+            In addition, STM systems can use contention managers to determine how
+            best to behave when inconsistent transactions are identified.
+          </p>
+<p>
+            TBoost.STM currently implements consistency checking only through invalidation.
+            One of the next goals of TBoost.STM is to build run-time configuration
+            of consistency checking for both invalidation and validation, as it is
+            believed that both may be necessary for varying problems. This aside,
+            TBoost.STM is unique in that it is the first STM system to implement
+            commit-time invalidation. While other systems, such as RSTM, have implemented
+            invalidation, no other system implements commit-time invalidation.
+          </p>
+<p>
+            We believe TBoost.STM is the first commit-time invalidating system due
+            to commit-time invalidation being seemingly only possible in lock-based
+            STM systems and as lock-based STM systems are relatively new, other lock-based
+            systems not being far enough along to implement it yet. The two key differences
+            we focus on in this work between invalidation and validation are;
+          </p>
+<div class="orderedlist"><ol type="1">
+<li>
+              invalidation can save many wasted operations by early notification
+              of doomed transactions, whereas validation cannot and
+            </li>
+<li>
+              invalidation can detect true priority inversion, whereas validation
+              cannot
+            </li>
+</ol></div>
+<p>
+            (other significant differences exist, but are not discussed here).
+          </p>
+<div class="itemizedlist"><ul type="disc"><li>
+              Fully validating systems must iterate through all transactional operations
+              and determine consistency only at commit-time. Thus, each transaction
+              must fully execute its transactional operations. A substantial amount
+              of work can be saved by an invalidating system which can flag doomed
+              transactions early, as shown in table 1. Table 1 details 4, 8 and 12
+              threaded runs for red-black trees, linked lists and hash tables in
+              TBoost.STM. While the percentage of operational savings decreases for
+              each benchmark as the structure size increases, the actual operational
+              savings improves. For example, if a linked list is inserting at the
+              end of a 1600 node list and receives an early termination notification
+              saving 50% of its operations, the savings gained is an 800 node iteration
+              and insert. Likewise, performing a 90% operations savings in a linked
+              list insert operation of size 100, saves only a 90 node iteration and
+              insert.
+            </li></ul></div>
+<p>
+            Furthermore, not shown in the tables here, due to space limitations,
+            is that abort percentages grow for each benchmark as the data structure
+            size increases. Thus, the number of aborts increases, resulting in an
+            even high amount of abort savings per benchmark. The increasing number
+            of aborts as the data structure grows is quite intuitive as longer running
+            transactions are more likely to incur collisions, especially while operating
+            on the same data structure.
+          </p>
+<div class="itemizedlist"><ul type="disc"><li>
+              Priority inversion occurs in TM when a lower priority transaction causes
+              a higher priority transaction to abort. Furthermore, priority inversion
+              can be guaranteed to only abort true priority inverted transactions
+              in an invalidating system. However, validating systems can also build
+              priority inversion schemes, they simply must suffer penalties of potentially
+              aborting transactions unnecessarily. The following section gives concrete
+              examples of handling priority inversion in both validating and invalidating
+              models.
+            </li></ul></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.consistency_versus_updating_policies_composition"></a><a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.consistency_versus_updating_policies_composition" title="Consistency versus Updating policies composition">Consistency
+          versus Updating policies composition</a>
+</h5></div></div></div>
+<p>
+            While TBoost.STM benchmarks show that, deferred updating in our system
+            usually outperforms direct updating, this is not always the case. In
+            particular, direct updating eventually outperforms deferred updating
+            in TBoost.STM as the data structure size grows. With this in mind, we
+            believe that direct updating is useful for specific algorithms with highly
+            innate parallelism (such as hash tables). Likewise, we believe validation
+            may outperform invalidation for high thread counted uses. From these
+            conclusions, we believe final STM systems may be required to implement
+            direct updating, deferred updating, validation and invalidation, all
+            of which should be configurable at run-time and compile-time. By doing
+            this, each problem which demands a different four-way configuration can
+            be handled appropriately. Rather than attempting to build a single implementation
+            which solves all problems universally, the end resulting STM system will
+            handle each specific problem with the most appropriate configuration.
+          </p>
+<div class="table">
+<a name="id4886906"></a><p class="title"><b>Table 1.2. Consistency versus Updating policies composition</b></p>
+<div class="table-contents"><table class="table" summary="Consistency versus Updating policies composition">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  <span class="bold"><strong>Features</strong></span>
+                </p>
+                </th>
+<th>
+                <p>
+                  <span class="bold"><strong>Direct</strong></span>
+                </p>
+                </th>
+<th>
+                <p>
+                  <span class="bold"><strong>Deferred</strong></span>
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <span class="bold"><strong>Validation</strong></span>
+                </p>
+                </td>
+<td>
+                <p>
+                  <span class="bold"><strong>YES</strong></span>
+                </p>
+                </td>
+<td>
+                <p>
+                  <span class="bold"><strong>YES</strong></span>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <span class="bold"><strong>Invalidation</strong></span>
+                </p>
+                </td>
+<td>
+                <p>
+                  <span class="bold"><strong>Not Yet Implemented</strong></span>
+                </p>
+                </td>
+<td>
+                <p>
+                  <span class="bold"><strong>YES</strong></span>
+                </p>
+                </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.memory_granularity"></a><a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.memory_granularity" title="Memory Granularity">Memory
+          Granularity</a>
+</h5></div></div></div>
+<p>
+            STM systems must use a memory granularity size of either word or object
+            for transactions. Word memory granularity allows transactions to read
+            and write at the machine's architectural word size. Type memory granularity
+            allows transactions to read and write at the type level, usually controlled
+            by implementation of a transactional object cache. Object memory granularity
+            allows transactions to read and write at the object level, usually controlled
+            by implementation of a transactional object base class using subtype
+            polymorphism. TBoost.STM implements the latter, performing reads and
+            writes at the object level.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.memory_rollback_capability"></a><a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.memory_rollback_capability" title="Memory Rollback Capability">Memory
+          Rollback Capability</a>
+</h5></div></div></div>
+<p>
+            STM systems must implement memory rollback capabilities for aborted transactions.
+            Memory rollbacking restores the original state of memory in the event
+            a transaction aborts. There are three rollbacking aspects any STM system
+            must handle when implemented in an unmanaged language;
+          </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+              updates to global,
+            </li>
+<li>
+              allocated memory and
+            </li>
+<li>
+              deallocated memory.
+            </li>
+</ul></div>
+<p>
+            TBoost.STM handles rollbacking to global memory internally for both direct
+            and deferred updating, requiring no programmer-based code. However, allocated
+            and deallocated memory rollbacking require programmer-specific interfaces
+            to be used. These interfaces handle C++ memory operations in their native
+            capacity - new and delete - as well as their transactional memory capacity,
+            ensuring no memory is leaked nor deleted prematurely.
+          </p>
+<p>
+            Examples of this are presented in the following section.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.composable_transactions"></a><a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.composable_transactions" title="Composable transactions">Composable
+          transactions</a>
+</h5></div></div></div>
+<p>
+            Composition is the process of taking separate transactions and adding
+            them together to compose a larger single transaction. Composition is
+            a very important aspect of transactions as, unlike locks, transactions
+            can compose. Without a composable TM system, nested transactions each
+            act independently committing their state as they complete. This is highly
+            problematic if an outer transaction then aborts, as there may be no way
+            to rollback the state of a nested (and already committed) transaction.
+            Therefore, implementation of composable transactions is paramount to
+            any TM system which hopes to build large transactions.
+          </p>
+<p>
+            TBoost.STM implements composition via subsumption and is a closed nested
+            system. Composition via subsumption merges all nested transactional memory
+            of a single thread into the outer most active transaction of that same
+            thread. The outer transaction subsumes all the inner transactions' changes.
+            Once the outer transaction completes, all the transactional memory from
+            the nested transactions and their parent either commit or abort. TBoost.STM's
+            closed nesting system enables each nested transaction visibility into
+            its parent's transactional memory and vice versa, but does not allow
+            other transactions to see this intermediate state.
+          </p>
+<p>
+            Future versions of TBoost.STM will implement closed nested transactions.
+          </p>
+</div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.contention_management"></a><a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.contention_management" title="Contention management">Contention
+          management</a>
+</h5></div></div></div></div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.unrecoverable_transactions_to_manage_with_i_o"></a><a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.unrecoverable_transactions_to_manage_with_i_o" title="Unrecoverable transactions to manage with I/O">Unrecoverable
+          transactions to manage with I/O</a>
+</h5></div></div></div></div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction"></a><a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction" title="Lock-aware transaction">Lock-aware
+          transaction</a>
+</h5></div></div></div></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.appendices.rationale.c___and_library_specific_concepts"></a><a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts" title="C++ and Library-Specific Concepts">C++
+        and Library-Specific Concepts</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.native_language_compatibility">Native
+          Language Compatibility</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.memory_management">Memory
+          Management</a></span></dt>
+<dt><span class="section">RAII</span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.exception_safety">Exception
+          Safety</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.move_semantics">Move
+          semantics</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.parametric_polymorphism_and_subtype_polymorphism">Parametric
+          Polymorphism and Subtype Polymorphism</a></span></dt>
+<dt><span class="section"><a href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_atomic_transaction_macro_blocks">Language-like
+          atomic transaction macro blocks</a></span></dt>
+</dl></div>
+<p>
+          This section briefly discusses some of the C++ and library-specific concepts
+          of TBoost.STM.
+        </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.native_language_compatibility"></a><a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.native_language_compatibility" title="Native Language Compatibility">Native
+          Language Compatibility</a>
+</h5></div></div></div>
+<p>
+            Native Language Compatibility. Some existing STM systems require specific
+            language extensions or compiler support for their proposed system to
+            work. Other systems instead violate native language pragmatics by reducing
+            or removing type-safety altogether. Yet other system's transactional
+            functionality is significantly reliant on the preprocessor.
+          </p>
+<p>
+            TBoost.STM is built with native language compatibility as a top priority
+            - as such, it does not require language extensions or violate natural
+            language semantics. Native language compatibility is a foremost concern
+            due to C++0x set to specifically resist language extensions [29]. While
+            in other languages, such as Java, STM systems which require language
+            extensions may be practical, within C++ this same approach seems unrealistic.
+            Thus, there is a very practical need for a native language ready STM
+            solution for C++.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.memory_management"></a><a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.memory_management" title="Memory Management">Memory
+          Management</a>
+</h5></div></div></div>
+<p>
+            For unmanaged languages like C++, STM designers can build memory managers
+            to control heap-based memory allocation and deallocation. While building
+            a memory manager is not necessary for STM systems, performance optimizations
+            can be achieved through such implementations. In particular, a key memory
+            observation for STM systems is that numerous allocations and deallocations
+            happen within transactions, irrespective of the memory design decisions.
+            As such, TBoost.STM provides a builtin templatized user-configurable
+            memory manager which generally yields 20% performance improvement over
+            direct calls to the default C++'s new and delete.
+          </p>
+<p>
+            As understood by most C++ experts, native new and delete operators in
+            C++ are multi-threaded safe, using mutex locks to guarantee memory is
+            retrieved and released in a safe manner for multiple contending threads.
+            Improving the performance of direct calls to C++'s new and delete in
+            a single-threaded application is relatively easy as a buffered free store
+            can be created which requires no locking mechanism, thus naturally increasing
+            performance. This same task is not quite as easy in a multi-threaded
+            environment. TBoost.STM improves the native performance of C++'s operator
+            new and delete by first implementing buffered allocations which naturally
+            perform faster than single allocations. Secondly, performance gains are
+            made by not relinquishing ownership of deallocated memory, making second-time
+            memory allocations faster than first-time allocations. These two aspects
+            enable TBoost.STM's memory manager to perform faster than C++'s native
+            new and delete operations.
+          </p>
+<p>
+            TBoost.STM also must lock around memory allocations and deallocations,
+            just as native C++ new and delete must, however, it can build a more
+            problem-specific implementation that would hinder a generalized C++ new
+            and delete if implemented on a global scale. The techniques used in TBoost.STM
+            are similar to those discussed in Bulka and Mayhew's, Efficient C++,
+            Chapter 7, Multi-threaded Memory Pooling. In C++ semantics, the performance
+            gains within TBoost.STM's memory manager can be thought of as the differences
+            between using an std::vector's push_back() iteratively compared to using
+            an std::vector's push_back() iteratively after calling reserve(), and
+            then continuing to reuse the allocated space to avoid performance penalties
+            of reallocations.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.raii"></a><a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.raii" title="RAII">RAII</a>
+</h5></div></div></div>
+<p>
+            An STM system needs a transaction interface to identify where transactions
+            begin, end and which operations are performed within the transaction.
+            TBoost.STM achieves this by implementing transactions as objects using
+            the Resource Acquisition Is Initialization (RAII) principle.
+          </p>
+<p>
+            RAII is a common concept in C++ when dealing with resources that need
+            to be both obtained and released, like opening and closing a file. RAII
+            uses the concept that if a resource is obtained it must be released even
+            if the programmer fails to do so. RAII's behavior is implemented per
+            class, usually requiring the destructor of the class to guarantee any
+            resources gathered in the lifetime of the object be released. A primary
+            benefit of RAII is its natively correct behavior in the event of exceptions.
+            If an exception occurs causing an RAII class instance to destruct, due
+            to stack unwinding, the deterministic destruction of the object is invoked.
+            The destructor then releases any resources previously collected. This
+            guarantees any object implementing RAII semantics will always release
+            resources it controls, irrespective of program flow (normal or abnormal).
+          </p>
+<p>
+            The TBoost.STM's transaction class is based on the RAII concept for two
+            primary reasons. First, C++ programmers implicitly understand stack based
+            (automatic) objects and their native RAII semantics. In fact, all of
+            C++'s Standard Template Library (STL) containers are implemented using
+            the RAII philosophy. Second, exceptions in C++ are not required to be
+            handled by the programmer as they are in other languages, like Java.
+            Using RAII for transactions ensures proper and guaranteed termination
+            of transactions regardless of program flow, a very important attribute
+            for correct transactional behavior.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.exception_safety"></a><a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.exception_safety" title="Exception Safety">Exception
+          Safety</a>
+</h5></div></div></div>
+<p>
+            TBoost.STM fulfills Abrahams' basic exception safety guarantee for deferred
+            updating, but cannot supply any exception safety guarantee for direct
+            updating. The basic guarantee for exception safety states that if an
+            exception is thrown, the operation may have side-effects but is in a
+            consistent state. The basic guarantee is less strict than the strong
+            guarantee which specifies if an exception is thrown there are no side-effects.
+            The highest level of exception safety, above the strong guarantee, is
+            the nothrow guarantee which disallows exceptions from being thrown entirely.
+          </p>
+<p>
+            Within deferred updating, TBoost.STM can only afford to implement the
+            basic guarantee because if memory is partially committed and then a user
+            exception is thrown, no original state exists for the already committed
+            memory. Therefore, already committed memory in a deferred updating system,
+            must stay committed since no reverted original state can be used to revert
+            the changes. To implement such a system would result in a substantial
+            performance degradation to the overall system, effectively doubling memory
+            size and copy operations. Due to these costs, a double-copy implementation
+            is not performed and the basic guarantee for deferred updating is deemed
+            acceptable.
+          </p>
+<p>
+            Within direct updating, memory updates are done immediately on global
+            memory, so transactions naturally achieve strong exception safety guarantees
+            for commits. Aborts within direct updating, however, invoke copy constructors
+            for restoration of the original global memory state. These copy constructors
+            can throw exceptions which then can lead to a partially restored global
+            state for aborted exceptions that are short-circuited by user-defined
+            copy constructor exceptions. As such, no exception safety guarantee can
+            be made for direct updating when used in C++, a downfall of the updating
+            policy.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.move_semantics"></a><a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.move_semantics" title="Move semantics">Move
+          semantics</a>
+</h5></div></div></div>
+<p>
+            We solve the problem of commit-time and abort-time exceptions by using
+            move semantics in place of copy semantics. The idea of moving is new
+            to C++ and will be available in the next version of the standard.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.parametric_polymorphism_and_subtype_polymorphism"></a><a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.parametric_polymorphism_and_subtype_polymorphism" title="Parametric Polymorphism and Subtype Polymorphism">Parametric
+          Polymorphism and Subtype Polymorphism</a>
+</h5></div></div></div>
+<p>
+            Type abstraction in C++ to create general purpose code can be achieved
+            in numerous ways. Some of these ways, such as the use of C++ template
+            classes and template functions (parametric polymorphism), as well as
+            inheritance (subtype polymorphism), are considered practical and robust
+            ways to build general purpose functionality while still ensuring a certain
+            degree of type-safety is maintained. C++ templates, also known as parametric
+            polymorphism, exhibit the same type-safety as if the general purpose
+            code was written specifically for the templated instantiated type. Inheritance,
+            on the other hand, reduces type-safety to some degree, but gains run-time
+            flexibility unachievable with C++ templates alone. Other mechanisms also
+            exist to create general purpose code, such as void pointers or preprocessor
+            macros, but are considered unsafe and error-prone [8] and thusly, not
+            used in TBoost.STM.
+          </p>
+<p>
+            TBoost.STM uses both parametric and subtype polymorphism throughout its
+            internal implementation and exposed interfaces. In cases where strict
+            type-safety can be achieved, C++ templates are used. In other cases where
+            exact type-safety cannot be achieved without reducing TBoost.STM's functionality,
+            inheritance is used. All of these factors considered, TBoost.STM is a
+            research library that requires type-safety to be a foremost concern,
+            as its usage would hampered if type-safety was relaxed in areas where
+            it could have been retained. As such, C++ templates are used due to their
+            retention of full type information, in cases where inheritance would
+            have also sufficed with a slight loss of type-safety.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_atomic_transaction_macro_blocks"></a><a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_atomic_transaction_macro_blocks" title="Language-like atomic transaction macro blocks">Language-like
+          atomic transaction macro blocks</a>
+</h5></div></div></div>
+<p>
+            Transactions allow an unlimited number of threads to execute their optimistic
+            critical sections. Transactions can perform their writes off to the side,
+            ensuring global memory is preserved until the transaction's atomic operations
+            are complete. To ensure conflicting transactions are identified and prevented,
+            transactions perform correctness verification immediately before committing.
+            The consistency checking performed by transactions ensures that transactions
+            that write to or read from the same memory are restricted in their concurrent
+            execution. The code below demonstrates three different implementations
+            for transactions from a library-based approach where x is shared memory
+            that must be synchronized.
+          </p>
+<p>
+            transaction with begin()/end():
+          </p>
+<pre class="programlisting"><span class="identifier">begin_transaction</span><span class="special">(</span><span class="identifier">t</span><span class="special">);</span>
+<span class="identifier">tx_write</span><span class="special">(</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">val</span><span class="special">;</span>
+<span class="identifier">end_transaction</span><span class="special">(</span><span class="identifier">t</span><span class="special">);</span>
+</pre>
+<p>
+            transaction with automatic object:
+          </p>
+<pre class="programlisting"><span class="special">{</span> 
+    <span class="identifier">transaction</span> <span class="identifier">t</span><span class="special">;</span>
+    <span class="identifier">t</span><span class="special">.</span><span class="identifier">write</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">val</span><span class="special">;</span>
+    <span class="identifier">t</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span>
+<span class="special">}</span>
+</pre>
+<p>
+            language transaction:
+          </p>
+<pre class="programlisting"><span class="identifier">atomic</span> <span class="special">{</span> <span class="identifier">x</span> <span class="special">=</span> <span class="identifier">val</span><span class="special">;</span> <span class="special">}</span> 
+</pre>
+<p>
+            Inspection of the above code reveals that begin_transaction() and end_transaction()
+            are susceptible to the problem when a thrown exception can interfere
+            with correct interface calls. As such, the begin_transaction() and end_transaction()
+            approach can be immediately discarded from further consideration. The
+            two remaining approaches, similar to the prior locking implementations,
+            use automatic objects and a language-like approach. An initial observable
+            difference between the two approaches is that the language approach has
+            a smaller programmatic footprint than the automatic object approach.
+            Furthermore, the automatic object approach introduces more programmatic
+            complexity for transactional retry mechanics and composed transactional
+            behaviors.
+          </p>
+<a name="toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_atomic_transaction_macro_blocks.pitfalls_in_transactional_execution_of_automatic_objects"></a><h6>
+<a name="id4887981"></a>
+            <a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_atomic_transaction_macro_blocks.pitfalls_in_transactional_execution_of_automatic_objects">Pitfalls
+            in Transactional Execution of Automatic Objects</a>
+          </h6>
+<p>
+            Transactions use optimistic critical sections which generally require
+            transactions be retried if they do not commit. As such, transactions
+            are usually implemented as loops which re-execute until they commit.
+            The code below illustrates the client code necessary to implement a basic
+            retry behavior for automatic objects and language-like transactions.
+          </p>
+<p>
+            automatic object transaction with retry:
+          </p>
+<pre class="programlisting"><span class="keyword">for</span> <span class="special">(</span><span class="identifier">transaction</span> <span class="identifier">t</span><span class="special">;</span> <span class="special">!</span><span class="identifier">t</span><span class="special">.</span><span class="identifier">committed</span><span class="special">();</span> <span class="identifier">t</span><span class="special">.</span><span class="identifier">restart</span><span class="special">())</span> <span class="special">{</span>
+    <span class="keyword">try</span> <span class="special">{</span>
+        <span class="identifier">t</span><span class="special">.</span><span class="identifier">write</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">val</span><span class="special">;</span>
+        <span class="identifier">t</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span>
+    <span class="special">}</span> <span class="keyword">catch</span> <span class="special">(...)</span> <span class="special">{}</span>
+<span class="special">}</span>
+</pre>
+<p>
+            language-like transaction with retry:
+          </p>
+<pre class="programlisting"><span class="identifier">atomic</span><span class="special">(</span><span class="identifier">t</span><span class="special">)</span> <span class="special">{</span> 
+    <span class="identifier">t</span><span class="special">.</span><span class="identifier">write</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">val</span><span class="special">;</span> 
+<span class="special">}</span> <span class="identifier">end_atom</span>
+</pre>
+<p>
+            To complicate matters, some transactions must not implement a retry.
+            Failed subtransactions often require the entire transaction be re-executed
+            from the beginning. While the methods used to perform transactional retries
+            vary between TM implementations, TBoost.STM uses an exception-based approach
+            for all transactional interfaces. These TBoost.STM interfaces throw exceptions
+            if transactions are found to be inconsistent. Therefore, parent transactions
+            should use retry mechanics while their child transactions should not.
+            The code above shows the differences between an automatic object and
+            language-like implementation for parent and child transactions.
+          </p>
+<p>
+            automatic object:
+          </p>
+<pre class="programlisting"><span class="comment">// parent tx with automatic object:
+</span><span class="keyword">for</span> <span class="special">(</span><span class="identifier">transaction</span> <span class="identifier">t</span><span class="special">;</span> <span class="special">!</span><span class="identifier">t</span><span class="special">.</span><span class="identifier">committed</span><span class="special">();</span> <span class="identifier">t</span><span class="special">.</span><span class="identifier">restart</span><span class="special">())</span> <span class="special">{</span>
+    <span class="keyword">try</span> <span class="special">{</span>
+        <span class="identifier">t</span><span class="special">.</span><span class="identifier">write</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span> <span class="special">-=</span> <span class="identifier">val</span><span class="special">;</span>
+        <span class="identifier">foo</span><span class="special">();</span>
+        <span class="identifier">t</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span>
+    <span class="special">}</span> <span class="keyword">catch</span> <span class="special">(...)</span> <span class="special">{}</span>
+<span class="special">}</span>
+
+<span class="comment">// child tx with automatic object.
+</span><span class="keyword">void</span> <span class="identifier">foo</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">val</span><span class="special">)</span> <span class="special">{</span>
+    <span class="identifier">transaction</span> <span class="identifier">t</span><span class="special">;</span>
+    <span class="identifier">t</span><span class="special">.</span><span class="identifier">write</span><span class="special">(</span><span class="identifier">y</span><span class="special">)</span> <span class="special">+=</span> <span class="identifier">val</span><span class="special">;</span>
+    <span class="identifier">t</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span>
+<span class="special">}</span>
+</pre>
+<p>
+            language-like transaction:
+          </p>
+<pre class="programlisting"><span class="comment">// parent tx with language-like transaction.
+</span><span class="identifier">atomic</span><span class="special">(</span><span class="identifier">t</span><span class="special">)</span> <span class="special">{</span>
+    <span class="identifier">t</span><span class="special">.</span><span class="identifier">write</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span> <span class="special">-=</span> <span class="identifier">val</span><span class="special">;</span>
+    <span class="identifier">foo</span><span class="special">();</span>
+<span class="special">}</span> <span class="identifier">end_atom</span>
+
+<span class="comment">// child tx with language-like transaction.
+</span><span class="keyword">void</span> <span class="identifier">foo</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">val</span><span class="special">)</span> <span class="special">{</span>
+    <span class="identifier">atomic</span><span class="special">(</span><span class="identifier">t</span><span class="special">)</span> <span class="special">{</span> 
+        <span class="identifier">t</span><span class="special">.</span><span class="identifier">write</span><span class="special">(</span><span class="identifier">y</span><span class="special">)</span> <span class="special">+=</span> <span class="identifier">val</span><span class="special">;</span> 
+    <span class="special">}</span> <span class="identifier">end_atom</span>
+<span class="special">}</span>
+</pre>
+<p>
+            The retry mechanics' syntactic overhead for automatic objects is nearly
+            double that of the language-like semantics. The complexity of the additional
+            retry code is significant and exhibits a number of locations where programmer-induced
+            errors could be made. The key benefit of the language-like atomic syntax
+            is that its structure is identical for parent and nested transactions
+            and it behaves correctly when any transaction is used as a parent or
+            child (details to follow).
+          </p>
+<p>
+            While the automatic object syntax could also be created to be identical
+            for parent and nested transactions, the impact of creating such identical
+            behavior would result in an increase in the child transaction's code
+            size by 266% for single instruction transactions. The resulting increased
+            code size and complexity would increase the likelihood for programmer-induced
+            errors. For these reasons, a number of TM researchers have been in favor
+            of direct language integration of TM instead of API-only approaches.
+          </p>
+<a name="toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_atomic_transaction_macro_blocks.disadvantages_of_language_based_transactional_integration"></a><h6>
+<a name="id4888889"></a>
+            <a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_atomic_transaction_macro_blocks.disadvantages_of_language_based_transactional_integration">Disadvantages
+            of Language Based Transactional Integration</a>
+          </h6>
+<p>
+            Unfortunately, there are a number of disadvantages to direct language-based
+            support for transactions. To begin, transactional memory is still in
+            the early stages of research investigation. A number of open TM questions
+            should be answered before transactions are integrated directly into high-level
+            languages. Some of the open questions for transactions are regarding
+            validation and invalidation consistency checking, fairness and priority-based
+            transactions, open and closed nesting, exception behavior within transactions,
+            lock-based and non-blocking solutions, and hardware-software transactional
+            communication. Furthermore, some TM problems, such as contention management
+            strategy selection, seem more naturally placed within libraries than
+            languages due to their continually evolving and workload-specific nature.
+          </p>
+<p>
+            In light of this, direct integration of TM into a programming language
+            today may lead to errors that are irreversible. These errors may have
+            long-term consequences for the language. Language based integrations
+            are also slow to emerge, even in languages that are quick to evolve,
+            such as Java. A language-based approach to TM may take several years
+            before it is available. Yet, the emergence of multi-core hardware is
+            rushing programmers to develop multithreaded applications today. Without
+            wide TM availability, the primary parallel programming construct used
+            today is locks. Parallel programming research experts unanimously agree
+            that finegrained locking alone leads to notoriously complex software
+            to implement and maintain.
+          </p>
+<p>
+            The culmination of the above points illustrate the need for an extensible,
+            simplified, parallel programming model today. Our language-like approach
+            provides such a solution for C++ that neither library-based automatic
+            objects nor language-based parallel abstractions alone can provide.
+          </p>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.appendices.rationale.comparaison_with_other_stm_systems"></a><a class="link" href="rationale.html#toward_boost_stm.appendices.rationale.comparaison_with_other_stm_systems" title="Comparaison with other STM systems">Comparaison
+        with other STM systems</a>
+</h4></div></div></div>
+<div class="table">
+<a name="id4888980"></a><p class="title"><b>Table 1.3. Comparaison
+        with other STM systems</b></p>
+<div class="table-contents"><table class="table" summary="Comparaison
+        with other STM systems">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+              <p>
+                <span class="bold"><strong>Features</strong></span>
+              </p>
+              </th>
+<th>
+              <p>
+                <span class="bold"><strong>TBoost.STM</strong></span>
+              </p>
+              </th>
+<th>
+              <p>
+                <span class="bold"><strong>TL2</strong></span>
+              </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+              <p>
+                <span class="bold"><strong>Lock-free</strong></span>
+              </p>
+              </td>
+<td>
+              <p>
+                <span class="bold"><strong>NO</strong></span>
+              </p>
+              </td>
+<td>
+              <p>
+                <span class="bold"><strong>YES</strong></span>
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <span class="bold"><strong>Lock-based</strong></span>
+              </p>
+              </td>
+<td>
+              <p>
+                <span class="bold"><strong>YES</strong></span>
+              </p>
+              </td>
+<td>
+              <p>
+                <span class="bold"><strong>NO</strong></span>
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <span class="bold"><strong>Validation</strong></span>
+              </p>
+              </td>
+<td>
+              <p>
+                <span class="bold"><strong>YES</strong></span>
+              </p>
+              </td>
+<td>
+              <p>
+                <span class="bold"><strong>??</strong></span>
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <span class="bold"><strong>Invalidation</strong></span>
+              </p>
+              </td>
+<td>
+              <p>
+                <span class="bold"><strong>YES</strong></span>
+              </p>
+              </td>
+<td>
+              <p>
+                <span class="bold"><strong>NO</strong></span>
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <span class="bold"><strong>Direct-Updating</strong></span>
+              </p>
+              </td>
+<td>
+              <p>
+                <span class="bold"><strong>YES</strong></span>
+              </p>
+              </td>
+<td>
+              <p>
+                <span class="bold"><strong>YES</strong></span>
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <span class="bold"><strong>Deferred-Updating</strong></span>
+              </p>
+              </td>
+<td>
+              <p>
+                <span class="bold"><strong>YES</strong></span>
+              </p>
+              </td>
+<td>
+              <p>
+                <span class="bold"><strong>YES</strong></span>
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <span class="bold"><strong>Word memory granulatity</strong></span>
+              </p>
+              </td>
+<td>
+              <p>
+                <span class="bold"><strong>NO</strong></span>
+              </p>
+              </td>
+<td>
+              <p>
+                <span class="bold"><strong>YES</strong></span>
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <span class="bold"><strong>Object memory granulatity</strong></span>
+              </p>
+              </td>
+<td>
+              <p>
+                <span class="bold"><strong>NO</strong></span>
+              </p>
+              </td>
+<td>
+              <p>
+                <span class="bold"><strong>YES</strong></span>
+              </p>
+              </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="changes.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="implementation.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/todo.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/todo.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,257 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Appendix E: Future plans</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../appendices.html" title="Appendices">
+<link rel="prev" href="appendix_f__tickets.html" title="Appendix F: Tickets">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="appendix_f__tickets.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_stm.appendices.todo"></a><a class="link" href="todo.html" title="Appendix E: Future plans"> Appendix E: Future
+      plans</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="todo.html#toward_boost_stm.appendices.todo.tasks_to_do_before_review">Tasks
+        to do before review</a></span></dt>
+<dt><span class="section"><a href="todo.html#toward_boost_stm.appendices.todo.for_later_releases">For
+        later releases</a></span></dt>
+<dd><dl><dt><span class="section"><a href="todo.html#toward_boost_stm.appendices.todo.for_later_releases.more_recherch_needed">More
+          recherch needed</a></span></dt></dl></dd>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.appendices.todo.tasks_to_do_before_review"></a><a class="link" href="todo.html#toward_boost_stm.appendices.todo.tasks_to_do_before_review" title="Tasks to do before review">Tasks
+        to do before review</a>
+</h4></div></div></div>
+<a name="toward_boost_stm.appendices.todo.tasks_to_do_before_review.interface"></a><h6>
+<a name="id4889912"></a>
+          <a class="link" href="todo.html#toward_boost_stm.appendices.todo.tasks_to_do_before_review.interface">Interface</a>
+        </h6>
+<div class="itemizedlist"><ul type="disc">
+<li>
+<span class="bold"><strong>DONE</strong></span> Adding transactional smart pointers.
+          </li>
+<li>
+            Allows to have non transactional_object participating on transactions
+            (separate the information related to a transactional object from the
+            object itself and add two pointers to transactional_object_cache one
+            to the object itself and the other to the transactional_object.
+          </li>
+<li>
+<span class="bold"><strong>DONE</strong></span> Managing Movable and non CopyConstructible
+            types.
+          </li>
+</ul></div>
+<a name="toward_boost_stm.appendices.todo.tasks_to_do_before_review.boostifying_stm"></a><h6>
+<a name="id4889967"></a>
+          <a class="link" href="todo.html#toward_boost_stm.appendices.todo.tasks_to_do_before_review.boostifying_stm">Boostifying
+          STM</a>
+        </h6>
+<div class="itemizedlist"><ul type="disc">
+<li>
+<span class="bold"><strong>DONE</strong></span> set boost directory architecture
+          </li>
+<li>
+<span class="bold"><strong>DONE</strong></span> name files in lowercase
+          </li>
+<li>
+<span class="bold"><strong>DONE</strong></span> Add a config file with all the
+            configuration macros
+          </li>
+<li>
+<span class="bold"><strong>DONE</strong></span> Add a stm file at the boost level
+            including all the STM interfaces
+          </li>
+<li>
+<span class="bold"><strong>DONE</strong></span> Replace bit_vector by std::bitset
+            or boost::dynamic_bitset (BOOST_STM_BLOOM_FILTER_USE_DYNAMIC_BITSET)
+          </li>
+<li>
+<span class="bold"><strong>DONE</strong></span> Replace Sleep by boost::this_thread::sleep
+          </li>
+<li>
+<span class="bold"><strong>DONE</strong></span> Replace pthread_mutex by boost::mutex
+          </li>
+<li>
+            Replace THREAD_ID by boost::thread_id
+          </li>
+<li>
+<span class="bold"><strong>DONE</strong></span> Provide a unique array/tuple locker
+            (Boost.Synchro)
+          </li>
+<li>
+            Replace var_auto_lock by boost::synchro::unique_array_locker
+          </li>
+<li>
+            Replace auto_lock by boost::synchro::unique_locker and redefine use_lock
+            macros
+          </li>
+<li>
+            use lock_guard when lock/unlock
+          </li>
+<li>
+            Adapt the pool to Boost.Pool
+          </li>
+<li>
+<span class="bold"><strong>DONE</strong></span> Provide a thread specific shared
+            pointer (Boost.Interthreads)
+          </li>
+<li>
+<span class="bold"><strong>DONE</strong></span> Provide a transparent initialization
+            (Boost.Interthreads)
+          </li>
+<li>
+            Replace thread specific access using the thread id by boost:interthreads::thread_specific_shared_ptr
+          </li>
+<li>
+            Replace the initialization to the library Boost.Interthreads (decorations
+            and decorators)
+          </li>
+<li>
+            Replace draco_move by boost::move and its emulation
+          </li>
+<li>
+            Replace vector_set and vector map by the respectives Boost.Container
+            flat_set and flat_map
+          </li>
+<li>
+            Replace blom_filter by the Boost.BlomFilter blom_filter
+          </li>
+</ul></div>
+<a name="toward_boost_stm.appendices.todo.tasks_to_do_before_review.implementation"></a><h6>
+<a name="id4890145"></a>
+          <a class="link" href="todo.html#toward_boost_stm.appendices.todo.tasks_to_do_before_review.implementation">Implementation</a>
+        </h6>
+<div class="itemizedlist"><ul type="disc">
+<li>
+<span class="bold"><strong>DONE</strong></span> Separate the data that is global,
+            thread specific but shared to other threads using a lock, thread local
+            or specific to a transaction.
+          </li>
+<li>
+<span class="bold"><strong>DONE</strong></span> Define access to these data using
+            functions
+          </li>
+<li>
+            Separate the interface from the implementation
+          </li>
+<li>
+            Group all the cache containers (Read,Write,Delete,New) in only one cache
+            in order to improve the lookup performance when using smart pointers.
+          </li>
+</ul></div>
+<a name="toward_boost_stm.appendices.todo.tasks_to_do_before_review.tests"></a><h6>
+<a name="id4890204"></a>
+          <a class="link" href="todo.html#toward_boost_stm.appendices.todo.tasks_to_do_before_review.tests">Tests</a>
+        </h6>
+<div class="itemizedlist"><ul type="disc"><li>
+            Add unit tests
+          </li></ul></div>
+<a name="toward_boost_stm.appendices.todo.tasks_to_do_before_review.documentation"></a><h6>
+<a name="id4890235"></a>
+          <a class="link" href="todo.html#toward_boost_stm.appendices.todo.tasks_to_do_before_review.documentation">Documentation</a>
+        </h6>
+<div class="itemizedlist"><ul type="disc">
+<li>
+<span class="bold"><strong>DONE</strong></span> Create the empty files and set
+            the doc generation environement
+          </li>
+<li>
+            Write the Motivation section
+          </li>
+<li>
+            Write the Getting started section
+          </li>
+<li>
+<span class="bold"><strong>DONE</strong></span> Write the Installation section
+          </li>
+<li>
+            Write the Tutorial section
+          </li>
+<li>
+            Write the Example section
+          </li>
+<li>
+            Write the Reference section
+          </li>
+<li>
+<span class="bold"><strong>DONE</strong></span> Write the Bibliography section
+          </li>
+<li>
+            Write the Glossary section
+          </li>
+<li>
+            Write the Rationale section
+          </li>
+<li>
+            Write the Implementation notes section
+          </li>
+<li>
+            Write the Acknowledgements section
+          </li>
+</ul></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.appendices.todo.for_later_releases"></a><a class="link" href="todo.html#toward_boost_stm.appendices.todo.for_later_releases" title="For later releases">For
+        later releases</a>
+</h4></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="todo.html#toward_boost_stm.appendices.todo.for_later_releases.more_recherch_needed">More
+          recherch needed</a></span></dt></dl></div>
+<div class="itemizedlist"><ul type="disc">
+<li>
+            Integrate with STM test benchmarks as STAMP or STMBench7.
+          </li>
+<li>
+            Add close nested transactions.
+          </li>
+<li>
+            Allows configuration at compile-time and run-time.
+          </li>
+</ul></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.appendices.todo.for_later_releases.more_recherch_needed"></a><a class="link" href="todo.html#toward_boost_stm.appendices.todo.for_later_releases.more_recherch_needed" title="More recherch needed">More
+          recherch needed</a>
+</h5></div></div></div>
+<div class="itemizedlist"><ul type="disc">
+<li>
+              Mixing STM updating policies.
+            </li>
+<li>
+              Mixing STM consistency checking.
+            </li>
+</ul></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="appendix_f__tickets.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../appendices.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a>
+</div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/examples.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/examples.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,46 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Examples</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="prev" href="reference/transaction_bookkeeping_hpp.html" title="Header <boost/stm/transaction_bookkeeping.hpp>">
+<link rel="next" href="appendices.html" title="Appendices">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="reference/transaction_bookkeeping_hpp.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="appendices.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="toward_boost_stm.examples"></a><a class="link" href="examples.html" title="Examples">Examples</a>
+</h2></div></div></div>
+<p>
+      This section includes complete examples using the library.
+    </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="reference/transaction_bookkeeping_hpp.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="appendices.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/overview.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/overview.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,166 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Overview</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="prev" href="../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="next" href="overview/intro.html" title="Introduction">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="overview/intro.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="toward_boost_stm.overview"></a><a class="link" href="overview.html" title="Overview"> Overview</a>
+</h2></div></div></div>
+<div class="toc"><dl><dt><span class="section"> Introduction</span></dt></dl></div>
+<a name="toward_boost_stm.overview.description"></a><h4>
+<a name="id4810667"></a>
+      <a class="link" href="overview.html#toward_boost_stm.overview.description">Description</a>
+    </h4>
+<p>
+      Transactional memory (TM) is a new parallel programming mechanism that reduces
+      the complexity of parallel programming. TM reduces parallel programming complexity
+      by abstracting away the necessary synchronization mechanisms from the parallel
+      code, allowing the programmer to write parallel applications without worry
+      of deadlocks, livelocks or race conditions.
+    </p>
+<p>
+      Transactional memory is an active research interest for many academic and industry
+      institutions with many open questions about its behavior.
+    </p>
+<p>
+      Boost.STM is a C++ lock-based software transactional memory (STM) library.
+      Our approach to STM is to use only native language semantics while implementing
+      the least intrusive, most type-safe object oriented solution possible.
+    </p>
+<p>
+      <span class="bold"><strong>Boost.STM</strong></span> provides:
+    </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+        Optimistic concurrency
+      </li>
+<li>
+        ACI transactions
+        <div class="itemizedlist"><ul type="circle">
+<li>
+            Atomic: all or nothing
+          </li>
+<li>
+            Consistent: only legal memory states
+          </li>
+<li>
+            Isolated: other txes cannot see until committed
+          </li>
+</ul></div>
+</li>
+<li>
+        Language-like atomic transaction macro blocks
+      </li>
+<li>
+        Open-nested composable transactions
+      </li>
+<li>
+        Direct/deffered updating policies
+      </li>
+<li>
+        Validation/invalidation consistency checking policies
+      </li>
+<li>
+        Lock-aware transaction
+      </li>
+<li>
+        Contention management: Mechanism for transaction forward progress
+      </li>
+<li>
+        Unrecoverable transaction to manage with I/O
+      </li>
+</ul></div>
+<a name="toward_boost_stm.overview.how_to_use_this_documentation"></a><h4>
+<a name="id4810523"></a>
+      <a class="link" href="overview.html#toward_boost_stm.overview.how_to_use_this_documentation">How
+      to Use This Documentation</a>
+    </h4>
+<p>
+      This documentation makes use of the following naming and formatting conventions.
+    </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+        Code is in <code class="computeroutput"><span class="identifier">fixed</span> <span class="identifier">width</span>
+        <span class="identifier">font</span></code> and is syntax-highlighted.
+      </li>
+<li>
+        Replaceable text that you will need to supply is in
+        <em class="replaceable"><code>
+          italics
+        </code></em>
+        .
+      </li>
+<li>
+        If a name refers to a free function, it is specified like this: <code class="computeroutput"><span class="identifier">free_function</span><span class="special">()</span></code>;
+        that is, it is in code font and its name is followed by <code class="computeroutput"><span class="special">()</span></code>
+        to indicate that it is a free function.
+      </li>
+<li>
+        If a name refers to a class template, it is specified like this: <code class="computeroutput"><span class="identifier">class_template</span><span class="special"><></span></code>;
+        that is, it is in code font and its name is followed by <code class="computeroutput"><span class="special"><></span></code>
+        to indicate that it is a class template.
+      </li>
+<li>
+        If a name refers to a function-like macro, it is specified like this: <code class="computeroutput"><span class="identifier">MACRO</span><span class="special">()</span></code>;
+        that is, it is uppercase in code font and its name is followed by <code class="computeroutput"><span class="special">()</span></code> to indicate that it is a function-like
+        macro. Object-like macros appear without the trailing <code class="computeroutput"><span class="special">()</span></code>.
+      </li>
+<li>
+        Names that refer to <span class="emphasis"><em>concepts</em></span> in the generic programming
+        sense are specified in CamelCase.
+      </li>
+</ul></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+        In addition, notes such as this one specify non-essential information that
+        provides additional background or rationale.
+      </p></td></tr>
+</table></div>
+<p>
+      Finally, you can mentally add the following to any code fragments in this document:
+    </p>
+<pre class="programlisting"><span class="comment">// Include all of InterThreads
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="comment">// Create a namespace aliases
+</span><span class="keyword">namespace</span> <span class="identifier">bstm</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">;</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="overview/intro.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/overview/intro.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/overview/intro.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,80 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Introduction</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../overview.html" title="Overview">
+<link rel="prev" href="../overview.html" title="Overview">
+<link rel="next" href="../users_guide.html" title="Users'Guide">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../overview.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../users_guide.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_stm.overview.intro"></a><a class="link" href="intro.html" title="Introduction"> Introduction</a>
+</h3></div></div></div>
+<p>
+        Research in parallel programming has recently seen a flurry of attention.
+        Among the active research is a push for high-level languages to offer native
+        support for parallel programming primitives. The next version of C++ will
+        incorporate library support for threads, while numerous researchers are exploring
+        ways to extend C++ to support transactional memory (TM).
+      </p>
+<p>
+        A strength of C++ is its support for automatic objects. Rather than requiring
+        that parallel primitives be added directly to the language, automatic objects
+        in C++ can be used to implement much of their necessary infrastructure. The
+        automatic object approach is natural from a language perspective, provides
+        full algorithmic control to the end programmer, and demonstrates C++'s linguistic
+        elegance. The disadvantage of this approach is its added programmatic overhead.
+        Using only automatic objects, certain programming errors, such as accidental
+        scope removal and incorrectly programmed transactional retry behavior, can
+        arise.
+      </p>
+<p>
+        In light of this, there are unique trade-offs between language based and
+        library-based parallel primitives. Language-based solutions minimize syntactic
+        clutter which reduce programmer related errors, but are seemingly irreversible
+        and, if incorrect, can have crippling effects upon the language. Library-based
+        solutions increase programmer control and flexibility, but place substantial
+        pressure on the programmer to avoid minute programming errors. A good compromise
+        is a solution that behaves like a language extension, but is implemented
+        within a library. By implementing parallel primitives within a library that
+        uses language-like interfaces, programmer pressure is reduced, implementation
+        updates are seamless, and full programmer control is achieved through library
+        extensibility.
+      </p>
+<p>
+        TBoost.STM present such a language-like solution for C++ using generic library
+        coupled with a deliberate use of the preprocessor. The culmination of these
+        components facilitate a simple, yet powerful, parallel programming interface
+        in C++.
+      </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../overview.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../users_guide.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,121 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Reference</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="prev" href="users_guide/glosary.html" title="Glossary">
+<link rel="next" href="reference/data_types_hpp.html" title="Header <boost/stm/data_types.hpp>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="users_guide/glosary.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reference/data_types_hpp.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="toward_boost_stm.reference"></a><a class="link" href="reference.html" title="Reference">Reference</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"> Header <boost/stm/data_types.hpp></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="reference/data_types_hpp.html#toward_boost_stm.reference.data_types_hpp.enum__transaction_type_">Enum
+        <code class="computeroutput"><span class="identifier">transaction_type</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/data_types_hpp.html#toward_boost_stm.reference.data_types_hpp.enum__latm_type_">Enum
+        <code class="computeroutput"><span class="identifier">latm_type</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/data_types_hpp.html#toward_boost_stm.reference.data_types_hpp.enum__transaction_state_">Enum
+        <code class="computeroutput"><span class="identifier">transaction_state</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/data_types_hpp.html#toward_boost_stm.reference.data_types_hpp.typedef__thread_id_t_">Typedef
+        <code class="computeroutput"><span class="identifier">thread_id_t</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"> Header <boost/stm/exceptions.hpp></span></dt>
+<dd><dl><dt><span class="section"><a href="reference/exceptions_hpp.html#toward_boost_stm.reference.exceptions_hpp.class__aborted_transaction_exception_">Class
+        <code class="computeroutput"><span class="identifier">aborted_transaction_exception</span></code></a></span></dt></dl></dd>
+<dt><span class="section"><a href="reference/transaction_hpp.html"> Header
+      <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">transaction</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dd><dl><dt><span class="section"><a href="reference/transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_">Class
+        <code class="computeroutput"><span class="identifier">transaction</span></code></a></span></dt></dl></dd>
+<dt><span class="section"><a href="reference/transaction_object_hpp.html"> Header
+      <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">transaction_object</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="reference/transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_">Abstract
+        Class <code class="computeroutput"><span class="identifier">base_transaction_object</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__transaction_object___">Template
+        Class <code class="computeroutput"><span class="identifier">transaction_object</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__native_trans___">Template
+        Class <code class="computeroutput"><span class="identifier">native_trans</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__transactional_object___">Template
+        Class <code class="computeroutput"><span class="identifier">transactional_object</span><span class="special"><></span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"> Header <boost/stm/tx_ptr.hpp></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="reference/tx_ptr_hpp.html#toward_boost_stm.reference.tx_ptr_hpp.template_class__tx_obj___">Template
+        Class <code class="computeroutput"><span class="identifier">tx_obj</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/tx_ptr_hpp.html#toward_boost_stm.reference.tx_ptr_hpp.template_class__tx_ptr___">Template
+        Class <code class="computeroutput"><span class="identifier">tx_ptr</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/tx_ptr_hpp.html#toward_boost_stm.reference.tx_ptr_hpp.template_class__rd_ptr___">Template
+        Class <code class="computeroutput"><span class="identifier">rd_ptr</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/tx_ptr_hpp.html#toward_boost_stm.reference.tx_ptr_hpp.template_class__upgrd_ptr___">Template
+        Class <code class="computeroutput"><span class="identifier">upgrd_ptr</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/tx_ptr_hpp.html#toward_boost_stm.reference.tx_ptr_hpp.template_class__wr_ptr___">Template
+        Class <code class="computeroutput"><span class="identifier">wr_ptr</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/tx_ptr_hpp.html#toward_boost_stm.reference.tx_ptr_hpp.template_class__read_ptr___">Template
+        Class <code class="computeroutput"><span class="identifier">read_ptr</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="reference/tx_ptr_hpp.html#toward_boost_stm.reference.tx_ptr_hpp.template_class__write_ptr___">Template
+        Class <code class="computeroutput"><span class="identifier">write_ptr</span><span class="special"><></span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="reference/base_contention_manager_hpp.html">
+      Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">base_contention_manager</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dd><dl><dt><span class="section"><a href="reference/base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_">Abstract
+        Class <code class="computeroutput"><span class="identifier">base_contention_manager</span></code></a></span></dt></dl></dd>
+<dt><span class="section"><a href="reference/language_like_hpp.html"> Header
+      <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">language_like</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="reference/language_like_hpp.html#toward_boost_stm.reference.language_like_hpp.macro__atomic_">Macro
+        <code class="computeroutput"><span class="identifier">atomic</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/language_like_hpp.html#toward_boost_stm.reference.language_like_hpp.macro__try_atomic_">Macro
+        <code class="computeroutput"><span class="identifier">try_atomic</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/language_like_hpp.html#toward_boost_stm.reference.language_like_hpp.macro__use_atomic_">Macro
+        <code class="computeroutput"><span class="identifier">use_atomic</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/language_like_hpp.html#toward_boost_stm.reference.language_like_hpp.macro__catch_before_retry_">Macro
+        <code class="computeroutput"><span class="identifier">catch_before_retry</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/language_like_hpp.html#toward_boost_stm.reference.language_like_hpp.macro__before_retry_">Macro
+        <code class="computeroutput"><span class="identifier">before_retry</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/language_like_hpp.html#toward_boost_stm.reference.language_like_hpp.macro__end_atom_">Macro
+        <code class="computeroutput"><span class="identifier">end_atom</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="reference/transaction_bookkeeping_hpp.html">
+      Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">transaction_bookkeeping</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a></span></dt>
+<dd><dl><dt><span class="section"><a href="reference/transaction_bookkeeping_hpp.html#toward_boost_stm.reference.transaction_bookkeeping_hpp.class__transaction_bookkeeping_">Class
+        <code class="computeroutput"><span class="identifier">transaction_bookkeeping</span></code></a></span></dt></dl></dd>
+</dl></div>
+<p>
+      The following section presents the major design components identified in the
+      background section and discusses how they are implemented within the TBoost.STM
+      library.
+    </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="users_guide/glosary.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reference/data_types_hpp.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/base_contention_manager_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/base_contention_manager_hpp.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,287 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Header <boost/stm/base_contention_manager.hpp></title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="tx_ptr_hpp.html" title="Header <boost/stm/tx_ptr.hpp>">
+<link rel="next" href="language_like_hpp.html" title="Header <boost/stm/language_like.hpp>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tx_ptr_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="language_like_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_stm.reference.base_contention_manager_hpp"></a><a class="link" href="base_contention_manager_hpp.html" title="Header <boost/stm/base_contention_manager.hpp>">
+      Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">base_contention_manager</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_">Abstract
+        Class <code class="computeroutput"><span class="identifier">base_contention_manager</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_destructor__base_contention_manager_">Virtual
+          destructor <code class="computeroutput"><span class="identifier">base_contention_manager</span></code></a></span></dt>
+<dt><span class="section"><a href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_on_new_">Virtual
+          function <code class="computeroutput"><span class="identifier">abort_on_new</span></code></a></span></dt>
+<dt><span class="section"><a href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_on_delete_">Virtual
+          function <code class="computeroutput"><span class="identifier">abort_on_delete</span></code></a></span></dt>
+<dt><span class="section"><a href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_on_read_">Virtual
+          function <code class="computeroutput"><span class="identifier">abort_on_read</span></code></a></span></dt>
+<dt><span class="section"><a href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_on_write_">Virtual
+          function <code class="computeroutput"><span class="identifier">abort_on_write</span></code></a></span></dt>
+<dt><span class="section"><a href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_before_commit_">Virtual
+          function <code class="computeroutput"><span class="identifier">abort_before_commit</span></code></a></span></dt>
+<dt><span class="section"><a href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__permission_to_abort_">Virtual
+          function <code class="computeroutput"><span class="identifier">permission_to_abort</span></code></a></span></dt>
+<dt><span class="section"><a href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__allow_lock_to_abort_tx_">Virtual
+          function <code class="computeroutput"><span class="identifier">allow_lock_to_abort_tx</span></code></a></span></dt>
+<dt><span class="section"><a href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__lock_sleep_time_">Virtual
+          function <code class="computeroutput"><span class="identifier">lock_sleep_time</span></code></a></span></dt>
+<dt><span class="section"><a href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__perform_isolated_tx_wait_priority_promotion_">Virtual
+          function <code class="computeroutput"><span class="identifier">perform_isolated_tx_wait_priority_promotion</span></code></a></span></dt>
+<dt><span class="section"><a href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__perform_irrevocable_tx_wait_priority_promotion_">Virtual
+          function <code class="computeroutput"><span class="identifier">perform_irrevocable_tx_wait_priority_promotion</span></code></a></span></dt>
+</dl></dd>
+</dl></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">stm</span> <span class="special">{</span>
+    <span class="keyword">class</span> <span class="identifier">base_contention_manager</span><span class="special">;</span>
+<span class="special">}}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_"></a><a class="link" href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_" title="Abstract Class base_contention_manager">Abstract
+        Class <code class="computeroutput"><span class="identifier">base_contention_manager</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_destructor__base_contention_manager_">Virtual
+          destructor <code class="computeroutput"><span class="identifier">base_contention_manager</span></code></a></span></dt>
+<dt><span class="section"><a href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_on_new_">Virtual
+          function <code class="computeroutput"><span class="identifier">abort_on_new</span></code></a></span></dt>
+<dt><span class="section"><a href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_on_delete_">Virtual
+          function <code class="computeroutput"><span class="identifier">abort_on_delete</span></code></a></span></dt>
+<dt><span class="section"><a href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_on_read_">Virtual
+          function <code class="computeroutput"><span class="identifier">abort_on_read</span></code></a></span></dt>
+<dt><span class="section"><a href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_on_write_">Virtual
+          function <code class="computeroutput"><span class="identifier">abort_on_write</span></code></a></span></dt>
+<dt><span class="section"><a href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_before_commit_">Virtual
+          function <code class="computeroutput"><span class="identifier">abort_before_commit</span></code></a></span></dt>
+<dt><span class="section"><a href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__permission_to_abort_">Virtual
+          function <code class="computeroutput"><span class="identifier">permission_to_abort</span></code></a></span></dt>
+<dt><span class="section"><a href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__allow_lock_to_abort_tx_">Virtual
+          function <code class="computeroutput"><span class="identifier">allow_lock_to_abort_tx</span></code></a></span></dt>
+<dt><span class="section"><a href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__lock_sleep_time_">Virtual
+          function <code class="computeroutput"><span class="identifier">lock_sleep_time</span></code></a></span></dt>
+<dt><span class="section"><a href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__perform_isolated_tx_wait_priority_promotion_">Virtual
+          function <code class="computeroutput"><span class="identifier">perform_isolated_tx_wait_priority_promotion</span></code></a></span></dt>
+<dt><span class="section"><a href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__perform_irrevocable_tx_wait_priority_promotion_">Virtual
+          function <code class="computeroutput"><span class="identifier">perform_irrevocable_tx_wait_priority_promotion</span></code></a></span></dt>
+</dl></div>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">base_contention_manager</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+    <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">abort_on_new</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">transaction</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">t</span><span class="special">)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+    <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">abort_on_delete</span><span class="special">(</span>
+                <span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">transaction</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">t</span><span class="special">,</span>
+                <span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">base_transaction_object</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">in</span><span class="special">)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+    <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">abort_on_read</span><span class="special">(</span>
+                <span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">transaction</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">t</span><span class="special">,</span>
+                <span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">base_transaction_object</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">in</span><span class="special">)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+    <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">abort_on_write</span><span class="special">(</span>
+                <span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">transaction</span> <span class="special">&</span><span class="identifier">t</span><span class="special">,</span>
+                <span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">base_transaction_object</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">in</span><span class="special">)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+    <span class="keyword">virtual</span> <span class="keyword">bool</span> <span class="identifier">abort_before_commit</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">transaction</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">t</span><span class="special">)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+    <span class="keyword">virtual</span> <span class="keyword">bool</span> <span class="identifier">permission_to_abort</span><span class="special">(</span>
+                <span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">transaction</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">lhs</span><span class="special">,</span>
+                <span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">transaction</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">rhs</span><span class="special">)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+    <span class="keyword">virtual</span> <span class="keyword">bool</span> <span class="identifier">allow_lock_to_abort_tx</span><span class="special">(</span>
+                <span class="keyword">int</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lockWaitTime</span><span class="special">,</span>
+                <span class="keyword">int</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">lockAborted</span><span class="special">,</span>
+                <span class="keyword">bool</span> <span class="identifier">txIsIrrevocable</span><span class="special">,</span>
+                <span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">transaction</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">rhs</span><span class="special">)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+    <span class="keyword">virtual</span> <span class="keyword">int</span> <span class="identifier">lock_sleep_time</span><span class="special">();</span>
+    <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">perform_isolated_tx_wait_priority_promotion</span><span class="special">(</span>
+                <span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">transaction</span> <span class="special">&)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+    <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">perform_irrevocable_tx_wait_priority_promotion</span><span class="special">(</span>
+                <span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">transaction</span> <span class="special">&)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+    <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">base_contention_manager</span><span class="special">()</span> <span class="special">{};</span>
+<span class="special">};</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_destructor__base_contention_manager_"></a><a class="link" href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_destructor__base_contention_manager_" title="Virtual destructor base_contention_manager">Virtual
+          destructor <code class="computeroutput"><span class="identifier">base_contention_manager</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">base_contention_manager</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_on_new_"></a><a class="link" href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_on_new_" title="Virtual function abort_on_new">Virtual
+          function <code class="computeroutput"><span class="identifier">abort_on_new</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">abort_on_new</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">transaction</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">t</span><span class="special">)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+</pre>
+<p>
+            Supplies the behavior for transactional aborts when identified as doomed
+            from within a <code class="computeroutput"><span class="identifier">new_memory</span><span class="special">()</span></code> or <code class="computeroutput"><span class="identifier">new_memory_copy</span><span class="special">()</span></code> operation. The input parameter is the
+            doomed transaction. Throwing <code class="computeroutput"><span class="identifier">aborted_transaction_exceptions</span></code>
+            are the usual mechanism for aborting.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_on_delete_"></a><a class="link" href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_on_delete_" title="Virtual function abort_on_delete">Virtual
+          function <code class="computeroutput"><span class="identifier">abort_on_delete</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">abort_on_delete</span><span class="special">(</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">transaction</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">t</span><span class="special">,</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">base_transaction_object</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">in</span><span class="special">)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+</pre>
+<p>
+            Supplies the behavior for transactional aborts when identified as doomed
+            from within a <code class="computeroutput"><span class="identifier">delete_memory</span><span class="special">()</span></code> operation. The input parameters are
+            the doomed transaction and the object being deleted. Throwing <code class="computeroutput"><span class="identifier">aborted_transaction_exceptions</span></code> are
+            the usual mechanism for aborting.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_on_read_"></a><a class="link" href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_on_read_" title="Virtual function abort_on_read">Virtual
+          function <code class="computeroutput"><span class="identifier">abort_on_read</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">abort_on_read</span><span class="special">(</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">transaction</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">t</span><span class="special">,</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">base_transaction_object</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">in</span><span class="special">)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+</pre>
+<p>
+            Supplies the behavior for transactional aborts when identified as doomed
+            from within a <code class="computeroutput"><span class="identifier">read</span><span class="special">()</span></code>
+            operation. The input parameters are the doomed transaction and the object
+            being read. Throwing <code class="computeroutput"><span class="identifier">aborted_transaction_exceptions</span></code>
+            are the usual mechanism for aborting.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_on_write_"></a><a class="link" href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_on_write_" title="Virtual function abort_on_write">Virtual
+          function <code class="computeroutput"><span class="identifier">abort_on_write</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">abort_on_write</span><span class="special">(</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">transaction</span> <span class="special">&</span><span class="identifier">t</span><span class="special">,</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">base_transaction_object</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">in</span><span class="special">)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+</pre>
+<p>
+            Supplies the behavior for transactional aborts when identified as doomed
+            from within a <code class="computeroutput"><span class="identifier">write</span><span class="special">()</span></code>
+            operation. The input parameters are the doomed transaction and the object
+            being written. Throwing <code class="computeroutput"><span class="identifier">aborted_transaction_exceptions</span></code>
+            are the usual mechanism for aborting.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_before_commit_"></a><a class="link" href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_before_commit_" title="Virtual function abort_before_commit">Virtual
+          function <code class="computeroutput"><span class="identifier">abort_before_commit</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">virtual</span> <span class="keyword">bool</span> <span class="identifier">abort_before_commit</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">transaction</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">t</span><span class="special">)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+</pre>
+<p>
+            This method is called prior to a transaction performing its commit operation.
+            The parameter passed in is the transaction preparing to commit. The client
+            code should return <code class="computeroutput"><span class="keyword">true</span></code>
+            if the transaction should abort before committing. Otherwise, client
+            implementation should return <code class="computeroutput"><span class="keyword">false</span></code>.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__permission_to_abort_"></a><a class="link" href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__permission_to_abort_" title="Virtual function permission_to_abort">Virtual
+          function <code class="computeroutput"><span class="identifier">permission_to_abort</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">virtual</span> <span class="keyword">bool</span> <span class="identifier">permission_to_abort</span><span class="special">(</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">transaction</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">lhs</span><span class="special">,</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">transaction</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">rhs</span><span class="special">)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+</pre>
+<p>
+            This method is invoked when a transaction is requesting permission to
+            abort another transaction due to a memory inconsistency. Client code
+            should return <code class="computeroutput"><span class="keyword">true</span></code> if the
+            transaction should abort before committing. Otherwise, client implementation
+            should return <code class="computeroutput"><span class="keyword">false</span></code>. The
+            <code class="computeroutput"><span class="identifier">lhs</span></code> input parameter is
+            the transaction requesting to abort <code class="computeroutput"><span class="identifier">rhs</span></code>,
+            the <code class="computeroutput"><span class="identifier">rhs</span></code> input parameter
+            is the transaction which will be aborted if return <code class="computeroutput"><span class="keyword">true</span></code>.
+            Otherwise, if the method returns <code class="computeroutput"><span class="keyword">false</span></code>,
+            <code class="computeroutput"><span class="identifier">lhs</span></code> will be aborted.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__allow_lock_to_abort_tx_"></a><a class="link" href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__allow_lock_to_abort_tx_" title="Virtual function allow_lock_to_abort_tx">Virtual
+          function <code class="computeroutput"><span class="identifier">allow_lock_to_abort_tx</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">virtual</span> <span class="keyword">bool</span> <span class="identifier">allow_lock_to_abort_tx</span><span class="special">(</span>
+            <span class="keyword">int</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lockWaitTime</span><span class="special">,</span>
+            <span class="keyword">int</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">lockAborted</span><span class="special">,</span>
+            <span class="keyword">bool</span> <span class="identifier">txIsIrrevocable</span><span class="special">,</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">transaction</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">rhs</span><span class="special">)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__lock_sleep_time_"></a><a class="link" href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__lock_sleep_time_" title="Virtual function lock_sleep_time">Virtual
+          function <code class="computeroutput"><span class="identifier">lock_sleep_time</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">virtual</span> <span class="keyword">int</span> <span class="identifier">lock_sleep_time</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__perform_isolated_tx_wait_priority_promotion_"></a><a class="link" href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__perform_isolated_tx_wait_priority_promotion_" title="Virtual function perform_isolated_tx_wait_priority_promotion">Virtual
+          function <code class="computeroutput"><span class="identifier">perform_isolated_tx_wait_priority_promotion</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">perform_isolated_tx_wait_priority_promotion</span><span class="special">(</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">transaction</span> <span class="special">&)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+</pre>
+<p>
+            virtual void perform_isolated_tx_wait_priority_promotion( boost::stm::transaction
+            &) = 0;
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__perform_irrevocable_tx_wait_priority_promotion_"></a><a class="link" href="base_contention_manager_hpp.html#toward_boost_stm.reference.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__perform_irrevocable_tx_wait_priority_promotion_" title="Virtual function perform_irrevocable_tx_wait_priority_promotion">Virtual
+          function <code class="computeroutput"><span class="identifier">perform_irrevocable_tx_wait_priority_promotion</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">perform_irrevocable_tx_wait_priority_promotion</span><span class="special">(</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">transaction</span> <span class="special">&)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+</pre>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tx_ptr_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="language_like_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/data_types_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/data_types_hpp.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,87 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Header <boost/stm/data_types.hpp></title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="../reference.html" title="Reference">
+<link rel="next" href="exceptions_hpp.html" title="Header <boost/stm/exceptions.hpp>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../reference.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="exceptions_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_stm.reference.data_types_hpp"></a><a class="link" href="data_types_hpp.html" title="Header <boost/stm/data_types.hpp>"> Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">data_types</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="data_types_hpp.html#toward_boost_stm.reference.data_types_hpp.enum__transaction_type_">Enum
+        <code class="computeroutput"><span class="identifier">transaction_type</span></code></a></span></dt>
+<dt><span class="section"><a href="data_types_hpp.html#toward_boost_stm.reference.data_types_hpp.enum__latm_type_">Enum
+        <code class="computeroutput"><span class="identifier">latm_type</span></code></a></span></dt>
+<dt><span class="section"><a href="data_types_hpp.html#toward_boost_stm.reference.data_types_hpp.enum__transaction_state_">Enum
+        <code class="computeroutput"><span class="identifier">transaction_state</span></code></a></span></dt>
+<dt><span class="section"><a href="data_types_hpp.html#toward_boost_stm.reference.data_types_hpp.typedef__thread_id_t_">Typedef
+        <code class="computeroutput"><span class="identifier">thread_id_t</span></code></a></span></dt>
+</dl></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">stm</span> <span class="special">{</span>
+    <span class="keyword">enum</span> <span class="identifier">transaction_type</span><span class="special">;</span>
+    <span class="keyword">enum</span> <span class="identifier">latm_type</span><span class="special">;</span>
+    <span class="keyword">enum</span> <span class="identifier">transaction_state</span><span class="special">;</span>
+    <span class="keyword">typedef</span> <span class="identifier">thread_id_t</span><span class="special">;</span>
+<span class="special">}}</span>
+</pre>
+<div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.data_types_hpp.enum__transaction_type_"></a><a class="link" href="data_types_hpp.html#toward_boost_stm.reference.data_types_hpp.enum__transaction_type_" title="Enum transaction_type">Enum
+        <code class="computeroutput"><span class="identifier">transaction_type</span></code></a>
+</h4></div></div></div></div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.data_types_hpp.enum__latm_type_"></a><a class="link" href="data_types_hpp.html#toward_boost_stm.reference.data_types_hpp.enum__latm_type_" title="Enum latm_type">Enum
+        <code class="computeroutput"><span class="identifier">latm_type</span></code></a>
+</h4></div></div></div></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.data_types_hpp.enum__transaction_state_"></a><a class="link" href="data_types_hpp.html#toward_boost_stm.reference.data_types_hpp.enum__transaction_state_" title="Enum transaction_state">Enum
+        <code class="computeroutput"><span class="identifier">transaction_state</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">enum</span> <span class="identifier">transaction_state</span>
+<span class="special">{</span>
+   <span class="identifier">e_no_state</span> <span class="special">=</span> <span class="special">-</span><span class="number">1</span><span class="special">,</span> <span class="comment">// no state is -1
+</span>   <span class="identifier">e_aborted</span><span class="special">,</span>      <span class="comment">// ensure aborted = 0
+</span>   <span class="identifier">e_committed</span><span class="special">,</span>    <span class="comment">// committed is positive
+</span>   <span class="identifier">e_hand_off</span><span class="special">,</span>      <span class="comment">// so is handoff in case bool conversion
+</span>   <span class="identifier">e_in_flight</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.data_types_hpp.typedef__thread_id_t_"></a><a class="link" href="data_types_hpp.html#toward_boost_stm.reference.data_types_hpp.typedef__thread_id_t_" title="Typedef thread_id_t">Typedef
+        <code class="computeroutput"><span class="identifier">thread_id_t</span></code></a>
+</h4></div></div></div></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../reference.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="exceptions_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/exceptions_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/exceptions_hpp.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,53 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Header <boost/stm/exceptions.hpp></title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="data_types_hpp.html" title="Header <boost/stm/data_types.hpp>">
+<link rel="next" href="transaction_hpp.html" title="Header <boost/stm/transaction.hpp>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="data_types_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="transaction_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_stm.reference.exceptions_hpp"></a><a class="link" href="exceptions_hpp.html" title="Header <boost/stm/exceptions.hpp>"> Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">exceptions</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="exceptions_hpp.html#toward_boost_stm.reference.exceptions_hpp.class__aborted_transaction_exception_">Class
+        <code class="computeroutput"><span class="identifier">aborted_transaction_exception</span></code></a></span></dt></dl></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">stm</span> <span class="special">{</span>
+    <span class="keyword">class</span> <span class="identifier">aborted_transaction_exception</span><span class="special">;</span>
+<span class="special">}}</span>
+</pre>
+<div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.exceptions_hpp.class__aborted_transaction_exception_"></a><a class="link" href="exceptions_hpp.html#toward_boost_stm.reference.exceptions_hpp.class__aborted_transaction_exception_" title="Class aborted_transaction_exception">Class
+        <code class="computeroutput"><span class="identifier">aborted_transaction_exception</span></code></a>
+</h4></div></div></div></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="data_types_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="transaction_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/language_like_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/language_like_hpp.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,210 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Header <boost/stm/language_like.hpp></title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="base_contention_manager_hpp.html" title="Header <boost/stm/base_contention_manager.hpp>">
+<link rel="next" href="transaction_bookkeeping_hpp.html" title="Header <boost/stm/transaction_bookkeeping.hpp>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="base_contention_manager_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="transaction_bookkeeping_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_stm.reference.language_like_hpp"></a><a class="link" href="language_like_hpp.html" title="Header <boost/stm/language_like.hpp>"> Header
+      <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">language_like</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="language_like_hpp.html#toward_boost_stm.reference.language_like_hpp.macro__atomic_">Macro
+        <code class="computeroutput"><span class="identifier">atomic</span></code></a></span></dt>
+<dt><span class="section"><a href="language_like_hpp.html#toward_boost_stm.reference.language_like_hpp.macro__try_atomic_">Macro
+        <code class="computeroutput"><span class="identifier">try_atomic</span></code></a></span></dt>
+<dt><span class="section"><a href="language_like_hpp.html#toward_boost_stm.reference.language_like_hpp.macro__use_atomic_">Macro
+        <code class="computeroutput"><span class="identifier">use_atomic</span></code></a></span></dt>
+<dt><span class="section"><a href="language_like_hpp.html#toward_boost_stm.reference.language_like_hpp.macro__catch_before_retry_">Macro
+        <code class="computeroutput"><span class="identifier">catch_before_retry</span></code></a></span></dt>
+<dt><span class="section"><a href="language_like_hpp.html#toward_boost_stm.reference.language_like_hpp.macro__before_retry_">Macro
+        <code class="computeroutput"><span class="identifier">before_retry</span></code></a></span></dt>
+<dt><span class="section"><a href="language_like_hpp.html#toward_boost_stm.reference.language_like_hpp.macro__end_atom_">Macro
+        <code class="computeroutput"><span class="identifier">end_atom</span></code></a></span></dt>
+</dl></div>
+<p>
+        The complexity behind the <code class="computeroutput"><span class="identifier">atomic</span></code>
+        macro is needed to guarantee two fundamental goals.
+      </p>
+<div class="itemizedlist"><ul type="disc"><li>
+          First, transactions must start and end correctly. Second, transactions
+          must change their retry behavior based on whether they are a child or parent
+          transaction to ensure proper closed nesting, flattened transaction behavior
+          is performed.
+        </li></ul></div>
+<p>
+        The <code class="computeroutput"><span class="identifier">atomic</span></code> preprocessor behaves
+        as follows. When the transactional for loop is entered, a transaction automatic
+        object is constructed which initializes the transaction and puts it in-flight.
+        The for loop conditional ensures the following conditions:
+      </p>
+<div class="orderedlist"><ol type="1">
+<li>
+          the transaction is uncommitted,
+        </li>
+<li>
+          the transaction has the opportunity to throw an exception if necessary,
+          and
+        </li>
+<li>
+          the transaction is in-flight.
+        </li>
+</ol></div>
+<p>
+        Once a transaction commits, the check on (1) <code class="computeroutput"><span class="special">!</span><span class="identifier">T</span><span class="special">.</span><span class="identifier">committed</span><span class="special">()</span></code> ensures the transaction is not executed
+        again. If the transaction has been aborted but is a child transaction, the
+        transaction must be restarted at the parent level. The call to (2) <code class="computeroutput"><span class="identifier">T</span><span class="special">.</span><span class="identifier">check_throw_before_restart</span><span class="special">()</span></code> allows an aborted child transaction to
+        throw an exception upward (before it is restarted) so the entire transaction
+        can be restarted from the parent. The <code class="computeroutput"><span class="identifier">check_throw_before_restart</span><span class="special">()</span></code> API checks the current run-time state of
+        the thread to determine if another transaction is active above it. This behavior
+        allows transactions to be used at any nesting level while dynamically ensuring
+        the correct retry behavior. Finally, the call to <code class="computeroutput"><span class="identifier">restart_if_not_inflight</span><span class="special">()</span></code> ensures the transaction is correctly restarted
+        after each subsequent abort.
+      </p>
+<p>
+        Once all of the transactional operations within the for loop are executed,
+        a call to no_throw_end() is made which ends the transaction. The <code class="computeroutput"><span class="identifier">no_throw_end</span><span class="special">()</span></code>
+        terminates the transaction by either committing or aborting it. Note, however,
+        that <code class="computeroutput"><span class="identifier">no_throw_end</span><span class="special">()</span></code>
+        does not throw an exception if the transaction is aborted, whereas the prior
+        TBoost.STM's API end() does. This non-throwing behavior deviates from the
+        prior TBoost.STM implementation of automatic objects when end() was invoked
+        within the try / catch body. Furthermore, due to <code class="computeroutput"><span class="identifier">no_throw_end</span><span class="special">()</span></code> not throwing an exception if the transaction
+        is aborted, some cases may arise where <code class="computeroutput"><span class="identifier">catch_before_retry</span></code>
+        or <code class="computeroutput"><span class="identifier">before_retry</span></code> operations
+        are not invoked when a transaction is aborted. This is a current limitation
+        of the system and is overcome by inserting a manual end() operation as the
+        last operation in the atomic block. The explicit end() ensures any operations
+        within the before_retry block are executed if the transaction is aborted.
+      </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">atomic</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span>
+<span class="preprocessor">#define</span> <span class="identifier">try_atomic</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span>
+<span class="preprocessor">#define</span> <span class="identifier">use_atomic</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span>
+<span class="preprocessor">#define</span> <span class="identifier">catch_before_retry</span><span class="special">(</span><span class="identifier">E</span><span class="special">)</span>
+<span class="preprocessor">#define</span> <span class="identifier">before_retry</span>
+<span class="preprocessor">#define</span> <span class="identifier">end_atom</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.language_like_hpp.macro__atomic_"></a><a class="link" href="language_like_hpp.html#toward_boost_stm.reference.language_like_hpp.macro__atomic_" title="Macro atomic">Macro
+        <code class="computeroutput"><span class="identifier">atomic</span></code></a>
+</h4></div></div></div>
+<p>
+          Use atomic transaction T for optimistic critical section. Supports single-depth
+          and multiple-depth (nested) transactions. Performs automatic retry when
+          T is a parent transaction, throws exception when T is a child transaction.
+          This automatic switch enables correctly behaved nested and non-nested transactions
+        </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">atomic</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span> <span class="special">\</span>
+    <span class="keyword">for</span> <span class="special">(</span><span class="identifier">transaction</span> <span class="identifier">T</span><span class="special">;</span> <span class="special">\</span>
+        <span class="special">!</span><span class="identifier">T</span><span class="special">.</span><span class="identifier">committed</span><span class="special">()</span> <span class="special">&&</span> <span class="identifier">T</span><span class="special">.</span><span class="identifier">check_throw_before_restart</span><span class="special">()</span> <span class="special">&&</span> <span class="identifier">T</span><span class="special">.</span><span class="identifier">restart_if_not_inflight</span><span class="special">();</span> <span class="special">\</span>
+        <span class="identifier">T</span><span class="special">.</span><span class="identifier">no_throw_end</span><span class="special">())</span>
+    <span class="keyword">try</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.language_like_hpp.macro__try_atomic_"></a><a class="link" href="language_like_hpp.html#toward_boost_stm.reference.language_like_hpp.macro__try_atomic_" title="Macro try_atomic">Macro
+        <code class="computeroutput"><span class="identifier">try_atomic</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">try_atomic</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span> <span class="special">\</span>
+    <span class="keyword">for</span> <span class="special">(</span><span class="identifier">transaction</span> <span class="identifier">T</span><span class="special">;</span> <span class="special">\</span>
+        <span class="special">!</span><span class="identifier">T</span><span class="special">.</span><span class="identifier">committed</span><span class="special">()</span> <span class="special">&&</span> <span class="identifier">T</span><span class="special">.</span><span class="identifier">restart</span><span class="special">();</span> <span class="special">\</span>
+        <span class="identifier">T</span><span class="special">.</span><span class="identifier">no_throw_end</span><span class="special">())</span>
+    <span class="keyword">try</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.language_like_hpp.macro__use_atomic_"></a><a class="link" href="language_like_hpp.html#toward_boost_stm.reference.language_like_hpp.macro__use_atomic_" title="Macro use_atomic">Macro
+        <code class="computeroutput"><span class="identifier">use_atomic</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">use_atomic</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span> <span class="special">\</span>
+    <span class="keyword">for</span> <span class="special">(</span><span class="identifier">transaction</span> <span class="identifier">T</span><span class="special">;</span> <span class="special">\</span>
+        <span class="special">!</span><span class="identifier">T</span><span class="special">.</span><span class="identifier">committed</span><span class="special">()</span> <span class="special">&&</span> <span class="identifier">T</span><span class="special">.</span><span class="identifier">restart</span><span class="special">();</span> <span class="special">\</span>
+        <span class="identifier">T</span><span class="special">.</span><span class="identifier">end</span><span class="special">())</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.language_like_hpp.macro__catch_before_retry_"></a><a class="link" href="language_like_hpp.html#toward_boost_stm.reference.language_like_hpp.macro__catch_before_retry_" title="Macro catch_before_retry">Macro
+        <code class="computeroutput"><span class="identifier">catch_before_retry</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">catch_before_retry</span><span class="special">(</span><span class="identifier">E</span><span class="special">)</span> <span class="keyword">catch</span> <span class="special">(</span><span class="identifier">aborted_tx</span> <span class="special">&</span><span class="identifier">E</span><span class="special">)</span>
+</pre>
+<p>
+          Catches exception when transaction is aborted. This, before_retry, or end_atom
+          must follow an atomic block. Once all operations within the catch_before_retry
+          block are executed, control is returned to the local atomic where the transaction
+          is retried (if it is the parent) or the atomic block is exited by exception
+          (if it is a child).
+        </p>
+<p>
+          To be used pairwise with <code class="computeroutput"><span class="identifier">try_atomic</span></code>
+          or <code class="computeroutput"><span class="identifier">atomic</span></code>.
+        </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.language_like_hpp.macro__before_retry_"></a><a class="link" href="language_like_hpp.html#toward_boost_stm.reference.language_like_hpp.macro__before_retry_" title="Macro before_retry">Macro
+        <code class="computeroutput"><span class="identifier">before_retry</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">before_retry</span> <span class="keyword">catch</span> <span class="special">(</span><span class="identifier">aborted_tx</span> <span class="special">&)</span>
+</pre>
+<p>
+          Same as catch_before_retry(E) except the exception is discarded.
+        </p>
+<p>
+          To be used pairwise with <code class="computeroutput"><span class="identifier">try_atomic</span></code>
+          or <code class="computeroutput"><span class="identifier">atomic</span></code>.
+        </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.language_like_hpp.macro__end_atom_"></a><a class="link" href="language_like_hpp.html#toward_boost_stm.reference.language_like_hpp.macro__end_atom_" title="Macro end_atom">Macro
+        <code class="computeroutput"><span class="identifier">end_atom</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">end_atom</span> <span class="keyword">catch</span> <span class="special">(</span><span class="identifier">aborted_tx</span> <span class="special">&)</span> <span class="special">{}</span>
+</pre>
+<p>
+          Same as before_retry except the exception is discarded and {} are automated.
+        </p>
+<p>
+          To be used pairwise with <code class="computeroutput"><span class="identifier">try_atomic</span></code>
+          or <code class="computeroutput"><span class="identifier">atomic</span></code>.
+        </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="base_contention_manager_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="transaction_bookkeeping_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transaction_bookkeeping_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transaction_bookkeeping_hpp.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,120 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Header <boost/stm/transaction_bookkeeping.hpp></title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="language_like_hpp.html" title="Header <boost/stm/language_like.hpp>">
+<link rel="next" href="../examples.html" title="Examples">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="language_like_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../examples.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_stm.reference.transaction_bookkeeping_hpp"></a><a class="link" href="transaction_bookkeeping_hpp.html" title="Header <boost/stm/transaction_bookkeeping.hpp>">
+      Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">transaction_bookkeeping</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="transaction_bookkeeping_hpp.html#toward_boost_stm.reference.transaction_bookkeeping_hpp.class__transaction_bookkeeping_">Class
+        <code class="computeroutput"><span class="identifier">transaction_bookkeeping</span></code></a></span></dt></dl></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">stm</span> <span class="special">{</span>
+    <span class="keyword">class</span> <span class="identifier">transaction_bookkeeping</span>
+<span class="special">}}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.transaction_bookkeeping_hpp.class__transaction_bookkeeping_"></a><a class="link" href="transaction_bookkeeping_hpp.html#toward_boost_stm.reference.transaction_bookkeeping_hpp.class__transaction_bookkeeping_" title="Class transaction_bookkeeping">Class
+        <code class="computeroutput"><span class="identifier">transaction_bookkeeping</span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">transaction_bookkeeping</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+
+   <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special"><</span><span class="identifier">uint32</span><span class="special">,</span> <span class="identifier">uint32</span><span class="special">></span> <span class="identifier">thread_commit_map</span><span class="special">;</span>
+   <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special"><</span><span class="identifier">ThreadIdAndCommitId</span><span class="special">,</span> <span class="identifier">uint32</span><span class="special">></span> <span class="identifier">CommitHistory</span><span class="special">;</span>
+   <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special"><</span><span class="identifier">ThreadIdAndCommitId</span><span class="special">,</span> <span class="identifier">uint32</span><span class="special">></span> <span class="identifier">AbortHistory</span><span class="special">;</span>
+
+   <span class="identifier">transaction_bookkeeping</span><span class="special">();</span>
+
+   <span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lockConvoyMs</span><span class="special">();</span>
+   <span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">commitTimeMs</span><span class="special">();</span>
+   <span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">readAborts</span><span class="special">();</span>
+   <span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">writeAborts</span><span class="special">();</span>
+   <span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">abortPermDenied</span><span class="special">();</span>
+   <span class="identifier">uint32</span> <span class="keyword">const</span> <span class="identifier">totalAborts</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+   <span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">commits</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+   <span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">handOffs</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+   <span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">newMemoryAborts</span><span class="special">();</span>
+   <span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">newMemoryCommits</span><span class="special">();</span>
+   <span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">deletedMemoryAborts</span><span class="special">();</span>
+   <span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">deletedMemoryCommits</span><span class="special">();</span>
+   <span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">readChangedToWrite</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+   <span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">readStayedAsRead</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+   <span class="keyword">void</span> <span class="identifier">inc_read_aborts</span><span class="special">();</span>
+   <span class="keyword">void</span> <span class="identifier">inc_write_aborts</span><span class="special">();</span>
+
+   <span class="keyword">void</span> <span class="identifier">inc_thread_commits</span><span class="special">(</span><span class="identifier">uint32</span> <span class="identifier">threadId</span><span class="special">);</span>
+   <span class="keyword">void</span> <span class="identifier">inc_thread_aborts</span><span class="special">(</span><span class="identifier">uint32</span> <span class="identifier">threadId</span><span class="special">);</span>
+
+   <span class="identifier">thread_commit_map</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">threadedCommits</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+   <span class="identifier">thread_commit_map</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">threadedAborts</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+   <span class="keyword">void</span> <span class="identifier">inc_lock_convoy_ms</span><span class="special">(</span><span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">rhs</span><span class="special">);</span>
+   <span class="keyword">void</span> <span class="identifier">inc_commit_time_ms</span><span class="special">(</span><span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">rhs</span><span class="special">);</span>
+   <span class="keyword">void</span> <span class="identifier">inc_commits</span><span class="special">();</span>
+   <span class="keyword">void</span> <span class="identifier">inc_abort_perm_denied</span><span class="special">(</span><span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">threadId</span><span class="special">);</span>
+   <span class="keyword">void</span> <span class="identifier">inc_handoffs</span><span class="special">();</span>
+   <span class="keyword">void</span> <span class="identifier">inc_new_mem_aborts_by</span><span class="special">(</span><span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">rhs</span><span class="special">);</span>
+   <span class="keyword">void</span> <span class="identifier">inc_new_mem_commits_by</span><span class="special">(</span><span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">rhs</span><span class="special">);</span>
+   <span class="keyword">void</span> <span class="identifier">inc_del_mem_aborts_by</span><span class="special">(</span><span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">rhs</span><span class="special">);</span>
+   <span class="keyword">void</span> <span class="identifier">inc_del_mem_commits_by</span><span class="special">(</span><span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">rhs</span><span class="special">);</span>
+   <span class="keyword">void</span> <span class="identifier">incrementReadChangedToWrite</span><span class="special">();</span>
+   <span class="keyword">void</span> <span class="identifier">incrementReadStayedAsRead</span><span class="special">();</span>
+
+   <span class="identifier">CommitHistory</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">getCommitReadSetList</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+   <span class="identifier">CommitHistory</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">getCommitWriteSetList</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+   <span class="identifier">AbortHistory</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">getAbortReadSetList</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+   <span class="identifier">AbortHistory</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">getAbortWriteSetList</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+   <span class="keyword">void</span> <span class="identifier">pushBackSizeOfReadSetWhenAborting</span><span class="special">(</span><span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">size</span><span class="special">);</span>
+
+   <span class="keyword">void</span> <span class="identifier">pushBackSizeOfWriteSetWhenAborting</span><span class="special">(</span><span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">size</span><span class="special">);</span>
+
+   <span class="keyword">void</span> <span class="identifier">pushBackSizeOfReadSetWhenCommitting</span><span class="special">(</span><span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">size</span><span class="special">);</span>
+   <span class="keyword">void</span> <span class="identifier">pushBackSizeOfWriteSetWhenCommitting</span><span class="special">(</span><span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">size</span><span class="special">);</span>
+
+   <span class="keyword">bool</span> <span class="identifier">isLoggingAbortAndCommitSize</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+   <span class="keyword">void</span> <span class="identifier">setIsLoggingAbortAndCommitSize</span><span class="special">(</span><span class="keyword">bool</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">in</span><span class="special">);</span>
+
+   <span class="keyword">friend</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><<(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">out</span><span class="special">,</span> <span class="identifier">transaction_bookkeeping</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">that</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="language_like_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../examples.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transaction_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transaction_hpp.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,1065 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Header <boost/stm/transaction.hpp></title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="exceptions_hpp.html" title="Header <boost/stm/exceptions.hpp>">
+<link rel="next" href="transaction_object_hpp.html" title="Header <boost/stm/transaction_object.hpp>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="exceptions_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="transaction_object_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp"></a><a class="link" href="transaction_hpp.html" title="Header <boost/stm/transaction.hpp>"> Header
+      <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">transaction</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_">Class
+        <code class="computeroutput"><span class="identifier">transaction</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__initialize___">Static
+          Function <code class="computeroutput"><span class="identifier">initialize</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__initialize_thread___">Static
+          Function <code class="computeroutput"><span class="identifier">initialize_thread</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__terminate_thread___">Static
+          Function <code class="computeroutput"><span class="identifier">terminate_thread</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__contention_manager_">Static
+          Function <code class="computeroutput"><span class="identifier">contention_manager</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__get_contention_manager_">Static
+          Function <code class="computeroutput"><span class="identifier">get_contention_manager</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__enable_dynamic_priority_assignment_">Static
+          Function <code class="computeroutput"><span class="identifier">enable_dynamic_priority_assignment</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__disable_dynamic_priority_assignment_">Static
+          Function <code class="computeroutput"><span class="identifier">disable_dynamic_priority_assignment</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__doing_dynamic_priority_assignment_">Static
+          Function <code class="computeroutput"><span class="identifier">doing_dynamic_priority_assignment</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__enableloggingofabortandcommitsetsize_">Static
+          Function <code class="computeroutput"><span class="identifier">enableLoggingOfAbortAndCommitSetSize</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__disableloggingofabortandcommitsetsize_">Static
+          Function <code class="computeroutput"><span class="identifier">disableLoggingOfAbortAndCommitSetSize</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__transaction_bookkeeping_">Static
+          Function <code class="computeroutput"><span class="identifier">transaction_bookkeeping</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__early_conflict_detection_">Static
+          Function <code class="computeroutput"><span class="identifier">early_conflict_detection</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__late_conflict_detection_">Static
+          Function <code class="computeroutput"><span class="identifier">late_conflict_detection</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_early_conflict_detection_">Static
+          Function <code class="computeroutput"><span class="identifier">do_early_conflict_detection</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_late_conflict_detection_">Static
+          Function <code class="computeroutput"><span class="identifier">do_late_conflict_detection</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__consistency_checking_string_">Static
+          Function <code class="computeroutput"><span class="identifier">consistency_checking_string</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__validating_">Static
+          Function <code class="computeroutput"><span class="identifier">validating</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__invalidating_">Static
+          Function <code class="computeroutput"><span class="identifier">invalidating</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__direct_updating_">Static
+          Function <code class="computeroutput"><span class="identifier">direct_updating</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__deferred_updating_">Static
+          Function <code class="computeroutput"><span class="identifier">deferred_updating</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_direct_updating_">Static
+          Function <code class="computeroutput"><span class="identifier">do_direct_updating</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_deferred_updating_">Static
+          Function <code class="computeroutput"><span class="identifier">do_deferred_updating</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__update_policy_string_">Static
+          Function <code class="computeroutput"><span class="identifier">update_policy_string</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__latm_protection_">Static
+          Function <code class="computeroutput"><span class="identifier">latm_protection</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__latm_protection_str_">Static
+          Function <code class="computeroutput"><span class="identifier">latm_protection_str</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_full_lock_protection_">Static
+          Function <code class="computeroutput"><span class="identifier">do_full_lock_protection</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_tm_lock_protection_">Static
+          Function <code class="computeroutput"><span class="identifier">do_tm_lock_protection</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_tx_lock_protection_">Static
+          Function <code class="computeroutput"><span class="identifier">do_tx_lock_protection</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__doing_tx_lock_protection_">Static
+          Function <code class="computeroutput"><span class="identifier">doing_tx_lock_protection</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__doing_full_lock_protection_">Static
+          Function <code class="computeroutput"><span class="identifier">doing_full_lock_protection</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__doing_tm_lock_protection_">Static
+          Function <code class="computeroutput"><span class="identifier">doing_tm_lock_protection</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__in_flight_transactions_">Static
+          Function <code class="computeroutput"><span class="identifier">in_flight_transactions</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.constructor__transaction___">Constructor
+          <code class="computeroutput"><span class="identifier">transaction</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.destructor___transaction___">Destructor
+          <code class="computeroutput"><span class="special">~</span><span class="identifier">transaction</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__committed_">Member
+          Function <code class="computeroutput"><span class="identifier">committed</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__aborted_">Member
+          Function <code class="computeroutput"><span class="identifier">aborted</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__in_flight_">Member
+          Function <code class="computeroutput"><span class="identifier">in_flight</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__begin_">Member
+          Function <code class="computeroutput"><span class="identifier">begin</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__restart_">Member
+          Function <code class="computeroutput"><span class="identifier">restart</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__restart_if_not_inflight_">Member
+          Function <code class="computeroutput"><span class="identifier">restart_if_not_inflight</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__end_">Member
+          Function <code class="computeroutput"><span class="identifier">end</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__no_throw_end_">Member
+          Function <code class="computeroutput"><span class="identifier">no_throw_end</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__force_to_abort_">Member
+          Function <code class="computeroutput"><span class="identifier">force_to_abort</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__unforce_to_abort_">Member
+          Function <code class="computeroutput"><span class="identifier">unforce_to_abort</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__priority_">Member
+          Function <code class="computeroutput"><span class="identifier">priority</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__set_priority_">Member
+          Function <code class="computeroutput"><span class="identifier">set_priority</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__raise_priority_">Member
+          Function <code class="computeroutput"><span class="identifier">raise_priority</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__make_irrevocable_">Member
+          Function <code class="computeroutput"><span class="identifier">make_irrevocable</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__make_isolated_">Member
+          Function <code class="computeroutput"><span class="identifier">make_isolated</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__irrevocable_">Member
+          Function <code class="computeroutput"><span class="identifier">irrevocable</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__isolated_">Member
+          Function <code class="computeroutput"><span class="identifier">isolated</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__thread_id_">Member
+          Function <code class="computeroutput"><span class="identifier">thread_id</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template_member_function__find_original___">Template
+          Member Function <code class="computeroutput"><span class="identifier">find_original</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__read___">Template
+          Function <code class="computeroutput"><span class="identifier">read</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__read_ptr___">Template
+          Function <code class="computeroutput"><span class="identifier">read_ptr</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__write___">Template
+          Function <code class="computeroutput"><span class="identifier">write</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__write_ptr___">Template
+          Function <code class="computeroutput"><span class="identifier">write_ptr</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__get_written___">Template
+          Function <code class="computeroutput"><span class="identifier">get_written</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__delete_memory___">Template
+          Function <code class="computeroutput"><span class="identifier">delete_memory</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__new_memory___">Template
+          Function <code class="computeroutput"><span class="identifier">new_memory</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__new_memory_copy___">Template
+          Function <code class="computeroutput"><span class="identifier">new_memory_copy</span><span class="special"><></span></code></a></span></dt>
+</dl></dd>
+</dl></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">stm</span> <span class="special">{</span>
+    <span class="keyword">class</span> <span class="identifier">transaction</span><span class="special">;</span>
+<span class="special">}}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_" title="Class transaction">Class
+        <code class="computeroutput"><span class="identifier">transaction</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__initialize___">Static
+          Function <code class="computeroutput"><span class="identifier">initialize</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__initialize_thread___">Static
+          Function <code class="computeroutput"><span class="identifier">initialize_thread</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__terminate_thread___">Static
+          Function <code class="computeroutput"><span class="identifier">terminate_thread</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__contention_manager_">Static
+          Function <code class="computeroutput"><span class="identifier">contention_manager</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__get_contention_manager_">Static
+          Function <code class="computeroutput"><span class="identifier">get_contention_manager</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__enable_dynamic_priority_assignment_">Static
+          Function <code class="computeroutput"><span class="identifier">enable_dynamic_priority_assignment</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__disable_dynamic_priority_assignment_">Static
+          Function <code class="computeroutput"><span class="identifier">disable_dynamic_priority_assignment</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__doing_dynamic_priority_assignment_">Static
+          Function <code class="computeroutput"><span class="identifier">doing_dynamic_priority_assignment</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__enableloggingofabortandcommitsetsize_">Static
+          Function <code class="computeroutput"><span class="identifier">enableLoggingOfAbortAndCommitSetSize</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__disableloggingofabortandcommitsetsize_">Static
+          Function <code class="computeroutput"><span class="identifier">disableLoggingOfAbortAndCommitSetSize</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__transaction_bookkeeping_">Static
+          Function <code class="computeroutput"><span class="identifier">transaction_bookkeeping</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__early_conflict_detection_">Static
+          Function <code class="computeroutput"><span class="identifier">early_conflict_detection</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__late_conflict_detection_">Static
+          Function <code class="computeroutput"><span class="identifier">late_conflict_detection</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_early_conflict_detection_">Static
+          Function <code class="computeroutput"><span class="identifier">do_early_conflict_detection</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_late_conflict_detection_">Static
+          Function <code class="computeroutput"><span class="identifier">do_late_conflict_detection</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__consistency_checking_string_">Static
+          Function <code class="computeroutput"><span class="identifier">consistency_checking_string</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__validating_">Static
+          Function <code class="computeroutput"><span class="identifier">validating</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__invalidating_">Static
+          Function <code class="computeroutput"><span class="identifier">invalidating</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__direct_updating_">Static
+          Function <code class="computeroutput"><span class="identifier">direct_updating</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__deferred_updating_">Static
+          Function <code class="computeroutput"><span class="identifier">deferred_updating</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_direct_updating_">Static
+          Function <code class="computeroutput"><span class="identifier">do_direct_updating</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_deferred_updating_">Static
+          Function <code class="computeroutput"><span class="identifier">do_deferred_updating</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__update_policy_string_">Static
+          Function <code class="computeroutput"><span class="identifier">update_policy_string</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__latm_protection_">Static
+          Function <code class="computeroutput"><span class="identifier">latm_protection</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__latm_protection_str_">Static
+          Function <code class="computeroutput"><span class="identifier">latm_protection_str</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_full_lock_protection_">Static
+          Function <code class="computeroutput"><span class="identifier">do_full_lock_protection</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_tm_lock_protection_">Static
+          Function <code class="computeroutput"><span class="identifier">do_tm_lock_protection</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_tx_lock_protection_">Static
+          Function <code class="computeroutput"><span class="identifier">do_tx_lock_protection</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__doing_tx_lock_protection_">Static
+          Function <code class="computeroutput"><span class="identifier">doing_tx_lock_protection</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__doing_full_lock_protection_">Static
+          Function <code class="computeroutput"><span class="identifier">doing_full_lock_protection</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__doing_tm_lock_protection_">Static
+          Function <code class="computeroutput"><span class="identifier">doing_tm_lock_protection</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__in_flight_transactions_">Static
+          Function <code class="computeroutput"><span class="identifier">in_flight_transactions</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.constructor__transaction___">Constructor
+          <code class="computeroutput"><span class="identifier">transaction</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.destructor___transaction___">Destructor
+          <code class="computeroutput"><span class="special">~</span><span class="identifier">transaction</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__committed_">Member
+          Function <code class="computeroutput"><span class="identifier">committed</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__aborted_">Member
+          Function <code class="computeroutput"><span class="identifier">aborted</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__in_flight_">Member
+          Function <code class="computeroutput"><span class="identifier">in_flight</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__begin_">Member
+          Function <code class="computeroutput"><span class="identifier">begin</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__restart_">Member
+          Function <code class="computeroutput"><span class="identifier">restart</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__restart_if_not_inflight_">Member
+          Function <code class="computeroutput"><span class="identifier">restart_if_not_inflight</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__end_">Member
+          Function <code class="computeroutput"><span class="identifier">end</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__no_throw_end_">Member
+          Function <code class="computeroutput"><span class="identifier">no_throw_end</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__force_to_abort_">Member
+          Function <code class="computeroutput"><span class="identifier">force_to_abort</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__unforce_to_abort_">Member
+          Function <code class="computeroutput"><span class="identifier">unforce_to_abort</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__priority_">Member
+          Function <code class="computeroutput"><span class="identifier">priority</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__set_priority_">Member
+          Function <code class="computeroutput"><span class="identifier">set_priority</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__raise_priority_">Member
+          Function <code class="computeroutput"><span class="identifier">raise_priority</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__make_irrevocable_">Member
+          Function <code class="computeroutput"><span class="identifier">make_irrevocable</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__make_isolated_">Member
+          Function <code class="computeroutput"><span class="identifier">make_isolated</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__irrevocable_">Member
+          Function <code class="computeroutput"><span class="identifier">irrevocable</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__isolated_">Member
+          Function <code class="computeroutput"><span class="identifier">isolated</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__thread_id_">Member
+          Function <code class="computeroutput"><span class="identifier">thread_id</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template_member_function__find_original___">Template
+          Member Function <code class="computeroutput"><span class="identifier">find_original</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__read___">Template
+          Function <code class="computeroutput"><span class="identifier">read</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__read_ptr___">Template
+          Function <code class="computeroutput"><span class="identifier">read_ptr</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__write___">Template
+          Function <code class="computeroutput"><span class="identifier">write</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__write_ptr___">Template
+          Function <code class="computeroutput"><span class="identifier">write_ptr</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__get_written___">Template
+          Function <code class="computeroutput"><span class="identifier">get_written</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__delete_memory___">Template
+          Function <code class="computeroutput"><span class="identifier">delete_memory</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__new_memory___">Template
+          Function <code class="computeroutput"><span class="identifier">new_memory</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__new_memory_copy___">Template
+          Function <code class="computeroutput"><span class="identifier">new_memory_copy</span><span class="special"><></span></code></a></span></dt>
+</dl></div>
+<p>
+          TBoost.STM defines transactions as stackbased objects using RAII. In addition
+          to the static interfaces for direct and deferred updating described earlier
+          in this section, the following interfaces are necessary for performing
+          transactions.
+        </p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">transaction</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+    <span class="comment">// initialization
+</span>    <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">initialize</span><span class="special">();</span>
+    <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">initialize_thread</span><span class="special">();</span>
+    <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">terminate_thread</span><span class="special">();</span>
+
+    <span class="comment">// contention manager
+</span>    <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">contention_manager</span><span class="special">(</span><span class="identifier">base_contention_manager</span> <span class="special">*</span><span class="identifier">rhs</span><span class="special">);</span>
+    <span class="keyword">static</span> <span class="identifier">base_contention_manager</span><span class="special">*</span> <span class="identifier">get_contention_manager</span><span class="special">();</span>
+
+    <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">enable_dynamic_priority_assignment</span><span class="special">();</span>
+    <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">disable_dynamic_priority_assignment</span><span class="special">();</span>
+    <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">doing_dynamic_priority_assignment</span><span class="special">();</span>
+
+    <span class="comment">// bookeeping
+</span>    <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">enableLoggingOfAbortAndCommitSetSize</span><span class="special">();</span>
+    <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">disableLoggingOfAbortAndCommitSetSize</span><span class="special">();</span>
+    <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">transaction_bookkeeping</span> <span class="special">&</span> <span class="identifier">bookkeeping</span><span class="special">();</span>
+
+    <span class="comment">// conflict detection
+</span>    <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">early_conflict_detection</span><span class="special">();</span>
+    <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">late_conflict_detection</span><span class="special">();</span>
+    <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">do_early_conflict_detection</span><span class="special">();</span>
+    <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">do_late_conflict_detection</span><span class="special">();</span>
+
+    <span class="comment">// consistency checking
+</span>    <span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">consistency_checking_string</span><span class="special">();</span>
+    <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">validating</span><span class="special">();</span>
+    <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">invalidating</span><span class="special">();</span>
+
+    <span class="comment">// updating
+</span>    <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">direct_updating</span><span class="special">()</span>
+    <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">deferred_updating</span><span class="special">();</span>
+    <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">do_direct_updating</span><span class="special">();</span>
+    <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">do_deferred_updating</span><span class="special">();</span>
+    <span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">update_policy_string</span><span class="special">();</span>
+
+    <span class="comment">// Lock Aware Transactional Memory support methods
+</span>    <span class="keyword">static</span> <span class="identifier">latm_type</span> <span class="keyword">const</span> <span class="identifier">latm_protection</span><span class="special">();</span>
+    <span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="keyword">const</span> <span class="identifier">latm_protection_str</span><span class="special">();</span>
+    <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">do_full_lock_protection</span><span class="special">();</span>
+    <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">do_tm_lock_protection</span><span class="special">();</span>
+    <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">do_tx_lock_protection</span><span class="special">();</span>
+    <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">doing_full_lock_protection</span><span class="special">();</span>
+    <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">doing_tm_lock_protection</span><span class="special">();</span>
+    <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">doing_tx_lock_protection</span><span class="special">();</span>
+
+    <span class="comment">//in flight transactions
+</span>    <span class="keyword">static</span> <span class="identifier">InflightTxes</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">in_flight_transactions</span><span class="special">();</span>
+
+    <span class="comment">// transaction
+</span>    <span class="identifier">transaction</span><span class="special">();</span>
+    <span class="special">~</span><span class="identifier">transaction</span><span class="special">();</span>
+
+    <span class="keyword">bool</span> <span class="identifier">committed</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+    <span class="keyword">bool</span> <span class="identifier">aborted</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+    <span class="keyword">bool</span> <span class="identifier">in_flight</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+    <span class="keyword">void</span> <span class="identifier">begin</span><span class="special">();</span>
+    <span class="keyword">bool</span> <span class="identifier">restart</span><span class="special">();</span>
+    <span class="keyword">bool</span> <span class="identifier">restart_if_not_inflight</span><span class="special">();</span>
+    <span class="keyword">void</span> <span class="identifier">end</span><span class="special">();</span>
+    <span class="keyword">void</span> <span class="identifier">no_throw_end</span><span class="special">();</span>
+    <span class="keyword">void</span> <span class="identifier">force_to_abort</span><span class="special">();</span>
+    <span class="keyword">void</span> <span class="identifier">unforce_to_abort</span><span class="special">();</span>
+
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">priority</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+    <span class="keyword">void</span> <span class="identifier">set_priority</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">rhs</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+    <span class="keyword">void</span> <span class="identifier">raise_priority</span><span class="special">();</span>
+
+    <span class="keyword">void</span> <span class="identifier">make_irrevocable</span><span class="special">();</span>
+    <span class="keyword">void</span> <span class="identifier">make_isolated</span><span class="special">();</span>
+    <span class="keyword">bool</span> <span class="identifier">irrevocable</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+    <span class="keyword">bool</span> <span class="identifier">isolated</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+    <span class="identifier">thread_id_t</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">thread_id</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">find_original</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">in</span><span class="special">);</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">read</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">in</span><span class="special">);</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">*</span> <span class="identifier">read_ptr</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">*</span> <span class="identifier">in</span><span class="special">);</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">r</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">in</span><span class="special">);</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">write</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">in</span><span class="special">);</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">write_ptr</span><span class="special">(</span><span class="identifier">T</span><span class="special">*</span> <span class="identifier">in</span><span class="special">);</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">w</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">in</span><span class="special">);</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">get_written</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">in</span><span class="special">);</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">void</span> <span class="identifier">delete_memory</span><span class="special">(</span><span class="identifier">T</span> <span class="special">&</span><span class="identifier">in</span><span class="special">)</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">new_memory</span><span class="special">();</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">new_memory_copy</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="special">};</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__initialize___"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__initialize___" title="Static Function initialize()">Static
+          Function <code class="computeroutput"><span class="identifier">initialize</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">initialize</span><span class="special">();</span>
+</pre>
+<p>
+            This method must called before any transaction objects are constructed.
+            The initialize method initializes the overall transaction locking framework.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__initialize_thread___"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__initialize_thread___" title="Static Function initialize_thread()">Static
+          Function <code class="computeroutput"><span class="identifier">initialize_thread</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">initialize_thread</span><span class="special">();</span>
+</pre>
+<p>
+            This method must be called for each thread before any transactions are
+            constructed. This method initializes the thread's read and write sets,
+            new and deleted memory sets, mutex locks and thread-based flags.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__terminate_thread___"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__terminate_thread___" title="Static Function terminate_thread()">Static
+          Function <code class="computeroutput"><span class="identifier">terminate_thread</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">terminate_thread</span><span class="special">();</span>
+</pre>
+<p>
+            This method should be called before destroying a thread. While it is
+            not needed, it will keep transaction operations functioning optimally
+            by reducing static overhead within the transaction class that is no longer
+            needed once a thread's lifetime has ended.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__contention_manager_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__contention_manager_" title="Static Function contention_manager">Static
+          Function <code class="computeroutput"><span class="identifier">contention_manager</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">contention_manager</span><span class="special">(</span><span class="identifier">base_contention_manager</span> <span class="special">*</span><span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+            Sets TBoost.STM's contention manager to point to the passed in contention
+            manager. When a new CM is passed in to TBoost.STM, it deletes the previously
+            pointed to CM and points to the new one. Client code is responsible for
+            constructing new CMs that are passed to this method, but TBoost.STM then
+            takes ownership of these CMs.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__get_contention_manager_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__get_contention_manager_" title="Static Function get_contention_manager">Static
+          Function <code class="computeroutput"><span class="identifier">get_contention_manager</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">base_contention_manager</span><span class="special">*</span> <span class="identifier">get_contention_manager</span><span class="special">();</span>
+</pre>
+<p>
+            Returns a pointer to the current CM used by TBoost.STM. This method is
+            mostly used for validation purposes after setting a CM to a user-specified
+            implementation.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__enable_dynamic_priority_assignment_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__enable_dynamic_priority_assignment_" title="Static Function enable_dynamic_priority_assignment">Static
+          Function <code class="computeroutput"><span class="identifier">enable_dynamic_priority_assignment</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">enable_dynamic_priority_assignment</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__disable_dynamic_priority_assignment_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__disable_dynamic_priority_assignment_" title="Static Function disable_dynamic_priority_assignment">Static
+          Function <code class="computeroutput"><span class="identifier">disable_dynamic_priority_assignment</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">disable_dynamic_priority_assignment</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__doing_dynamic_priority_assignment_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__doing_dynamic_priority_assignment_" title="Static Function doing_dynamic_priority_assignment">Static
+          Function <code class="computeroutput"><span class="identifier">doing_dynamic_priority_assignment</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">doing_dynamic_priority_assignment</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__enableloggingofabortandcommitsetsize_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__enableloggingofabortandcommitsetsize_" title="Static Function enableLoggingOfAbortAndCommitSetSize">Static
+          Function <code class="computeroutput"><span class="identifier">enableLoggingOfAbortAndCommitSetSize</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">enableLoggingOfAbortAndCommitSetSize</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__disableloggingofabortandcommitsetsize_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__disableloggingofabortandcommitsetsize_" title="Static Function disableLoggingOfAbortAndCommitSetSize">Static
+          Function <code class="computeroutput"><span class="identifier">disableLoggingOfAbortAndCommitSetSize</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">disableLoggingOfAbortAndCommitSetSize</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__transaction_bookkeeping_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__transaction_bookkeeping_" title="Static Function transaction_bookkeeping">Static
+          Function <code class="computeroutput"><span class="identifier">transaction_bookkeeping</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">transaction_bookkeeping</span> <span class="special">&</span> <span class="identifier">bookkeeping</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__early_conflict_detection_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__early_conflict_detection_" title="Static Function early_conflict_detection">Static
+          Function <code class="computeroutput"><span class="identifier">early_conflict_detection</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">early_conflict_detection</span><span class="special">();</span>
+</pre>
+<p>
+            Returns true if direct updating is active and early conflict detection,
+            otherwise returns false.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__late_conflict_detection_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__late_conflict_detection_" title="Static Function late_conflict_detection">Static
+          Function <code class="computeroutput"><span class="identifier">late_conflict_detection</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">late_conflict_detection</span><span class="special">();</span>
+</pre>
+<p>
+            Returns true if deferred updating is active or if direct updating and
+            late conflict detection are active, otherwise returns false.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_early_conflict_detection_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_early_conflict_detection_" title="Static Function do_early_conflict_detection">Static
+          Function <code class="computeroutput"><span class="identifier">do_early_conflict_detection</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">do_early_conflict_detection</span><span class="special">();</span>
+</pre>
+<p>
+            Attempts to switch to early conflict detection. Returns false if in-flight
+            transactions are found or if deferred updating is active. Otherwise returns
+            true and enables early conflict detection.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_late_conflict_detection_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_late_conflict_detection_" title="Static Function do_late_conflict_detection">Static
+          Function <code class="computeroutput"><span class="identifier">do_late_conflict_detection</span></code></a>
+</h5></div></div></div>
+<p>
+            Attempts to switch to late conflict detection. Returns false if in-flight
+            transactions are found, otherwise returns true and enables late conflict
+            detection.
+          </p>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">do_late_conflict_detection</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__consistency_checking_string_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__consistency_checking_string_" title="Static Function consistency_checking_string">Static
+          Function <code class="computeroutput"><span class="identifier">consistency_checking_string</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">consistency_checking_string</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__validating_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__validating_" title="Static Function validating">Static
+          Function <code class="computeroutput"><span class="identifier">validating</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">validating</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__invalidating_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__invalidating_" title="Static Function invalidating">Static
+          Function <code class="computeroutput"><span class="identifier">invalidating</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">invalidating</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__direct_updating_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__direct_updating_" title="Static Function direct_updating">Static
+          Function <code class="computeroutput"><span class="identifier">direct_updating</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">direct_updating</span><span class="special">()</span>
+</pre>
+<p>
+            Returns true if direct updating is active, otherwise returns false.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__deferred_updating_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__deferred_updating_" title="Static Function deferred_updating">Static
+          Function <code class="computeroutput"><span class="identifier">deferred_updating</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">deferred_updating</span><span class="special">();</span>
+</pre>
+<p>
+            Returns true if deferred updating is active, otherwise returns false
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_direct_updating_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_direct_updating_" title="Static Function do_direct_updating">Static
+          Function <code class="computeroutput"><span class="identifier">do_direct_updating</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">do_direct_updating</span><span class="special">();</span>
+</pre>
+<p>
+            Attempts to switch to direct updating. Returns false if inflight transactions
+            are found and TBoost.STM is unable to switch updating models. Otherwise,
+            returns true and enables direct updating.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_deferred_updating_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_deferred_updating_" title="Static Function do_deferred_updating">Static
+          Function <code class="computeroutput"><span class="identifier">do_deferred_updating</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">do_deferred_updating</span><span class="special">();</span>
+</pre>
+<p>
+            Attempts to switch to deferred updating. Returns false if inflight transactions
+            are found and TBoost.STM is unable to switch updating models. Otherwise,
+            returns true and enables deferred updating.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__update_policy_string_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__update_policy_string_" title="Static Function update_policy_string">Static
+          Function <code class="computeroutput"><span class="identifier">update_policy_string</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">update_policy_string</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__latm_protection_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__latm_protection_" title="Static Function latm_protection">Static
+          Function <code class="computeroutput"><span class="identifier">latm_protection</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">latm_type</span> <span class="keyword">const</span> <span class="identifier">latm_protection</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__latm_protection_str_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__latm_protection_str_" title="Static Function latm_protection_str">Static
+          Function <code class="computeroutput"><span class="identifier">latm_protection_str</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="keyword">const</span> <span class="identifier">latm_protection_str</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_full_lock_protection_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_full_lock_protection_" title="Static Function do_full_lock_protection">Static
+          Function <code class="computeroutput"><span class="identifier">do_full_lock_protection</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">do_full_lock_protection</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_tm_lock_protection_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_tm_lock_protection_" title="Static Function do_tm_lock_protection">Static
+          Function <code class="computeroutput"><span class="identifier">do_tm_lock_protection</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">do_tm_lock_protection</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_tx_lock_protection_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__do_tx_lock_protection_" title="Static Function do_tx_lock_protection">Static
+          Function <code class="computeroutput"><span class="identifier">do_tx_lock_protection</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">do_tx_lock_protection</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__doing_tx_lock_protection_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__doing_tx_lock_protection_" title="Static Function doing_tx_lock_protection">Static
+          Function <code class="computeroutput"><span class="identifier">doing_tx_lock_protection</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">doing_tx_lock_protection</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__doing_full_lock_protection_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__doing_full_lock_protection_" title="Static Function doing_full_lock_protection">Static
+          Function <code class="computeroutput"><span class="identifier">doing_full_lock_protection</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">doing_full_lock_protection</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__doing_tm_lock_protection_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__doing_tm_lock_protection_" title="Static Function doing_tm_lock_protection">Static
+          Function <code class="computeroutput"><span class="identifier">doing_tm_lock_protection</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">doing_tm_lock_protection</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__in_flight_transactions_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.static_function__in_flight_transactions_" title="Static Function in_flight_transactions">Static
+          Function <code class="computeroutput"><span class="identifier">in_flight_transactions</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">InflightTxes</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">in_flight_transactions</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.constructor__transaction___"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.constructor__transaction___" title="Constructor transaction()">Constructor
+          <code class="computeroutput"><span class="identifier">transaction</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">transaction</span><span class="special">();</span>
+</pre>
+<p>
+            Default ctor for a transaction immediately puts the transaction in-flight.
+            In addition, the ctor points referenced members to a number of thread-specific
+            sets which it does by referencing the thread id.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.destructor___transaction___"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.destructor___transaction___" title="Destructor ~transaction()">Destructor
+          <code class="computeroutput"><span class="special">~</span><span class="identifier">transaction</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="special">~</span><span class="identifier">transaction</span><span class="special">();</span>
+</pre>
+<p>
+            The transaction dtor releases the thread-specific transaction lock if
+            it is obtained. The dtor then immediately returns if the transaction
+            was not in-flight, or if the transaction was in-flight, it forces the
+            transaction to abort which performs a number of clean-up operations.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__committed_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__committed_" title="Member Function committed">Member
+          Function <code class="computeroutput"><span class="identifier">committed</span></code></a>
+</h5></div></div></div>
+<p>
+            States if the state of the transaction is e_committed or e_hand_off
+          </p>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">committed</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__aborted_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__aborted_" title="Member Function aborted">Member
+          Function <code class="computeroutput"><span class="identifier">aborted</span></code></a>
+</h5></div></div></div>
+<p>
+            States if the state of the transaction is e_aborted
+          </p>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">aborted</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__in_flight_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__in_flight_" title="Member Function in_flight">Member
+          Function <code class="computeroutput"><span class="identifier">in_flight</span></code></a>
+</h5></div></div></div>
+<p>
+            States if the state of the transaction is e_in_flight
+          </p>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">in_flight</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__begin_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__begin_" title="Member Function begin">Member
+          Function <code class="computeroutput"><span class="identifier">begin</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">begin</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__restart_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__restart_" title="Member Function restart">Member
+          Function <code class="computeroutput"><span class="identifier">restart</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">restart</span><span class="special">();</span>
+</pre>
+<p>
+            This method is similar to the transaction ctor as it signals the start
+            of a transaction and attempts to put it in-flight. A fundamental difference
+            between restart_transaction() and the transaction ctor is that if the
+            transaction is already in-flight, begin_transaction() aborts the transaction
+            and restarts it. This behavior is important for composed transactions
+            where the outer transaction is never destructed, due to continually excepting
+            inner transactions which also prevent the outer transaction from reaching
+            its call to end_transaction(). This is shown concretely in the composable
+            transaction example
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__restart_if_not_inflight_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__restart_if_not_inflight_" title="Member Function restart_if_not_inflight">Member
+          Function <code class="computeroutput"><span class="identifier">restart_if_not_inflight</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">restart_if_not_inflight</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__end_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__end_" title="Member Function end">Member
+          Function <code class="computeroutput"><span class="identifier">end</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">end</span><span class="special">();</span>
+</pre>
+<p>
+            This method signals that the transaction should try to commit. The return
+            value stored in a transaction_state enumeration is either 1) e_hand_off,
+            meaning the transaction was nested and has handed off its state to the
+            parent transaction or 2) e_committed, meaning the transaction was committed
+            and global memory has been updated. If a transaction is aborted, an aborted_transaction_exception
+            is thrown. A call to end_transaction() will never return an enumerated
+            state which signals the transaction was aborted. Instead, if a transaction
+            is found to be aborted at a call to end_transaction(), an aborted transaction
+            exception is thrown. This behavior enables all aborted transactions to
+            be handled in a similar fashion, resulting in an aborted transaction
+            exception.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__no_throw_end_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__no_throw_end_" title="Member Function no_throw_end">Member
+          Function <code class="computeroutput"><span class="identifier">no_throw_end</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">no_throw_end</span><span class="special">();</span>
+</pre>
+<p>
+            Do the same as end() by caching every exception.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__force_to_abort_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__force_to_abort_" title="Member Function force_to_abort">Member
+          Function <code class="computeroutput"><span class="identifier">force_to_abort</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">force_to_abort</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__unforce_to_abort_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__unforce_to_abort_" title="Member Function unforce_to_abort">Member
+          Function <code class="computeroutput"><span class="identifier">unforce_to_abort</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">unforce_to_abort</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__priority_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__priority_" title="Member Function priority">Member
+          Function <code class="computeroutput"><span class="identifier">priority</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">priority</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__set_priority_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__set_priority_" title="Member Function set_priority">Member
+          Function <code class="computeroutput"><span class="identifier">set_priority</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">set_priority</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">rhs</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__raise_priority_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__raise_priority_" title="Member Function raise_priority">Member
+          Function <code class="computeroutput"><span class="identifier">raise_priority</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">raise_priority</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__make_irrevocable_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__make_irrevocable_" title="Member Function make_irrevocable">Member
+          Function <code class="computeroutput"><span class="identifier">make_irrevocable</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">make_irrevocable</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__make_isolated_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__make_isolated_" title="Member Function make_isolated">Member
+          Function <code class="computeroutput"><span class="identifier">make_isolated</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">make_isolated</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__irrevocable_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__irrevocable_" title="Member Function irrevocable">Member
+          Function <code class="computeroutput"><span class="identifier">irrevocable</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">irrevocable</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__isolated_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__isolated_" title="Member Function isolated">Member
+          Function <code class="computeroutput"><span class="identifier">isolated</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">isolated</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__thread_id_"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.member_function__thread_id_" title="Member Function thread_id">Member
+          Function <code class="computeroutput"><span class="identifier">thread_id</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">thread_id_t</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">thread_id</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.template_member_function__find_original___"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template_member_function__find_original___" title="Template Member Function find_original<>">Template
+          Member Function <code class="computeroutput"><span class="identifier">find_original</span><span class="special"><></span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">find_original</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">in</span><span class="special">);</span>
+</pre>
+<p>
+            This method searches the transaction's write list for the original piece
+            of memory referred to by the transactional memory passed in. If the memory
+            passed in is the original global memory it is simply returned. Otherwise,
+            the copied memory passed in, is used to find the original global memory
+            stored in the transaction's write set and then the original memory is
+            returned. While new memory constructed within a transaction can be passed
+            into find_original(), it is not necessary as it always will return a
+            reference to itself. However, to reduce the complexity of client-side
+            code, it may be preferred to build a single method for both new and existing
+            memory address lookup.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__read___"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__read___" title="Template Function read<>">Template
+          Function <code class="computeroutput"><span class="identifier">read</span><span class="special"><></span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">read</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">in</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">r</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">in</span><span class="special">);</span>
+</pre>
+<p>
+            The read method is used when a transaction is attempting to read a piece
+            of memory that is shared between threads (i.e. global heap space). The
+            input argument is a reference to a derived base_transaction_object instance,
+            the return value reference is the correct base_transaction_object to
+            read based on the current state of the transaction and the currently
+            employed updating policy.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__read_ptr___"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__read_ptr___" title="Template Function read_ptr<>">Template
+          Function <code class="computeroutput"><span class="identifier">read_ptr</span><span class="special"><></span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">*</span> <span class="identifier">read_ptr</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">*</span> <span class="identifier">in</span><span class="special">);</span>
+</pre>
+<p>
+            Identical to the read() interface, except the input parameter is a base_transaction_object
+            pointer as is the return parameter
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__write___"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__write___" title="Template Function write<>">Template
+          Function <code class="computeroutput"><span class="identifier">write</span><span class="special"><></span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">write</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">in</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">w</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">in</span><span class="special">);</span>
+</pre>
+<p>
+            The templatized write method is used when a transaction is attempting
+            to write to a piece of memory that is shared between threads (i.e. global
+            heap space). The input argument is a reference to a derived base_transaction_object
+            instance, the return value reference is the correct base_transaction_object
+            to write to based on the current state of the transaction and the currently
+            employed updating policy.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__write_ptr___"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__write_ptr___" title="Template Function write_ptr<>">Template
+          Function <code class="computeroutput"><span class="identifier">write_ptr</span><span class="special"><></span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">write_ptr</span><span class="special">(</span><span class="identifier">T</span><span class="special">*</span> <span class="identifier">in</span><span class="special">);</span>
+</pre>
+<p>
+            Identical to the write() interface, except the input is a base_transaction_object
+            pointer as is the return parameter.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__get_written___"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__get_written___" title="Template Function get_written<>">Template
+          Function <code class="computeroutput"><span class="identifier">get_written</span><span class="special"><></span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">get_written</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">in</span><span class="special">);</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__delete_memory___"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__delete_memory___" title="Template Function delete_memory<>">Template
+          Function <code class="computeroutput"><span class="identifier">delete_memory</span><span class="special"><></span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">void</span> <span class="identifier">delete_memory</span><span class="special">(</span><span class="identifier">T</span> <span class="special">&</span><span class="identifier">in</span><span class="special">)</span>
+</pre>
+<p>
+            This method places the input parameter into a garbage set which is emptied
+            (deleted) once the transaction commits.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__new_memory___"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__new_memory___" title="Template Function new_memory<>">Template
+          Function <code class="computeroutput"><span class="identifier">new_memory</span><span class="special"><></span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">new_memory</span><span class="special">();</span>
+</pre>
+<p>
+            This method constructs new memory of a derived base_transaction_object
+            type and returns a pointer to the newly allocated memory. While the input
+            template parameter is not used, C++ does not allow functions to differ
+            only by return type. Since different template function instantiations
+            would be constructed here, one per derived base_transaction_object type
+            used within the transaction, a compiler error would be generated for
+            differing return types if an input parameter was not supplied. To overcome
+            this, a void* could be used as the return value, but that would incur
+            client-side casting on the return value, a costly side-effect. To overcome
+            the limitations of C++, while still ensuring strong type-safety, an input
+            parameter which is never referenced is required.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__new_memory_copy___"></a><a class="link" href="transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.class__transaction_.template__function__new_memory_copy___" title="Template Function new_memory_copy<>">Template
+          Function <code class="computeroutput"><span class="identifier">new_memory_copy</span><span class="special"><></span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">new_memory_copy</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+            This method behaves similarly to the new_memory() interface except that
+            it makes an exact replica of the input parameter. The return value is
+            a pointer to the newly allocated, replicated object.
+          </p>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="exceptions_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="transaction_object_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transaction_object_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transaction_object_hpp.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,532 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Header <boost/stm/transaction_object.hpp></title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="transaction_hpp.html" title="Header <boost/stm/transaction.hpp>">
+<link rel="next" href="tx_ptr_hpp.html" title="Header <boost/stm/tx_ptr.hpp>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="transaction_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tx_ptr_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_stm.reference.transaction_object_hpp"></a><a class="link" href="transaction_object_hpp.html" title="Header <boost/stm/transaction_object.hpp>"> Header
+      <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">transaction_object</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_">Abstract
+        Class <code class="computeroutput"><span class="identifier">base_transaction_object</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.constructor__base_transaction_object___">Constructor
+          <code class="computeroutput"><span class="identifier">base_transaction_object</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.virtual_destructor___base_transaction_object___">Virtual
+          Destructor <code class="computeroutput"><span class="special">~</span><span class="identifier">base_transaction_object</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.virtual_function__copy_state___">Virtual
+          function <code class="computeroutput"><span class="identifier">copy_state</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.virtual_function__move_state___">Virtual
+          function <code class="computeroutput"><span class="identifier">move_state</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.static_function__retrieve_mem___">Static
+          function <code class="computeroutput"><span class="identifier">retrieve_mem</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.static_function__return_mem___">Static
+          function <code class="computeroutput"><span class="identifier">return_mem</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.static_function__alloc_size___">Static
+          function <code class="computeroutput"><span class="identifier">alloc_size</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.virtual_function__cache_deallocate___">Virtual
+          function <code class="computeroutput"><span class="identifier">cache_deallocate</span><span class="special">()</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__transaction_object___">Template
+        Class <code class="computeroutput"><span class="identifier">transaction_object</span><span class="special"><></span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__transaction_object___.virtual_function__copy_state___">Virtual
+          function <code class="computeroutput"><span class="identifier">copy_state</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__transaction_object___.virtual_function__move_state___">Virtual
+          function <code class="computeroutput"><span class="identifier">move_state</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__transaction_object___.virtual_function__cache_deallocate___">Virtual
+          function <code class="computeroutput"><span class="identifier">cache_deallocate</span><span class="special">()</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__native_trans___">Template
+        Class <code class="computeroutput"><span class="identifier">native_trans</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__transactional_object___">Template
+        Class <code class="computeroutput"><span class="identifier">transactional_object</span><span class="special"><></span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__transactional_object___.virtual_function__copy_state___">Virtual
+          function <code class="computeroutput"><span class="identifier">copy_state</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__transactional_object___.virtual_function__move_state___">Virtual
+          function <code class="computeroutput"><span class="identifier">move_state</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__transactional_object___.virtual_function__cache_deallocate___">Virtual
+          function <code class="computeroutput"><span class="identifier">cache_deallocate</span><span class="special">()</span></code></a></span></dt>
+</dl></dd>
+</dl></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">stm</span> <span class="special">{</span>
+    <span class="keyword">class</span> <span class="identifier">base_transaction_object</span><span class="special">;</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Derived</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">transaction_object</span><span class="special">;</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">native_trans</span><span class="special">;</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">transactional_object</span><span class="special">;</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+    <span class="keyword">static</span> <span class="identifier">transactional_object</span><span class="special"><</span><span class="identifier">T</span><span class="special">>*</span> <span class="identifier">tx_up_cast</span><span class="special">(</span><span class="identifier">T</span><span class="special">*</span> <span class="identifier">ptr</span><span class="special">);</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">U</span><span class="special">></span>
+    <span class="keyword">static</span> <span class="identifier">transactional_object</span><span class="special"><</span><span class="identifier">T</span><span class="special">>*</span> <span class="identifier">tx_static_cast</span><span class="special">(</span><span class="identifier">transactional_object</span><span class="special"><</span><span class="identifier">U</span><span class="special">>*</span> <span class="identifier">ptr</span><span class="special">);</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">U</span><span class="special">></span>
+    <span class="keyword">static</span> <span class="identifier">transactional_object</span><span class="special"><</span><span class="identifier">T</span><span class="special">>*</span> <span class="identifier">tx_dynamic_cast</span><span class="special">(</span><span class="identifier">transactional_object</span><span class="special"><</span><span class="identifier">U</span><span class="special">>*</span> <span class="identifier">ptr</span><span class="special">);</span>
+<span class="special">}}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_"></a><a class="link" href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_" title="Abstract Class base_transaction_object">Abstract
+        Class <code class="computeroutput"><span class="identifier">base_transaction_object</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.constructor__base_transaction_object___">Constructor
+          <code class="computeroutput"><span class="identifier">base_transaction_object</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.virtual_destructor___base_transaction_object___">Virtual
+          Destructor <code class="computeroutput"><span class="special">~</span><span class="identifier">base_transaction_object</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.virtual_function__copy_state___">Virtual
+          function <code class="computeroutput"><span class="identifier">copy_state</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.virtual_function__move_state___">Virtual
+          function <code class="computeroutput"><span class="identifier">move_state</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.static_function__retrieve_mem___">Static
+          function <code class="computeroutput"><span class="identifier">retrieve_mem</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.static_function__return_mem___">Static
+          function <code class="computeroutput"><span class="identifier">return_mem</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.static_function__alloc_size___">Static
+          function <code class="computeroutput"><span class="identifier">alloc_size</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.virtual_function__cache_deallocate___">Virtual
+          function <code class="computeroutput"><span class="identifier">cache_deallocate</span><span class="special">()</span></code></a></span></dt>
+</dl></div>
+<p>
+          This is the base class of all the transactional objects. It tracks:
+        </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+<code class="computeroutput"><span class="identifier">transactionThread_</span></code>: the
+            thread identifier holding the write acces to this transactional object
+          </li>
+<li>
+<code class="computeroutput"><span class="identifier">transaction_</span></code>: the pointer
+            to the transaction
+          </li>
+<li>
+<code class="computeroutput"><span class="identifier">version_</span></code>: the version
+            when performing validation
+          </li>
+<li>
+<code class="computeroutput"><span class="identifier">newMemory_</span></code>: states whether
+            this object is a new object
+          </li>
+</ul></div>
+<p>
+          Transactional objets must specialize the pure virtual functions * <code class="computeroutput"><span class="identifier">copy_state</span><span class="special">(</span><span class="identifier">base_transaction_object</span> <span class="keyword">const</span>
+          <span class="special">*</span> <span class="keyword">const</span>
+          <span class="identifier">rhs</span><span class="special">)</span></code>
+          * <code class="computeroutput"><span class="identifier">move_state</span><span class="special">(</span><span class="identifier">base_transaction_object</span> <span class="special">*</span>
+          <span class="identifier">rhs</span><span class="special">)</span></code>
+          if <code class="computeroutput"><span class="identifier">BUILD_MOVE_SEMANTICS</span></code>
+          * <code class="computeroutput"><span class="identifier">cache_deallocate</span><span class="special">()</span></code>
+          if <code class="computeroutput"><span class="identifier">BOOST_STM_USE_UNASIGNED_COPY</span></code>
+        </p>
+<p>
+          <code class="computeroutput"><span class="identifier">copy_state</span></code> is used to copy
+          the backup/working copy to the shared transactional object when the roolback/commit
+          is done direct/defered policy is used.
+        </p>
+<p>
+          <code class="computeroutput"><span class="identifier">move_state</span></code> is used to move
+          the backup/working copy to the shared transactional object when the roolback/commit
+          is done direct/defered policy is used.
+        </p>
+<p>
+          <code class="computeroutput"><span class="identifier">cache_deallocate</span></code> is used
+          to release the backup/working copy when the transaction ends if direct/defered
+          policy is used.
+        </p>
+<p>
+          When USE_STM_MEMORY_MANAGER is defined this class provides two functions
+          (<code class="computeroutput"><span class="identifier">retrieve_mem</span></code> and <code class="computeroutput"><span class="identifier">return_mem</span></code>) and to manage a pool of memory.
+        </p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">base_transaction_object</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+
+    <span class="identifier">base_transaction_object</span><span class="special">();</span>
+    <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">base_transaction_object</span><span class="special">()</span> <span class="special">{};</span>
+
+    <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">copy_state</span><span class="special">(</span><span class="identifier">base_transaction_object</span> <span class="keyword">const</span> <span class="special">*</span> <span class="keyword">const</span> <span class="identifier">rhs</span><span class="special">)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+    <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">move_state</span><span class="special">(</span><span class="identifier">base_transaction_object</span> <span class="special">*</span> <span class="identifier">rhs</span><span class="special">)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+
+    <span class="keyword">void</span> <span class="identifier">transaction_thread</span><span class="special">(</span><span class="identifier">thread_id</span> <span class="identifier">rhs</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+    <span class="identifier">thread_id</span> <span class="identifier">transaction_thread</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+    <span class="keyword">void</span> <span class="identifier">new_memory</span><span class="special">(</span><span class="keyword">bool</span> <span class="identifier">rhs</span><span class="special">)</span>
+    <span class="keyword">bool</span> <span class="identifier">new_memory</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+<span class="preprocessor">#if</span> <span class="identifier">BOOST_STM_PERFORMING_VALIDATION</span>
+    <span class="keyword">void</span> <span class="identifier">version</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">rhs</span><span class="special">);</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">version</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="preprocessor">#endif</span>
+
+<span class="preprocessor">#if</span> <span class="identifier">BOOST_STM_USE_MEMORY_MANAGER</span>
+    <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">return_mem</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="identifier">mem</span><span class="special">,</span> <span class="identifier">size_t</span> <span class="identifier">size</span><span class="special">);</span>
+    <span class="keyword">static</span> <span class="keyword">void</span><span class="special">*</span> <span class="identifier">retrieve_mem</span><span class="special">(</span><span class="identifier">size_t</span> <span class="identifier">size</span><span class="special">);</span>
+    <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">alloc_size</span><span class="special">(</span><span class="identifier">size_t</span> <span class="identifier">size</span><span class="special">);</span>
+<span class="preprocessor">#endif</span>
+
+<span class="preprocessor">#ifdef</span> <span class="identifier">BOOST_STM_USE_UNASIGNED_COPY</span>
+    <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">cache_deallocate</span><span class="special">()=</span><span class="number">0</span><span class="special">;</span>
+<span class="preprocessor">#endif</span>
+</pre>
+<p>
+          };
+        </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.constructor__base_transaction_object___"></a><a class="link" href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.constructor__base_transaction_object___" title="Constructor base_transaction_object()">Constructor
+          <code class="computeroutput"><span class="identifier">base_transaction_object</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="identifier">base_transaction_object</span><span class="special">();</span>
+</pre>
+<p>
+            Default constructor (ctor) with no parameters allows derived base_transaction_objects
+            to implicitly construct the base_transaction_object base class for easier
+            integration.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.virtual_destructor___base_transaction_object___"></a><a class="link" href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.virtual_destructor___base_transaction_object___" title="Virtual Destructor ~base_transaction_object()">Virtual
+          Destructor <code class="computeroutput"><span class="special">~</span><span class="identifier">base_transaction_object</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">base_transaction_object</span><span class="special">()</span> <span class="special">{};</span>
+</pre>
+<p>
+            Virtual destructor (dtor) ensures correct destructors are called in the
+            inheritance hierarchy for delete operations invoked on base_transaction_object
+            pointers, which occur in numerous places throughout the internal transaction
+            code.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.virtual_function__copy_state___"></a><a class="link" href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.virtual_function__copy_state___" title="Virtual function copy_state()">Virtual
+          function <code class="computeroutput"><span class="identifier">copy_state</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">copy_state</span><span class="special">(</span><span class="identifier">base_transaction_object</span> <span class="keyword">const</span> <span class="special">*</span> <span class="keyword">const</span> <span class="identifier">rhs</span><span class="special">)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+</pre>
+<p>
+            The <code class="computeroutput"><span class="identifier">copy_state</span><span class="special">()</span></code>
+            method is called each time global memory is updated, for either direct
+            or deferred updating policies. With this in mind, it is vital that the
+            this object be set to the exact state of the input parameter.
+          </p>
+<p>
+            Derived classes usually simply override this method and perform an <code class="computeroutput"><span class="keyword">operator</span><span class="special">=()</span></code>
+            function call for the specific derived type.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.virtual_function__move_state___"></a><a class="link" href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.virtual_function__move_state___" title="Virtual function move_state()">Virtual
+          function <code class="computeroutput"><span class="identifier">move_state</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">move_state</span><span class="special">(</span><span class="identifier">base_transaction_object</span> <span class="special">*</span> <span class="identifier">rhs</span><span class="special">)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+</pre>
+<p>
+            The move_state() method is internally called at deferred updating commit
+            time and at direct updating abort time and invokes the user-defined derived
+            transaction class's move assignment (e.g. operator=(type &&)).
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.static_function__retrieve_mem___"></a><a class="link" href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.static_function__retrieve_mem___" title="Static function retrieve_mem()">Static
+          function <code class="computeroutput"><span class="identifier">retrieve_mem</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">void</span><span class="special">*</span> <span class="identifier">retrieve_mem</span><span class="special">(</span><span class="identifier">size_t</span> <span class="identifier">size</span><span class="special">);</span>
+</pre>
+<p>
+            Static interface into TBoost.STM's memory management system for retrieving
+            memory. The supplied parameter is the requested block size, the return
+            parameter is a void* to the allocated block. Usually access to this interface
+            is done by overloading operator new in the derived base_transaction_object
+            class. Void pointers are the natural and preferred manner to handle memory
+            allocations and deallocations and are therefore safe in this context.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.static_function__return_mem___"></a><a class="link" href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.static_function__return_mem___" title="Static function return_mem()">Static
+          function <code class="computeroutput"><span class="identifier">return_mem</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">return_mem</span><span class="special">(</span><span class="keyword">void</span> <span class="special">*</span><span class="identifier">mem</span><span class="special">,</span> <span class="identifier">size_t</span> <span class="identifier">size</span><span class="special">);</span>
+</pre>
+<p>
+            Static interface into TBoost.STM's memory management system for returning
+            memory. The first parameter points to the memory block being returned,
+            the second parameter specifies its size. Usually access to this interface
+            is done by overloading operator delete in the derived transaction object
+            class. Void pointers are the natural and preferred manner to handle memory
+            allocations and deallocations and are therefore safe in this context.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.static_function__alloc_size___"></a><a class="link" href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.static_function__alloc_size___" title="Static function alloc_size()">Static
+          function <code class="computeroutput"><span class="identifier">alloc_size</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">alloc_size</span><span class="special">(</span><span class="identifier">size_t</span> <span class="identifier">size</span><span class="special">);</span>
+</pre>
+<p>
+            Static interface into TBoost.STM's memory management system which allows
+            the user to specify the allocation chunk size for the memory manager.
+            The input parameter specifies the number of transactional objects that
+            should be allocated at startup and with each subsequent buffer increase.
+            If no size is specified, the allocation chunk size uses TBoost.STM's
+            default value, currently 8192. The alloc_size() interface can be reconfigured
+            at runtime and is used upon the next buffer increase.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.virtual_function__cache_deallocate___"></a><a class="link" href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.abstract_class__base_transaction_object_.virtual_function__cache_deallocate___" title="Virtual function cache_deallocate()">Virtual
+          function <code class="computeroutput"><span class="identifier">cache_deallocate</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">cache_deallocate</span><span class="special">()=</span><span class="number">0</span><span class="special">;</span>
+</pre>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.transaction_object_hpp.template_class__transaction_object___"></a><a class="link" href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__transaction_object___" title="Template Class transaction_object<>">Template
+        Class <code class="computeroutput"><span class="identifier">transaction_object</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__transaction_object___.virtual_function__copy_state___">Virtual
+          function <code class="computeroutput"><span class="identifier">copy_state</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__transaction_object___.virtual_function__move_state___">Virtual
+          function <code class="computeroutput"><span class="identifier">move_state</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__transaction_object___.virtual_function__cache_deallocate___">Virtual
+          function <code class="computeroutput"><span class="identifier">cache_deallocate</span><span class="special">()</span></code></a></span></dt>
+</dl></div>
+<p>
+          To further simplify the usage of TBoost.STM, an intermediate template class
+          was built which is meant to sit between the base_transaction_object and
+          the user-defined transaction objects. The purpose of this intermediate
+          class is to reduce the code overhead needed for user-defined transaction
+          objects. To do this, the curiously recurring template pattern developed
+          by James Coplien was used.
+        </p>
+<p>
+          With the templatized transaction_object, client-side transaction objects
+          need only to derive from it and pass their class type as its template parameter.
+          At compile-time the transaction_object generates the necessary code to
+          override copy_state() and implement operator new and operator delete using
+          TBoost.STM's memory manager for all user-defined types derived from it.
+        </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Derived</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">transaction_object</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">base_transaction_object</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+
+   <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">copy_state</span><span class="special">(</span><span class="identifier">base_transaction_object</span> <span class="keyword">const</span> <span class="special">*</span> <span class="keyword">const</span> <span class="identifier">rhs</span><span class="special">);</span>
+   <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">move_state</span><span class="special">(</span><span class="identifier">base_transaction_object</span> <span class="special">*</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_object_hpp.template_class__transaction_object___.virtual_function__copy_state___"></a><a class="link" href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__transaction_object___.virtual_function__copy_state___" title="Virtual function copy_state()">Virtual
+          function <code class="computeroutput"><span class="identifier">copy_state</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">copy_state</span><span class="special">(</span><span class="identifier">base_transaction_object</span> <span class="keyword">const</span> <span class="special">*</span> <span class="keyword">const</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+            The copy_state() method call to the free function cache_restore which
+            do a unitialized_copy by default.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_object_hpp.template_class__transaction_object___.virtual_function__move_state___"></a><a class="link" href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__transaction_object___.virtual_function__move_state___" title="Virtual function move_state()">Virtual
+          function <code class="computeroutput"><span class="identifier">move_state</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">move_state</span><span class="special">(</span><span class="identifier">base_transaction_object</span> <span class="special">*</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+            The move_state() method call to the free function cache_restore which
+            do a unitialized_copy by default.
+          </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_object_hpp.template_class__transaction_object___.virtual_function__cache_deallocate___"></a><a class="link" href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__transaction_object___.virtual_function__cache_deallocate___" title="Virtual function cache_deallocate()">Virtual
+          function <code class="computeroutput"><span class="identifier">cache_deallocate</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">cache_deallocate</span><span class="special">()=</span><span class="number">0</span><span class="special">;</span>
+</pre>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.transaction_object_hpp.template_class__native_trans___"></a><a class="link" href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__native_trans___" title="Template Class native_trans<>">Template
+        Class <code class="computeroutput"><span class="identifier">native_trans</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">native_trans</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">transaction_object</span><span class="special"><</span> <span class="identifier">native_trans</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+   <span class="identifier">native_trans</span><span class="special">(){}</span>
+   <span class="identifier">native_trans</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">rhs</span><span class="special">);</span>
+   <span class="identifier">native_trans</span><span class="special">(</span><span class="identifier">native_trans</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">rhs</span><span class="special">);</span>
+   <span class="identifier">native_trans</span><span class="special">(</span><span class="identifier">native_trans</span> <span class="special">&&</span><span class="identifier">rhs</span><span class="special">);</span>
+   <span class="identifier">native_trans</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">native_trans</span> <span class="special">&&</span><span class="identifier">rhs</span><span class="special">);</span>
+
+   <span class="identifier">native_trans</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">rhs</span><span class="special">);</span>
+
+   <span class="identifier">native_trans</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">--();</span>
+   <span class="identifier">native_trans</span> <span class="keyword">operator</span><span class="special">--(</span><span class="keyword">int</span><span class="special">);</span>
+   <span class="identifier">native_trans</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">++();</span>
+   <span class="identifier">native_trans</span> <span class="keyword">operator</span><span class="special">++(</span><span class="keyword">int</span><span class="special">);</span>
+   <span class="identifier">native_trans</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">+=(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">rhs</span><span class="special">);</span>
+   <span class="identifier">native_trans</span> <span class="keyword">operator</span><span class="special">+(</span><span class="identifier">native_trans</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">rhs</span><span class="special">);</span>
+
+   <span class="keyword">operator</span> <span class="identifier">T</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+   <span class="identifier">T</span><span class="special">&</span> <span class="identifier">value</span><span class="special">();</span>
+   <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">value</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.transaction_object_hpp.template_class__transactional_object___"></a><a class="link" href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__transactional_object___" title="Template Class transactional_object<>">Template
+        Class <code class="computeroutput"><span class="identifier">transactional_object</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__transactional_object___.virtual_function__copy_state___">Virtual
+          function <code class="computeroutput"><span class="identifier">copy_state</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__transactional_object___.virtual_function__move_state___">Virtual
+          function <code class="computeroutput"><span class="identifier">move_state</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__transactional_object___.virtual_function__cache_deallocate___">Virtual
+          function <code class="computeroutput"><span class="identifier">cache_deallocate</span><span class="special">()</span></code></a></span></dt>
+</dl></div>
+<p>
+          Transactional object wrapper. A <code class="computeroutput"><span class="identifier">transactional_object</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code> is a base_transaction_object wrapping
+          an instance of type T. Provides the definition of the virtual functions
+        </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+            forward constructors to the wrapped type
+          </li>
+<li>
+<code class="computeroutput"><span class="identifier">copy_state</span></code>: relaying
+            on the cache_restore<T> generic function
+          </li>
+<li>
+<code class="computeroutput"><span class="identifier">move_state</span></code> and
+          </li>
+<li>
+<code class="computeroutput"><span class="identifier">cache_deallocate</span></code>: relaying
+            on the cache_restore<T> generic function
+          </li>
+</ul></div>
+<p>
+          Defines in addition the functions <code class="computeroutput"><span class="keyword">new</span></code>
+          and <code class="computeroutput"><span class="keyword">delete</span></code> when <code class="computeroutput"><span class="identifier">BOOST_STM_USE_MEMORY_MANAGER</span></code> is defined
+        </p>
+<p>
+          If a class D inherits from B we have that <code class="computeroutput"><span class="identifier">transactional_object</span><span class="special"><</span><span class="identifier">D</span><span class="special">></span></code> dont inherits from <code class="computeroutput"><span class="identifier">transactional_object</span><span class="special"><</span><span class="identifier">B</span><span class="special">></span></code>, but we can static/dynamic cast them
+          robustly.
+        </p>
+<p>
+          Evidently the <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="keyword">static_cast</span></code>/<code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="keyword">dynamic_cast</span></code>
+          do not works. We need to define the specific cast
+        </p>
+<pre class="programlisting"><span class="identifier">transactional_object</span><span class="special"><</span><span class="identifier">D</span><span class="special">>*</span> <span class="identifier">d</span><span class="special">=...;</span>
+<span class="identifier">transactional_object</span><span class="special"><</span><span class="identifier">B</span><span class="special">>*</span> <span class="identifier">b</span><span class="special">=</span><span class="identifier">tx_static_cast</span><span class="special"><</span><span class="identifier">B</span><span class="special">>(</span><span class="identifier">d</span><span class="special">);</span>
+
+<span class="identifier">transactional_object</span><span class="special"><</span><span class="identifier">B</span><span class="special">>*</span> <span class="identifier">b</span><span class="special">=...;</span>
+<span class="identifier">transactional_object</span><span class="special"><</span><span class="identifier">D</span><span class="special">>*</span> <span class="identifier">d</span><span class="special">=</span><span class="identifier">tx_dynamic_cast</span><span class="special"><</span><span class="identifier">B</span><span class="special">>(</span><span class="identifier">b</span><span class="special">);</span>
+</pre>
+<p>
+          Synopsis
+        </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">transactional_object</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">base_transaction_object</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+    <span class="identifier">T</span> <span class="identifier">value</span><span class="special">;</span>
+
+    <span class="identifier">transactional_object</span><span class="special">();</span>
+    <span class="identifier">transactional_object</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span><span class="identifier">ptr</span><span class="special">);</span>
+    <span class="identifier">transactional_object</span><span class="special">(</span><span class="identifier">transactional_object</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">></span>
+    <span class="identifier">transactional_object</span><span class="special">(</span><span class="identifier">T1</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">p1</span><span class="special">);</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span><span class="special">></span>
+    <span class="identifier">transactional_object</span><span class="special">(</span><span class="identifier">T1</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">p1</span><span class="special">,</span> <span class="identifier">T2</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">p2</span><span class="special">);</span>
+
+    <span class="identifier">transactional_object</span> <span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">transactional_object</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
+
+    <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">copy_state</span><span class="special">(</span><span class="identifier">base_transaction_object</span> <span class="keyword">const</span> <span class="special">*</span> <span class="keyword">const</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="preprocessor">#ifdef</span> <span class="identifier">BOOST_STM_USE_UNASIGNED_COPY</span>
+    <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">cache_deallocate</span><span class="special">();</span>
+<span class="preprocessor">#endif</span>
+
+<span class="preprocessor">#if</span> <span class="identifier">BOST_STM_USE_MEMORY_MANAGER</span>
+   <span class="keyword">void</span><span class="special">*</span> <span class="keyword">operator</span> <span class="keyword">new</span><span class="special">(</span><span class="identifier">size_t</span> <span class="identifier">size</span><span class="special">)</span> <span class="keyword">throw</span> <span class="special">();</span>
+   <span class="keyword">void</span> <span class="keyword">operator</span> <span class="keyword">delete</span><span class="special">(</span><span class="keyword">void</span><span class="special">*</span> <span class="identifier">mem</span><span class="special">);</span>
+<span class="preprocessor">#endif</span>
+
+<span class="special">};</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_object_hpp.template_class__transactional_object___.virtual_function__copy_state___"></a><a class="link" href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__transactional_object___.virtual_function__copy_state___" title="Virtual function copy_state()">Virtual
+          function <code class="computeroutput"><span class="identifier">copy_state</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">copy_state</span><span class="special">(</span><span class="identifier">base_transaction_object</span> <span class="keyword">const</span> <span class="special">*</span> <span class="keyword">const</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_object_hpp.template_class__transactional_object___.virtual_function__move_state___"></a><a class="link" href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__transactional_object___.virtual_function__move_state___" title="Virtual function move_state()">Virtual
+          function <code class="computeroutput"><span class="identifier">move_state</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">move_state</span><span class="special">(</span><span class="identifier">base_transaction_object</span> <span class="special">*</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transaction_object_hpp.template_class__transactional_object___.virtual_function__cache_deallocate___"></a><a class="link" href="transaction_object_hpp.html#toward_boost_stm.reference.transaction_object_hpp.template_class__transactional_object___.virtual_function__cache_deallocate___" title="Virtual function cache_deallocate()">Virtual
+          function <code class="computeroutput"><span class="identifier">cache_deallocate</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">cache_deallocate</span><span class="special">()=</span><span class="number">0</span><span class="special">;</span>
+</pre>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="transaction_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tx_ptr_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/tx_ptr_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/tx_ptr_hpp.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,359 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Header <boost/stm/tx_ptr.hpp></title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="transaction_object_hpp.html" title="Header <boost/stm/transaction_object.hpp>">
+<link rel="next" href="base_contention_manager_hpp.html" title="Header <boost/stm/base_contention_manager.hpp>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="transaction_object_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="base_contention_manager_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_stm.reference.tx_ptr_hpp"></a><a class="link" href="tx_ptr_hpp.html" title="Header <boost/stm/tx_ptr.hpp>"> Header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">tx_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="tx_ptr_hpp.html#toward_boost_stm.reference.tx_ptr_hpp.template_class__tx_obj___">Template
+        Class <code class="computeroutput"><span class="identifier">tx_obj</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="tx_ptr_hpp.html#toward_boost_stm.reference.tx_ptr_hpp.template_class__tx_ptr___">Template
+        Class <code class="computeroutput"><span class="identifier">tx_ptr</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="tx_ptr_hpp.html#toward_boost_stm.reference.tx_ptr_hpp.template_class__rd_ptr___">Template
+        Class <code class="computeroutput"><span class="identifier">rd_ptr</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="tx_ptr_hpp.html#toward_boost_stm.reference.tx_ptr_hpp.template_class__upgrd_ptr___">Template
+        Class <code class="computeroutput"><span class="identifier">upgrd_ptr</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="tx_ptr_hpp.html#toward_boost_stm.reference.tx_ptr_hpp.template_class__wr_ptr___">Template
+        Class <code class="computeroutput"><span class="identifier">wr_ptr</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="tx_ptr_hpp.html#toward_boost_stm.reference.tx_ptr_hpp.template_class__read_ptr___">Template
+        Class <code class="computeroutput"><span class="identifier">read_ptr</span><span class="special"><></span></code></a></span></dt>
+<dt><span class="section"><a href="tx_ptr_hpp.html#toward_boost_stm.reference.tx_ptr_hpp.template_class__write_ptr___">Template
+        Class <code class="computeroutput"><span class="identifier">write_ptr</span><span class="special"><></span></code></a></span></dt>
+</dl></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">stm</span> <span class="special">{</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">tx_obj</span><span class="special">;</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">U</span><span class="special">></span>
+    <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==(</span><span class="keyword">const</span> <span class="identifier">tx_obj</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">tx_obj</span><span class="special"><</span><span class="identifier">U</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">U</span><span class="special">></span>
+    <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">tx_obj</span><span class="special"><</span><span class="identifier">U</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">U</span><span class="special">></span>
+    <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==(</span><span class="keyword">const</span> <span class="identifier">tx_obj</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">U</span><span class="special">></span>
+    <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!=(</span><span class="keyword">const</span> <span class="identifier">tx_obj</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">tx_obj</span><span class="special"><</span><span class="identifier">U</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">U</span><span class="special">></span>
+    <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!=(</span><span class="keyword">const</span> <span class="identifier">tx_obj</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">tx_obj</span><span class="special"><</span><span class="identifier">U</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span>
+    <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">inline</span> <span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">tx_obj</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">tx_obj</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="identifier">b</span><span class="special">);</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">tx_ptr</span><span class="special">;</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">U</span><span class="special">></span>
+    <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==(</span><span class="keyword">const</span> <span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">U</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">U</span><span class="special">></span>
+    <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!=(</span><span class="keyword">const</span> <span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">U</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span>
+    <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">inline</span> <span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">&</span> <span class="identifier">b</span><span class="special">);</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+    <span class="keyword">void</span> <span class="identifier">delete_ptr</span><span class="special">(</span><span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">ptr</span><span class="special">);</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+    <span class="keyword">void</span> <span class="identifier">delete_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">ptr</span><span class="special">);</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">U</span><span class="special">></span>
+    <span class="keyword">static</span> <span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">tx_static_cast</span><span class="special">(</span><span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">U</span><span class="special">></span> <span class="identifier">ptr</span><span class="special">);</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">U</span><span class="special">></span>
+    <span class="keyword">static</span> <span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">>*</span> <span class="identifier">tx_dynamic_cast</span><span class="special">(</span><span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">U</span><span class="special">></span> <span class="identifier">ptr</span><span class="special">);</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">rd_ptr</span><span class="special">;</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+    <span class="identifier">rd_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">make_rd_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">ptr</span><span class="special">);</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+    <span class="identifier">rd_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">make_rd_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">tx_obj</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">ref</span><span class="special">);</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+    <span class="identifier">rd_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">make_rd_ptr</span><span class="special">(</span><span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">ptr</span><span class="special">);</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+    <span class="identifier">rd_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">make_rd_ptr</span><span class="special">(</span><span class="identifier">tx_obj</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">ref</span><span class="special">);</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+    <span class="keyword">void</span> <span class="identifier">delete_ptr</span><span class="special">(</span><span class="identifier">rd_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">ptr</span><span class="special">);</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+    <span class="keyword">void</span> <span class="identifier">delete_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">rd_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">ptr</span><span class="special">);</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">upgrd_ptr</span><span class="special">;</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+    <span class="keyword">void</span> <span class="identifier">delete_ptr</span><span class="special">(</span><span class="identifier">upgrd_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">ptr</span><span class="special">);</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+    <span class="keyword">void</span> <span class="identifier">delete_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">upgrd_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">ptr</span><span class="special">);</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">wr_ptr</span><span class="special">;</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+    <span class="identifier">wr_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">make_wr_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">ptr</span><span class="special">);</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+    <span class="identifier">wr_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">make_wr_ptr</span><span class="special">(</span><span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">ptr</span><span class="special">);</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+    <span class="keyword">void</span> <span class="identifier">delete_ptr</span><span class="special">(</span><span class="identifier">wr_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">ptr</span><span class="special">);</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+    <span class="keyword">void</span> <span class="identifier">delete_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">wr_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">ptr</span><span class="special">);</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">read_ptr</span><span class="special">;</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">write_ptr</span><span class="special">;</span>
+<span class="special">}}</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.tx_ptr_hpp.template_class__tx_obj___"></a><a class="link" href="tx_ptr_hpp.html#toward_boost_stm.reference.tx_ptr_hpp.template_class__tx_obj___" title="Template Class tx_obj<>">Template
+        Class <code class="computeroutput"><span class="identifier">tx_obj</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<p>
+          tx_obj is a kind of smart pointer to a wrapped transactional_object T providing
+          builting operators
+        </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">tx_obj</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+    <span class="identifier">tx_obj</span><span class="special">();</span>
+    <span class="keyword">template</span><span class="special"><</span><span class="identifier">ctypename</span> <span class="identifier">Y</span><span class="special">></span> <span class="identifier">tx_obj</span><span class="special">(</span><span class="identifier">tx_obj</span><span class="special"><</span><span class="identifier">Y</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">></span> <span class="identifier">tx_obj</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">p1</span><span class="special">);</span>
+
+    <span class="identifier">T</span><span class="special">*</span> <span class="keyword">operator</span><span class="special">->();</span>
+    <span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="keyword">operator</span><span class="special">->()</span> <span class="keyword">const</span><span class="special">;</span>
+    <span class="identifier">T</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">*();</span>
+    <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span>
+    <span class="identifier">T</span><span class="special">*</span> <span class="identifier">get</span><span class="special">();</span>
+    <span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">get</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+    <span class="identifier">T</span><span class="special">&</span> <span class="identifier">ref</span><span class="special">();</span>
+    <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">ref</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+    <span class="identifier">tx_obj</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">--();</span>
+    <span class="identifier">T</span> <span class="keyword">operator</span><span class="special">--(</span><span class="keyword">int</span><span class="special">);</span>
+
+    <span class="identifier">tx_obj</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">++();</span>
+    <span class="identifier">T</span> <span class="keyword">operator</span><span class="special">++(</span><span class="keyword">int</span><span class="special">);</span>
+
+    <span class="identifier">tx_obj</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">+=(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">rhs</span><span class="special">);</span>
+    <span class="identifier">T</span> <span class="keyword">operator</span><span class="special">+(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">rhs</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.tx_ptr_hpp.template_class__tx_ptr___"></a><a class="link" href="tx_ptr_hpp.html#toward_boost_stm.reference.tx_ptr_hpp.template_class__tx_ptr___" title="Template Class tx_ptr<>">Template
+        Class <code class="computeroutput"><span class="identifier">tx_ptr</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<p>
+          a tx_ptr<T> is an smart pointer to a transactional_object<T>
+          (which contains an instance of T). Reference fields in linked structures
+          should always be tx_ptrs. The result of derreferencing it will be the pointer
+          to the T instance When this pointer is derreference on a transaction the
+          transactional_object<T> is set a written and the transaction specific
+          storage will be used. Otherwise the shared storage is used.
+        </p>
+<p>
+          Used to initialize a rd_ptr<T>, wr_ptr<T>, or upgrd_ptr<T>.
+        </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">tx_ptr</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+    <span class="keyword">typedef</span> <span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">this_type</span><span class="special">;</span>
+
+    <span class="identifier">tx_ptr</span><span class="special">();</span>
+    <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">></span> <span class="keyword">explicit</span> <span class="identifier">tx_ptr</span><span class="special">(</span><span class="identifier">Y</span> <span class="special">*</span> <span class="identifier">ptr</span><span class="special">);</span>
+    <span class="keyword">explicit</span> <span class="identifier">tx_ptr</span><span class="special">(</span><span class="identifier">transactional_object</span><span class="special"><</span><span class="identifier">T</span><span class="special">>*</span> <span class="identifier">ptr</span><span class="special">);</span>
+    <span class="identifier">tx_ptr</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">tx_obj</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">r</span><span class="special">);</span>
+
+    <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">></span> <span class="identifier">tx_ptr</span><span class="special">(</span><span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">Y</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
+    <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">></span> <span class="identifier">tx_ptr</span><span class="special">(</span><span class="identifier">rd_ptr</span><span class="special"><</span><span class="identifier">Y</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
+    <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">></span> <span class="identifier">tx_ptr</span><span class="special">(</span><span class="identifier">wr_ptr</span><span class="special"><</span><span class="identifier">Y</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
+    <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">></span> <span class="identifier">tx_ptr</span><span class="special">(</span><span class="identifier">upgrd_ptr</span><span class="special"><</span><span class="identifier">Y</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
+
+    <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">></span> <span class="identifier">tx_ptr</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">transactional_object</span><span class="special"><</span><span class="identifier">Y</span><span class="special">>*</span> <span class="identifier">ptr</span><span class="special">);</span>
+    <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">></span> <span class="identifier">tx_ptr</span> <span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">Y</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
+
+    <span class="identifier">T</span><span class="special">*</span> <span class="keyword">operator</span><span class="special">->()</span> <span class="keyword">const</span><span class="special">;</span>
+    <span class="identifier">T</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span>
+    <span class="identifier">T</span><span class="special">*</span> <span class="identifier">get</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+    <span class="keyword">typedef</span> <span class="identifier">transactional_object</span><span class="special"><</span><span class="identifier">T</span><span class="special">>*</span> <span class="identifier">this_type</span><span class="special">::*</span><span class="identifier">unspecified_bool_type</span><span class="special">;</span>
+
+    <span class="keyword">operator</span> <span class="identifier">unspecified_bool_type</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+    <span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">tx_ptr</span> <span class="special">&</span> <span class="identifier">other</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.tx_ptr_hpp.template_class__rd_ptr___"></a><a class="link" href="tx_ptr_hpp.html#toward_boost_stm.reference.tx_ptr_hpp.template_class__rd_ptr___" title="Template Class rd_ptr<>">Template
+        Class <code class="computeroutput"><span class="identifier">rd_ptr</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<p>
+          A rd_ptr<T> ("read pointer") points to an object that the
+          current transaction has opened for read only access. You can only call
+          a const method through a read pointer.
+        </p>
+<p>
+          A rd_ptr<T> is constructed from an tx_ptr<T> through an explicit
+          constructor. Once a rd_ptr<T> has been constructed, an tx_ptr<T>
+          can be opened for reading simply by assignment (operator=()) into the constructed
+          rd_ptr<T>.
+        </p>
+<p>
+          It is not safe to derreference a rd_ptr<T> after having assigned
+          the same tx_ptr<T> to a wr_ptr<T>. If this is the case the
+          readen value do not match the writen one. If it is possible to write on
+          the same transaction use upgrd_ptr instead which is safe.
+        </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">rd_ptr</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+    <span class="identifier">rd_ptr</span><span class="special">(</span><span class="identifier">transaction</span> <span class="special">&</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">tx_obj</span><span class="special">);</span>
+    <span class="identifier">rd_ptr</span><span class="special">(</span><span class="identifier">transaction</span> <span class="special">&</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">tx_obj</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">tx_obj</span><span class="special">);</span>
+
+    <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">></span> <span class="identifier">rd_ptr</span> <span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">Y</span><span class="special">></span> <span class="identifier">r</span><span class="special">);</span>
+
+    <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">></span> <span class="identifier">rd_ptr</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">tx_obj</span><span class="special"><</span><span class="identifier">Y</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">r</span><span class="special">);</span>
+
+    <span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">get</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+    <span class="keyword">inline</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span>
+    <span class="keyword">inline</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="keyword">operator</span><span class="special">->()</span> <span class="keyword">const</span><span class="special">;</span>
+
+    <span class="keyword">operator</span> <span class="identifier">unspecified_bool_type</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.tx_ptr_hpp.template_class__upgrd_ptr___"></a><a class="link" href="tx_ptr_hpp.html#toward_boost_stm.reference.tx_ptr_hpp.template_class__upgrd_ptr___" title="Template Class upgrd_ptr<>">Template
+        Class <code class="computeroutput"><span class="identifier">upgrd_ptr</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<p>
+          A upgrd_ptr<T> ("upgradable pointer") points to an object
+          that the current transaction has opened for read only access.
+        </p>
+<p>
+          You can only call const method of the wrapped type through a upgradable
+          pointer.
+        </p>
+<p>
+          A upgrd_ptr<T> is constructed from an tx_ptr<T> through a constructor
+          having also the transaction as parameter. Once a rd_ptr<T> has been
+          constructed, an tx_ptr<T> can be opened for reading simply by assignment
+          (operator=()) into the constructed rd_ptr<T>.
+        </p>
+<p>
+          It is safe to derreference a rd_ptr<T> after having assigned the
+          same tx_ptr<T> to a wr_ptr<T>.
+        </p>
+<p>
+          A upgrd_ptr<T> can be upgraded to a wr_ptr<T> through a constructor.
+        </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">upgrd_ptr</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+
+    <span class="keyword">inline</span> <span class="identifier">upgrd_ptr</span><span class="special">(</span><span class="identifier">transaction</span> <span class="special">&</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">tx_obj</span><span class="special">);</span>
+    <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">></span>
+    <span class="identifier">upgrd_ptr</span> <span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">Y</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span>  <span class="identifier">r</span><span class="special">);</span>
+
+    <span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">get</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+    <span class="keyword">inline</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span>
+    <span class="keyword">inline</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">*</span> <span class="keyword">operator</span><span class="special">->()</span> <span class="keyword">const</span><span class="special">;</span>
+
+    <span class="keyword">operator</span> <span class="identifier">unspecified_bool_type</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+    <span class="keyword">void</span> <span class="identifier">write_ptr</span><span class="special">(</span><span class="identifier">transactional_object</span><span class="special"><</span><span class="identifier">T</span><span class="special">>*</span> <span class="identifier">ptr</span><span class="special">);</span>
+    <span class="identifier">T</span><span class="special">*</span> <span class="identifier">write_ptr</span><span class="special">();</span>
+
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.tx_ptr_hpp.template_class__wr_ptr___"></a><a class="link" href="tx_ptr_hpp.html#toward_boost_stm.reference.tx_ptr_hpp.template_class__wr_ptr___" title="Template Class wr_ptr<>">Template
+        Class <code class="computeroutput"><span class="identifier">wr_ptr</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<p>
+          A wr_ptr<T> ("write pointer") points to a shared object
+          that the current transaction has opened for writing.
+        </p>
+<p>
+          A wr_ptr<T> is initialized explicitly from an tx_ptr<T>.
+        </p>
+<p>
+          A wr_ptr<T> can also be explicitly constructed from a upgrd_ptr<T>
+          as an upgrade-to-writable operation.
+        </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">wr_ptr</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+    <span class="identifier">wr_ptr</span><span class="special">(</span><span class="identifier">transaction</span> <span class="special">&</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">tx_obj</span><span class="special">);</span>
+
+    <span class="identifier">wr_ptr</span><span class="special">(</span><span class="identifier">transaction</span> <span class="special">&</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">upgrd_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">tx_obj</span><span class="special">);</span>
+
+    <span class="identifier">T</span><span class="special">*</span> <span class="identifier">get</span><span class="special">();</span>
+
+    <span class="keyword">inline</span> <span class="identifier">T</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">*();</span>
+    <span class="keyword">inline</span> <span class="identifier">T</span><span class="special">*</span> <span class="keyword">operator</span><span class="special">->();</span>
+
+    <span class="keyword">operator</span> <span class="identifier">unspecified_bool_type</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.tx_ptr_hpp.template_class__read_ptr___"></a><a class="link" href="tx_ptr_hpp.html#toward_boost_stm.reference.tx_ptr_hpp.template_class__read_ptr___" title="Template Class read_ptr<>">Template
+        Class <code class="computeroutput"><span class="identifier">read_ptr</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">read_ptr</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+   <span class="keyword">inline</span> <span class="identifier">read_ptr</span><span class="special">(</span><span class="identifier">transaction</span> <span class="special">&</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">tx_obj</span><span class="special">);</span>
+   <span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">get</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+   <span class="keyword">inline</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span>
+   <span class="keyword">inline</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">*</span> <span class="keyword">operator</span><span class="special">->()</span> <span class="keyword">const</span><span class="special">;</span>
+
+   <span class="keyword">inline</span> <span class="identifier">transaction</span> <span class="special">&</span><span class="identifier">trans</span><span class="special">();</span>
+   <span class="identifier">T</span><span class="special">*</span> <span class="identifier">write_ptr</span><span class="special">();</span>
+<span class="special">};</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.tx_ptr_hpp.template_class__write_ptr___"></a><a class="link" href="tx_ptr_hpp.html#toward_boost_stm.reference.tx_ptr_hpp.template_class__write_ptr___" title="Template Class write_ptr<>">Template
+        Class <code class="computeroutput"><span class="identifier">write_ptr</span><span class="special"><></span></code></a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">write_ptr</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+   <span class="keyword">inline</span> <span class="identifier">write_ptr</span><span class="special">(</span><span class="identifier">transaction</span> <span class="special">&</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">&</span> <span class="identifier">tx_obj</span><span class="special">);</span>
+
+   <span class="identifier">T</span><span class="special">*</span> <span class="identifier">get</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+   <span class="keyword">inline</span> <span class="identifier">T</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">*();</span>
+   <span class="keyword">inline</span> <span class="identifier">T</span><span class="special">*</span> <span class="keyword">operator</span><span class="special">->();</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="transaction_object_hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="base_contention_manager_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,67 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Users'Guide</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="prev" href="overview/intro.html" title="Introduction">
+<link rel="next" href="users_guide/getting_started.html" title="Getting Started">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="overview/intro.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="users_guide/getting_started.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="toward_boost_stm.users_guide"></a><a class="link" href="users_guide.html" title="Users'Guide"> Users'Guide</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="users_guide/getting_started.html"> Getting
+      Started</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="users_guide/getting_started.html#toward_boost_stm.users_guide.getting_started.install">
+        Installing STM</a></span></dt>
+<dt><span class="section"><a href="users_guide/getting_started.html#toward_boost_stm.users_guide.getting_started.hello_world__">Hello
+        World! </a></span></dt>
+</dl></dd>
+<dt><span class="section"> Tutorial</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="users_guide/tutorial.html#toward_boost_stm.users_guide.tutorial.a_simple_transaction">A
+        Simple Transaction</a></span></dt>
+<dt><span class="section"><a href="users_guide/tutorial.html#toward_boost_stm.users_guide.tutorial.a_composable_transaction">A
+        Composable Transaction</a></span></dt>
+<dt><span class="section"><a href="users_guide/tutorial.html#toward_boost_stm.users_guide.tutorial.a_dynamically_prioritized__composed_transaction">A
+        Dynamically Prioritized, Composed Transaction</a></span></dt>
+</dl></dd>
+<dt><span class="section"> References</span></dt>
+<dt><span class="section"> Glossary</span></dt>
+</dl></div>
+<p>
+      [/
+    </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="overview/intro.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="users_guide/getting_started.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/ext_references.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/ext_references.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,132 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>References</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../users_guide.html" title="Users'Guide">
+<link rel="prev" href="tutorial.html" title="Tutorial">
+<link rel="next" href="glosary.html" title="Glossary">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tutorial.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="glosary.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_stm.users_guide.ext_references"></a><a class="link" href="ext_references.html" title="References"> References</a>
+</h3></div></div></div>
+<p>
+        For details on the underlying software architecture of TBoost.STM, including
+        explanations of its API, please refer to our summary paper.
+      </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"> <a href="http://eces.colorado.edu/~gottschl/tboostSTM/pubs/lcsd07-dracostm.pdf" target="_top"><span class="bold"><strong>DracoSTM: A Practical C++ Approach to Software Transactional
+        Memory</strong></span></a></span></dt>
+<dd><p>
+            Justin E. Gottschlich and Daniel A. Connors - <span class="emphasis"><em>Proceedings of
+            the ACM SIGPLAN Symposium on Library-Centric Software Design (LCSD),
+            October 2007</em></span>
+          </p></dd>
+</dl>
+</div>
+<p>
+        TBoost.STM uses a novel method of consistency checking called invalidation.
+        Invalidation can assist in both high performance and strict contention management
+        control. For more information on how invalidation can improve overall system
+        performance and ensure true user-defined contention management policies,
+        see our below research papers.
+      </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"> <a href="http://eces.colorado.edu/~gottschl/tboostSTM/pubs/podc08_full_paper.pdf" target="_top"><span class="bold"><strong>A Consistency Checking Optimization Algorithm for Memory-Intensive
+        Transactions</strong></span></a></span></dt>
+<dd><p>
+            Justin E. Gottschlich, Daniel A. Connors and Jeremy G. Siek - <span class="emphasis"><em>Proceedings
+            of the ACM SIGACT-SIGOPS Symposium on Principles of Distributed Computing
+            (PODC) (brief announcement), August 2008</em></span>
+          </p></dd>
+<dt><span class="term"> <a href="http://eces.colorado.edu/~gottschl/tboostSTM/pubs/epham08-stm.pdf" target="_top"><span class="bold"><strong>Extending Contention Managers for User-Defined Priority Based
+        Transactions</strong></span></a></span></dt>
+<dd><p>
+            Justin E. Gottschlich and Daniel A. Connors - <span class="emphasis"><em>Proceedings of
+            the ACM Workshop on Exploiting Parallelism with Transactional Memory
+            and other Hardware Assisted Methods (EPHAM), April 2008</em></span>
+          </p></dd>
+</dl>
+</div>
+<p>
+        TBoost.STM supports transaction-lock interaction. This support allows existing
+        lock-based parallel code to interact safely with transactions. In addition,
+        we provide three types of transaction-lock interaction with varying degrees
+        of performance. Please see our research paper for more details.
+      </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"> Lock-Aware Transactional Memory and Composable Locks</span></dt>
+<dd><p>
+            Justin E. Gottschlich, Daniel A. Connors and Jeremy G. Siek -
+          </p></dd>
+</dl>
+</div>
+<p>
+        TBoost.STM uses the last C++ features to provide a friendly and efficient
+        interface. See the following papers to see how.
+      </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"> Toward Simplified Parallel Support in C++</span></dt>
+<dd><p>
+            Justin E. Gottschlich, Jeremy G. Siek, Paul J. Rogers, and Manish Vachharajani
+            - <span class="emphasis"><em>BoostCon'09, the Third Boost Libraries Conference, May 2009</em></span>
+          </p></dd>
+<dt><span class="term"> <a href="http://eces.colorado.edu/~gottschl/tboostSTM/pubs/icooolps08-exception.pdf" target="_top"><span class="bold"><strong>C++ Move Semantics for Exception Safety and Optimization in Software
+        Transactional Memory Libraries</strong></span></a></span></dt>
+<dd><p>
+            Justin E. Gottschlich, Jeremy G. Siek and Daniel A. Connors - <span class="emphasis"><em>International
+            Workshop on Implementation, Compilation, Optimization of Object-Oriented
+            Languages, Programs and Systems (ICOOOLPS), July 2008</em></span>
+          </p></dd>
+</dl>
+</div>
+<p>
+        Check for the last updates.
+      </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"> TBoost.STM (or Related) Peer-Reviewed Publications</span></dt>
+<dd><p>
+          </p></dd>
+</dl>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tutorial.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="glosary.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/getting_started.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/getting_started.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,230 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Getting Started</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../users_guide.html" title="Users'Guide">
+<link rel="prev" href="../users_guide.html" title="Users'Guide">
+<link rel="next" href="tutorial.html" title="Tutorial">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../users_guide.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tutorial.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_stm.users_guide.getting_started"></a><a class="link" href="getting_started.html" title="Getting Started"> Getting
+      Started</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="getting_started.html#toward_boost_stm.users_guide.getting_started.install">
+        Installing STM</a></span></dt>
+<dt><span class="section"><a href="getting_started.html#toward_boost_stm.users_guide.getting_started.hello_world__">Hello
+        World! </a></span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.users_guide.getting_started.install"></a><a class="link" href="getting_started.html#toward_boost_stm.users_guide.getting_started.install" title="Installing STM">
+        Installing STM</a>
+</h4></div></div></div>
+<p>
+          TBoost.STM is currently in an alpha release stage. This means our STM library
+          is downloadable, but is undergoing some fundamental changes. Furthermore,
+          our alpha release of TBoost.STM may exhibit some stability issues. While
+          our internal tests have shown TBoost.STM to be fairly stable, your usage
+          may vary.
+        </p>
+<p>
+          TBoost.STM's current alpha download is mainly intended for other researchers
+          who are curious about TBoost.STM's implementation and transactional memory.
+          While we encourage non-TM experts to download the library and explore writing
+          parallel code within its framework, we want such users know the system
+          is in its early stages. As such, your usage of TBoost.STM may reveal some
+          weaknesses or stability issues. Until we are into a fully released version,
+          these issues are to be expected. However, please let us know if you encounter
+          any problems using our library and we will do our best to resolve such
+          issues immediately.
+        </p>
+<p>
+          Thank you for considering TBoost.STM and we hope you enjoy exploring transactional
+          memory!
+        </p>
+<a name="toward_boost_stm.users_guide.getting_started.install.getting_boost_stm"></a><h6>
+<a name="id4849074"></a>
+          <a class="link" href="getting_started.html#toward_boost_stm.users_guide.getting_started.install.getting_boost_stm">Getting
+          Boost.STM</a>
+        </h6>
+<p>
+          Visit our Toward Boost.Stm <a href="http://eces.colorado.edu/~gottschl/tboostSTM/index.html" target="_top">home
+          page</a> be aware of the last news.
+        </p>
+<p>
+          You can get the last stable release of from the <a href="http://eces.colorado.edu/~gottschl/tboostSTM/downloads.html" target="_top">Download
+          page</a>.
+        </p>
+<p>
+          You can also access the latest (unstable?) state from the <a href="https://svn.boost.org/svn/boost/sandbox/stm" target="_top">Boost
+          Sandbox</a>.
+        </p>
+<a name="toward_boost_stm.users_guide.getting_started.install.building_boost_stm"></a><h6>
+<a name="id4849128"></a>
+          <a class="link" href="getting_started.html#toward_boost_stm.users_guide.getting_started.install.building_boost_stm">Building
+          Boost.STM</a>
+        </h6>
+<p>
+          Boost.STM is not a header only library. You need to compile it before use.
+        </p>
+<pre class="programlisting"><span class="identifier">cd</span> <span class="identifier">libs</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">build</span>
+<span class="identifier">bjam</span>
+</pre>
+<a name="toward_boost_stm.users_guide.getting_started.install.requirements"></a><h6>
+<a name="id4849192"></a>
+          <a class="link" href="getting_started.html#toward_boost_stm.users_guide.getting_started.install.requirements">Requirements</a>
+        </h6>
+<p>
+          The POSIX threads (pthreads) library is needed to use TBoost.STM. Pthreads
+          is part of the standard deployment for almost all Unix / Linux flavors,
+          however, it is not standard in Windows. If you are doing Windows development
+          you can find the POSIX threads library at the below link: <a href="http://sourceware.org/pthreads-win32/" target="_top">POSIX
+          threads (pthreads) for Windows</a>
+        </p>
+<p>
+          In order to be more portable <span class="bold"><strong>Boost.STM</strong></span>
+          is migrating to Boost. You should use either Boost version 1.39.x or the
+          version in SVN trunk (even if Boost version 1.35.x should works also).
+          In particular, <span class="bold"><strong>Boost.STM</strong></span> will depends
+          on:
+        </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Boost.DynamicBitset</span></dt>
+<dd><p>
+              dynamic_bitsets
+            </p></dd>
+<dt><span class="term">Boost.Thread from Anthony Williams</span></dt>
+<dd><p>
+              threads and synchronization primitives
+            </p></dd>
+</dl>
+</div>
+<p>
+          In addition Boost.Stm will uses the following libraries on the Boost Sandbox
+        </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">Boost.Chrono from Vicente J. Botet Escriba</span></dt>
+<dd><p>
+              Standard Chrono library
+            </p></dd>
+<dt><span class="term">Boost.Synchro from Vicente J. Botet Escriba</span></dt>
+<dd><p>
+              Exception based timed locks synchronization primitives & Language-like
+              Synchronized Block
+            </p></dd>
+</dl>
+</div>
+<a name="toward_boost_stm.users_guide.getting_started.install.exceptions_safety"></a><h6>
+<a name="id4849352"></a>
+          <a class="link" href="getting_started.html#toward_boost_stm.users_guide.getting_started.install.exceptions_safety">Exceptions
+          safety</a>
+        </h6>
+<p>
+          All functions in the library are exception-neutral and provide strong guarantee
+          of exception safety as long as the underlying parameters provide it.
+        </p>
+<a name="toward_boost_stm.users_guide.getting_started.install.thread_safety"></a><h6>
+<a name="id4849378"></a>
+          <a class="link" href="getting_started.html#toward_boost_stm.users_guide.getting_started.install.thread_safety">Thread
+          safety</a>
+        </h6>
+<p>
+          All functions in the library are thread-unsafe except when noted explicitly.
+        </p>
+<a name="toward_boost_stm.users_guide.getting_started.install.tested_compilers"></a><h6>
+<a name="id4849405"></a>
+          <a class="link" href="getting_started.html#toward_boost_stm.users_guide.getting_started.install.tested_compilers">Tested
+          compilers</a>
+        </h6>
+<p>
+          Currently, <span class="bold"><strong>Boost.STM</strong></span> has been tested in
+          the following compilers/platforms:
+        </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+            Visual Studio 6 - Windows
+          </li>
+<li>
+            GCC 3.4.4 - Cygwin
+          </li>
+</ul></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+            Please send any questions, comments and bug reports to boost <at>
+            lists <dot> boost <dot> org
+          </p></td></tr>
+</table></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.users_guide.getting_started.hello_world__"></a><a class="link" href="getting_started.html#toward_boost_stm.users_guide.getting_started.hello_world__" title="Hello World!">Hello
+        World! </a>
+</h4></div></div></div>
+<p>
+          The below example gives a basic introduction into TBoost.STM's transactional
+          framework and demonstrates TBoost.STM's ACI conformance.
+        </p>
+<pre class="programlisting"><span class="identifier">tx_obj</span><span class="special"><</span><span class="keyword">int</span><span class="special">></span> <span class="identifier">counter</span><span class="special">;</span>
+
+<span class="keyword">int</span> <span class="identifier">increment</span><span class="special">()</span> <span class="special">{</span>
+    <span class="keyword">int</span> <span class="identifier">val</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+    <span class="identifier">use_atomic</span><span class="special">(</span><span class="identifier">_</span><span class="special">)</span> <span class="special">{</span>
+        <span class="special">(*</span><span class="identifier">counter</span><span class="special">)++;</span>
+        <span class="identifier">val</span> <span class="special">=</span> <span class="special">*</span><span class="identifier">counter</span><span class="special">;</span>
+    <span class="special">}</span>
+    <span class="keyword">return</span> <span class="identifier">val</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+          In the above example, (A) both the write on global_int and the read operations
+          function atomically or neither operations are performed. In addition, (C)
+          the transaction begins and ends in legal memory states, meaning global
+          int is guaranteed to be read correctly, preventing thread data races from
+          causing inconsistent results. Lastly, (I) the intermediate state of the
+          incremented global int is isolated until the transaction commits. These
+          three attributes fulfill TBoost.STM's conformance to the ACI principles.
+          The above example also gives a basic introduction into TBoost.STM's transactional
+          framework.
+        </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../users_guide.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tutorial.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/glosary.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/glosary.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,124 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Glossary</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../users_guide.html" title="Users'Guide">
+<link rel="prev" href="ext_references.html" title="References">
+<link rel="next" href="../reference.html" title="Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="ext_references.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_stm.users_guide.glosary"></a><a class="link" href="glosary.html" title="Glossary"> Glossary</a>
+</h3></div></div></div>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term">in fligh transaction</span></dt>
+<dd><p>
+            .
+          </p></dd>
+<dt><span class="term">latm</span></dt>
+<dd><p>
+            lock aware transaction memory
+          </p></dd>
+<dt><span class="term">STM</span></dt>
+<dd><p>
+            Software Transaction Memory
+          </p></dd>
+<dt><span class="term">Conflict Detection</span></dt>
+<dd><p>
+            .
+          </p></dd>
+<dt><span class="term">abort</span></dt>
+<dd><p>
+            .
+          </p></dd>
+<dt><span class="term">commit</span></dt>
+<dd><p>
+            .
+          </p></dd>
+<dt><span class="term">Consistency Checking</span></dt>
+<dd><p>
+            .
+          </p></dd>
+<dt><span class="term">Direct Updating</span></dt>
+<dd><p>
+            .
+          </p></dd>
+<dt><span class="term">Deferred Updating</span></dt>
+<dd><p>
+            .
+          </p></dd>
+<dt><span class="term">LiT</span></dt>
+<dd><p>
+            .
+          </p></dd>
+<dt><span class="term">LoT</span></dt>
+<dd><p>
+            .
+          </p></dd>
+<dt><span class="term">Irrevocable transaction</span></dt>
+<dd><p>
+            .
+          </p></dd>
+<dt><span class="term">Isolated transaction</span></dt>
+<dd><p>
+            .
+          </p></dd>
+<dt><span class="term">Full-Lock protection</span></dt>
+<dd><p>
+            .
+          </p></dd>
+<dt><span class="term">TM-Lock protection</span></dt>
+<dd><p>
+            .
+          </p></dd>
+<dt><span class="term">TX-Lock protection</span></dt>
+<dd><p>
+            .
+          </p></dd>
+<dt><span class="term">commit</span></dt>
+<dd><p>
+            .
+          </p></dd>
+<dt><span class="term">commit</span></dt>
+<dd><p>
+            .
+          </p></dd>
+<dt><span class="term">commit</span></dt>
+<dd><p>
+            .
+          </p></dd>
+</dl>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="ext_references.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/tutorial.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/tutorial.html	2009-09-18 13:48:10 EDT (Fri, 18 Sep 2009)
@@ -0,0 +1,564 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Tutorial</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../users_guide.html" title="Users'Guide">
+<link rel="prev" href="getting_started.html" title="Getting Started">
+<link rel="next" href="ext_references.html" title="References">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="TowardBoostSTM" width="277" height="86" src="../../../image/Toward_Boost_STM.jpg"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="getting_started.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="ext_references.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="toward_boost_stm.users_guide.tutorial"></a><a class="link" href="tutorial.html" title="Tutorial"> Tutorial</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="tutorial.html#toward_boost_stm.users_guide.tutorial.a_simple_transaction">A
+        Simple Transaction</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_stm.users_guide.tutorial.a_composable_transaction">A
+        Composable Transaction</a></span></dt>
+<dt><span class="section"><a href="tutorial.html#toward_boost_stm.users_guide.tutorial.a_dynamically_prioritized__composed_transaction">A
+        Dynamically Prioritized, Composed Transaction</a></span></dt>
+</dl></div>
+<p>
+        A number of example transactions are presented in this section using the
+        TBoost.STM library. The first example illustrates how to write a transactional
+        linked list insert operation. The second example demonstrates composition,
+        combining a transactional insert operation with a transactional remove operation
+        which compose into a larger, single move transaction. Next, a minor but important
+        detail regarding memory addresses within the transactional workspace is given.
+        Finally, an example of how to handle priority inversion for validating and
+        invalidating consistency schemes using TBoost.STM's extensible contention
+        manager and compositional framework is provided. The final example demonstrates
+        a number of important aspects of TBoost.STM's implementation, such as, differing
+        priority inversion mechanics for different consistency models, transactional
+        attribute enrichment via composition and threaded memory sharing amongst
+        transactions.
+      </p>
+<p>
+        While most of the examples are intuitive and a complete understanding of
+        the TBoost.STM API is not needed for a high-level understanding of its functionality,
+        a complete description of all interfaces used below can found in referenced
+        section.
+      </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.users_guide.tutorial.a_simple_transaction"></a><a class="link" href="tutorial.html#toward_boost_stm.users_guide.tutorial.a_simple_transaction" title="A Simple Transaction">A
+        Simple Transaction</a>
+</h4></div></div></div>
+<p>
+          In this example, we build a linked list insert transactional operation
+          using TBoost.STM. The example is shown in three segments: the client code
+          which inserts 100 items into the list, the insert operation which client
+          code calls, the internal insert operation which the exposed insert operation
+          calls.
+        </p>
+<a name="toward_boost_stm.users_guide.tutorial.a_simple_transaction.client_invoked_inserts"></a><h6>
+<a name="id4849752"></a>
+          <a class="link" href="tutorial.html#toward_boost_stm.users_guide.tutorial.a_simple_transaction.client_invoked_inserts">Client
+          Invoked Inserts</a>
+        </h6>
+<pre class="programlisting"><span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">linked_list</span><span class="special"><</span><span class="keyword">int</span><span class="special">></span> <span class="special">></span> <span class="identifier">llist</span><span class="special">;</span>
+<span class="special">...</span>
+<span class="identifier">atomic</span><span class="special">(</span><span class="identifier">_</span><span class="special">)</span> <span class="special">{</span>
+    <span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="number">100</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>     <span class="special">{</span>
+        <span class="identifier">llist</span><span class="special">-></span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">i</span><span class="special">);</span>
+    <span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<p>
+          After inspecting the above client invoked insert code it is apparent that
+          the code itself shows no deep signs of being transactional. The two exceptions
+          are the declaration of the list using a tx_ptr smart pointer and the fact
+          that the insertion of te 100 elements is atomic. This is our desired behavior.
+          As far as the client side programmer is concerned, there is no additional
+          code needed to perform a transactional linked list insert over a non-transactional
+          linked list insert. Obviously, this simplistic behavior eases the introduction
+          of TM solutions into algorithms of new and legacy systems.
+        </p>
+<a name="toward_boost_stm.users_guide.tutorial.a_simple_transaction.linked_list_declaration"></a><h6>
+<a name="id4803994"></a>
+          <a class="link" href="tutorial.html#toward_boost_stm.users_guide.tutorial.a_simple_transaction.linked_list_declaration">Linked
+          list declaration</a>
+        </h6>
+<a name="toward_boost_stm.users_guide.tutorial.a_simple_transaction.insert_retry_transaction"></a><h6>
+<a name="id4804016"></a>
+          <a class="link" href="tutorial.html#toward_boost_stm.users_guide.tutorial.a_simple_transaction.insert_retry_transaction">Insert
+          retry transaction</a>
+        </h6>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">insert</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">val</span><span class="special">)</span> <span class="special">{</span>
+    <span class="keyword">for</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stm</span><span class="special">::</span><span class="identifier">transaction</span> <span class="identifier">_</span><span class="special">;</span> <span class="special">!</span><span class="identifier">_</span><span class="special">.</span><span class="identifier">committed</span><span class="special">()</span> <span class="special">&&</span> <span class="identifier">_</span><span class="special">.</span><span class="identifier">restart</span><span class="special">();</span> <span class="identifier">_</span><span class="special">.</span><span class="identifier">no_throw_end</span><span class="special">())</span>
+        <span class="keyword">try</span> <span class="special">{</span>
+            <span class="comment">// ... see below
+</span>        <span class="special">}</span> <span class="keyword">catch</span> <span class="special">(</span><span class="identifier">aborted_transaction_exception</span><span class="special">&)</span> <span class="special">{}</span>
+<span class="special">}</span>
+</pre>
+<p>
+          The exposed insert code performs two key operations: (1) it retries the
+          transaction until it succeeds (commits) and (2) it catches aborted transaction
+          exceptions. The retry code is perhaps the largest visible section of code
+          overhead for the transactional linked list insert operation. While there
+          are other C++ mechanisms to retry transactions, like gotos or macro-based
+          approaches, we believe a simple loop is currently the best solution for
+          TM retry behavior in C++. Others before us have implemented differing solutions
+          that have smaller code footprints, but violate large-scale design concerns,
+          break compositionality potential and hide or impose large language penalties.
+          As such, we currently accept the loop overhead as a small inconvenience
+          and avoid breaking language semantics.
+        </p>
+<p>
+          The aborted_transaction_exception allows TBoost.STM to be exception neutral
+          while also gaining performance benefits of early notification of doomed
+          transactions. The above example demonstrates this behavior in practice
+          with its absorption of aborted transactions and only aborted transactions.
+        </p>
+<a name="toward_boost_stm.users_guide.tutorial.a_simple_transaction.insert_specific"></a><h6>
+<a name="id4804548"></a>
+          <a class="link" href="tutorial.html#toward_boost_stm.users_guide.tutorial.a_simple_transaction.insert_specific">Insert
+          specific</a>
+        </h6>
+<pre class="programlisting"><span class="identifier">upgrd_ptr</span><span class="special"><</span><span class="identifier">list_node</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">prev</span><span class="special">(</span><span class="identifier">_</span><span class="special">,</span> <span class="identifier">head_</span><span class="special">);</span>
+<span class="identifier">upgrd_ptr</span><span class="special"><</span><span class="identifier">list_node</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">curr</span><span class="special">(</span><span class="identifier">_</span><span class="special">,</span> <span class="identifier">head_</span><span class="special">-></span><span class="identifier">next_</span><span class="special">);</span>
+<span class="keyword">while</span> <span class="special">(</span><span class="identifier">curr</span><span class="special">)</span> <span class="special">{</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">curr</span><span class="special">-></span><span class="identifier">value_</span> <span class="special">==</span> <span class="identifier">val</span><span class="special">)</span> <span class="keyword">return</span><span class="special">;</span>
+    <span class="keyword">else</span> <span class="keyword">if</span> <span class="special">(</span><span class="identifier">curr</span><span class="special">-></span><span class="identifier">value_</span> <span class="special">></span> <span class="identifier">val</span><span class="special">)</span> <span class="keyword">break</span><span class="special">;</span>
+    <span class="identifier">prev</span> <span class="special">=</span> <span class="identifier">curr</span><span class="special">;</span>
+    <span class="identifier">curr</span> <span class="special">=</span> <span class="identifier">curr</span><span class="special">-></span><span class="identifier">next_</span><span class="special">;</span>
+<span class="special">}</span>
+<span class="keyword">if</span> <span class="special">(!</span><span class="identifier">curr</span> <span class="special">||</span> <span class="special">(</span><span class="identifier">curr</span><span class="special">-></span><span class="identifier">value_</span> <span class="special">></span> <span class="identifier">val</span><span class="special">))</span> <span class="special">{</span>
+    <span class="identifier">make_wr_ptr</span><span class="special">(</span><span class="identifier">_</span><span class="special">,</span> <span class="identifier">prev</span><span class="special">)-></span><span class="identifier">next_</span> <span class="special">=</span>
+        <span class="identifier">BOOST_STM_NEW</span><span class="special">(</span><span class="identifier">_</span><span class="special">,</span><span class="identifier">transactional_object</span><span class="special"><</span><span class="identifier">list_node</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">>(</span><span class="identifier">val</span><span class="special">,</span> <span class="identifier">curr</span><span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+          The above example illustrates the simplicity of TBoost.STM transactions
+          and their interfaces. The transactional implementation is nearly identical
+          to a non-transactional implementation with the exception of some annotations.
+          The templatized functions within the transaction class ensure type-safety
+          is maintained without any necessary type-casts. Due to exact type correctness,
+          as demonstrated in the calls to make_wr_ptr(), daisy-chained method invocation
+          can be performed allowing streamlined usage. These aspects help make TBoost.STM
+          transactions small and easy to understand.
+        </p>
+<p>
+          One minor, but vital, detail is in way new objects are created on a transactional
+          context. Rather than hide this difference, it is intentionally exposed
+          here to draw out the memory access differences required for writes to new
+          and existing memory. We explain this difference in detail later in this
+          section.
+        </p>
+<p>
+          In order to simplify the retry mechanism a macro is provided so the user
+          can just write
+        </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">insert</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">val</span><span class="special">)</span> <span class="special">{</span>
+    <span class="identifier">atomic</span><span class="special">(</span><span class="identifier">_</span><span class="special">)</span> <span class="special">{</span>
+        <span class="identifier">upgrd_ptr</span><span class="special"><</span><span class="identifier">list_node</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">prev</span><span class="special">(</span><span class="identifier">_</span><span class="special">,</span> <span class="identifier">head_</span><span class="special">);</span>
+        <span class="identifier">upgrd_ptr</span><span class="special"><</span><span class="identifier">list_node</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">curr</span><span class="special">(</span><span class="identifier">_</span><span class="special">,</span> <span class="identifier">head_</span><span class="special">-></span><span class="identifier">next_</span><span class="special">);</span>
+        <span class="keyword">while</span> <span class="special">(</span><span class="identifier">curr</span><span class="special">)</span> <span class="special">{</span>
+            <span class="keyword">if</span> <span class="special">(</span><span class="identifier">curr</span><span class="special">-></span><span class="identifier">value_</span> <span class="special">==</span> <span class="identifier">val</span><span class="special">)</span> <span class="keyword">return</span><span class="special">;</span>
+            <span class="keyword">else</span> <span class="keyword">if</span> <span class="special">(</span><span class="identifier">curr</span><span class="special">-></span><span class="identifier">value_</span> <span class="special">></span> <span class="identifier">val</span><span class="special">)</span> <span class="keyword">break</span><span class="special">;</span>
+            <span class="identifier">prev</span> <span class="special">=</span> <span class="identifier">curr</span><span class="special">;</span>
+            <span class="identifier">curr</span> <span class="special">=</span> <span class="identifier">curr</span><span class="special">-></span><span class="identifier">next_</span><span class="special">;</span>
+        <span class="special">}</span>
+        <span class="keyword">if</span> <span class="special">(!</span><span class="identifier">curr</span> <span class="special">||</span> <span class="special">(</span><span class="identifier">curr</span><span class="special">-></span><span class="identifier">value_</span> <span class="special">></span> <span class="identifier">val</span><span class="special">))</span> <span class="special">{</span>
+            <span class="identifier">make_wr_ptr</span><span class="special">(</span><span class="identifier">_</span><span class="special">,</span> <span class="identifier">prev</span><span class="special">)-></span><span class="identifier">next_</span> <span class="special">=</span>
+                <span class="identifier">BOOST_STM_NEW</span><span class="special">(</span><span class="identifier">_</span><span class="special">,</span><span class="identifier">transactional_object</span><span class="special"><</span><span class="identifier">list_node</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">>(</span><span class="identifier">val</span><span class="special">,</span> <span class="identifier">curr</span><span class="special">));</span>
+        <span class="special">}</span>
+    <span class="special">}</span>
+<span class="special">}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.users_guide.tutorial.a_composable_transaction"></a><a class="link" href="tutorial.html#toward_boost_stm.users_guide.tutorial.a_composable_transaction" title="A Composable Transaction">A
+        Composable Transaction</a>
+</h4></div></div></div>
+<p>
+          The below example builds upon the previous example by adding a remove operation.
+          We combine the insert and remove operations and build a transactional move
+          operation that compose into a single transaction. Composition is a key
+          aspect for TM systems. TBoost.STM's ability to compose transactions from
+          pre-existing transactions is fundamental to its design.
+        </p>
+<p>
+          In the following example, the first section shows client code invoking
+          the move operation. Next, the internal remove operation is shown, demonstrating
+          its transactional independence. Last, the external move operation is explained,
+          combining the internal insert and remove linked list operations resulting
+          in a composed, single transaction.
+        </p>
+<p>
+          Client Invoked Inserts / Moves.
+        </p>
+<pre class="programlisting"><span class="identifier">tx_ptr</span><span class="special"><</span><span class="identifier">linked_list</span><span class="special"><</span><span class="keyword">int</span><span class="special">></span> <span class="special">></span> <span class="identifier">llist</span><span class="special">;</span>
+<span class="special">...</span>
+<span class="identifier">atomic</span><span class="special">(</span><span class="identifier">_</span><span class="special">)</span> <span class="special">{</span>
+    <span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="number">100</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+        <span class="identifier">llist</span><span class="special">-></span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">i</span><span class="special">);</span>
+    <span class="special">}</span>
+    <span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">j</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">j</span> <span class="special"><</span> <span class="number">100</span><span class="special">;</span> <span class="special">++</span><span class="identifier">j</span><span class="special">)</span> <span class="special">{</span>
+        <span class="identifier">llist</span><span class="special">-></span><span class="identifier">move</span><span class="special">(</span><span class="identifier">j</span><span class="special">,</span> <span class="special">-</span><span class="identifier">j</span><span class="special">);</span>
+    <span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<p>
+          The client invoked inserts and moves are fairly straight forward. The insert
+          operations are performed first then the original items are moved to a new
+          location by inverting their value. Again, from a client programming perspective,
+          there is no hint that this code is transactional, which is our intended
+          goal.
+        </p>
+<p>
+          Remove
+        </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">remove</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">val</span><span class="special">)</span> <span class="special">{</span>
+    <span class="identifier">use_atomic</span><span class="special">(</span><span class="identifier">_</span><span class="special">)</span> <span class="special">{</span>
+        <span class="comment">// find the node whose val matches the request
+</span>        <span class="identifier">upgrd_ptr</span><span class="special"><</span><span class="identifier">list_node</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">prev</span><span class="special">(</span><span class="identifier">_</span><span class="special">,</span><span class="identifier">head_</span><span class="special">);</span>
+        <span class="identifier">upgrd_ptr</span><span class="special"><</span><span class="identifier">list_node</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">curr</span><span class="special">(</span><span class="identifier">_</span><span class="special">,</span><span class="identifier">prev</span><span class="special">-></span><span class="identifier">next_</span><span class="special">);</span>
+        <span class="keyword">while</span> <span class="special">(</span><span class="identifier">curr</span><span class="special">)</span> <span class="special">{</span>
+            <span class="comment">// if we find the node, disconnect it and end the search
+</span>            <span class="keyword">if</span> <span class="special">(</span><span class="identifier">curr</span><span class="special">-></span><span class="identifier">value_</span> <span class="special">==</span> <span class="identifier">val</span><span class="special">)</span> <span class="special">{</span>
+                <span class="identifier">make_wr_ptr</span><span class="special">(</span><span class="identifier">_</span><span class="special">,</span> <span class="identifier">prev</span><span class="special">)-></span><span class="identifier">next_</span><span class="special">=</span><span class="identifier">curr</span><span class="special">-></span><span class="identifier">next_</span><span class="special">;</span>
+                <span class="identifier">delete_ptr</span><span class="special">(</span><span class="identifier">_</span><span class="special">,</span><span class="identifier">curr</span><span class="special">);</span>
+                <span class="keyword">break</span><span class="special">;</span>
+            <span class="special">}</span> <span class="keyword">else</span> <span class="keyword">if</span> <span class="special">(</span><span class="identifier">curr</span><span class="special">-></span><span class="identifier">value_</span> <span class="special">></span> <span class="identifier">val</span><span class="special">)</span> <span class="special">{</span>
+                <span class="comment">// this means the search failed
+</span>                <span class="keyword">break</span><span class="special">;</span>
+            <span class="special">}</span>
+            <span class="identifier">prev</span> <span class="special">=</span> <span class="identifier">curr</span><span class="special">;</span>
+            <span class="identifier">curr</span> <span class="special">=</span> <span class="identifier">prev</span><span class="special">-></span><span class="identifier">next_</span><span class="special">;</span>
+        <span class="special">}</span>
+    <span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<p>
+          As was the case with the insert(), the above remove() method is almost
+          identical to how a normal linked list remove operation would be implemented,
+          with the exception of the atomic guard and a few TBoost.STM API calls.
+          Again, this is ideal, as it leads to intuitive transactional programming,
+          requiring only a minor learning curve for the algorithms developer.
+        </p>
+<p>
+          Composed External Move
+        </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">move</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">v1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">v2</span><span class="special">)</span> <span class="special">{</span>
+    <span class="identifier">use_atomic</span> <span class="special">{</span>
+        <span class="identifier">remove</span><span class="special">(</span><span class="identifier">v1</span><span class="special">);</span>
+        <span class="identifier">insert</span><span class="special">(</span><span class="identifier">v2</span><span class="special">);</span>
+    <span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<p>
+          The move() implementation do not requires any overhead required in non-transactional
+          implementations, other than using the atomic guard. The remainder of the
+          code
+        </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.users_guide.tutorial.a_dynamically_prioritized__composed_transaction"></a><a class="link" href="tutorial.html#toward_boost_stm.users_guide.tutorial.a_dynamically_prioritized__composed_transaction" title="A Dynamically Prioritized, Composed Transaction">A
+        Dynamically Prioritized, Composed Transaction</a>
+</h4></div></div></div>
+<p>
+          The following subsection discusses how priority inversion is handled within
+          TBoost.STM using dynamic priority assignment. Two solutions are presented
+          for the different consistency models, one for validation and one for invalidation.
+          Following the two examples which detail how to override contention management
+          interfaces, a dynamically prioritized transaction is presented, demonstrating
+          how transactions interact with the prior implementations. Priority inversion
+          in transactional memory occurs when a lower priority transaction causes
+          a higher priority transaction to abort. With STM lock-based (and non-blocking)
+          systems, priority inversion does not happen on the same scale as that of
+          direct lock-based solutions. The different cases of priority inversion
+          between direct locking solutions and TM solutions are due to TM's natural
+          avoidance of critical sections. However, priority inversion in TM can easily
+          occur if, for example, a long running transaction is continually preempted
+          by shorter running transactions which always commit before the longer transaction.
+        </p>
+<p>
+          In order to prevent such priority inversion scenarios, two extensible contention
+          manager (CM) virtual methods are provided to allow client-side implementations
+          a way to handle different scenarios based on the consistency model currently
+          in use. The first interface, abort_before_commit(), allows a user-defined
+          contention manager mechanism to abort a transaction before it commits.
+          Although TBoost.STM does not yet implement validation, once it becomes
+          available, client-side validating algorithms which want to avoid priority
+          inversion will need to override abort_before_commit() to iterate over in-flight
+          transactions and abort the current in-process transaction if another in-flight
+          transaction exists of higher priority. All in-flight transactions can be
+          accessed by a call to in_flight_transactions() which returns the set of
+          active transactions. As such, one could build an overridden abort_before_commit()
+          which always caused lower priority committing transactions to abort in
+          the event a higher priority transaction is currently in-flight. One possible
+          implementation is shown below. For code simplicity, the following code
+          has removed some static class accessors and namespaces.
+        </p>
+<p>
+          Priority Inversion for Validating Consistency.
+        </p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">priority_cm</span> <span class="special">:</span>
+<span class="keyword">public</span> <span class="identifier">core</span><span class="special">::</span><span class="identifier">base_contention_manager</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+    <span class="comment">// method invoked prior tx commit
+</span>    <span class="keyword">bool</span> <span class="identifier">abort_before_commit</span><span class="special">(</span><span class="identifier">transaction</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">t</span><span class="special">)</span> <span class="special">{</span>
+        <span class="identifier">in_flight_transaction_container</span><span class="special">::</span><span class="identifier">const_iterator</span> <span class="identifier">i</span> <span class="special">=</span> <span class="identifier">in_flight_transactions</span><span class="special">().</span><span class="identifier">begin</span><span class="special">();</span>
+        <span class="keyword">for</span> <span class="special">(;</span> <span class="identifier">in_flight_transactions</span><span class="special">().</span><span class="identifier">end</span><span class="special">()</span> <span class="special">!=</span> <span class="identifier">i</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+            <span class="keyword">if</span> <span class="special">(</span><span class="identifier">t</span><span class="special">.</span><span class="identifier">priority</span><span class="special">()</span> <span class="special"><</span> <span class="special">(*</span><span class="identifier">i</span><span class="special">)-></span><span class="identifier">priority</span><span class="special">()){</span>
+                <span class="keyword">return</span> <span class="keyword">true</span><span class="special">;</span>
+            <span class="special">}</span>
+        <span class="special">}</span>
+        <span class="keyword">return</span> <span class="keyword">false</span><span class="special">;</span>
+    <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+          While the above approach is necessary for a validating system, it is largely
+          a poor way to perform priority inversion checking. Firstly, it has the
+          side-effect of causing unnecessary aborts for transactions which do not
+          necessarily conflict, but simply have differing priority levels. Secondly,
+          it is slow in that all transactions must be walked through each time a
+          transaction commits. However, as an ad hoc solution for a validating system,
+          the above priority inversion mechanism may be as close to correct as is
+          possible. This solution is useful for validation, but should never be used
+          for invalidation. Instead a second and more natural approach for invalidating
+          systems to prevent priority inversion is to override the permission_to_abort()
+          interface. The permission_to_abort() interface can only be used when TBoost.STM
+          is performing invalidation.
+        </p>
+<p>
+          The permission_to_abort() interface is called from TBoost.STM's end_transaction()
+          method when a committing transaction has found a second transaction it
+          needs to abort for consistency. As such, the method takes two parameters,
+          an lhs (lefthand side), the committing transaction, and an rhs (right-hand
+          side), the transaction requested to be aborted. If permission is granted
+          to abort the second transaction, the method returns true and the second
+          transaction is aborted. If permission is not granted to abort the second
+          transaction, the method returns false and upon returning the committing
+          transaction aborts itself. All consistency checking for
+        </p>
+<p>
+          deferred updating is performed prior to any updating operation and thus
+          memory is still in a completely legal uncommitted state until all consistency
+          is performed. For direct updating aborts, the system simply follows its
+          normal semantics of aborting the transaction by restoring global memory
+          to its original state. Similar to the prior example, overriding the permission_to_abort()
+          method can be done in such a manner which prevents lower priority transaction
+          from aborting a higher priority transaction as shown below:
+        </p>
+<p>
+          Priority Inversion for Invalidating Consistency.
+        </p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">priority_cm</span> <span class="special">:</span>
+<span class="keyword">public</span> <span class="identifier">core</span><span class="special">::</span><span class="identifier">base_contention_manager</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+    <span class="comment">// method invoked before lhs transaction
+</span>    <span class="comment">// aborts rhs transaction
+</span>    <span class="keyword">bool</span> <span class="identifier">permission_to_abort</span><span class="special">(</span><span class="identifier">transaction</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">lhs</span><span class="special">,</span>
+            <span class="identifier">transaction</span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">rhs</span><span class="special">)</span> <span class="special">{</span>
+        <span class="keyword">return</span> <span class="identifier">lhs</span><span class="special">.</span><span class="identifier">priority</span><span class="special">()</span> <span class="special">>=</span> <span class="identifier">rhs</span><span class="special">.</span><span class="identifier">priority</span><span class="special">();</span>
+    <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+          With priority inversion preventable for both validating and invalidating
+          consistency modes, transactions now need some mechanism to control their
+          priority. TBoost.STM allows for such control through the raise_priority()
+          interface. By iteratively calling raise_priority(), preempted transactions
+          can raise their priority at each preemption ensuring their eventual commit.
+          The raise_priority() interface is implemented using a size_t type. Additionally,
+          TBoost.STM supplies a set_priority() interface taking a size_t parameter
+          allowing client code to set the priority directly.
+        </p>
+<p>
+          In order for raise_priority() to function correctly, the affected transaction
+          must not be destroyed upon transactional abort. If the prioritized transaction
+          is destroyed at each transactional abort, raise_priority() will only raise
+          the transaction's priority by one each time. In order to demonstrate how
+          raise_priority() can be used in practice, we use a wrapper transaction
+          around the internal_insert()'s transaction. However, in this case the wrapper
+          transaction is not destroyed upon successive iterations. The restart_transaction()
+          interface must be called for transactions that are not destroyed after
+          being aborted. This necessary step clears the state from the previously
+          failed transactional run. As shown in the below code, the restart_transaction()
+          is only called when an aborted exception is caught. This is because end_transaction()
+          throws an exception when the transaction is aborted. Following this implementation
+          paradigm, handling aborted transactions is relatively straightforward as
+          all aborted transactions follow the same exception-based path.
+        </p>
+<p>
+          The below example combines all of these aspects together into a dynamically
+          prioritized composed transaction. The composition is slightly different
+          than what has been shown previously - instead of using composition for
+          wrapping two methods into a larger transaction, we use composition to override
+          the internal transaction's implementation to improve the richness of its
+          behavior, a relatively novel concept for composition.
+        </p>
+<p>
+          Dynamically Prioritized Composed Transaction.
+        </p>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">insert</span><span class="special">(</span><span class="identifier">list_node</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span><span class="identifier">node</span><span class="special">)</span> <span class="special">{</span>
+    <span class="keyword">bool</span> <span class="identifier">success</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">;</span>
+    <span class="identifier">transaction_state</span> <span class="identifier">s</span> <span class="special">=</span> <span class="identifier">e_no_state</span><span class="special">;</span>
+    <span class="identifier">transaction</span> <span class="identifier">t</span><span class="special">;</span>
+    <span class="keyword">for</span> <span class="special">(;</span> <span class="identifier">s</span> <span class="special">!=</span> <span class="identifier">e_committed</span><span class="special">;</span> <span class="identifier">t</span><span class="special">.</span><span class="identifier">raise_priority</span><span class="special">())</span> <span class="special">{</span>
+        <span class="keyword">try</span> <span class="special">{</span>
+            <span class="identifier">internal_insert</span><span class="special">(</span><span class="identifier">node</span><span class="special">,</span> <span class="identifier">success</span><span class="special">);</span>
+            <span class="identifier">s</span> <span class="special">=</span> <span class="identifier">t</span><span class="special">.</span><span class="identifier">end_transaction</span><span class="special">();</span>
+        <span class="special">}</span> <span class="keyword">catch</span> <span class="special">(</span><span class="identifier">aborted_transaction_exception</span><span class="special">&)</span> <span class="special">{</span> 
+            <span class="identifier">t</span><span class="special">.</span><span class="identifier">restart_transaction</span><span class="special">();</span> 
+        <span class="special">}</span>
+        <span class="keyword">if</span> <span class="special">(!</span><span class="identifier">success</span><span class="special">)</span> <span class="keyword">return</span> <span class="keyword">false</span><span class="special">;</span> <span class="comment">// on list
+</span>    <span class="special">}</span>
+    <span class="keyword">return</span> <span class="keyword">true</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+          The above example demonstrates a number of important concepts with TBoost.STM's
+          extensible contention manager and its implementation of composition. First,
+          it shows how to avoid priority inversion, using dynamically prioritize
+          transactions, in conjunction with a prioritized overridden contention manager
+          for both validation and invalidation consistency schemes. Second, it demonstrates
+          how transactions which are aborted but not destroyed can be restarted with
+          the aborted transaction catch clause. Third, the example explains how ordinary
+          transactions can be enriched by layering composed transactions on top of
+          them without changing the underlying original code. Lastly, it reveals
+          some of TBoost.STM's internal priority processing which requires a additional
+          amount of explanation, as follows.
+        </p>
+<p>
+          TBoost.STM's Internal Write-Write Abort Process.
+        </p>
+<p>
+          As the above priority assigned transaction demonstrates, the outer transaction
+          has increasing priority while the inner transaction, the one within internal_insert(),
+          does not. Yet, the inner transaction is not aborted due to the outer transaction's
+          priority. This is handled internally via TBoost.STM's abort process by
+          two fundamental ideas.
+        </p>
+<div class="orderedlist"><ol type="1">
+<li>
+            As previously explained, all transactions of the same thread share transactional
+            memory, this allows the outer transaction to be seen as using the same
+            memory as the inner transaction. Thus, when the inner transaction is
+            flagged to be aborted, the outer transaction must also be flagged to
+            be aborted as well, since it would have the same memory conflicts. However,
+            when checking the outer transaction's priority, the contention manager's
+            priority method would see the outer transaction as having higher priority
+            than the committing transaction if it had already been aborted once and
+            the committing transaction had not. The priority analysis of the outer
+            transaction compared to the committing transaction would thereby force
+            the committing transaction to abort instead of the outer transaction.
+          </li>
+<li>
+            TBoost.STM's abort mechanism does not abort any transactions until it
+            has walked all transactions, passing all the permission_to_abort() checks.
+            Therefore, even if the inner transaction is flagged to be aborted, since
+            all transactions must be successfully walked in order to abort any transaction,
+            the outer transaction's priority will cause the committing transaction
+            to abort, thereby saving the inner transaction from being affected. An
+            example of this, taken directly from TBoost.STM's implementation, is
+            shown below (some code has been removed or shorted to simplify the example):
+          </li>
+</ol></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">abort_conflicting_writes_on_write_set</span><span class="special">()</span> <span class="special">{</span>
+    <span class="identifier">trans_list</span> <span class="identifier">aborted</span><span class="special">;</span>
+    <span class="comment">// iterate through all tx's written memory
+</span>    <span class="keyword">for</span> <span class="special">(</span><span class="identifier">write_set</span><span class="special">::</span><span class="identifier">iterator</span> <span class="identifier">i</span> <span class="special">=</span> <span class="identifier">writes</span><span class="special">().</span><span class="identifier">begin</span><span class="special">();</span> <span class="identifier">writes</span><span class="special">().</span><span class="identifier">end</span><span class="special">()</span> <span class="special">!=</span> <span class="identifier">i</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+        <span class="comment">// iterate through inflight transactions
+</span>        <span class="keyword">for</span> <span class="special">(</span><span class="identifier">trans</span><span class="special">::</span><span class="identifier">iterator</span> <span class="identifier">j</span> <span class="special">=</span> <span class="identifier">inflight_</span><span class="special">.</span><span class="identifier">begin</span><span class="special">();</span> <span class="identifier">inflight_</span><span class="special">.</span><span class="identifier">end</span><span class="special">()</span> <span class="special">!=</span> <span class="identifier">j</span><span class="special">;</span> <span class="special">++</span><span class="identifier">j</span><span class="special">)</span> <span class="special">{</span>
+            <span class="identifier">transaction</span> <span class="special">*</span><span class="identifier">t</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">transaction</span><span class="special">*)*</span><span class="identifier">j</span><span class="special">;</span>
+            <span class="comment">// if writing to this write_set, store it
+</span>            <span class="keyword">if</span> <span class="special">(</span><span class="identifier">t</span><span class="special">-></span><span class="identifier">writes</span><span class="special">().</span><span class="identifier">end</span><span class="special">()</span> <span class="special">!=</span> <span class="identifier">t</span><span class="special">-></span><span class="identifier">writes</span><span class="special">().</span><span class="identifier">find</span><span class="special">(</span><span class="identifier">i</span><span class="special">-></span><span class="identifier">first</span><span class="special">))</span> <span class="special">{</span>
+                <span class="keyword">if</span> <span class="special">(</span><span class="identifier">cm_</span><span class="special">-></span><span class="identifier">permission_to_abort</span><span class="special">(*</span><span class="keyword">this</span><span class="special">,</span> <span class="special">*</span><span class="identifier">t</span><span class="special">))</span>
+                    <span class="identifier">aborted</span><span class="special">.</span><span class="identifier">push_front</span><span class="special">(</span><span class="identifier">t</span><span class="special">);</span>
+                <span class="keyword">else</span>
+                    <span class="keyword">throw</span> <span class="identifier">aborted_transaction_exception</span><span class="special">(</span><span class="string">""</span><span class="special">);</span>
+            <span class="special">}</span>
+        <span class="special">}</span>
+    <span class="special">}</span>
+    <span class="comment">// ok, forced to aborts are allowed, do them
+</span>    <span class="keyword">for</span> <span class="special">(</span><span class="identifier">trans_list</span><span class="special">::</span><span class="identifier">iterator</span> <span class="identifier">k</span> <span class="special">=</span> <span class="identifier">aborted</span><span class="special">.</span><span class="identifier">begin</span><span class="special">();</span> <span class="identifier">aborted</span><span class="special">.</span><span class="identifier">end</span><span class="special">()</span> <span class="special">!=</span> <span class="identifier">k</span><span class="special">;</span> <span class="special">++</span><span class="identifier">k</span><span class="special">)</span> <span class="special">{</span>
+        <span class="special">(*</span><span class="identifier">k</span><span class="special">)-></span><span class="identifier">forced_to_abort</span><span class="special">()</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">;</span>
+    <span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<p>
+          Priority Inversion Allowed.
+        </p>
+<p>
+          From the above code examples, one may question why the default behavior
+          implemented within TBoost.STM does not automatically integrate priority
+          into transactions, as it could be integrated within restart_transaction().
+          First, each problem is different and integrating priority only into restart_transaction()
+          would not cover all cases (e.g., when the outer transaction was terminated).
+          Second, building an automatic priority inversion handling scheme would
+          eliminate some of the natural optimizations granted from different updating
+          policies. For example, deferred updating allows multiple writers of the
+          same memory to execute simultaneously. This behavior enables deferred updating
+          the ability to process the fastest completing transactions first. If a
+          priority system was integrated directly into TBoost.STM, this optimization
+          would be lost. In addition, direct updating optimizes writes by writing
+          directly to global memory. As such, direct updating suffers greater penalties
+          for aborted transactions due to required restoration of global memory.
+          In this case, more transactional aborts would occur if TBoost.STM built-in
+          a default priority inversion handler. Considering these factors, as well
+          as many others, TBoost.STM does not build transactional priority into its
+          system. Instead, we leave this implementation up to client-side implementors,
+          as they will have a better understanding of their problem domain and be
+          able to more correctly implement the right contention manager for their
+          specific needs.
+        </p>
+<p>
+          The Future of Parallel Programming.
+        </p>
+<p>
+          An important distinction regarding priority within transactions versus
+          priority within more classical synchronization mechanisms, like locks,
+          is that same functional units can be executed simultaneously by different
+          threads yielding different priorities. For example, two threads can be
+          executing the above insert transaction, one thread which has just begun
+          its first run will have a priority of 0, while a second transaction which
+          has attempted to run the insert operation 99 times previously, would have
+          a priority of 99. The important distinction here is that classical critical
+          section synchronization mechanisms can have only a single priority per
+          functional unit (e.g., insert, remove, lookup operation) due to the innate
+          limitations of single thread critical section execution. With transactions,
+          this limitation is removed and new concepts of priority begin to emerge.
+          Priority inversion can then extend beyond its traditional meaning and extend
+          into a new category which incorporates differing priority within the same
+          functional unit. These new concepts may reshape the way classical parallel
+          problems are thought of in the future, especially in relation to transactional
+          memory.
+        </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2009 Justin E. Gottchlich<br>Copyright © 2009 Vicente J. Botet Escriba<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="getting_started.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../users_guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="ext_references.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>