Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r56996 - in sandbox/stm/branches/vbe/libs/stm/doc: . html html/toward_boost_stm html/toward_boost_stm/appendices html/toward_boost_stm/overview html/toward_boost_stm/reference html/toward_boost_stm/users_guide reference reference/contention_managers reference/memory_managers reference/non_tx reference/tx
From: vicente.botet_at_[hidden]
Date: 2009-10-19 12:03:44


Author: viboes
Date: 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
New Revision: 56996
URL: http://svn.boost.org/trac/boost/changeset/56996

Log:
TBoost.STM vbe: doc update
* reference section completed with the new files
* new pdf fie
Added:
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/basics.html (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/contention_managers.html (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/datatypes_hpp.html (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/non_transactional_objects.html (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/stm_hpp.html (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transaction_object_ptr_hpp.html (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transactional_objects.html (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/reference/contention_manager.qbk (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/reference/contention_managers/
   sandbox/stm/branches/vbe/libs/stm/doc/reference/contention_managers/default.qbk (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/reference/memory_managers/
   sandbox/stm/branches/vbe/libs/stm/doc/reference/non_tx/
   sandbox/stm/branches/vbe/libs/stm/doc/reference/non_tx/numeric.qbk (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/reference/non_tx/pointer.qbk (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/reference/non_tx/smart_ptr.qbk (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/reference/shallow_transaction_object.qbk (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/reference/stm.qbk (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/reference/transaction_object_ptr.qbk (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/reference/transactional_object.qbk (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/reference/tx/
   sandbox/stm/branches/vbe/libs/stm/doc/reference/tx/numeric.qbk (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/reference/tx/pointer.qbk (contents, props changed)
   sandbox/stm/branches/vbe/libs/stm/doc/reference/tx/smart_ptr.qbk (contents, props changed)
Binary files modified:
   sandbox/stm/branches/vbe/libs/stm/doc/stm.pdf
Text files modified:
   sandbox/stm/branches/vbe/libs/stm/doc/appendices.qbk | 132 +++++++-
   sandbox/stm/branches/vbe/libs/stm/doc/html/index.html | 34 -
   sandbox/stm/branches/vbe/libs/stm/doc/html/standalone_HTML.manifest | 18
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices.html | 2
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/changes.html | 4
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/implementation.html | 13
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/rationale.html | 66 ++--
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/todo.html | 337 +++++++++++++++++++----
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/examples.html | 8
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/overview.html | 4
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/overview/intro.html | 34 +-
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference.html | 167 +++-------
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/cache_fct_hpp.html | 6
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/exceptions_hpp.html | 6
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/non_tx_smart_ptr_hpp.html | 7
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transaction_bookkeeping_hpp.html | 11
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transaction_hpp.html | 8
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transaction_object_hpp.html | 8
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transactional_object_hpp.html | 565 +++++++++++++++++++++++++++++++++++++++
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/ext_references.html | 40 ++
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/getting_started.html | 12
   sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/tutorial.html | 22
   sandbox/stm/branches/vbe/libs/stm/doc/implementation.qbk | 2
   sandbox/stm/branches/vbe/libs/stm/doc/reference.qbk | 40 ++
   sandbox/stm/branches/vbe/libs/stm/doc/reference/data_types.qbk | 64 ++++
   sandbox/stm/branches/vbe/libs/stm/doc/reference/smart_pointers.qbk | 366 -------------------------
   sandbox/stm/branches/vbe/libs/stm/doc/reference/transaction_object.qbk | 102 ------
   sandbox/stm/branches/vbe/libs/stm/doc/references.qbk | 29 ++
   28 files changed, 1299 insertions(+), 808 deletions(-)

Modified: sandbox/stm/branches/vbe/libs/stm/doc/appendices.qbk
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/appendices.qbk (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/appendices.qbk 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -32,27 +32,100 @@
 
 [heading Interface]
 
+This section concern new or modified features atthe user level.
+
 * [*DONE] Adding transactional smart pointers.
-* 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.
-* [*DONE] Managing Movable and non CopyConstructible types.
-* Replace auto_lock by boost::stm::synchro::unique_locker and redefine language-like macros.
+
+* [*PARTIALY DONE] 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.
+
+* [*DONE] Add throw_if_forced_to_abort_on_new and as_new functions
+
+* [*DONE] Managing Movable and non CopyConstructible types trough shallow copy (boost/stm/shallow_transactional_object.hpp).
+
+* [*DONE] Replace LOCK/UNLOCK macros by BOOST_STM_LOCK/BOOST_STM_UNLOCK and simplify the class auto_lock taking in accound the new languange-like macros.
+
+* Replace auto_lock by boost::stm::sync::unique_lock and redefine language-like macros.
+
+* [*DONE] Transaction Language-like macros (boost/stm/language_like.hpp)
+
+* [*DONE] Add current transaction
+ * (boost/synchro/tss.hpp)
+
+* [*DONE] Transaparent transactional objects
+ * boost/stm/tx/numeric.hpp,
+ * boost/stm/tx/pointer.hpp
+ * boost/stm/tx/smart_ptr.hpp
+
+* [*DONE] Manage with polymorphic pointers
+ * Add clone as virtual function of base_transaction_object
+ * Replace the new T(in) by in.clone()
+ * boost/stm/transaction_object_ptr.hpp
+
+* [*DONE] Separe the memory management from the user class and memory managers from the STM system
+ * Controlled by BOOST_STM_USE_SPECIFIC_TRANSACTION_MEMORY_MANAGER
+
+* [*DONE] Add monotonic storage
+ * boost/stm/detail/monotonic_storage.hpp
+
+* [*Partially DONE] Embedded references
+ Controlled by BOOST_STM_ALLOWS_EMBEDEEDS
+
+* [*Partially DONE] Manage with arrays of transactional objects (deleters)
+ * Controlled by BOOST_STM_ALLOWS_DELETERS
+ * Add functions to make a deleter from a 'transactional objet'
+ * Modifications done in files transaction.hpp and transaction_impl.hpp
+ * create boost/stm/detail/deleters.hpp
+
+* [*Partially DONE] Manage with non-transactional objects
+ * create boost/stm/non_tx/numeric.hpp
+ * create boost/stm/non_tx/pointer.hpp
+ * create boost/stm/non_tx/smart_ptr.hpp
+ * create boost/stm/non_tx/detail/cache_map.hpp
+
+* [*Partially DONE] Static and polymorphic contention managers
+ * this could improve the performances as when we choose a static contention manager there is no virtual calls
+ * boost/stm/contention_managers
+
+* [*Partially DONE] Memory managers (separate memory manager from transaction_object) (see files on vbe branch)
+create boost/stm/memory_managers/base_memory_manager.hpp
+create boost/stm/memory_managers/memory_manager.hpp
+
+* Allow LATM to work with other mutex that pthread_mutex_t and create a stm mutex class.
+
+
+[heading Adding some components to Boost to preparing Boostification of STM]
+
+This section concern new generic features thatcan be added to Boost useful to TBoost.STM but that are independent of STM.
+
+* [*DONE] Provide a thread specific shared pointer (Boost.Interthreads)
+* [*DONE] Provide a transparent initialization (Boost.Interthreads)
+* [*DONE] Non transactional Synchro mechanism (following as far as possible the Boost names)
+ * Add free functions to lock,unlock, try_lock, ... (boost/synchro/lock.hpp, boost/synchro/unlock.hpp, boost/synchro/try_lock.hpp ..) that work either with pthread_mutex or boost::mutex (Boost.Synchro)
+ * Add lockers lock_guard, lock_guard_if, unique_lock (boost/synchro/locks.hpp)
+ * Create non transactional synchronization language-like macros (boost/synchro/language_like.hpp)
+* [*PARTIALY DONE] Provide a unique array/tuple locker (Boost.Synchro)
 
 [heading Boostifying STM]
 
+This section contains the actions to be done to Boostify TBoost.STM.
+
 * [*DONE] set boost directory architecture
 * [*DONE] name files in lowercase
 * [*DONE] Add a config file with all the configuration macros
 * [*DONE] Add a stm file at the boost level including all the STM interfaces
-* [*DONE] Replace bit_vector by std::bitset or boost::dynamic_bitset (BOOST_STM_BLOOM_FILTER_USE_DYNAMIC_BITSET)
-* [*DONE] Replace Sleep by boost::this_thread::sleep
-* [*DONE] Replace pthread_mutex by boost::mutex
+* [*DONE] Use boost::lock_guard when lock/unlock
+* [*PARTIALY DONE] Replace bit_vector by std::bitset or boost::dynamic_bitset (BOOST_STM_BLOOM_FILTER_USE_DYNAMIC_BITSET)
+* [*PARTIALY DONE] Replace Sleep by boost::this_thread::sleep
+* [*DONE] Allow to use either pthread_mutex or boost::mutex in the internal implementation
 * Replace THREAD_ID by boost::thread_id
-* [*DONE] Provide a unique array/tuple locker (Boost.Synchro)
+* [*DONE] Remove var_auto_lock as it is not exception safe
 * Replace var_auto_lock by boost::synchro::unique_array_locker
-* Use boost::lock_guard when lock/unlock
+* Replace light_auto_lock by synchro::unique_lock
+* Replace specific lock/unlock functions by lockers generic ones
+lock_latm_general/unlock_latm_general by synchro::lock_guard g(general_lock());
+The same for lock_inflight_access, lock_latm_access, lockThreadMutex(threadId)
+
 * Adapt the pool to Boost.Pool
-* [*DONE] Provide a thread specific shared pointer (Boost.Interthreads)
-* [*DONE] Provide a transparent initialization (Boost.Interthreads)
 * Replace thread specific access using the thread id by boost:interthreads::thread_specific_shared_ptr
 * Replace the initialization to the library Boost.Interthreads (decorations and decorators)
 * Replace draco_move by boost::move and its emulation
@@ -61,15 +134,21 @@
 
 [heading Implementation]
 
+This section contains the modifications neede to improve the internal implementation of TBoost.STM.
+
 * [*DONE] Separate the data that is global, thread specific but shared to other threads using a lock, thread local or specific to a transaction.
 * [*DONE] Define access to these data using functions
+* [*DONE] Refactor the new functions (new_memory_copy, new_memory and new_shared_memory) to use throw_if_forced_to_abort_on_new and as_new functions
 * Separate the interface from the implementation
-* Group all the cache containers (Read,Write,Delete,New) in only one cache in order to improve the lookup performance when using smart pointers.
 
 [heading Tests]
 
 * Add unit tests
 
+[heading Examples]
+
+* Add unit tests
+
 [heading Benchmarks]
 
 * Add some specific benchmarks.
@@ -109,22 +188,35 @@
 
 [section For later releases]
 
-* Integrate with STM test benchmarks as STAMP or STMBench7.
-* Add close nested transactions.
-* Allows configuration at compile-time and run-time.
+This section contains the tasks that need to be done but that we consider could be done after acceptation.
 
-[section More recherch needed]
+[heading Integrate with STM test benchmarks as STAMP or STMBench7]
 
-* Mixing STM updating policies.
-* Mixing STM consistency checking.
-* Providing Closed Nested transaction that are not flat.
+[heading Providing Closed Nested transaction that are not flat]
 Currently __Boost_STM__ provides closed nested transactions which are flat, i.e. all the nested transactions are flatten on the outer transaction of the thread.
-* Suspend/resume transactions
-* Add explicit outer transaction (those that can not be nested in aother transactions, i.e. root transactions).
+
+[heading Allows configuration at compile-time and run-time]
+
+[heading Add explicit outer transaction]
+Outer transactions a those that can not be nested in other transactions, i.e. root transactions.
 
 [endsect]
+[section More recherch needed]
+
+This section contains the features that will be sohaitable to have but that need a deep research.
+
+[heading Transactional condition variables]
+
+[heading Mixing STM updating policies]
+
+[heading Mixing STM consistency checking]
+
+[heading Suspend/resume transactions]
+
+
 [endsect]
 
+
 [endsect]
 [endsect]
 

Modified: sandbox/stm/branches/vbe/libs/stm/doc/html/index.html
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/html/index.html (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/index.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -31,7 +31,7 @@
 <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="id4803237"></a><p>
+<a name="id4803231"></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>
@@ -52,28 +52,14 @@
 </dl></dd>
 <dt><span class="section">Reference</span></dt>
 <dd><dl>
-<dt><span class="section"><a href="toward_boost_stm/reference/base_contention_manager_hpp.html">
- Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a></span></dt>
-<dt><span class="section"><a href="toward_boost_stm/reference/base_transaction_object_hpp.html">
- Header <code class="computeroutput"><span class="special">&lt;</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="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
-<dt><span class="section"> Header <boost/stm/cache_fct.hpp></span></dt>
-<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/language_like_hpp.html"> Header
- <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a></span></dt>
-<dt><span class="section"><a href="toward_boost_stm/reference/transaction_hpp.html"> Header
- <code class="computeroutput"><span class="special">&lt;</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">&gt;</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">&lt;</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">&gt;</span></code></a></span></dt>
-<dt><span class="section"><a href="toward_boost_stm/reference/transactional_object_hpp.html">
- Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">transactional_object</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</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/tx_smart_ptr_hpp.html"> Header
- <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">tx_smart_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
-<dt><span class="section"><a href="toward_boost_stm/reference/non_tx_smart_ptr_hpp.html"> Header
- <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">non_tx_smart_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</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">&lt;</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">&gt;</span></code></a></span></dt>
+<dt><span class="section"> Header <boost/stm.hpp></span></dt>
+<dt><span class="section">Basics</span></dt>
+<dt><span class="section"><a href="toward_boost_stm/reference/contention_managers.html">Contention
+ managers</a></span></dt>
+<dt><span class="section"><a href="toward_boost_stm/reference/transactional_objects.html">Transactional
+ objects</a></span></dt>
+<dt><span class="section"><a href="toward_boost_stm/reference/non_transactional_objects.html">Non
+ transactional objects</a></span></dt>
 </dl></dd>
 <dt><span class="section">Examples</span></dt>
 <dt><span class="section">Appendices</span></dt>
@@ -110,7 +96,7 @@
   </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: October 08, 2009 at 19:40:30 GMT</small></p></td>
+<td align="left"><p><small>Last revised: October 19, 2009 at 15:50:12 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: sandbox/stm/branches/vbe/libs/stm/doc/html/standalone_HTML.manifest
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/html/standalone_HTML.manifest (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/standalone_HTML.manifest 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -7,19 +7,11 @@
 toward_boost_stm/users_guide/ext_references.html
 toward_boost_stm/users_guide/glosary.html
 toward_boost_stm/reference.html
-toward_boost_stm/reference/base_contention_manager_hpp.html
-toward_boost_stm/reference/base_transaction_object_hpp.html
-toward_boost_stm/reference/cache_fct_hpp.html
-toward_boost_stm/reference/data_types_hpp.html
-toward_boost_stm/reference/exceptions_hpp.html
-toward_boost_stm/reference/language_like_hpp.html
-toward_boost_stm/reference/transaction_hpp.html
-toward_boost_stm/reference/transaction_object_hpp.html
-toward_boost_stm/reference/transactional_object_hpp.html
-toward_boost_stm/reference/tx_ptr_hpp.html
-toward_boost_stm/reference/tx_smart_ptr_hpp.html
-toward_boost_stm/reference/non_tx_smart_ptr_hpp.html
-toward_boost_stm/reference/transaction_bookkeeping_hpp.html
+toward_boost_stm/reference/stm_hpp.html
+toward_boost_stm/reference/basics.html
+toward_boost_stm/reference/contention_managers.html
+toward_boost_stm/reference/transactional_objects.html
+toward_boost_stm/reference/non_transactional_objects.html
 toward_boost_stm/examples.html
 toward_boost_stm/appendices.html
 toward_boost_stm/appendices/changes.html

Modified: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices.html
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices.html (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -58,6 +58,8 @@
         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>
+<dt><span class="section"><a href="appendices/todo.html#toward_boost_stm.appendices.todo.more_recherch_needed">More
+ recherch needed</a></span></dt>
 </dl></dd>
 </dl></div>
 </div>

Modified: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/changes.html
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/changes.html (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/changes.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -27,7 +27,7 @@
 <a name="toward_boost_stm.appendices.changes"></a> Appendix A: History
 </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><h4>
-<a name="id4858482"></a>
+<a name="id4864693"></a>
         <a 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>
       </h4>
@@ -47,7 +47,7 @@
         </li>
 </ul></div>
 <a name="toward_boost_stm.appendices.changes._emphasis_role__bold__tickets___emphasis_"></a><h4>
-<a name="id4858554"></a>
+<a name="id4864767"></a>
         <a href="changes.html#toward_boost_stm.appendices.changes._emphasis_role__bold__tickets___emphasis_"><span class="bold"><strong>Tickets:</strong></span></a>
       </h4>
 <p>

Modified: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/implementation.html
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/implementation.html (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/implementation.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -35,6 +35,9 @@
         macro blocks</a></span></dt>
 <dt><span class="section">Cache</span></dt>
 </dl></div>
+<p>
+ This section discusses how the TBoost.STM major design components are implemented.
+ </p>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="toward_boost_stm.appendices.implementation.language_like_macro_blocks"></a><a href="implementation.html#toward_boost_stm.appendices.implementation.language_like_macro_blocks" title="Language-like
@@ -53,7 +56,7 @@
           constructs are shown in Figures 6 and 8, respectively.
         </p>
 <a name="toward_boost_stm.appendices.implementation.language_like_macro_blocks.locking_macros"></a><h5>
-<a name="id4874082"></a>
+<a name="id4880392"></a>
           <a href="implementation.html#toward_boost_stm.appendices.implementation.language_like_macro_blocks.locking_macros">Locking
           Macros</a>
         </h5>
@@ -76,7 +79,7 @@
           are executed once and only once.
         </p>
 <a name="toward_boost_stm.appendices.implementation.language_like_macro_blocks.transaction_macros"></a><h5>
-<a name="id4874131"></a>
+<a name="id4880455"></a>
           <a href="implementation.html#toward_boost_stm.appendices.implementation.language_like_macro_blocks.transaction_macros">Transaction
           Macros</a>
         </h5>
@@ -125,7 +128,7 @@
           transaction is aborted.
         </p>
 <a name="toward_boost_stm.appendices.implementation.language_like_macro_blocks.correcting_non_compliant_compilers"></a><h5>
-<a name="id4874218"></a>
+<a name="id4880562"></a>
           <a href="implementation.html#toward_boost_stm.appendices.implementation.language_like_macro_blocks.correcting_non_compliant_compilers">Correcting
           Non-Compliant Compilers</a>
         </h5>
@@ -158,11 +161,11 @@
 <a name="toward_boost_stm.appendices.implementation.cache"></a>Cache
 </h4></div></div></div>
 <a name="toward_boost_stm.appendices.implementation.cache.dispersed"></a><h5>
-<a name="id4874346"></a>
+<a name="id4884956"></a>
           <a href="implementation.html#toward_boost_stm.appendices.implementation.cache.dispersed">Dispersed</a>
         </h5>
 <a name="toward_boost_stm.appendices.implementation.cache.compact"></a><h5>
-<a name="id4874368"></a>
+<a name="id4884978"></a>
           <a href="implementation.html#toward_boost_stm.appendices.implementation.cache.compact">Compact</a>
         </h5>
 </div>

Modified: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/rationale.html
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/rationale.html (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/rationale.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -267,7 +267,7 @@
             read).
           </p>
 <div class="table">
-<a name="id4859071"></a><p class="title"><b>Table 1.1. Comparaison with other STM systems</b></p>
+<a name="id4865297"></a><p class="title"><b>Table 1.1. Comparaison with other STM systems</b></p>
 <table class="table" summary="Comparaison with other STM systems">
 <colgroup>
 <col>
@@ -472,7 +472,7 @@
             handle each specific problem with the most appropriate configuration.
           </p>
 <div class="table">
-<a name="id4859447"></a><p class="title"><b>Table 1.2. Consistency versus Updating policies composition</b></p>
+<a name="id4865690"></a><p class="title"><b>Table 1.2. Consistency versus Updating policies composition</b></p>
 <table class="table" summary="Consistency versus Updating policies composition">
 <colgroup>
 <col>
@@ -627,7 +627,7 @@
           management</a>
 </h5></div></div></div>
 <a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.contention_management.priority_based_tasks"></a><h6>
-<a name="id4859766"></a>
+<a name="id4866021"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.contention_management.priority_based_tasks">Priority-Based
             Tasks</a>
           </h6>
@@ -642,7 +642,7 @@
             cases, user-defined priority-based transactions are necessary.
           </p>
 <a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.contention_management.approach"></a><h6>
-<a name="id4859805"></a>
+<a name="id4866060"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.contention_management.approach">Approach</a>
           </h6>
 <p>
@@ -658,7 +658,7 @@
             checking models. Last, we present our experimental results.
           </p>
 <a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.contention_management.attacking__amp__victim_transactions"></a><h6>
-<a name="id4859844"></a>
+<a name="id4866099"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.contention_management.attacking__amp__victim_transactions">Attacking
             &amp; Victim Transactions</a>
           </h6>
@@ -678,7 +678,7 @@
             transaction since Ta may abort it.
           </p>
 <a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.contention_management.user_defined_priority_based_transactions"></a><h6>
-<a name="id4859892"></a>
+<a name="id4866147"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.contention_management.user_defined_priority_based_transactions">User-Defined
             Priority-Based Transactions</a>
           </h6>
@@ -699,7 +699,7 @@
             priority-based transactional environments.
           </p>
 <a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.contention_management.extensible_polymorphic_contention_management_interface"></a><h6>
-<a name="id4859942"></a>
+<a name="id4866197"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.contention_management.extensible_polymorphic_contention_management_interface">Extensible
             Polymorphic Contention Management Interface</a>
           </h6>
@@ -794,7 +794,7 @@
             of experimental benchmarks on .
           </p>
 <a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.introduction"></a><h6>
-<a name="id4860648"></a>
+<a name="id4866937"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.introduction">Introduction</a>
           </h6>
 <p>
@@ -847,7 +847,7 @@
             </li>
 </ol></div>
 <a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.background"></a><h6>
-<a name="id4860748"></a>
+<a name="id4867036"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.background">Background</a>
           </h6>
 <p>
@@ -958,7 +958,7 @@
             later sections.
           </p>
 <a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.locks_outside_of_transactions__lot_"></a><h6>
-<a name="id4861322"></a>
+<a name="id4867602"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.locks_outside_of_transactions__lot_">Locks
             Outside of Transactions (LoT)</a>
           </h6>
@@ -1009,7 +1009,7 @@
 <span class="number">27</span> <span class="keyword">int</span> <span class="identifier">lock3</span><span class="special">()</span> <span class="special">{</span> <span class="comment">/* no conflict */</span> <span class="special">}</span>
 </pre>
 <a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.lot_full_lock_protection"></a><h6>
-<a name="id4862463"></a>
+<a name="id4868743"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.lot_full_lock_protection">LoT
             Full Lock Protection</a>
           </h6>
@@ -1039,7 +1039,7 @@
             stalling.
           </p>
 <a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.lot_tm_lock_protection"></a><h6>
-<a name="id4862525"></a>
+<a name="id4868823"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.lot_tm_lock_protection">LoT
             TM-Lock Protection</a>
           </h6>
@@ -1082,7 +1082,7 @@
             the third lock protection policy.
           </p>
 <a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.lot_tx_lock_protection"></a><h6>
-<a name="id4862699"></a>
+<a name="id4868996"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.lot_tx_lock_protection">LoT
             TX-Lock Protection</a>
           </h6>
@@ -1125,7 +1125,7 @@
             cooperative performance while still adhering to the rule.
           </p>
 <a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.locks_inside_of_transactions__lit_"></a><h6>
-<a name="id4863233"></a>
+<a name="id4869520"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.locks_inside_of_transactions__lit_">Locks
             Inside of Transactions (LiT)</a>
           </h6>
@@ -1239,7 +1239,7 @@
             for the completeness of the example.
           </p>
 <a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.lit_full_lock_protection"></a><h6>
-<a name="id4864308"></a>
+<a name="id4870578"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.lit_full_lock_protection">LiT
             Full-Lock Protection</a>
           </h6>
@@ -1269,7 +1269,7 @@
             are all allowed to resume.
           </p>
 <a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.lit_tm_lock_protection"></a><h6>
-<a name="id4864369"></a>
+<a name="id4870639"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.lit_tm_lock_protection">LiT
             TM-Lock Protection</a>
           </h6>
@@ -1299,7 +1299,7 @@
             LiT protection policy, LiT TX-lock protection.
           </p>
 <a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.lit_tx_lock_protection"></a><h6>
-<a name="id4864431"></a>
+<a name="id4870701"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.lit_tx_lock_protection">LiT
             TX-Lock Protection</a>
           </h6>
@@ -1339,7 +1339,7 @@
             passed. When lockL3 completes tx3 begins and runs through to completion.
           </p>
 <a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.lock_composition"></a><h6>
-<a name="id4864526"></a>
+<a name="id4870797"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.lock_composition">Lock
             Composition</a>
           </h6>
@@ -1423,7 +1423,7 @@
             lock until the transaction commits.
           </p>
 <a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.criticality_of_lit_lock_composition"></a><h6>
-<a name="id4865247"></a>
+<a name="id4871517"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.criticality_of_lit_lock_composition">Criticality
             of LiT Lock Composition</a>
           </h6>
@@ -1474,7 +1474,7 @@
             cumulative affects of the move() operation.
           </p>
 <a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.understanding_lit_lock_composition"></a><h6>
-<a name="id4865858"></a>
+<a name="id4872128"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.understanding_lit_lock_composition">Understanding
             LiT Lock Composition</a>
           </h6>
@@ -1563,7 +1563,7 @@
             shared memory x2.
           </p>
 <a name="toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.lit_lock_identification"></a><h6>
-<a name="id4866934"></a>
+<a name="id4873205"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.tm_specific_concepts.lock_aware_transaction.lit_lock_identification">LiT
             Lock Identification</a>
           </h6>
@@ -1873,7 +1873,7 @@
             The following table is a compilation of the preceding analysis:
           </p>
 <div class="table">
-<a name="id4867493"></a><p class="title"><b>Table 1.3. Comparaison with other STM systems</b></p>
+<a name="id4873764"></a><p class="title"><b>Table 1.3. Comparaison with other STM systems</b></p>
 <table class="table" summary="Comparaison with other STM systems">
 <colgroup><col></colgroup>
 <thead><tr>
@@ -2159,7 +2159,7 @@
             support in the near future [4].
           </p>
 <div class="table">
-<a name="id4868617"></a><p class="title"><b>Table 1.4. Comparaison with other STM systems</b></p>
+<a name="id4874914"></a><p class="title"><b>Table 1.4. Comparaison with other STM systems</b></p>
 <table class="table" summary="Comparaison with other STM systems">
 <colgroup>
 <col>
@@ -2257,7 +2257,7 @@
             Table 1. TBoost.STM Mutual Exclusion Locking Parallel Constructs.
           </p>
 <a name="toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_macro_blocks.library_based_lock_implementations"></a><h6>
-<a name="id4868825"></a>
+<a name="id4875122"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_macro_blocks.library_based_lock_implementations">Library-based
             Lock Implementations</a>
           </h6>
@@ -2305,7 +2305,7 @@
             scoping and programmer error.
           </p>
 <a name="toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_macro_blocks.pitfalls_in_scoping_of_automatic_object_locks"></a><h6>
-<a name="id4869222"></a>
+<a name="id4875519"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_macro_blocks.pitfalls_in_scoping_of_automatic_object_locks">Pitfalls
             in Scoping of Automatic Object Locks</a>
           </h6>
@@ -2378,7 +2378,7 @@
             of locks results in unoptimized performance.
           </p>
 <a name="toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_macro_blocks.library_based_transaction_implementations"></a><h6>
-<a name="id4869658"></a>
+<a name="id4875955"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_macro_blocks.library_based_transaction_implementations">Library-based
             Transaction Implementations</a>
           </h6>
@@ -2432,7 +2432,7 @@
             behaviors.
           </p>
 <a name="toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_macro_blocks.pitfalls_in_transactional_execution_of_automatic_objects"></a><h6>
-<a name="id4870045"></a>
+<a name="id4876342"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_macro_blocks.pitfalls_in_transactional_execution_of_automatic_objects">Pitfalls
             in Transactional Execution of Automatic Objects</a>
           </h6>
@@ -2527,7 +2527,7 @@
             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_macro_blocks.disadvantages_of_language_based_transactional_integration"></a><h6>
-<a name="id4871056"></a>
+<a name="id4877341"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_macro_blocks.disadvantages_of_language_based_transactional_integration">Disadvantages
             of Language Based Transactional Integration</a>
           </h6>
@@ -2564,7 +2564,7 @@
             objects nor language-based parallel abstractions alone can provide.
           </p>
 <a name="toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_macro_blocks.parallel_constructs_for_mutually_exclusive_locks"></a><h6>
-<a name="id4871133"></a>
+<a name="id4877434"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_macro_blocks.parallel_constructs_for_mutually_exclusive_locks">Parallel
             Constructs for Mutually Exclusive Locks</a>
           </h6>
@@ -2600,7 +2600,7 @@
             in client code.
           </p>
 <a name="toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_macro_blocks.exception_based_timed_locks"></a><h6>
-<a name="id4871635"></a>
+<a name="id4877935"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_macro_blocks.exception_based_timed_locks">Exception-based
             Timed Locks</a>
           </h6>
@@ -2687,7 +2687,7 @@
 <span class="identifier">Figure</span> <span class="number">12.</span> <span class="identifier">Optimized</span> <span class="identifier">Timed</span> <span class="identifier">Locking</span> <span class="identifier">with</span> TBoost.STM<span class="special">.</span>
 </pre>
 <a name="toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_macro_blocks.parallel_constructs_for_transactional_memory"></a><h6>
-<a name="id4872895"></a>
+<a name="id4879194"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_macro_blocks.parallel_constructs_for_transactional_memory">Parallel
             Constructs for Transactional Memory</a>
           </h6>
@@ -2765,7 +2765,7 @@
             correct behavior and then throwing an exception upward.
           </p>
 <a name="toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_macro_blocks.transaction_nesting"></a><h6>
-<a name="id4873552"></a>
+<a name="id4879850"></a>
             <a href="rationale.html#toward_boost_stm.appendices.rationale.c___and_library_specific_concepts.language_like_macro_blocks.transaction_nesting">Transaction
             Nesting</a>
           </h6>
@@ -2826,7 +2826,7 @@
         with other STM systems</a>
 </h4></div></div></div>
 <div class="table">
-<a name="id4873664"></a><p class="title"><b>Table 1.5. Comparaison
+<a name="id4879970"></a><p class="title"><b>Table 1.5. Comparaison
         with other STM systems</b></p>
 <table class="table" summary="Comparaison
         with other STM systems">

Modified: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/todo.html
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/todo.html (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/appendices/todo.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -34,8 +34,8 @@
         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>
+<dt><span class="section"><a href="todo.html#toward_boost_stm.appendices.todo.more_recherch_needed">More
+ recherch needed</a></span></dt>
 </dl></div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
@@ -44,29 +44,201 @@
         to do before review</a>
 </h4></div></div></div>
 <a name="toward_boost_stm.appendices.todo.tasks_to_do_before_review.interface"></a><h5>
-<a name="id4874703"></a>
+<a name="id4885315"></a>
           <a href="todo.html#toward_boost_stm.appendices.todo.tasks_to_do_before_review.interface">Interface</a>
         </h5>
+<p>
+ This section concern new or modified features atthe user level.
+ </p>
 <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.
+<span class="bold"><strong>PARTIALY DONE</strong></span> 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> Add throw_if_forced_to_abort_on_new
+ and as_new functions
           </li>
 <li>
 <span class="bold"><strong>DONE</strong></span> Managing Movable and non CopyConstructible
- types.
+ types trough shallow copy (boost/stm/shallow_transactional_object.hpp).
+ </li>
+<li>
+<span class="bold"><strong>DONE</strong></span> Replace LOCK/UNLOCK macros by BOOST_STM_LOCK/BOOST_STM_UNLOCK
+ and simplify the class auto_lock taking in accound the new languange-like
+ macros.
+ </li>
+<li>
+ Replace auto_lock by boost::stm::sync::unique_lock and redefine language-like
+ macros.
+ </li>
+<li>
+<span class="bold"><strong>DONE</strong></span> Transaction Language-like macros
+ (boost/stm/language_like.hpp)
+ </li>
+<li>
+<span class="bold"><strong>DONE</strong></span> Add current transaction
+ <div class="itemizedlist"><ul type="circle"><li>
+ (boost/synchro/tss.hpp)
+ </li></ul></div>
+</li>
+<li>
+<span class="bold"><strong>DONE</strong></span> Transaparent transactional objects
+ <div class="itemizedlist"><ul type="circle">
+<li>
+ boost/stm/tx/numeric.hpp,
+ </li>
+<li>
+ boost/stm/tx/pointer.hpp
+ </li>
+<li>
+ boost/stm/tx/smart_ptr.hpp
+ </li>
+</ul></div>
+</li>
+<li>
+<span class="bold"><strong>DONE</strong></span> Manage with polymorphic pointers
+ <div class="itemizedlist"><ul type="circle">
+<li>
+ Add clone as virtual function of base_transaction_object
+ </li>
+<li>
+ Replace the new T(in) by in.clone()
+ </li>
+<li>
+ boost/stm/transaction_object_ptr.hpp
+ </li>
+</ul></div>
+</li>
+<li>
+<span class="bold"><strong>DONE</strong></span> Separe the memory management from
+ the user class and memory managers from the STM system
+ <div class="itemizedlist"><ul type="circle"><li>
+ Controlled by BOOST_STM_USE_SPECIFIC_TRANSACTION_MEMORY_MANAGER
+ </li></ul></div>
+</li>
+<li>
+<span class="bold"><strong>DONE</strong></span> Add monotonic storage
+ <div class="itemizedlist"><ul type="circle"><li>
+ boost/stm/detail/monotonic_storage.hpp
+ </li></ul></div>
+</li>
+<li>
+<span class="bold"><strong>Partially DONE</strong></span> Embedded references Controlled
+ by BOOST_STM_ALLOWS_EMBEDEEDS
+ </li>
+<li>
+<span class="bold"><strong>Partially DONE</strong></span> Manage with arrays of
+ transactional objects (deleters)
+ <div class="itemizedlist"><ul type="circle">
+<li>
+ Controlled by BOOST_STM_ALLOWS_DELETERS
+ </li>
+<li>
+ Add functions to make a deleter from a 'transactional objet'
+ </li>
+<li>
+ Modifications done in files transaction.hpp and transaction_impl.hpp
+ </li>
+<li>
+ create boost/stm/detail/deleters.hpp
+ </li>
+</ul></div>
+</li>
+<li>
+<span class="bold"><strong>Partially DONE</strong></span> Manage with non-transactional
+ objects
+ <div class="itemizedlist"><ul type="circle">
+<li>
+ create boost/stm/non_tx/numeric.hpp
+ </li>
+<li>
+ create boost/stm/non_tx/pointer.hpp
+ </li>
+<li>
+ create boost/stm/non_tx/smart_ptr.hpp
+ </li>
+<li>
+ create boost/stm/non_tx/detail/cache_map.hpp
+ </li>
+</ul></div>
+</li>
+<li>
+<span class="bold"><strong>Partially DONE</strong></span> Static and polymorphic
+ contention managers
+ <div class="itemizedlist"><ul type="circle">
+<li>
+ this could improve the performances as when we choose a static contention
+ manager there is no virtual calls
+ </li>
+<li>
+ boost/stm/contention_managers
+ </li>
+</ul></div>
+</li>
+<li>
+<span class="bold"><strong>Partially DONE</strong></span> Memory managers (separate
+ memory manager from transaction_object) (see files on vbe branch) create
+ boost/stm/memory_managers/base_memory_manager.hpp create boost/stm/memory_managers/memory_manager.hpp
+ </li>
+<li>
+ Allow LATM to work with other mutex that pthread_mutex_t and create a
+ stm mutex class.
+ </li>
+</ul></div>
+<a name="toward_boost_stm.appendices.todo.tasks_to_do_before_review.adding_some_components_to_boost_to_preparing_boostification_of_stm"></a><h5>
+<a name="id4885642"></a>
+ <a href="todo.html#toward_boost_stm.appendices.todo.tasks_to_do_before_review.adding_some_components_to_boost_to_preparing_boostification_of_stm">Adding
+ some components to Boost to preparing Boostification of STM</a>
+ </h5>
+<p>
+ This section concern new generic features thatcan be added to Boost useful
+ to TBoost.STM but that are independent of STM.
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<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>
+<span class="bold"><strong>DONE</strong></span> Non transactional Synchro mechanism
+ (following as far as possible the Boost names)
+ <div class="itemizedlist"><ul type="circle">
+<li>
+ Add free functions to lock,unlock, try_lock, ... (boost/synchro/lock.hpp,
+ boost/synchro/unlock.hpp, boost/synchro/try_lock.hpp ..) that work
+ either with pthread_mutex or boost::mutex (Boost.Synchro)
+ </li>
+<li>
+ Add lockers lock_guard, lock_guard_if, unique_lock (boost/synchro/locks.hpp)
+ </li>
+<li>
+ Create non transactional synchronization language-like macros (boost/synchro/language_like.hpp)
+ </li>
+</ul></div>
+</li>
+<li>
+<span class="bold"><strong>PARTIALY DONE</strong></span> Provide a unique array/tuple
+ locker (Boost.Synchro)
           </li>
 </ul></div>
 <a name="toward_boost_stm.appendices.todo.tasks_to_do_before_review.boostifying_stm"></a><h5>
-<a name="id4874758"></a>
+<a name="id4885745"></a>
           <a href="todo.html#toward_boost_stm.appendices.todo.tasks_to_do_before_review.boostifying_stm">Boostifying
           STM</a>
         </h5>
+<p>
+ This section contains the actions to be done to Boostify TBoost.STM.
+ </p>
 <div class="itemizedlist"><ul type="disc">
 <li>
 <span class="bold"><strong>DONE</strong></span> set boost directory architecture
@@ -83,44 +255,41 @@
             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)
+<span class="bold"><strong>DONE</strong></span> Use boost::lock_guard when lock/unlock
+ </li>
+<li>
+<span class="bold"><strong>PARTIALY 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
+<span class="bold"><strong>PARTIALY 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
+<span class="bold"><strong>DONE</strong></span> Allow to use either pthread_mutex
+ or boost::mutex in the internal implementation
           </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)
+<span class="bold"><strong>DONE</strong></span> Remove var_auto_lock as it is not
+ exception safe
           </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
+ Replace light_auto_lock by synchro::unique_lock
           </li>
 <li>
- use lock_guard when lock/unlock
+ Replace specific lock/unlock functions by lockers generic ones lock_latm_general/unlock_latm_general
+ by synchro::lock_guard g(general_lock()); The same for lock_inflight_access,
+ lock_latm_access, lockThreadMutex(threadId)
           </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>
@@ -139,9 +308,13 @@
           </li>
 </ul></div>
 <a name="toward_boost_stm.appendices.todo.tasks_to_do_before_review.implementation"></a><h5>
-<a name="id4874936"></a>
+<a name="id4885921"></a>
           <a href="todo.html#toward_boost_stm.appendices.todo.tasks_to_do_before_review.implementation">Implementation</a>
         </h5>
+<p>
+ This section contains the modifications neede to improve the internal implementation
+ of TBoost.STM.
+ </p>
 <div class="itemizedlist"><ul type="disc">
 <li>
 <span class="bold"><strong>DONE</strong></span> Separate the data that is global,
@@ -153,29 +326,37 @@
             functions
           </li>
 <li>
- Separate the interface from the implementation
+<span class="bold"><strong>DONE</strong></span> Refactor the new functions (new_memory_copy,
+ new_memory and new_shared_memory) to use throw_if_forced_to_abort_on_new
+ and as_new functions
           </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.
+ Separate the interface from the implementation
           </li>
 </ul></div>
 <a name="toward_boost_stm.appendices.todo.tasks_to_do_before_review.tests"></a><h5>
-<a name="id4874995"></a>
+<a name="id4885991"></a>
           <a href="todo.html#toward_boost_stm.appendices.todo.tasks_to_do_before_review.tests">Tests</a>
         </h5>
 <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.examples"></a><h5>
+<a name="id4886022"></a>
+ Examples
+ </h5>
+<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.benchmarks"></a><h5>
-<a name="id4875026"></a>
+<a name="id4886052"></a>
           <a href="todo.html#toward_boost_stm.appendices.todo.tasks_to_do_before_review.benchmarks">Benchmarks</a>
         </h5>
 <div class="itemizedlist"><ul type="disc"><li>
             Add some specific benchmarks.
           </li></ul></div>
 <a name="toward_boost_stm.appendices.todo.tasks_to_do_before_review.documentation"></a><h5>
-<a name="id4875057"></a>
+<a name="id4886083"></a>
           <a href="todo.html#toward_boost_stm.appendices.todo.tasks_to_do_before_review.documentation">Documentation</a>
         </h5>
 <div class="itemizedlist"><ul type="disc">
@@ -278,34 +459,70 @@
         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 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>
+<p>
+ This section contains the tasks that need to be done but that we consider
+ could be done after acceptation.
+ </p>
+<a name="toward_boost_stm.appendices.todo.for_later_releases.integrate_with_stm_test_benchmarks_as_stamp_or_stmbench7"></a><h5>
+<a name="id4886325"></a>
+ <a href="todo.html#toward_boost_stm.appendices.todo.for_later_releases.integrate_with_stm_test_benchmarks_as_stamp_or_stmbench7">Integrate
+ with STM test benchmarks as STAMP or STMBench7</a>
+ </h5>
+<a name="toward_boost_stm.appendices.todo.for_later_releases.providing_closed_nested_transaction_that_are_not_flat"></a><h5>
+<a name="id4886352"></a>
+ <a href="todo.html#toward_boost_stm.appendices.todo.for_later_releases.providing_closed_nested_transaction_that_are_not_flat">Providing
+ Closed Nested transaction that are not flat</a>
+ </h5>
+<p>
+ Currently TBoost.STM provides closed nested transactions which are flat,
+ i.e. all the nested transactions are flatten on the outer transaction of
+ the thread.
+ </p>
+<a name="toward_boost_stm.appendices.todo.for_later_releases.allows_configuration_at_compile_time_and_run_time"></a><h5>
+<a name="id4886385"></a>
+ <a href="todo.html#toward_boost_stm.appendices.todo.for_later_releases.allows_configuration_at_compile_time_and_run_time">Allows
+ configuration at compile-time and run-time</a>
+ </h5>
+<a name="toward_boost_stm.appendices.todo.for_later_releases.add_explicit_outer_transaction"></a><h5>
+<a name="id4886410"></a>
+ <a href="todo.html#toward_boost_stm.appendices.todo.for_later_releases.add_explicit_outer_transaction">Add
+ explicit outer transaction</a>
+ </h5>
+<p>
+ Outer transactions a those that can not be nested in other transactions,
+ i.e. root transactions.
+ </p>
 </div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.appendices.todo.more_recherch_needed"></a><a href="todo.html#toward_boost_stm.appendices.todo.more_recherch_needed" title="More
+ recherch needed">More
+ recherch needed</a>
+</h4></div></div></div>
+<p>
+ This section contains the features that will be sohaitable to have but
+ that need a deep research.
+ </p>
+<a name="toward_boost_stm.appendices.todo.more_recherch_needed.transactional_condition_variables"></a><h5>
+<a name="id4886464"></a>
+ <a href="todo.html#toward_boost_stm.appendices.todo.more_recherch_needed.transactional_condition_variables">Transactional
+ condition variables</a>
+ </h5>
+<a name="toward_boost_stm.appendices.todo.more_recherch_needed.mixing_stm_updating_policies"></a><h5>
+<a name="id4886489"></a>
+ <a href="todo.html#toward_boost_stm.appendices.todo.more_recherch_needed.mixing_stm_updating_policies">Mixing
+ STM updating policies</a>
+ </h5>
+<a name="toward_boost_stm.appendices.todo.more_recherch_needed.mixing_stm_consistency_checking"></a><h5>
+<a name="id4886514"></a>
+ <a href="todo.html#toward_boost_stm.appendices.todo.more_recherch_needed.mixing_stm_consistency_checking">Mixing
+ STM consistency checking</a>
+ </h5>
+<a name="toward_boost_stm.appendices.todo.more_recherch_needed.suspend_resume_transactions"></a><h5>
+<a name="id4886539"></a>
+ <a href="todo.html#toward_boost_stm.appendices.todo.more_recherch_needed.suspend_resume_transactions">Suspend/resume
+ transactions</a>
+ </h5>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/examples.html
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/examples.html (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/examples.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -6,8 +6,8 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
 <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 &lt;boost/stm/transaction_bookkeeping.hpp&gt;">
+<link rel="prev" href="reference/non_transactional_objects.html" title="Non
+ transactional objects">
 <link rel="next" href="appendices.html" title="Appendices">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -21,7 +21,7 @@
 </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>
+<a accesskey="p" href="reference/non_transactional_objects.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">
@@ -41,7 +41,7 @@
 </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>
+<a accesskey="p" href="reference/non_transactional_objects.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>

Modified: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/overview.html
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/overview.html (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/overview.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -28,7 +28,7 @@
 </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><h3>
-<a name="id4803158"></a>
+<a name="id4803152"></a>
       <a href="overview.html#toward_boost_stm.overview.description">Description</a>
     </h3>
 <p>
@@ -96,7 +96,7 @@
       </li>
 </ul></div>
 <a name="toward_boost_stm.overview.how_to_use_this_documentation"></a><h3>
-<a name="id4764828"></a>
+<a name="id4764822"></a>
       <a href="overview.html#toward_boost_stm.overview.how_to_use_this_documentation">How
       to Use This Documentation</a>
     </h3>

Modified: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/overview/intro.html
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/overview/intro.html (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/overview/intro.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -27,7 +27,7 @@
 <a name="toward_boost_stm.overview.intro"></a> Introduction
 </h3></div></div></div>
 <a name="toward_boost_stm.overview.intro.transactional_memory"></a><h4>
-<a name="id4765111"></a>
+<a name="id4765104"></a>
         <a href="intro.html#toward_boost_stm.overview.intro.transactional_memory">Transactional
         Memory</a>
       </h4>
@@ -108,7 +108,7 @@
         (2) scalability and (3) modularity.
       </p>
 <a name="toward_boost_stm.overview.intro.simplicity"></a><h4>
-<a name="id4765653"></a>
+<a name="id4765646"></a>
         <a href="intro.html#toward_boost_stm.overview.intro.simplicity">Simplicity</a>
       </h4>
 <p>
@@ -212,7 +212,7 @@
 <span class="number">7</span> <span class="identifier">unlock</span><span class="special">(</span><span class="identifier">mutexX</span><span class="special">);</span>
 </pre>
 <a name="toward_boost_stm.overview.intro.understanding_concurrency_hazards"></a><h4>
-<a name="id4758679"></a>
+<a name="id4758672"></a>
         <a href="intro.html#toward_boost_stm.overview.intro.understanding_concurrency_hazards">Understanding
         Concurrency Hazards</a>
       </h4>
@@ -270,7 +270,7 @@
         modules can range from difficult to impossible.
       </p>
 <a name="toward_boost_stm.overview.intro.testing__race_conditions_and_interleavings"></a><h4>
-<a name="id4758793"></a>
+<a name="id4758786"></a>
         <a href="intro.html#toward_boost_stm.overview.intro.testing__race_conditions_and_interleavings">Testing:
         Race Conditions and Interleavings</a>
       </h4>
@@ -346,7 +346,7 @@
         all serial orders.
       </p>
 <a name="toward_boost_stm.overview.intro.development__mutual_exclusion_and_tm"></a><h4>
-<a name="id4759159"></a>
+<a name="id4759152"></a>
         <a href="intro.html#toward_boost_stm.overview.intro.development__mutual_exclusion_and_tm">Development:
         Mutual Exclusion and TM</a>
       </h4>
@@ -372,7 +372,7 @@
         performance, as is commonly found in fine-grained mutual exclusion implementations.
       </p>
 <a name="toward_boost_stm.overview.intro.scalability"></a><h4>
-<a name="id4759212"></a>
+<a name="id4759205"></a>
         <a href="intro.html#toward_boost_stm.overview.intro.scalability">Scalability</a>
       </h4>
 <p>
@@ -384,7 +384,7 @@
         by a concurrency control type while executing concurrently.
       </p>
 <a name="toward_boost_stm.overview.intro.pessimistic_and_optimistic_critical_sections"></a><h4>
-<a name="id4759236"></a>
+<a name="id4759229"></a>
         <a href="intro.html#toward_boost_stm.overview.intro.pessimistic_and_optimistic_critical_sections">Pessimistic
         and Optimistic Critical Sections</a>
       </h4>
@@ -397,7 +397,7 @@
         use optimistic critical sections.
       </p>
 <a name="toward_boost_stm.overview.intro.truly_optimistic_critical_sections"></a><h4>
-<a name="id4759268"></a>
+<a name="id4759261"></a>
         <a href="intro.html#toward_boost_stm.overview.intro.truly_optimistic_critical_sections">Truly
         Optimistic Critical Sections</a>
       </h4>
@@ -454,7 +454,7 @@
         addresses, both g1=0,g2=0 and g1=1,g2=1 are legal states.
       </p>
 <a name="toward_boost_stm.overview.intro.direct_and_deferred_update"></a><h4>
-<a name="id4759763"></a>
+<a name="id4759756"></a>
         <a href="intro.html#toward_boost_stm.overview.intro.direct_and_deferred_update">Direct
         and Deferred Update</a>
       </h4>
@@ -503,7 +503,7 @@
         update without special effort.
       </p>
 <a name="toward_boost_stm.overview.intro.scalability__mutual_exclusion_and_transactional_memory"></a><h4>
-<a name="id4759852"></a>
+<a name="id4759845"></a>
         <a href="intro.html#toward_boost_stm.overview.intro.scalability__mutual_exclusion_and_transactional_memory">Scalability:
         Mutual Exclusion and Transactional Memory</a>
       </h4>
@@ -584,7 +584,7 @@
         mathematical limitations in mutual exclusion's performance scalability.
       </p>
 <a name="toward_boost_stm.overview.intro.modularity"></a><h4>
-<a name="id4813029"></a>
+<a name="id4813022"></a>
         <a href="intro.html#toward_boost_stm.overview.intro.modularity">Modularity</a>
       </h4>
 <p>
@@ -605,7 +605,7 @@
         do not support software modularity are, in short, impractical.
       </p>
 <a name="toward_boost_stm.overview.intro.mutual_exclusion_and_software_modularity"></a><h4>
-<a name="id4813073"></a>
+<a name="id4813067"></a>
         <a href="intro.html#toward_boost_stm.overview.intro.mutual_exclusion_and_software_modularity">Mutual
         Exclusion and Software Modularity</a>
       </h4>
@@ -690,7 +690,7 @@
 <span class="identifier">Figure</span> <span class="number">9.</span> <span class="identifier">TM</span> <span class="identifier">of</span> <span class="identifier">Increment</span><span class="special">,</span> <span class="identifier">Multiply</span> <span class="keyword">and</span> <span class="identifier">Get</span> <span class="identifier">of</span> <span class="identifier">Shared</span> <span class="identifier">Variable</span><span class="special">.</span>
 </pre>
 <a name="toward_boost_stm.overview.intro.summary_of_mutual_exclusion_modularity"></a><h4>
-<a name="id4814086"></a>
+<a name="id4814081"></a>
         <a href="intro.html#toward_boost_stm.overview.intro.summary_of_mutual_exclusion_modularity">Summary
         of Mutual Exclusion Modularity</a>
       </h4>
@@ -703,7 +703,7 @@
         not support software modularity.
       </p>
 <a name="toward_boost_stm.overview.intro.transactional_memory_and_software_modularity"></a><h4>
-<a name="id4814127"></a>
+<a name="id4814121"></a>
         <a href="intro.html#toward_boost_stm.overview.intro.transactional_memory_and_software_modularity">Transactional
         Memory and Software Modularity</a>
       </h4>
@@ -721,7 +721,7 @@
         conflict detection times, updating policies, and contention management schemes.
       </p>
 <a name="toward_boost_stm.overview.intro.achieving_tm_software_modularity"></a><h4>
-<a name="id4814167"></a>
+<a name="id4814162"></a>
         <a href="intro.html#toward_boost_stm.overview.intro.achieving_tm_software_modularity">Achieving
         TM Software Modularity</a>
       </h4>
@@ -799,7 +799,7 @@
         level of software modularity.
       </p>
 <a name="toward_boost_stm.overview.intro.summary_of_transactional_memory_modularity"></a><h4>
-<a name="id4814528"></a>
+<a name="id4814522"></a>
         <a href="intro.html#toward_boost_stm.overview.intro.summary_of_transactional_memory_modularity">Summary
         of Transactional Memory Modularity</a>
       </h4>
@@ -813,7 +813,7 @@
         or subsumed into a larger transaction.
       </p>
 <a name="toward_boost_stm.overview.intro.c___library_language_like_solution"></a><h4>
-<a name="id4814561"></a>
+<a name="id4814556"></a>
         <a href="intro.html#toward_boost_stm.overview.intro.c___library_language_like_solution">C++
         library language-like solution</a>
       </h4>

Modified: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference.html
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference.html (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -7,8 +7,7 @@
 <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/base_contention_manager_hpp.html" title="
- Header &lt;boost/stm/base_contention_manager.hpp&gt;">
+<link rel="next" href="reference/stm_hpp.html" title=" Header &lt;boost/stm.hpp&gt;">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -21,124 +20,70 @@
 </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/base_contention_manager_hpp.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+<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/stm_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>Reference
 </h2></div></div></div>
 <div class="toc"><dl>
-<dt><span class="section"><a href="reference/base_contention_manager_hpp.html">
- Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</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/base_transaction_object_hpp.html">
- Header <code class="computeroutput"><span class="special">&lt;</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="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
-<dd><dl><dt><span class="section"><a href="reference/base_transaction_object_hpp.html#toward_boost_stm.reference.base_transaction_object_hpp.abstract_class__base_transaction_object_">Abstract
- Class <code class="computeroutput"><span class="identifier">base_transaction_object</span></code></a></span></dt></dl></dd>
-<dt><span class="section"> Header <boost/stm/cache_fct.hpp></span></dt>
+<dt><span class="section"> Header <boost/stm.hpp></span></dt>
+<dt><span class="section">Basics</span></dt>
 <dd><dl>
-<dt><span class="section"><a href="reference/cache_fct_hpp.html#toward_boost_stm.reference.cache_fct_hpp.template_function__cache_clone_____">Template
- Function <code class="computeroutput"><span class="identifier">cache_clone</span><span class="special">&lt;&gt;()</span></code></a></span></dt>
-<dt><span class="section"><a href="reference/cache_fct_hpp.html#toward_boost_stm.reference.cache_fct_hpp.template_function__cache_copy_____">Template
- Function <code class="computeroutput"><span class="identifier">cache_copy</span><span class="special">&lt;&gt;()</span></code></a></span></dt>
-<dt><span class="section"><a href="reference/cache_fct_hpp.html#toward_boost_stm.reference.cache_fct_hpp.function__cache_release_____">Function
- <code class="computeroutput"><span class="identifier">cache_release</span><span class="special">&lt;&gt;()</span></code></a></span></dt>
-<dt><span class="section"><a href="reference/cache_fct_hpp.html#toward_boost_stm.reference.cache_fct_hpp.template_function__cache_allocate_____">Template
- Function <code class="computeroutput"><span class="identifier">cache_allocate</span><span class="special">&lt;&gt;()</span></code></a></span></dt>
-<dt><span class="section"><a href="reference/cache_fct_hpp.html#toward_boost_stm.reference.cache_fct_hpp.template_function__cache_deallocate_____">Template
- Function <code class="computeroutput"><span class="identifier">cache_deallocate</span><span class="special">&lt;&gt;()</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/basics.html#toward_boost_stm.reference.basics.base_transaction_object_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</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="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/basics.html#toward_boost_stm.reference.basics.cache_fct_hpp"> Header
+ <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">cache_fct</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/basics.html#toward_boost_stm.reference.basics.datatypes_hpp"> Header
+ <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">datatypes</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/basics.html#toward_boost_stm.reference.basics.exceptions_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/basics.html#toward_boost_stm.reference.basics.language_like_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/basics.html#toward_boost_stm.reference.basics.select_contention_manager_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">select_contention_manager</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/basics.html#toward_boost_stm.reference.basics.transaction_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/basics.html#toward_boost_stm.reference.basics.transaction_bookkeeping_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="reference/contention_managers.html">Contention
+ managers</a></span></dt>
+<dd><dl><dt><span class="section"><a href="reference/contention_managers.html#toward_boost_stm.reference.contention_managers.base_contention_manager_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a></span></dt></dl></dd>
+<dt><span class="section"><a href="reference/transactional_objects.html">Transactional
+ objects</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="reference/transactional_objects.html#toward_boost_stm.reference.transactional_objects.shallow_transaction_object_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">shallow_transaction_object</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/transactional_objects.html#toward_boost_stm.reference.transactional_objects.transaction_object_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/transactional_objects.html#toward_boost_stm.reference.transactional_objects.transaction_object_ptr_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">transaction_object_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/transactional_objects.html#toward_boost_stm.reference.transactional_objects.transactional_object_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">transactional_object</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/transactional_objects.html#toward_boost_stm.reference.transactional_objects.txs_ptr_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_numeric_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">tx</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_pointer_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">tx</span><span class="special">/</span><span class="identifier">pointer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_smart_ptr_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">tx</span><span class="special">/</span><span class="identifier">smart_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="reference/non_transactional_objects.html">Non
+ transactional objects</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="reference/non_transactional_objects.html#toward_boost_stm.reference.non_transactional_objects.non_tx_numeric_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">non_tx</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/non_transactional_objects.html#toward_boost_stm.reference.non_transactional_objects.non_tx_pointer_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">non_tx</span><span class="special">/</span><span class="identifier">pointer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="reference/non_transactional_objects.html#toward_boost_stm.reference.non_transactional_objects.non_tx_smart_ptr_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">non_tx_smart_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
 </dl></dd>
-<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/language_like_hpp.html"> Header
- <code class="computeroutput"><span class="special">&lt;</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">&gt;</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_hpp.html"> Header
- <code class="computeroutput"><span class="special">&lt;</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">&gt;</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>
-<dt><span class="section"><a href="reference/transaction_hpp.html#toward_boost_stm.reference.transaction_hpp.struct__thread_initializer_">Struct
- <code class="computeroutput"><span class="identifier">thread_initializer</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">&lt;</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">&gt;</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.template_class__transaction_object___">Template
- Class <code class="computeroutput"><span class="identifier">transaction_object</span><span class="special">&lt;&gt;</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">&lt;&gt;</span></code></a></span></dt>
-</dl></dd>
-<dt><span class="section"><a href="reference/transactional_object_hpp.html">
- Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">transactional_object</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
-<dd><dl><dt><span class="section"><a href="reference/transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.template_class__transactional_object___">Template
- Class <code class="computeroutput"><span class="identifier">transactional_object</span><span class="special">&lt;&gt;</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__read_ptr___">Template
- Class <code class="computeroutput"><span class="identifier">read_ptr</span><span class="special">&lt;&gt;</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">&lt;&gt;</span></code></a></span></dt>
-</dl></dd>
-<dt><span class="section"><a href="reference/tx_smart_ptr_hpp.html"> Header
- <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">tx_smart_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
-<dd><dl>
-<dt><span class="section"><a href="reference/tx_smart_ptr_hpp.html#toward_boost_stm.reference.tx_smart_ptr_hpp.template_class__tx_obj___">Template
- Class <code class="computeroutput"><span class="identifier">tx_obj</span><span class="special">&lt;&gt;</span></code></a></span></dt>
-<dt><span class="section"><a href="reference/tx_smart_ptr_hpp.html#toward_boost_stm.reference.tx_smart_ptr_hpp.template_class__tx_ptr___">Template
- Class <code class="computeroutput"><span class="identifier">tx_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
-<dt><span class="section"><a href="reference/tx_smart_ptr_hpp.html#toward_boost_stm.reference.tx_smart_ptr_hpp.template_class__rd_ptr___">Template
- Class <code class="computeroutput"><span class="identifier">rd_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
-<dt><span class="section"><a href="reference/tx_smart_ptr_hpp.html#toward_boost_stm.reference.tx_smart_ptr_hpp.template_class__upgrd_ptr___">Template
- Class <code class="computeroutput"><span class="identifier">upgrd_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
-<dt><span class="section"><a href="reference/tx_smart_ptr_hpp.html#toward_boost_stm.reference.tx_smart_ptr_hpp.template_class__wr_ptr___">Template
- Class <code class="computeroutput"><span class="identifier">wr_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
-</dl></dd>
-<dt><span class="section"><a href="reference/non_tx_smart_ptr_hpp.html"> Header
- <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">non_tx_smart_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
-<dd><dl>
-<dt><span class="section"><a href="reference/non_tx_smart_ptr_hpp.html#toward_boost_stm.reference.non_tx_smart_ptr_hpp.template_class__rd_ptr___">Template
- Class <code class="computeroutput"><span class="identifier">rd_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
-<dt><span class="section"><a href="reference/non_tx_smart_ptr_hpp.html#toward_boost_stm.reference.non_tx_smart_ptr_hpp.template_class__upgrd_ptr___">Template
- Class <code class="computeroutput"><span class="identifier">upgrd_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
-<dt><span class="section"><a href="reference/non_tx_smart_ptr_hpp.html#toward_boost_stm.reference.non_tx_smart_ptr_hpp.template_class__wr_ptr___">Template
- Class <code class="computeroutput"><span class="identifier">wr_ptr</span><span class="special">&lt;&gt;</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">&lt;</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">&gt;</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.
+ This section presents the interface of TBoost.STM.
     </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
@@ -151,7 +96,7 @@
 </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/base_contention_manager_hpp.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+<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/stm_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/basics.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/basics.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -0,0 +1,1994 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Basics</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="stm_hpp.html" title=" Header &lt;boost/stm.hpp&gt;">
+<link rel="next" href="contention_managers.html" title="Contention
+ managers">
+</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="stm_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="contention_managers.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.basics"></a>Basics
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.base_transaction_object_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</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="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dd><dl><dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.base_transaction_object_hpp.abstract_class__base_transaction_object_">Abstract
+ Class <code class="computeroutput"><span class="identifier">base_transaction_object</span></code></a></span></dt></dl></dd>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.cache_fct_hpp"> Header
+ <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">cache_fct</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.cache_fct_hpp.template_function__cache_clone_____">Template
+ Function <code class="computeroutput"><span class="identifier">cache_clone</span><span class="special">&lt;&gt;()</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.cache_fct_hpp.template_function__cache_copy_____">Template
+ Function <code class="computeroutput"><span class="identifier">cache_copy</span><span class="special">&lt;&gt;()</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.cache_fct_hpp.function__cache_release_____">Function
+ <code class="computeroutput"><span class="identifier">cache_release</span><span class="special">&lt;&gt;()</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.cache_fct_hpp.template_function__cache_allocate_____">Template
+ Function <code class="computeroutput"><span class="identifier">cache_allocate</span><span class="special">&lt;&gt;()</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.cache_fct_hpp.template_function__cache_deallocate_____">Template
+ Function <code class="computeroutput"><span class="identifier">cache_deallocate</span><span class="special">&lt;&gt;()</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp"> Header
+ <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">datatypes</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.enum__transaction_type_">Enum
+ <code class="computeroutput"><span class="identifier">transaction_type</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.enum__latm_type_">Enum
+ <code class="computeroutput"><span class="identifier">latm_type</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.enum__transaction_state_">Enum
+ <code class="computeroutput"><span class="identifier">transaction_state</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.typedef__new_memory_t_">Typedef
+ <code class="computeroutput"><span class="identifier">new_memory_t</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.typedef__priority_t_">Typedef
+ <code class="computeroutput"><span class="identifier">priority_t</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.typedef__clock_t_">Typedef
+ <code class="computeroutput"><span class="identifier">clock_t</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.typedef__version_t_">Typedef
+ <code class="computeroutput"><span class="identifier">version_t</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.typedef__thread_id_t_">Typedef
+ <code class="computeroutput"><span class="identifier">thread_id_t</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.function__invalid_thread_id___">Function
+ <code class="computeroutput"><span class="identifier">invalid_thread_id</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.function__this_thread__get_id___">Function
+ <code class="computeroutput"><span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">get_id</span><span class="special">()</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.exceptions_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a></span></dt>
+<dd><dl><dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.language_like_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.language_like_hpp.macro__atomic_">Macro
+ <code class="computeroutput"><span class="identifier">atomic</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.select_contention_manager_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">select_contention_manager</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_">Class
+ <code class="computeroutput"><span class="identifier">transaction</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.struct__thread_initializer_">Struct
+ <code class="computeroutput"><span class="identifier">thread_initializer</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.transaction_bookkeeping_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a></span></dt>
+<dd><dl><dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.transaction_bookkeeping_hpp.class__transaction_bookkeeping_">Class
+ <code class="computeroutput"><span class="identifier">transaction_bookkeeping</span></code></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.reference.basics.base_transaction_object_hpp"></a><a href="basics.html#toward_boost_stm.reference.basics.base_transaction_object_hpp" title="
+ Header &lt;boost/stm/base_transaction_object.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</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="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.base_transaction_object_hpp.abstract_class__base_transaction_object_">Abstract
+ Class <code class="computeroutput"><span class="identifier">base_transaction_object</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">base_transaction_object</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.basics.base_transaction_object_hpp.abstract_class__base_transaction_object_"></a><a href="basics.html#toward_boost_stm.reference.basics.base_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>
+</h5></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.base_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="basics.html#toward_boost_stm.reference.basics.base_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="basics.html#toward_boost_stm.reference.basics.base_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="basics.html#toward_boost_stm.reference.basics.base_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="basics.html#toward_boost_stm.reference.basics.base_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="basics.html#toward_boost_stm.reference.basics.base_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="basics.html#toward_boost_stm.reference.basics.base_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="basics.html#toward_boost_stm.reference.basics.base_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
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li><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></li>
+<li>
+<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>
+</li>
+<li>
+<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>
+</li>
+</ul></div>
+<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="identifier">base_transaction_object</span><span class="special">*</span> <span class="identifier">clone</span><span class="special">()</span> <span class="keyword">const</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">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>
+
+<span class="special">};</span>
+</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_stm.reference.basics.base_transaction_object_hpp.abstract_class__base_transaction_object_.constructor__base_transaction_object___"></a><a href="basics.html#toward_boost_stm.reference.basics.base_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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.base_transaction_object_hpp.abstract_class__base_transaction_object_.virtual_destructor___base_transaction_object___"></a><a href="basics.html#toward_boost_stm.reference.basics.base_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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.base_transaction_object_hpp.abstract_class__base_transaction_object_.virtual_function__copy_state___"></a><a href="basics.html#toward_boost_stm.reference.basics.base_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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.base_transaction_object_hpp.abstract_class__base_transaction_object_.virtual_function__move_state___"></a><a href="basics.html#toward_boost_stm.reference.basics.base_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>
+</h6></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 &amp;&amp;)).
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_stm.reference.basics.base_transaction_object_hpp.abstract_class__base_transaction_object_.static_function__retrieve_mem___"></a><a href="basics.html#toward_boost_stm.reference.basics.base_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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.base_transaction_object_hpp.abstract_class__base_transaction_object_.static_function__return_mem___"></a><a href="basics.html#toward_boost_stm.reference.basics.base_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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.base_transaction_object_hpp.abstract_class__base_transaction_object_.static_function__alloc_size___"></a><a href="basics.html#toward_boost_stm.reference.basics.base_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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.base_transaction_object_hpp.abstract_class__base_transaction_object_.virtual_function__cache_deallocate___"></a><a href="basics.html#toward_boost_stm.reference.basics.base_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>
+</h6></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>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.basics.cache_fct_hpp"></a><a href="basics.html#toward_boost_stm.reference.basics.cache_fct_hpp" title=" Header
+ &lt;boost/stm/cache_fct.hpp&gt;"> Header
+ <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">cache_fct</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.cache_fct_hpp.template_function__cache_clone_____">Template
+ Function <code class="computeroutput"><span class="identifier">cache_clone</span><span class="special">&lt;&gt;()</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.cache_fct_hpp.template_function__cache_copy_____">Template
+ Function <code class="computeroutput"><span class="identifier">cache_copy</span><span class="special">&lt;&gt;()</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.cache_fct_hpp.function__cache_release_____">Function
+ <code class="computeroutput"><span class="identifier">cache_release</span><span class="special">&lt;&gt;()</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.cache_fct_hpp.template_function__cache_allocate_____">Template
+ Function <code class="computeroutput"><span class="identifier">cache_allocate</span><span class="special">&lt;&gt;()</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.cache_fct_hpp.template_function__cache_deallocate_____">Template
+ Function <code class="computeroutput"><span class="identifier">cache_deallocate</span><span class="special">&lt;&gt;()</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">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">cache_clone</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">val</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">void</span> <span class="identifier">cache_copy</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="keyword">const</span> <span class="identifier">ori</span><span class="special">,</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">target</span><span class="special">);</span>
+ <span class="keyword">void</span> <span class="identifier">cache_release</span><span class="special">(</span><span class="identifier">base_transaction_object</span><span class="special">*</span> <span class="identifier">ptr</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">cache_allocate</span><span class="special">();</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">void</span> <span class="identifier">cache_deallocate</span><span class="special">(</span><span class="identifier">T</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.basics.cache_fct_hpp.template_function__cache_clone_____"></a><a href="basics.html#toward_boost_stm.reference.basics.cache_fct_hpp.template_function__cache_clone_____" title="Template
+ Function cache_clone&lt;&gt;()">Template
+ Function <code class="computeroutput"><span class="identifier">cache_clone</span><span class="special">&lt;&gt;()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="identifier">T</span><span class="special">*</span> <span class="identifier">cache_clone</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">val</span><span class="special">);</span>
+</pre>
+<p>
+ Makes a new copy of the parameter. Allocates an object of type T using
+ the <code class="computeroutput"><span class="identifier">cache_allocate</span></code> function
+ and copy from the given parameter <code class="computeroutput"><span class="identifier">val</span></code>
+ using the free function <code class="computeroutput"><span class="identifier">cache_copy</span></code>.
+ </p>
+<p>
+ The user can overload this function, as TBoost.STM uses ADL to access
+ it.
+ </p>
+<p>
+ When <code class="computeroutput"><span class="identifier">BOOST_STM_NO_PARTIAL_SPECIALIZATION</span></code>
+ is defined, i.e. on compilers not supporting partial template specialization,
+ the function calls to <code class="computeroutput"><span class="identifier">partial_specialization_workaround</span><span class="special">::</span><span class="identifier">cache_clone</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">apply</span><span class="special">(</span><span class="identifier">val</span><span class="special">)</span></code>. So the user will need to overload the
+ class <code class="computeroutput"><span class="identifier">partial_specialization_workaround</span><span class="special">::</span><span class="identifier">cache_clone</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></code> defining the function
+ </p>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">apply</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">val</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.basics.cache_fct_hpp.template_function__cache_copy_____"></a><a href="basics.html#toward_boost_stm.reference.basics.cache_fct_hpp.template_function__cache_copy_____" title="Template
+ Function cache_copy&lt;&gt;()">Template
+ Function <code class="computeroutput"><span class="identifier">cache_copy</span><span class="special">&lt;&gt;()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">cache_copy</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="keyword">const</span> <span class="identifier">source</span><span class="special">,</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">target</span><span class="special">);</span>
+</pre>
+<p>
+ Copy from souce to target using memcpy by default.
+ </p>
+<p>
+ The user can overload this function, as TBoost.STM uses ADL to access
+ it.
+ </p>
+<p>
+ When <code class="computeroutput"><span class="identifier">BOOST_STM_NO_PARTIAL_SPECIALIZATION</span></code>
+ is defined, i.e. on compilers not supporting partial template specialization,
+ the function calls to <code class="computeroutput"><span class="identifier">partial_specialization_workaround</span><span class="special">::</span><span class="identifier">cache_copy</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">apply</span><span class="special">(</span><span class="identifier">source</span><span class="special">,</span> <span class="identifier">target</span><span class="special">)</span></code>. So the user will need to overload the
+ class <code class="computeroutput"><span class="identifier">partial_specialization_workaround</span><span class="special">::</span><span class="identifier">cache_copy</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></code> defining the function
+ </p>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">apply</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="keyword">const</span> <span class="identifier">source</span><span class="special">,</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">target</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.basics.cache_fct_hpp.function__cache_release_____"></a><a href="basics.html#toward_boost_stm.reference.basics.cache_fct_hpp.function__cache_release_____" title="Function
+ cache_release&lt;&gt;()">Function
+ <code class="computeroutput"><span class="identifier">cache_release</span><span class="special">&lt;&gt;()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">cache_release</span><span class="special">(</span><span class="identifier">base_transaction_object</span><span class="special">*</span> <span class="identifier">ptr</span><span class="special">)</span> <span class="special">{</span>
+</pre>
+<p>
+ Release the given base_transaction_object by calling to the virtual function
+ <code class="computeroutput"><span class="identifier">cache_dealocate</span></code>.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.basics.cache_fct_hpp.template_function__cache_allocate_____"></a><a href="basics.html#toward_boost_stm.reference.basics.cache_fct_hpp.template_function__cache_allocate_____" title="Template
+ Function cache_allocate&lt;&gt;()">Template
+ Function <code class="computeroutput"><span class="identifier">cache_allocate</span><span class="special">&lt;&gt;()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="identifier">T</span><span class="special">*</span> <span class="identifier">cache_allocate</span><span class="special">();</span>
+</pre>
+<p>
+ Allocates an instance of calls T. Depending on whether BOOST_STM_CACHE_USE_MEMORY_MANAGER,
+ BOOST_STM_CACHE_USE_MALLOC or BOOST_STM_CACHE_USE_TSS_MONOTONIC_MEMORY_MANAGER
+ are defined this function will use the static pool of the class T, malloc
+ or the thread specific monotonic allocator.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.basics.cache_fct_hpp.template_function__cache_deallocate_____"></a><a href="basics.html#toward_boost_stm.reference.basics.cache_fct_hpp.template_function__cache_deallocate_____" title="Template
+ Function cache_deallocate&lt;&gt;()">Template
+ Function <code class="computeroutput"><span class="identifier">cache_deallocate</span><span class="special">&lt;&gt;()</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">cache_deallocate</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="special">{</span>
+</pre>
+<p>
+ Deallocates an instance of calls T. Depending on whether BOOST_STM_CACHE_USE_MEMORY_MANAGER,
+ BOOST_STM_CACHE_USE_MALLOC or BOOST_STM_CACHE_USE_TSS_MONOTONIC_MEMORY_MANAGER
+ are defined this function will use the static pool of the class T, free
+ or the no-op.
+ </p>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.basics.datatypes_hpp"></a><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp" title=" Header
+ &lt;boost/stm/datatypes.hpp&gt;"> Header
+ <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">datatypes</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.enum__transaction_type_">Enum
+ <code class="computeroutput"><span class="identifier">transaction_type</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.enum__latm_type_">Enum
+ <code class="computeroutput"><span class="identifier">latm_type</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.enum__transaction_state_">Enum
+ <code class="computeroutput"><span class="identifier">transaction_state</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.typedef__new_memory_t_">Typedef
+ <code class="computeroutput"><span class="identifier">new_memory_t</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.typedef__priority_t_">Typedef
+ <code class="computeroutput"><span class="identifier">priority_t</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.typedef__clock_t_">Typedef
+ <code class="computeroutput"><span class="identifier">clock_t</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.typedef__version_t_">Typedef
+ <code class="computeroutput"><span class="identifier">version_t</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.typedef__thread_id_t_">Typedef
+ <code class="computeroutput"><span class="identifier">thread_id_t</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.function__invalid_thread_id___">Function
+ <code class="computeroutput"><span class="identifier">invalid_thread_id</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.function__this_thread__get_id___">Function
+ <code class="computeroutput"><span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">get_id</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">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">new_memory_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">priority_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">clock_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">milliseconds_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">version_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">thread_id_t</span><span class="special">;</span>
+ <span class="identifier">thread_id_t</span> <span class="identifier">invalid_thread_id</span><span class="special">();</span>
+ <span class="keyword">namespace</span> <span class="identifier">this_thread</span> <span class="special">{</span>
+ <span class="identifier">thread_id_t</span> <span class="identifier">get_id</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.basics.datatypes_hpp.enum__transaction_type_"></a><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.enum__transaction_type_" title="Enum
+ transaction_type">Enum
+ <code class="computeroutput"><span class="identifier">transaction_type</span></code></a>
+</h5></div></div></div>
+<p>
+ Type of transaction enumeration.
+ </p>
+<pre class="programlisting"> <span class="keyword">enum</span> <span class="identifier">transaction_type</span>
+ <span class="special">{</span>
+ <span class="identifier">eNormalTx</span><span class="special">,</span>
+ <span class="identifier">eIrrevocableTx</span><span class="special">,</span>
+ <span class="identifier">eIrrevocableAndIsolatedTx</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.basics.datatypes_hpp.enum__latm_type_"></a><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.enum__latm_type_" title="Enum
+ latm_type">Enum
+ <code class="computeroutput"><span class="identifier">latm_type</span></code></a>
+</h5></div></div></div>
+<p>
+ Type of LATM enumeration.
+ </p>
+<pre class="programlisting"><span class="keyword">enum</span> <span class="identifier">latm_type</span>
+<span class="special">{</span>
+ <span class="identifier">eFullLatmProtection</span><span class="special">,</span>
+ <span class="identifier">eTmConflictingLockLatmProtection</span><span class="special">,</span>
+ <span class="identifier">eTxConflictingLockLatmProtection</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.basics.datatypes_hpp.enum__transaction_state_"></a><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.enum__transaction_state_" title="Enum
+ transaction_state">Enum
+ <code class="computeroutput"><span class="identifier">transaction_state</span></code></a>
+</h5></div></div></div>
+<p>
+ Transaction states enumeration.
+ </p>
+<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><h5 class="title">
+<a name="toward_boost_stm.reference.basics.datatypes_hpp.typedef__new_memory_t_"></a><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.typedef__new_memory_t_" title="Typedef
+ new_memory_t">Typedef
+ <code class="computeroutput"><span class="identifier">new_memory_t</span></code></a>
+</h5></div></div></div>
+<p>
+ This type should be bool, but for alignements purposes is a int.
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="keyword">int</span> <span class="identifier">new_memory_t</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.basics.datatypes_hpp.typedef__priority_t_"></a><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.typedef__priority_t_" title="Typedef
+ priority_t">Typedef
+ <code class="computeroutput"><span class="identifier">priority_t</span></code></a>
+</h5></div></div></div>
+<p>
+ Type used for the user contention management with transaction priority.
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">priority_t</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.basics.datatypes_hpp.typedef__clock_t_"></a><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.typedef__clock_t_" title="Typedef
+ clock_t">Typedef
+ <code class="computeroutput"><span class="identifier">clock_t</span></code></a>
+</h5></div></div></div>
+<p>
+ Type used to represent the time.
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">clock_t</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">milliseconds_t</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.basics.datatypes_hpp.typedef__version_t_"></a><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.typedef__version_t_" title="Typedef
+ version_t">Typedef
+ <code class="computeroutput"><span class="identifier">version_t</span></code></a>
+</h5></div></div></div>
+<p>
+ Type used for validation using the version algorithm.
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">version_t</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.basics.datatypes_hpp.typedef__thread_id_t_"></a><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.typedef__thread_id_t_" title="Typedef
+ thread_id_t">Typedef
+ <code class="computeroutput"><span class="identifier">thread_id_t</span></code></a>
+</h5></div></div></div>
+<p>
+ Thread id type, which is platform dependent.
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">platform_specific</span> <span class="identifier">thread_id_t</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.basics.datatypes_hpp.function__invalid_thread_id___"></a><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.function__invalid_thread_id___" title="Function
+ invalid_thread_id()">Function
+ <code class="computeroutput"><span class="identifier">invalid_thread_id</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<p>
+ Invalid thread_id_t value.
+ </p>
+<pre class="programlisting"><span class="identifier">thread_id_t</span> <span class="identifier">invalid_thread_id</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.basics.datatypes_hpp.function__this_thread__get_id___"></a><a href="basics.html#toward_boost_stm.reference.basics.datatypes_hpp.function__this_thread__get_id___" title="Function
+ this_thread::get_id()">Function
+ <code class="computeroutput"><span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">get_id</span><span class="special">()</span></code></a>
+</h5></div></div></div>
+<p>
+ thread_id_t for the current thread.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">this_thread</span> <span class="special">{</span>
+ <span class="keyword">inline</span> <span class="identifier">thread_id_t</span> <span class="identifier">get_id</span><span class="special">()</span> <span class="special">{</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.basics.exceptions_hpp"></a><a href="basics.html#toward_boost_stm.reference.basics.exceptions_hpp" title="
+ Header &lt;boost/stm/exceptions.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.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><h5 class="title">
+<a name="toward_boost_stm.reference.basics.exceptions_hpp.class__aborted_transaction_exception_"></a><a href="basics.html#toward_boost_stm.reference.basics.exceptions_hpp.class__aborted_transaction_exception_" title="Class
+ aborted_transaction_exception">Class
+ <code class="computeroutput"><span class="identifier">aborted_transaction_exception</span></code></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.reference.basics.language_like_hpp"></a><a href="basics.html#toward_boost_stm.reference.basics.language_like_hpp" title="
+ Header &lt;boost/stm/language_like.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.language_like_hpp.macro__atomic_">Macro
+ <code class="computeroutput"><span class="identifier">atomic</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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.
+ </li>
+<li>
+ 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><h5 class="title">
+<a name="toward_boost_stm.reference.basics.language_like_hpp.macro__atomic_"></a><a href="basics.html#toward_boost_stm.reference.basics.language_like_hpp.macro__atomic_" title="Macro
+ atomic">Macro
+ <code class="computeroutput"><span class="identifier">atomic</span></code></a>
+</h5></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">&amp;&amp;</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">&amp;&amp;</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><h5 class="title">
+<a name="toward_boost_stm.reference.basics.language_like_hpp.macro__try_atomic_"></a><a href="basics.html#toward_boost_stm.reference.basics.language_like_hpp.macro__try_atomic_" title="Macro
+ try_atomic">Macro
+ <code class="computeroutput"><span class="identifier">try_atomic</span></code></a>
+</h5></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">&amp;&amp;</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><h5 class="title">
+<a name="toward_boost_stm.reference.basics.language_like_hpp.macro__use_atomic_"></a><a href="basics.html#toward_boost_stm.reference.basics.language_like_hpp.macro__use_atomic_" title="Macro
+ use_atomic">Macro
+ <code class="computeroutput"><span class="identifier">use_atomic</span></code></a>
+</h5></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">&amp;&amp;</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><h5 class="title">
+<a name="toward_boost_stm.reference.basics.language_like_hpp.macro__catch_before_retry_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h5></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">&amp;</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><h5 class="title">
+<a name="toward_boost_stm.reference.basics.language_like_hpp.macro__before_retry_"></a><a href="basics.html#toward_boost_stm.reference.basics.language_like_hpp.macro__before_retry_" title="Macro
+ before_retry">Macro
+ <code class="computeroutput"><span class="identifier">before_retry</span></code></a>
+</h5></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">&amp;)</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><h5 class="title">
+<a name="toward_boost_stm.reference.basics.language_like_hpp.macro__end_atom_"></a><a href="basics.html#toward_boost_stm.reference.basics.language_like_hpp.macro__end_atom_" title="Macro
+ end_atom">Macro
+ <code class="computeroutput"><span class="identifier">end_atom</span></code></a>
+</h5></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">&amp;)</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>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.basics.select_contention_manager_hpp"></a><a href="basics.html#toward_boost_stm.reference.basics.select_contention_manager_hpp" title="
+ Header &lt;boost/stm/select_contention_manager.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">select_contention_manager</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
+</h4></div></div></div>
+<p>
+ This file defines the contention manager depending on the compile directives:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ BOOST_STM_CM_STATIC_CONF when you want a staticacly configured CM
+ <div class="itemizedlist"><ul type="circle"><li>
+ BOOST_STM_CM_STATIC_CONF_except_and_back_off_on_abort_notice_cm when
+ configuration manager is except_and_back_off_on_abort_notice_cm
+ </li></ul></div>
+</li>
+<li>
+ BOOST_STM_CM_DYNAMIC_CONF when you want a polymorphic CM configured at
+ run time
+ </li>
+</ul></div>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="char">'compilation_dependent_type'</span> <span class="identifier">contention_manager_type</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.basics.transaction_hpp"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp" title="
+ Header &lt;boost/stm/transaction.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_">Class
+ <code class="computeroutput"><span class="identifier">transaction</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.struct__thread_initializer_">Struct
+ <code class="computeroutput"><span class="identifier">thread_initializer</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</span><span class="special">;</span>
+ <span class="keyword">struct</span> <span class="identifier">thread_initializer</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.basics.transaction_hpp.class__transaction_"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_" title="Class
+ transaction">Class
+ <code class="computeroutput"><span class="identifier">transaction</span></code></a>
+</h5></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.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="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template_member_function__find_original___">Template
+ Member Function <code class="computeroutput"><span class="identifier">find_original</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template__function__read___">Template
+ Function <code class="computeroutput"><span class="identifier">read</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template__function__read_ptr___">Template
+ Function <code class="computeroutput"><span class="identifier">read_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template__function__write___">Template
+ Function <code class="computeroutput"><span class="identifier">write</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template__function__write_ptr___">Template
+ Function <code class="computeroutput"><span class="identifier">write_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template__function__get_written___">Template
+ Function <code class="computeroutput"><span class="identifier">get_written</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template__function__delete_memory___">Template
+ Function <code class="computeroutput"><span class="identifier">delete_memory</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template__function__new_memory___">Template
+ Function <code class="computeroutput"><span class="identifier">new_memory</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template__function__new_memory_copy___">Template
+ Function <code class="computeroutput"><span class="identifier">new_memory_copy</span><span class="special">&lt;&gt;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">find_original</span><span class="special">(</span><span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">in</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">read</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">in</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">r</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">in</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">write</span><span class="special">(</span><span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">in</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">w</span><span class="special">(</span><span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">in</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&amp;</span> <span class="identifier">in</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">void</span> <span class="identifier">delete_memory</span><span class="special">(</span><span class="identifier">T</span> <span class="special">&amp;</span><span class="identifier">in</span><span class="special">)</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&amp;</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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__initialize___"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__initialize_thread___"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__terminate_thread___"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__contention_manager_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__get_contention_manager_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__enable_dynamic_priority_assignment_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__disable_dynamic_priority_assignment_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__doing_dynamic_priority_assignment_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__enableloggingofabortandcommitsetsize_"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__enableloggingofabortandcommitsetsize_" title="Static
+ Function enableLoggingOfAbortAndCommitSetSize">Static
+ Function <code class="computeroutput"><span class="identifier">enableLoggingOfAbortAndCommitSetSize</span></code></a>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__disableloggingofabortandcommitsetsize_"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__disableloggingofabortandcommitsetsize_" title="Static
+ Function disableLoggingOfAbortAndCommitSetSize">Static
+ Function <code class="computeroutput"><span class="identifier">disableLoggingOfAbortAndCommitSetSize</span></code></a>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__transaction_bookkeeping_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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">&amp;</span> <span class="identifier">bookkeeping</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__early_conflict_detection_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__late_conflict_detection_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__do_early_conflict_detection_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__do_late_conflict_detection_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__consistency_checking_string_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__validating_"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__validating_" title="Static
+ Function validating">Static
+ Function <code class="computeroutput"><span class="identifier">validating</span></code></a>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__invalidating_"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__invalidating_" title="Static
+ Function invalidating">Static
+ Function <code class="computeroutput"><span class="identifier">invalidating</span></code></a>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__direct_updating_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__deferred_updating_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__do_direct_updating_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__do_deferred_updating_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__update_policy_string_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__latm_protection_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__latm_protection_str_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__do_full_lock_protection_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__do_tm_lock_protection_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__do_tx_lock_protection_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__doing_tx_lock_protection_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__doing_full_lock_protection_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__doing_tm_lock_protection_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.static_function__in_flight_transactions_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">InflightTxes</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">in_flight_transactions</span><span class="special">();</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.constructor__transaction___"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.constructor__transaction___" title="Constructor
+ transaction()">Constructor
+ <code class="computeroutput"><span class="identifier">transaction</span><span class="special">()</span></code></a>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.destructor___transaction___"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__committed_"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__committed_" title="Member
+ Function committed">Member
+ Function <code class="computeroutput"><span class="identifier">committed</span></code></a>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__aborted_"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__aborted_" title="Member
+ Function aborted">Member
+ Function <code class="computeroutput"><span class="identifier">aborted</span></code></a>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__in_flight_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__begin_"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__begin_" title="Member
+ Function begin">Member
+ Function <code class="computeroutput"><span class="identifier">begin</span></code></a>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__restart_"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__restart_" title="Member
+ Function restart">Member
+ Function <code class="computeroutput"><span class="identifier">restart</span></code></a>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__restart_if_not_inflight_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__end_"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__end_" title="Member
+ Function end">Member
+ Function <code class="computeroutput"><span class="identifier">end</span></code></a>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__no_throw_end_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__force_to_abort_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__unforce_to_abort_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__priority_"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__priority_" title="Member
+ Function priority">Member
+ Function <code class="computeroutput"><span class="identifier">priority</span></code></a>
+</h6></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">&amp;</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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__set_priority_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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">&amp;</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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__raise_priority_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__make_irrevocable_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__make_isolated_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__irrevocable_"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__irrevocable_" title="Member
+ Function irrevocable">Member
+ Function <code class="computeroutput"><span class="identifier">irrevocable</span></code></a>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__isolated_"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__isolated_" title="Member
+ Function isolated">Member
+ Function <code class="computeroutput"><span class="identifier">isolated</span></code></a>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.member_function__thread_id_"></a><a href="basics.html#toward_boost_stm.reference.basics.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>
+</h6></div></div></div>
+<pre class="programlisting"><span class="identifier">thread_id_t</span> <span class="keyword">const</span> <span class="special">&amp;</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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template_member_function__find_original___"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template_member_function__find_original___" title="Template
+ Member Function find_original&lt;&gt;">Template
+ Member Function <code class="computeroutput"><span class="identifier">find_original</span><span class="special">&lt;&gt;</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">find_original</span><span class="special">(</span><span class="identifier">T</span><span class="special">&amp;</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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template__function__read___"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template__function__read___" title="Template
+ Function read&lt;&gt;">Template
+ Function <code class="computeroutput"><span class="identifier">read</span><span class="special">&lt;&gt;</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">read</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">in</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">r</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template__function__read_ptr___"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template__function__read_ptr___" title="Template
+ Function read_ptr&lt;&gt;">Template
+ Function <code class="computeroutput"><span class="identifier">read_ptr</span><span class="special">&lt;&gt;</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template__function__write___"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template__function__write___" title="Template
+ Function write&lt;&gt;">Template
+ Function <code class="computeroutput"><span class="identifier">write</span><span class="special">&lt;&gt;</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">write</span><span class="special">(</span><span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">in</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">w</span><span class="special">(</span><span class="identifier">T</span><span class="special">&amp;</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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template__function__write_ptr___"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template__function__write_ptr___" title="Template
+ Function write_ptr&lt;&gt;">Template
+ Function <code class="computeroutput"><span class="identifier">write_ptr</span><span class="special">&lt;&gt;</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template__function__get_written___"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template__function__get_written___" title="Template
+ Function get_written&lt;&gt;">Template
+ Function <code class="computeroutput"><span class="identifier">get_written</span><span class="special">&lt;&gt;</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&amp;</span> <span class="identifier">in</span><span class="special">);</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template__function__delete_memory___"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template__function__delete_memory___" title="Template
+ Function delete_memory&lt;&gt;">Template
+ Function <code class="computeroutput"><span class="identifier">delete_memory</span><span class="special">&lt;&gt;</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">void</span> <span class="identifier">delete_memory</span><span class="special">(</span><span class="identifier">T</span> <span class="special">&amp;</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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template__function__new_memory___"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template__function__new_memory___" title="Template
+ Function new_memory&lt;&gt;">Template
+ Function <code class="computeroutput"><span class="identifier">new_memory</span><span class="special">&lt;&gt;</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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><h6 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template__function__new_memory_copy___"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.class__transaction_.template__function__new_memory_copy___" title="Template
+ Function new_memory_copy&lt;&gt;">Template
+ Function <code class="computeroutput"><span class="identifier">new_memory_copy</span><span class="special">&lt;&gt;</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&amp;</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 class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_hpp.struct__thread_initializer_"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_hpp.struct__thread_initializer_" title="Struct
+ thread_initializer">Struct
+ <code class="computeroutput"><span class="identifier">thread_initializer</span></code></a>
+</h5></div></div></div>
+<p>
+ Scoped thread initializer calling transaction::initialize_thread() in
+ the constructor and transaction::terminate_thread() in the destructor.
+ </p>
+<p>
+ Declare an object of this class on each thread participating on a transaction.
+ </p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">thread_initializer</span> <span class="special">{</span>
+ <span class="identifier">thread_initializer</span><span class="special">();</span>
+ <span class="special">~</span><span class="identifier">thread_initializer</span><span class="special">();</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.basics.transaction_bookkeeping_hpp"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_bookkeeping_hpp" title="
+ Header &lt;boost/stm/transaction_bookkeeping.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="basics.html#toward_boost_stm.reference.basics.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><h5 class="title">
+<a name="toward_boost_stm.reference.basics.transaction_bookkeeping_hpp.class__transaction_bookkeeping_"></a><a href="basics.html#toward_boost_stm.reference.basics.transaction_bookkeeping_hpp.class__transaction_bookkeeping_" title="Class
+ transaction_bookkeeping">Class
+ <code class="computeroutput"><span class="identifier">transaction_bookkeeping</span></code></a>
+</h5></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">&lt;</span><span class="identifier">uint32</span><span class="special">,</span> <span class="identifier">uint32</span><span class="special">&gt;</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">&lt;</span><span class="identifier">ThreadIdAndCommitId</span><span class="special">,</span> <span class="identifier">uint32</span><span class="special">&gt;</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">&lt;</span><span class="identifier">ThreadIdAndCommitId</span><span class="special">,</span> <span class="identifier">uint32</span><span class="special">&gt;</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">&amp;</span> <span class="identifier">lockConvoyMs</span><span class="special">();</span>
+ <span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">commitTimeMs</span><span class="special">();</span>
+ <span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">readAborts</span><span class="special">();</span>
+ <span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">writeAborts</span><span class="special">();</span>
+ <span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&amp;</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">&amp;</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">&amp;</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">&amp;</span> <span class="identifier">newMemoryAborts</span><span class="special">();</span>
+ <span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">newMemoryCommits</span><span class="special">();</span>
+ <span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">deletedMemoryAborts</span><span class="special">();</span>
+ <span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">deletedMemoryCommits</span><span class="special">();</span>
+ <span class="identifier">uint32</span> <span class="keyword">const</span> <span class="special">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</span> <span class="keyword">operator</span><span class="special">&lt;&lt;(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">out</span><span class="special">,</span> <span class="identifier">transaction_bookkeeping</span> <span class="keyword">const</span> <span class="special">&amp;</span><span class="identifier">that</span><span class="special">);</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="stm_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="contention_managers.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Modified: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/cache_fct_hpp.html
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/cache_fct_hpp.html (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/cache_fct_hpp.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -8,7 +8,7 @@
 <link rel="up" href="../reference.html" title="Reference">
 <link rel="prev" href="base_transaction_object_hpp.html" title="
       Header &lt;boost/stm/base_transaction_object.hpp&gt;">
-<link rel="next" href="data_types_hpp.html" title=" Header &lt;boost/stm/data_types.hpp&gt;">
+<link rel="next" href="datatypes_hpp.html" title=" Header &lt;boost/stm/datatypes.hpp&gt;">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -21,7 +21,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="base_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="data_types_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="base_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="datatypes_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">
@@ -156,7 +156,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="base_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="data_types_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="base_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="datatypes_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/contention_managers.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/contention_managers.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -0,0 +1,287 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Contention
+ managers</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="basics.html" title="Basics">
+<link rel="next" href="transactional_objects.html" title="Transactional
+ objects">
+</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="basics.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="transactional_objects.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.contention_managers"></a><a href="contention_managers.html" title="Contention
+ managers">Contention
+ managers</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="contention_managers.html#toward_boost_stm.reference.contention_managers.base_contention_manager_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a></span></dt>
+<dd><dl><dt><span class="section"><a href="contention_managers.html#toward_boost_stm.reference.contention_managers.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>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.contention_managers.base_contention_manager_hpp"></a><a href="contention_managers.html#toward_boost_stm.reference.contention_managers.base_contention_manager_hpp" title="
+ Header &lt;boost/stm/base_contention_manager.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="contention_managers.html#toward_boost_stm.reference.contention_managers.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></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><h5 class="title">
+<a name="toward_boost_stm.reference.contention_managers.base_contention_manager_hpp.abstract_class__base_contention_manager_"></a><a href="contention_managers.html#toward_boost_stm.reference.contention_managers.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>
+</h5></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="contention_managers.html#toward_boost_stm.reference.contention_managers.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="contention_managers.html#toward_boost_stm.reference.contention_managers.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="contention_managers.html#toward_boost_stm.reference.contention_managers.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="contention_managers.html#toward_boost_stm.reference.contention_managers.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="contention_managers.html#toward_boost_stm.reference.contention_managers.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="contention_managers.html#toward_boost_stm.reference.contention_managers.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="contention_managers.html#toward_boost_stm.reference.contention_managers.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="contention_managers.html#toward_boost_stm.reference.contention_managers.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="contention_managers.html#toward_boost_stm.reference.contention_managers.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="contention_managers.html#toward_boost_stm.reference.contention_managers.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="contention_managers.html#toward_boost_stm.reference.contention_managers.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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</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">&amp;</span> <span class="identifier">lockWaitTime</span><span class="special">,</span>
+ <span class="keyword">int</span> <span class="keyword">const</span> <span class="special">&amp;</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">&amp;</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">&amp;)</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">&amp;)</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><h6 class="title">
+<a name="toward_boost_stm.reference.contention_managers.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_destructor__base_contention_manager_"></a><a href="contention_managers.html#toward_boost_stm.reference.contention_managers.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.contention_managers.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_on_new_"></a><a href="contention_managers.html#toward_boost_stm.reference.contention_managers.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>
+</h6></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">&amp;</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><h6 class="title">
+<a name="toward_boost_stm.reference.contention_managers.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_on_delete_"></a><a href="contention_managers.html#toward_boost_stm.reference.contention_managers.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>
+</h6></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">&amp;</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">&amp;</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><h6 class="title">
+<a name="toward_boost_stm.reference.contention_managers.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_on_read_"></a><a href="contention_managers.html#toward_boost_stm.reference.contention_managers.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>
+</h6></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">&amp;</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">&amp;</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><h6 class="title">
+<a name="toward_boost_stm.reference.contention_managers.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_on_write_"></a><a href="contention_managers.html#toward_boost_stm.reference.contention_managers.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>
+</h6></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">&amp;</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">&amp;</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><h6 class="title">
+<a name="toward_boost_stm.reference.contention_managers.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__abort_before_commit_"></a><a href="contention_managers.html#toward_boost_stm.reference.contention_managers.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>
+</h6></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">&amp;</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><h6 class="title">
+<a name="toward_boost_stm.reference.contention_managers.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__permission_to_abort_"></a><a href="contention_managers.html#toward_boost_stm.reference.contention_managers.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>
+</h6></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">&amp;</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">&amp;</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><h6 class="title">
+<a name="toward_boost_stm.reference.contention_managers.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__allow_lock_to_abort_tx_"></a><a href="contention_managers.html#toward_boost_stm.reference.contention_managers.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>
+</h6></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">&amp;</span> <span class="identifier">lockWaitTime</span><span class="special">,</span>
+ <span class="keyword">int</span> <span class="keyword">const</span> <span class="special">&amp;</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">&amp;</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><h6 class="title">
+<a name="toward_boost_stm.reference.contention_managers.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__lock_sleep_time_"></a><a href="contention_managers.html#toward_boost_stm.reference.contention_managers.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.contention_managers.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__perform_isolated_tx_wait_priority_promotion_"></a><a href="contention_managers.html#toward_boost_stm.reference.contention_managers.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>
+</h6></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">&amp;)</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
+ &amp;) = 0;
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_stm.reference.contention_managers.base_contention_manager_hpp.abstract_class__base_contention_manager_.virtual_function__perform_irrevocable_tx_wait_priority_promotion_"></a><a href="contention_managers.html#toward_boost_stm.reference.contention_managers.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>
+</h6></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">&amp;)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+</pre>
+</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="basics.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="transactional_objects.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/datatypes_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/datatypes_hpp.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -0,0 +1,221 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Header &lt;boost/stm/datatypes.hpp&gt;</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="cache_fct_hpp.html" title=" Header &lt;boost/stm/cache_fct.hpp&gt;">
+<link rel="next" href="exceptions_hpp.html" title=" Header &lt;boost/stm/exceptions.hpp&gt;">
+</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="cache_fct_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="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.datatypes_hpp"></a> Header <boost/stm/datatypes.hpp>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="datatypes_hpp.html#toward_boost_stm.reference.datatypes_hpp.enum__transaction_type_">Enum
+ <code class="computeroutput"><span class="identifier">transaction_type</span></code></a></span></dt>
+<dt><span class="section"><a href="datatypes_hpp.html#toward_boost_stm.reference.datatypes_hpp.enum__latm_type_">Enum
+ <code class="computeroutput"><span class="identifier">latm_type</span></code></a></span></dt>
+<dt><span class="section"><a href="datatypes_hpp.html#toward_boost_stm.reference.datatypes_hpp.enum__transaction_state_">Enum
+ <code class="computeroutput"><span class="identifier">transaction_state</span></code></a></span></dt>
+<dt><span class="section"><a href="datatypes_hpp.html#toward_boost_stm.reference.datatypes_hpp.typedef__new_memory_t_">Typedef
+ <code class="computeroutput"><span class="identifier">new_memory_t</span></code></a></span></dt>
+<dt><span class="section"><a href="datatypes_hpp.html#toward_boost_stm.reference.datatypes_hpp.typedef__priority_t_">Typedef
+ <code class="computeroutput"><span class="identifier">priority_t</span></code></a></span></dt>
+<dt><span class="section"><a href="datatypes_hpp.html#toward_boost_stm.reference.datatypes_hpp.typedef__clock_t_">Typedef
+ <code class="computeroutput"><span class="identifier">clock_t</span></code></a></span></dt>
+<dt><span class="section"><a href="datatypes_hpp.html#toward_boost_stm.reference.datatypes_hpp.typedef__version_t_">Typedef
+ <code class="computeroutput"><span class="identifier">version_t</span></code></a></span></dt>
+<dt><span class="section"><a href="datatypes_hpp.html#toward_boost_stm.reference.datatypes_hpp.typedef__thread_id_t_">Typedef
+ <code class="computeroutput"><span class="identifier">thread_id_t</span></code></a></span></dt>
+<dt><span class="section"><a href="datatypes_hpp.html#toward_boost_stm.reference.datatypes_hpp.function__invalid_thread_id___">Function
+ <code class="computeroutput"><span class="identifier">invalid_thread_id</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="datatypes_hpp.html#toward_boost_stm.reference.datatypes_hpp.function__this_thread__get_id___">Function
+ <code class="computeroutput"><span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">get_id</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">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">new_memory_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">priority_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">clock_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">milliseconds_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">version_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">thread_id_t</span><span class="special">;</span>
+ <span class="identifier">thread_id_t</span> <span class="identifier">invalid_thread_id</span><span class="special">();</span>
+ <span class="keyword">namespace</span> <span class="identifier">this_thread</span> <span class="special">{</span>
+ <span class="identifier">thread_id_t</span> <span class="identifier">get_id</span><span class="special">();</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.datatypes_hpp.enum__transaction_type_"></a><a href="datatypes_hpp.html#toward_boost_stm.reference.datatypes_hpp.enum__transaction_type_" title="Enum
+ transaction_type">Enum
+ <code class="computeroutput"><span class="identifier">transaction_type</span></code></a>
+</h4></div></div></div>
+<p>
+ Type of transaction enumeration.
+ </p>
+<pre class="programlisting"> <span class="keyword">enum</span> <span class="identifier">transaction_type</span>
+ <span class="special">{</span>
+ <span class="identifier">eNormalTx</span><span class="special">,</span>
+ <span class="identifier">eIrrevocableTx</span><span class="special">,</span>
+ <span class="identifier">eIrrevocableAndIsolatedTx</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.datatypes_hpp.enum__latm_type_"></a><a href="datatypes_hpp.html#toward_boost_stm.reference.datatypes_hpp.enum__latm_type_" title="Enum
+ latm_type">Enum
+ <code class="computeroutput"><span class="identifier">latm_type</span></code></a>
+</h4></div></div></div>
+<p>
+ Type of LATM enumeration.
+ </p>
+<pre class="programlisting"><span class="keyword">enum</span> <span class="identifier">latm_type</span>
+<span class="special">{</span>
+ <span class="identifier">eFullLatmProtection</span><span class="special">,</span>
+ <span class="identifier">eTmConflictingLockLatmProtection</span><span class="special">,</span>
+ <span class="identifier">eTxConflictingLockLatmProtection</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.datatypes_hpp.enum__transaction_state_"></a><a href="datatypes_hpp.html#toward_boost_stm.reference.datatypes_hpp.enum__transaction_state_" title="Enum
+ transaction_state">Enum
+ <code class="computeroutput"><span class="identifier">transaction_state</span></code></a>
+</h4></div></div></div>
+<p>
+ Transaction states enumeration.
+ </p>
+<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.datatypes_hpp.typedef__new_memory_t_"></a><a href="datatypes_hpp.html#toward_boost_stm.reference.datatypes_hpp.typedef__new_memory_t_" title="Typedef
+ new_memory_t">Typedef
+ <code class="computeroutput"><span class="identifier">new_memory_t</span></code></a>
+</h4></div></div></div>
+<p>
+ This type should be bool, but for alignements purposes is a int.
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="keyword">int</span> <span class="identifier">new_memory_t</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.datatypes_hpp.typedef__priority_t_"></a><a href="datatypes_hpp.html#toward_boost_stm.reference.datatypes_hpp.typedef__priority_t_" title="Typedef
+ priority_t">Typedef
+ <code class="computeroutput"><span class="identifier">priority_t</span></code></a>
+</h4></div></div></div>
+<p>
+ Type used for the user contention management with transaction priority.
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">priority_t</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.datatypes_hpp.typedef__clock_t_"></a><a href="datatypes_hpp.html#toward_boost_stm.reference.datatypes_hpp.typedef__clock_t_" title="Typedef
+ clock_t">Typedef
+ <code class="computeroutput"><span class="identifier">clock_t</span></code></a>
+</h4></div></div></div>
+<p>
+ Type used to represent the time.
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">clock_t</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">milliseconds_t</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.datatypes_hpp.typedef__version_t_"></a><a href="datatypes_hpp.html#toward_boost_stm.reference.datatypes_hpp.typedef__version_t_" title="Typedef
+ version_t">Typedef
+ <code class="computeroutput"><span class="identifier">version_t</span></code></a>
+</h4></div></div></div>
+<p>
+ Type used for validation using the version algorithm.
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">version_t</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.datatypes_hpp.typedef__thread_id_t_"></a><a href="datatypes_hpp.html#toward_boost_stm.reference.datatypes_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>
+<p>
+ Thread id type, which is platform dependent.
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">platform_specific</span> <span class="identifier">thread_id_t</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.datatypes_hpp.function__invalid_thread_id___"></a><a href="datatypes_hpp.html#toward_boost_stm.reference.datatypes_hpp.function__invalid_thread_id___" title="Function
+ invalid_thread_id()">Function
+ <code class="computeroutput"><span class="identifier">invalid_thread_id</span><span class="special">()</span></code></a>
+</h4></div></div></div>
+<p>
+ Invalid thread_id_t value.
+ </p>
+<pre class="programlisting"><span class="identifier">thread_id_t</span> <span class="identifier">invalid_thread_id</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.datatypes_hpp.function__this_thread__get_id___"></a><a href="datatypes_hpp.html#toward_boost_stm.reference.datatypes_hpp.function__this_thread__get_id___" title="Function
+ this_thread::get_id()">Function
+ <code class="computeroutput"><span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">get_id</span><span class="special">()</span></code></a>
+</h4></div></div></div>
+<p>
+ thread_id_t for the current thread.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">this_thread</span> <span class="special">{</span>
+ <span class="keyword">inline</span> <span class="identifier">thread_id_t</span> <span class="identifier">get_id</span><span class="special">()</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="cache_fct_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="exceptions_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Modified: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/exceptions_hpp.html
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/exceptions_hpp.html (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/exceptions_hpp.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
 <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 &lt;boost/stm/data_types.hpp&gt;">
+<link rel="prev" href="datatypes_hpp.html" title=" Header &lt;boost/stm/datatypes.hpp&gt;">
 <link rel="next" href="language_like_hpp.html" title=" Header
       &lt;boost/stm/language_like.hpp&gt;">
 </head>
@@ -21,7 +21,7 @@
 </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="language_like_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="datatypes_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">
@@ -49,7 +49,7 @@
 </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="language_like_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="datatypes_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/non_transactional_objects.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/non_transactional_objects.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -0,0 +1,282 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Non
+ transactional objects</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="transactional_objects.html" title="Transactional
+ objects">
+<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="transactional_objects.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.non_transactional_objects"></a><a href="non_transactional_objects.html" title="Non
+ transactional objects">Non
+ transactional objects</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="non_transactional_objects.html#toward_boost_stm.reference.non_transactional_objects.non_tx_numeric_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">non_tx</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dd><dl><dt><span class="section"><a href="non_transactional_objects.html#toward_boost_stm.reference.non_transactional_objects.non_tx_numeric_hpp.template_class__non_tx__numeric___">Template
+ Class <code class="computeroutput"><span class="identifier">non_tx</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">&lt;&gt;</span></code></a></span></dt></dl></dd>
+<dt><span class="section"><a href="non_transactional_objects.html#toward_boost_stm.reference.non_transactional_objects.non_tx_pointer_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">non_tx</span><span class="special">/</span><span class="identifier">pointer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="non_transactional_objects.html#toward_boost_stm.reference.non_transactional_objects.non_tx_smart_ptr_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">non_tx_smart_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="non_transactional_objects.html#toward_boost_stm.reference.non_transactional_objects.non_tx_smart_ptr_hpp.template_class__rd_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">rd_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="non_transactional_objects.html#toward_boost_stm.reference.non_transactional_objects.non_tx_smart_ptr_hpp.template_class__upgrd_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">upgrd_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="non_transactional_objects.html#toward_boost_stm.reference.non_transactional_objects.non_tx_smart_ptr_hpp.template_class__wr_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">wr_ptr</span><span class="special">&lt;&gt;</span></code></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.reference.non_transactional_objects.non_tx_numeric_hpp"></a><a href="non_transactional_objects.html#toward_boost_stm.reference.non_transactional_objects.non_tx_numeric_hpp" title="
+ Header &lt;boost/stm/non_tx/numeric.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">non_tx</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="non_transactional_objects.html#toward_boost_stm.reference.non_transactional_objects.non_tx_numeric_hpp.template_class__non_tx__numeric___">Template
+ Class <code class="computeroutput"><span class="identifier">non_tx</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">&lt;&gt;</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">namespace</span> <span class="identifier">non_tx</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">numeric</span><span class="special">;</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">numeric</span><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">&gt;</span> <span class="identifier">boolean</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">numeric</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">&gt;</span> <span class="identifier">char_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">numeric</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">char</span><span class="special">&gt;</span> <span class="identifier">uchar_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">numeric</span><span class="special">&lt;</span><span class="keyword">short</span><span class="special">&gt;</span> <span class="identifier">short_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">numeric</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">short</span><span class="special">&gt;</span> <span class="identifier">ushort_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">numeric</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">int_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">numeric</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">uint_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">numeric</span><span class="special">&lt;</span><span class="keyword">long</span><span class="special">&gt;</span> <span class="identifier">long_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">numeric</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">long</span><span class="special">&gt;</span> <span class="identifier">ulong_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">numeric</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="identifier">float_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">numeric</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">double_t</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.non_transactional_objects.non_tx_numeric_hpp.template_class__non_tx__numeric___"></a><a href="non_transactional_objects.html#toward_boost_stm.reference.non_transactional_objects.non_tx_numeric_hpp.template_class__non_tx__numeric___" title="Template
+ Class non_tx::numeric&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">non_tx</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">numeric</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">transaction_object</span><span class="special">&lt;</span> <span class="identifier">numeric</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+<span class="special">{</span>
+<span class="keyword">protected</span><span class="special">:</span>
+ <span class="identifier">T</span> <span class="identifier">val_</span><span class="special">;</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">numeric</span><span class="special">();</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">&gt;</span> <span class="identifier">numeric</span><span class="special">(</span><span class="identifier">numeric</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">u</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">U</span><span class="special">&gt;</span> <span class="identifier">numeric</span><span class="special">(</span><span class="identifier">U</span> <span class="identifier">v</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="keyword">operator</span> <span class="identifier">T</span><span class="special">&amp;();</span>
+
+ <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">ref</span><span class="special">();</span>
+ <span class="identifier">T</span> <span class="identifier">value</span><span class="special">();</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.non_transactional_objects.non_tx_pointer_hpp"></a><a href="non_transactional_objects.html#toward_boost_stm.reference.non_transactional_objects.non_tx_pointer_hpp" title="
+ Header &lt;boost/stm/non_tx/pointer.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">non_tx</span><span class="special">/</span><span class="identifier">pointer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</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.non_transactional_objects.non_tx_smart_ptr_hpp"></a><a href="non_transactional_objects.html#toward_boost_stm.reference.non_transactional_objects.non_tx_smart_ptr_hpp" title="
+ Header &lt;boost/stm/non_tx_smart_ptr.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">non_tx_smart_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="non_transactional_objects.html#toward_boost_stm.reference.non_transactional_objects.non_tx_smart_ptr_hpp.template_class__rd_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">rd_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="non_transactional_objects.html#toward_boost_stm.reference.non_transactional_objects.non_tx_smart_ptr_hpp.template_class__upgrd_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">upgrd_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="non_transactional_objects.html#toward_boost_stm.reference.non_transactional_objects.non_tx_smart_ptr_hpp.template_class__wr_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">wr_ptr</span><span class="special">&lt;&gt;</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">namespace</span> <span class="identifier">non_tx</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">rd_ptr</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">rd_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">make_rd_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&amp;</span> <span class="identifier">tx</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">rd_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">make_rd_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&amp;</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">ref</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">rd_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">make_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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">rd_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">make_rd_ptr</span><span class="special">(</span><span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">ref</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">upgrd_ptr</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">void</span> <span class="identifier">delete_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&amp;</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">upgrd_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">ptr</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">wr_ptr</span><span class="special">;</span>
+<span class="special">}}}</span>
+</pre>
+<p>
+ These smart pointers points to an unspecified cache type which inherits
+ from base_transactional object. This cache is obtained from an internal
+ thread safe cache map.
+ </p>
+<p>
+ As the the non_tx smart pointers need to lookup on a cache they must be
+ used only when you need to access to a non transactional variable on the
+ context of a transaction. Otherwise, please use tx_ptr&lt;&gt; or the mixin
+ transaction_object&lt;&gt;.
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.non_transactional_objects.non_tx_smart_ptr_hpp.template_class__rd_ptr___"></a><a href="non_transactional_objects.html#toward_boost_stm.reference.non_transactional_objects.non_tx_smart_ptr_hpp.template_class__rd_ptr___" title="Template
+ Class rd_ptr&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">rd_ptr</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<p>
+ A rd_ptr&lt;T&gt; ("read pointer") points to an cache 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&lt;T&gt; is constructed from an T pointer or reference. Once
+ a rd_ptr&lt;T&gt; has been constructed, the associated cache is opened
+ for reading.
+ </p>
+<p>
+ It is not safe to derreference a rd_ptr&lt;T&gt; after having assigned
+ the same T to a wr_ptr&lt;T&gt;. 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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&amp;</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">ptr</span><span class="special">);</span>
+
+ <span class="identifier">rd_ptr</span><span class="special">(</span><span class="identifier">transaction</span> <span class="special">&amp;</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">obj</span><span class="special">);</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span>
+ <span class="keyword">explicit</span> <span class="identifier">rd_ptr</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">Y</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">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span>
+ <span class="keyword">explicit</span> <span class="identifier">rd_ptr</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">Y</span> <span class="keyword">const</span><span class="special">&amp;</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">get</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</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">-&gt;()</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><h5 class="title">
+<a name="toward_boost_stm.reference.non_transactional_objects.non_tx_smart_ptr_hpp.template_class__upgrd_ptr___"></a><a href="non_transactional_objects.html#toward_boost_stm.reference.non_transactional_objects.non_tx_smart_ptr_hpp.template_class__upgrd_ptr___" title="Template
+ Class upgrd_ptr&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">upgrd_ptr</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<p>
+ A upgrd_ptr&lt;T&gt; ("upgradable pointer") points to an cache
+ that the current transaction has opened for read only access. You can
+ only call const method of the wrapped type through a upgradable pointer.
+ </p>
+<p>
+ A upgrd_ptr&lt;T&gt; is constructed from an T pointer or reference through
+ a constructor having also the transaction as parameter. Once a upgrd_ptr&lt;T&gt;
+ has been constructed, an a cache of T can is opened for reading.
+ </p>
+<p>
+ It is safe to derreference a upgrd_ptr&lt;T&gt; after having assigned
+ the same T to a wr_ptr&lt;T&gt;.
+ </p>
+<p>
+ A upgrd_ptr&lt;T&gt; can be upgraded to a wr_ptr&lt;T&gt; through a constructor.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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="identifier">upgrd_ptr</span><span class="special">(</span><span class="identifier">transaction</span> <span class="special">&amp;</span><span class="identifier">t</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">upgrd_ptr</span><span class="special">(</span><span class="identifier">transaction</span> <span class="special">&amp;</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">ref</span><span class="special">);</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span> <span class="identifier">upgrd_ptr</span> <span class="special">&amp;</span> <span class="keyword">operator</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">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span> <span class="identifier">upgrd_ptr</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">Y</span><span class="special">&amp;</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">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">&amp;</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">-&gt;()</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">detail</span><span class="special">::</span><span class="identifier">cache</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;*</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><h5 class="title">
+<a name="toward_boost_stm.reference.non_transactional_objects.non_tx_smart_ptr_hpp.template_class__wr_ptr___"></a><a href="non_transactional_objects.html#toward_boost_stm.reference.non_transactional_objects.non_tx_smart_ptr_hpp.template_class__wr_ptr___" title="Template
+ Class wr_ptr&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">wr_ptr</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<p>
+ A wr_ptr&lt;T&gt; ("write pointer") points to a cache that
+ the current transaction has opened for writing.
+ </p>
+<p>
+ A wr_ptr&lt;T&gt; is initialized explicitly from an T pointer or reference.
+ </p>
+<p>
+ A wr_ptr&lt;T&gt; can also be explicitly constructed from a upgrd_ptr&lt;T&gt;
+ as an upgrade-to-writable operation.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&amp;</span><span class="identifier">t</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">wr_ptr</span><span class="special">(</span><span class="identifier">transaction</span> <span class="special">&amp;</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">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">&amp;</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">-&gt;();</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>
+</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="transactional_objects.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>

Modified: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/non_tx_smart_ptr_hpp.html
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/non_tx_smart_ptr_hpp.html (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/non_tx_smart_ptr_hpp.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -9,8 +9,7 @@
 <link rel="up" href="../reference.html" title="Reference">
 <link rel="prev" href="tx_smart_ptr_hpp.html" title=" Header
       &lt;boost/stm/tx_smart_ptr.hpp&gt;">
-<link rel="next" href="transaction_bookkeeping_hpp.html" title="
- Header &lt;boost/stm/transaction_bookkeeping.hpp&gt;">
+<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>
@@ -23,7 +22,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="tx_smart_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="transaction_bookkeeping_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="tx_smart_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="../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">
@@ -194,7 +193,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="tx_smart_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="transaction_bookkeeping_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="tx_smart_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="../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/stm_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/stm_hpp.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -0,0 +1,70 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Header &lt;boost/stm.hpp&gt;</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<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="basics.html" title="Basics">
+</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="basics.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.stm_hpp"></a> Header <boost/stm.hpp>
+</h3></div></div></div>
+<p>
+ This file includes all the TBoost.STM public files.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">detail</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</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">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</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="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">cache_fct</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">contention_manager</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">datatypes</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</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">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</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">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">move</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">non_tx</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">non_tx</span><span class="special">/</span><span class="identifier">smart_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">shallow_transaction_object</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">synchro</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</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">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</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">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</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">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">transaction_object_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">transactional_object</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</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">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">tx</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">tx</span><span class="special">/</span><span class="identifier">pointer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">tx</span><span class="special">/</span><span class="identifier">smart_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</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="../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="basics.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Modified: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transaction_bookkeeping_hpp.html
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transaction_bookkeeping_hpp.html (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transaction_bookkeeping_hpp.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -7,9 +7,10 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
 <link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
 <link rel="up" href="../reference.html" title="Reference">
-<link rel="prev" href="non_tx_smart_ptr_hpp.html" title=" Header
- &lt;boost/stm/non_tx_smart_ptr.hpp&gt;">
-<link rel="next" href="../examples.html" title="Examples">
+<link rel="prev" href="transaction_hpp.html" title=" Header
+ &lt;boost/stm/transaction.hpp&gt;">
+<link rel="next" href="transaction_object_hpp.html" title=" Header
+ &lt;boost/stm/transaction_object.hpp&gt;">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -22,7 +23,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="non_tx_smart_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="../examples.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<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="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">
@@ -118,7 +119,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="non_tx_smart_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="../examples.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<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="transaction_object_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transaction_hpp.html
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transaction_hpp.html (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transaction_hpp.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -9,8 +9,8 @@
 <link rel="up" href="../reference.html" title="Reference">
 <link rel="prev" href="language_like_hpp.html" title=" Header
       &lt;boost/stm/language_like.hpp&gt;">
-<link rel="next" href="transaction_object_hpp.html" title=" Header
- &lt;boost/stm/transaction_object.hpp&gt;">
+<link rel="next" href="transaction_bookkeeping_hpp.html" title="
+ Header &lt;boost/stm/transaction_bookkeeping.hpp&gt;">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -23,7 +23,7 @@
 </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="transaction_object_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<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="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">
@@ -1147,7 +1147,7 @@
 </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="transaction_object_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<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="transaction_bookkeeping_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transaction_object_hpp.html
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transaction_object_hpp.html (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transaction_object_hpp.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -7,8 +7,8 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
 <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
- &lt;boost/stm/transaction.hpp&gt;">
+<link rel="prev" href="transaction_bookkeeping_hpp.html" title="
+ Header &lt;boost/stm/transaction_bookkeeping.hpp&gt;">
 <link rel="next" href="transactional_object_hpp.html" title="
       Header &lt;boost/stm/transactional_object.hpp&gt;">
 </head>
@@ -23,7 +23,7 @@
 </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="transactional_object_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="transaction_bookkeeping_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="transactional_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">
@@ -185,7 +185,7 @@
 </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="transactional_object_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="transaction_bookkeeping_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="transactional_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_ptr_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transaction_object_ptr_hpp.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -0,0 +1,46 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>
+ Header &lt;boost/transaction_object_ptr.hpp&gt;</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="transactional_objects.html" title="Transactional
+ objects">
+<link rel="next" href="transactional_object_hpp.html" title="
+ Header &lt;boost/stm/transactional_object.hpp&gt;">
+</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="transactional_objects.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="transactional_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_object_ptr_hpp"></a><a href="transaction_object_ptr_hpp.html" title="
+ Header &lt;boost/transaction_object_ptr.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">transaction_object_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
+</h3></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="transactional_objects.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="transactional_object_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Modified: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transactional_object_hpp.html
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transactional_object_hpp.html (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transactional_object_hpp.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -7,9 +7,10 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
 <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
- &lt;boost/stm/transaction_object.hpp&gt;">
-<link rel="next" href="tx_ptr_hpp.html" title=" Header &lt;boost/stm/tx_ptr.hpp&gt;">
+<link rel="prev" href="transaction_object_ptr_hpp.html" title="
+ Header &lt;boost/transaction_object_ptr.hpp&gt;">
+<link rel="next" href="non_transactional_objects.html" title="Non
+ transactional objects">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -22,7 +23,7 @@
 </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="tx_ptr_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="transaction_object_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="non_transactional_objects.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">
@@ -41,6 +42,44 @@
 <dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_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>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_ptr_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_ptr_hpp.template_class__read_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">read_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_ptr_hpp.template_class__write_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">write_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_smart_ptr_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">tx_smart_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_smart_ptr_hpp.template_class__tx_obj___">Template
+ Class <code class="computeroutput"><span class="identifier">tx_obj</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_smart_ptr_hpp.template_class__tx_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">tx_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_smart_ptr_hpp.template_class__rd_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">rd_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_smart_ptr_hpp.template_class__upgrd_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">upgrd_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_smart_ptr_hpp.template_class__wr_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">wr_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.non_txs_smart_ptr_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">non_tx_smart_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.non_txs_smart_ptr_hpp.template_class__rd_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">rd_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.non_txs_smart_ptr_hpp.template_class__upgrd_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">upgrd_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.non_txs_smart_ptr_hpp.template_class__wr_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">wr_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.tx_numeric_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tx</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.tx_pointer_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tx</span><span class="special">/</span><span class="identifier">pointer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.tx_smart_ptr_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tx</span><span class="special">/</span><span class="identifier">smart_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</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">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">transactional_object</span><span class="special">;</span>
@@ -167,6 +206,522 @@
 </pre>
 </div>
 </div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.transactional_object_hpp.txs_ptr_hpp"></a><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_ptr_hpp" title="
+ Header &lt;boost/stm/tx_ptr.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_ptr_hpp.template_class__read_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">read_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_ptr_hpp.template_class__write_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">write_ptr</span><span class="special">&lt;&gt;</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">read_ptr</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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><h5 class="title">
+<a name="toward_boost_stm.reference.transactional_object_hpp.txs_ptr_hpp.template_class__read_ptr___"></a><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_ptr_hpp.template_class__read_ptr___" title="Template
+ Class read_ptr&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">read_ptr</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&amp;</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</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">&amp;</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">-&gt;()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">inline</span> <span class="identifier">transaction</span> <span class="special">&amp;</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><h5 class="title">
+<a name="toward_boost_stm.reference.transactional_object_hpp.txs_ptr_hpp.template_class__write_ptr___"></a><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_ptr_hpp.template_class__write_ptr___" title="Template
+ Class write_ptr&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">write_ptr</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&amp;</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">&amp;</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">&amp;</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">-&gt;();</span>
+</pre>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.transactional_object_hpp.txs_smart_ptr_hpp"></a><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_smart_ptr_hpp" title="
+ Header &lt;boost/stm/tx_smart_ptr.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">tx_smart_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_smart_ptr_hpp.template_class__tx_obj___">Template
+ Class <code class="computeroutput"><span class="identifier">tx_obj</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_smart_ptr_hpp.template_class__tx_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">tx_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_smart_ptr_hpp.template_class__rd_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">rd_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_smart_ptr_hpp.template_class__upgrd_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">upgrd_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_smart_ptr_hpp.template_class__wr_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">wr_ptr</span><span class="special">&lt;&gt;</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">tx_obj</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">tx_obj</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</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">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">tx_obj</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">tx_obj</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">tx_obj</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">tx_obj</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="identifier">b</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">tx_ptr</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="identifier">b</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">void</span> <span class="identifier">delete_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&amp;</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</span>
+ <span class="keyword">static</span> <span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">tx_static_cast</span><span class="special">(</span><span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</span>
+ <span class="keyword">static</span> <span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;*</span> <span class="identifier">tx_dynamic_cast</span><span class="special">(</span><span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">rd_ptr</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="identifier">rd_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">make_rd_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&amp;</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="identifier">rd_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">make_rd_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&amp;</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">tx_obj</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">ref</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="identifier">rd_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">make_rd_ptr</span><span class="special">(</span><span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="identifier">rd_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">make_rd_ptr</span><span class="special">(</span><span class="identifier">tx_obj</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">ref</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">void</span> <span class="identifier">delete_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&amp;</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">rd_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">upgrd_ptr</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">void</span> <span class="identifier">delete_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&amp;</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">upgrd_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">ptr</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">wr_ptr</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="identifier">wr_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">make_wr_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&amp;</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="identifier">wr_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">make_wr_ptr</span><span class="special">(</span><span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">void</span> <span class="identifier">delete_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&amp;</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">wr_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</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><h5 class="title">
+<a name="toward_boost_stm.reference.transactional_object_hpp.txs_smart_ptr_hpp.template_class__tx_obj___"></a><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_smart_ptr_hpp.template_class__tx_obj___" title="Template
+ Class tx_obj&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">tx_obj</span><span class="special">&lt;&gt;</span></code></a>
+</h5></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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="identifier">ctypename</span> <span class="identifier">Y</span><span class="special">&gt;</span> <span class="identifier">tx_obj</span><span class="special">(</span><span class="identifier">tx_obj</span><span class="special">&lt;</span><span class="identifier">Y</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">r</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">&gt;</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">-&gt;();</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="keyword">operator</span><span class="special">-&gt;()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">*();</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</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">&amp;</span> <span class="identifier">ref</span><span class="special">();</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</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">&amp;</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">&amp;</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">&amp;</span> <span class="keyword">operator</span><span class="special">+=(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</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">&amp;</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><h5 class="title">
+<a name="toward_boost_stm.reference.transactional_object_hpp.txs_smart_ptr_hpp.template_class__tx_ptr___"></a><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_smart_ptr_hpp.template_class__tx_ptr___" title="Template
+ Class tx_ptr&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">tx_ptr</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<p>
+ a tx_ptr&lt;T&gt; is an smart pointer to a transactional_object&lt;T&gt;
+ (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&lt;T&gt; 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&lt;T&gt;, wr_ptr&lt;T&gt;, or upgrd_ptr&lt;T&gt;.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;*</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="identifier">r</span><span class="special">);</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span> <span class="identifier">tx_ptr</span><span class="special">(</span><span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">Y</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">r</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span> <span class="identifier">tx_ptr</span><span class="special">(</span><span class="identifier">rd_ptr</span><span class="special">&lt;</span><span class="identifier">Y</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">r</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span> <span class="identifier">tx_ptr</span><span class="special">(</span><span class="identifier">wr_ptr</span><span class="special">&lt;</span><span class="identifier">Y</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">r</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span> <span class="identifier">tx_ptr</span><span class="special">(</span><span class="identifier">upgrd_ptr</span><span class="special">&lt;</span><span class="identifier">Y</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">r</span><span class="special">);</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span> <span class="identifier">tx_ptr</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">transactional_object</span><span class="special">&lt;</span><span class="identifier">Y</span><span class="special">&gt;*</span> <span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span> <span class="identifier">tx_ptr</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">Y</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</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">-&gt;()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span><span class="special">&amp;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;*</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">&amp;</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><h5 class="title">
+<a name="toward_boost_stm.reference.transactional_object_hpp.txs_smart_ptr_hpp.template_class__rd_ptr___"></a><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_smart_ptr_hpp.template_class__rd_ptr___" title="Template
+ Class rd_ptr&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">rd_ptr</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<p>
+ A rd_ptr&lt;T&gt; ("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&lt;T&gt; is constructed from an tx_ptr&lt;T&gt; through an explicit
+ constructor. Once a rd_ptr&lt;T&gt; has been constructed, an tx_ptr&lt;T&gt;
+ can be opened for reading simply by assignment (operator=()) into the
+ constructed rd_ptr&lt;T&gt;.
+ </p>
+<p>
+ It is not safe to derreference a rd_ptr&lt;T&gt; after having assigned
+ the same tx_ptr&lt;T&gt; to a wr_ptr&lt;T&gt;. 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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&amp;</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</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">&amp;</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">tx_obj</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">tx_obj</span><span class="special">);</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span> <span class="identifier">rd_ptr</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">Y</span><span class="special">&gt;</span> <span class="identifier">r</span><span class="special">);</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span> <span class="identifier">rd_ptr</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">tx_obj</span><span class="special">&lt;</span><span class="identifier">Y</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</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">&amp;</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">-&gt;()</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><h5 class="title">
+<a name="toward_boost_stm.reference.transactional_object_hpp.txs_smart_ptr_hpp.template_class__upgrd_ptr___"></a><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_smart_ptr_hpp.template_class__upgrd_ptr___" title="Template
+ Class upgrd_ptr&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">upgrd_ptr</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<p>
+ A upgrd_ptr&lt;T&gt; ("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&lt;T&gt; is constructed from an tx_ptr&lt;T&gt; through a
+ constructor having also the transaction as parameter. Once a rd_ptr&lt;T&gt;
+ has been constructed, an tx_ptr&lt;T&gt; can be opened for reading simply
+ by assignment (operator=()) into the constructed rd_ptr&lt;T&gt;.
+ </p>
+<p>
+ It is safe to derreference a rd_ptr&lt;T&gt; after having assigned the
+ same tx_ptr&lt;T&gt; to a wr_ptr&lt;T&gt;.
+ </p>
+<p>
+ A upgrd_ptr&lt;T&gt; can be upgraded to a wr_ptr&lt;T&gt; through a constructor.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&amp;</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">tx_obj</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span>
+ <span class="identifier">upgrd_ptr</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">Y</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</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">&amp;</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">-&gt;()</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;*</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><h5 class="title">
+<a name="toward_boost_stm.reference.transactional_object_hpp.txs_smart_ptr_hpp.template_class__wr_ptr___"></a><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.txs_smart_ptr_hpp.template_class__wr_ptr___" title="Template
+ Class wr_ptr&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">wr_ptr</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<p>
+ A wr_ptr&lt;T&gt; ("write pointer") points to a shared object
+ that the current transaction has opened for writing.
+ </p>
+<p>
+ A wr_ptr&lt;T&gt; is initialized explicitly from an tx_ptr&lt;T&gt;.
+ </p>
+<p>
+ A wr_ptr&lt;T&gt; can also be explicitly constructed from a upgrd_ptr&lt;T&gt;
+ as an upgrade-to-writable operation.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&amp;</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</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">&amp;</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">upgrd_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</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">&amp;</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">-&gt;();</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>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.transactional_object_hpp.non_txs_smart_ptr_hpp"></a><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.non_txs_smart_ptr_hpp" title="
+ Header &lt;boost/stm/non_tx_smart_ptr.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">non_tx_smart_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.non_txs_smart_ptr_hpp.template_class__rd_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">rd_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.non_txs_smart_ptr_hpp.template_class__upgrd_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">upgrd_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.non_txs_smart_ptr_hpp.template_class__wr_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">wr_ptr</span><span class="special">&lt;&gt;</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">namespace</span> <span class="identifier">non_tx</span> <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">rd_ptr</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">rd_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">make_rd_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&amp;</span> <span class="identifier">tx</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">rd_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">make_rd_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&amp;</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">ref</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">rd_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">make_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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">rd_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">make_rd_ptr</span><span class="special">(</span><span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">ref</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">upgrd_ptr</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">void</span> <span class="identifier">delete_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&amp;</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">upgrd_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">ptr</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">wr_ptr</span><span class="special">;</span>
+<span class="special">}}}</span>
+</pre>
+<p>
+ These smart pointers points to an unspecified cache type which inherits
+ from base_transactional object. This cache is obtained from an internal
+ thread safe cache map.
+ </p>
+<p>
+ As the the non_tx smart pointers need to lookup on a cache they must be
+ used only when you need to access to a non transactional variable on the
+ context of a transaction. Otherwise, please use tx_ptr&lt;&gt; or the mixin
+ transaction_object&lt;&gt;.
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transactional_object_hpp.non_txs_smart_ptr_hpp.template_class__rd_ptr___"></a><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.non_txs_smart_ptr_hpp.template_class__rd_ptr___" title="Template
+ Class rd_ptr&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">rd_ptr</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<p>
+ A rd_ptr&lt;T&gt; ("read pointer") points to an cache 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&lt;T&gt; is constructed from an T pointer or reference. Once
+ a rd_ptr&lt;T&gt; has been constructed, the associated cache is opened
+ for reading.
+ </p>
+<p>
+ It is not safe to derreference a rd_ptr&lt;T&gt; after having assigned
+ the same T to a wr_ptr&lt;T&gt;. 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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&amp;</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">ptr</span><span class="special">);</span>
+
+ <span class="identifier">rd_ptr</span><span class="special">(</span><span class="identifier">transaction</span> <span class="special">&amp;</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">obj</span><span class="special">);</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span>
+ <span class="keyword">explicit</span> <span class="identifier">rd_ptr</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">Y</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">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span>
+ <span class="keyword">explicit</span> <span class="identifier">rd_ptr</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">Y</span> <span class="keyword">const</span><span class="special">&amp;</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">get</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</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">-&gt;()</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><h5 class="title">
+<a name="toward_boost_stm.reference.transactional_object_hpp.non_txs_smart_ptr_hpp.template_class__upgrd_ptr___"></a><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.non_txs_smart_ptr_hpp.template_class__upgrd_ptr___" title="Template
+ Class upgrd_ptr&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">upgrd_ptr</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<p>
+ A upgrd_ptr&lt;T&gt; ("upgradable pointer") points to an cache
+ that the current transaction has opened for read only access. You can
+ only call const method of the wrapped type through a upgradable pointer.
+ </p>
+<p>
+ A upgrd_ptr&lt;T&gt; is constructed from an T pointer or reference through
+ a constructor having also the transaction as parameter. Once a upgrd_ptr&lt;T&gt;
+ has been constructed, an a cache of T can is opened for reading.
+ </p>
+<p>
+ It is safe to derreference a upgrd_ptr&lt;T&gt; after having assigned
+ the same T to a wr_ptr&lt;T&gt;.
+ </p>
+<p>
+ A upgrd_ptr&lt;T&gt; can be upgraded to a wr_ptr&lt;T&gt; through a constructor.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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="identifier">upgrd_ptr</span><span class="special">(</span><span class="identifier">transaction</span> <span class="special">&amp;</span><span class="identifier">t</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">upgrd_ptr</span><span class="special">(</span><span class="identifier">transaction</span> <span class="special">&amp;</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">ref</span><span class="special">);</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span> <span class="identifier">upgrd_ptr</span> <span class="special">&amp;</span> <span class="keyword">operator</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">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span> <span class="identifier">upgrd_ptr</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">Y</span><span class="special">&amp;</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">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">&amp;</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">-&gt;()</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">detail</span><span class="special">::</span><span class="identifier">cache</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;*</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><h5 class="title">
+<a name="toward_boost_stm.reference.transactional_object_hpp.non_txs_smart_ptr_hpp.template_class__wr_ptr___"></a><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.non_txs_smart_ptr_hpp.template_class__wr_ptr___" title="Template
+ Class wr_ptr&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">wr_ptr</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<p>
+ A wr_ptr&lt;T&gt; ("write pointer") points to a cache that
+ the current transaction has opened for writing.
+ </p>
+<p>
+ A wr_ptr&lt;T&gt; is initialized explicitly from an T pointer or reference.
+ </p>
+<p>
+ A wr_ptr&lt;T&gt; can also be explicitly constructed from a upgrd_ptr&lt;T&gt;
+ as an upgrade-to-writable operation.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&amp;</span><span class="identifier">t</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">wr_ptr</span><span class="special">(</span><span class="identifier">transaction</span> <span class="special">&amp;</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">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">&amp;</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">-&gt;();</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>
+<div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.transactional_object_hpp.tx_numeric_hpp"></a><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.tx_numeric_hpp" title="
+ Header &lt;boost/tx/numeric.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tx</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</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.transactional_object_hpp.tx_pointer_hpp"></a><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.tx_pointer_hpp" title="
+ Header &lt;boost/tx/pointer.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tx</span><span class="special">/</span><span class="identifier">pointer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</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.transactional_object_hpp.tx_smart_ptr_hpp"></a><a href="transactional_object_hpp.html#toward_boost_stm.reference.transactional_object_hpp.tx_smart_ptr_hpp" title="
+ Header &lt;boost/tx/smart_ptr.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tx</span><span class="special">/</span><span class="identifier">smart_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</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>
@@ -178,7 +733,7 @@
 </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="tx_ptr_hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="transaction_object_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="non_transactional_objects.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/transactional_objects.html
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/reference/transactional_objects.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -0,0 +1,938 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Transactional
+ objects</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="../../index.html" title="Chapter 1. Toward.Boost.STM">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="contention_managers.html" title="Contention
+ managers">
+<link rel="next" href="non_transactional_objects.html" title="Non
+ transactional objects">
+</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="contention_managers.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="non_transactional_objects.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.transactional_objects"></a><a href="transactional_objects.html" title="Transactional
+ objects">Transactional
+ objects</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.shallow_transaction_object_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">shallow_transaction_object</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dd><dl><dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.shallow_transaction_object_hpp.template_class__shallow_transaction_object___">Template
+ Class <code class="computeroutput"><span class="identifier">shallow_transaction_object</span><span class="special">&lt;&gt;</span></code></a></span></dt></dl></dd>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.transaction_object_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.transaction_object_hpp.template_class__transaction_object___">Template
+ Class <code class="computeroutput"><span class="identifier">transaction_object</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.transaction_object_hpp.template_class__native_trans___">Template
+ Class <code class="computeroutput"><span class="identifier">native_trans</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.transaction_object_ptr_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">transaction_object_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.transactional_object_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">transactional_object</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dd><dl><dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.transactional_object_hpp.template_class__transactional_object___">Template
+ Class <code class="computeroutput"><span class="identifier">transactional_object</span><span class="special">&lt;&gt;</span></code></a></span></dt></dl></dd>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.txs_ptr_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.txs_ptr_hpp.template_class__read_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">read_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.txs_ptr_hpp.template_class__write_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">write_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_numeric_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">tx</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dd><dl><dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_numeric_hpp.template_class__tx__numeric___">Template
+ Class <code class="computeroutput"><span class="identifier">tx</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">&lt;&gt;</span></code></a></span></dt></dl></dd>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_pointer_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">tx</span><span class="special">/</span><span class="identifier">pointer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_pointer_hpp.template_class__tx__pointer___">Template
+ Class <code class="computeroutput"><span class="identifier">tx</span><span class="special">::</span><span class="identifier">pointer</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_pointer_hpp.template_class__tx__pointer_to_member___">Template
+ Class <code class="computeroutput"><span class="identifier">tx</span><span class="special">::</span><span class="identifier">pointer_to_member</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_smart_ptr_hpp">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">tx</span><span class="special">/</span><span class="identifier">smart_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_smart_ptr_hpp.template_class__tx_obj___">Template
+ Class <code class="computeroutput"><span class="identifier">tx_obj</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_smart_ptr_hpp.template_class__tx_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">tx_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_smart_ptr_hpp.template_class__rd_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">rd_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_smart_ptr_hpp.template_class__upgrd_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">upgrd_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_smart_ptr_hpp.template_class__wr_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">wr_ptr</span><span class="special">&lt;&gt;</span></code></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.reference.transactional_objects.shallow_transaction_object_hpp"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.shallow_transaction_object_hpp" title="
+ Header &lt;boost/stm/shallow_transaction_object.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">shallow_transaction_object</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.shallow_transaction_object_hpp.template_class__shallow_transaction_object___">Template
+ Class <code class="computeroutput"><span class="identifier">shallow_transaction_object</span><span class="special">&lt;&gt;</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">&lt;</span><span class="keyword">class</span> <span class="identifier">Derived</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Base</span><span class="special">=</span><span class="identifier">base_transaction_object</span><span class="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">shallow_transaction_object</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.transactional_objects.shallow_transaction_object_hpp.template_class__shallow_transaction_object___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.shallow_transaction_object_hpp.template_class__shallow_transaction_object___" title="Template
+ Class shallow_transaction_object&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">shallow_transaction_object</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.shallow_transaction_object_hpp.template_class__shallow_transaction_object___.virtual_function__clone___">Virtual
+ function <code class="computeroutput"><span class="identifier">clone</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.shallow_transaction_object_hpp.template_class__shallow_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="transactional_objects.html#toward_boost_stm.reference.transactional_objects.shallow_transaction_object_hpp.template_class__shallow_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="transactional_objects.html#toward_boost_stm.reference.transactional_objects.shallow_transaction_object_hpp.template_class__shallow_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 <code class="computeroutput"><span class="identifier">shallow_transaction_object</span></code>,
+ 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">&lt;</span><span class="keyword">class</span> <span class="identifier">Derived</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Base</span><span class="special">=</span><span class="identifier">base_transaction_object</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">shallow_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="identifier">base_transaction_object</span><span class="special">*</span> <span class="identifier">clone</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="keyword">const</span><span class="special">;</span>
+ <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">cache_deallocate</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><h6 class="title">
+<a name="toward_boost_stm.reference.transactional_objects.shallow_transaction_object_hpp.template_class__shallow_transaction_object___.virtual_function__clone___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.shallow_transaction_object_hpp.template_class__shallow_transaction_object___.virtual_function__clone___" title="Virtual
+ function clone()">Virtual
+ function <code class="computeroutput"><span class="identifier">clone</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">virtual</span> <span class="identifier">base_transaction_object</span><span class="special">*</span> <span class="identifier">clone</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="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ The clone() method calls to the free function cache_new_copy which
+ allocates enough memory for the new object and then do a memcpy by
+ default.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_stm.reference.transactional_objects.shallow_transaction_object_hpp.template_class__shallow_transaction_object___.virtual_function__copy_state___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.shallow_transaction_object_hpp.template_class__shallow_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>
+</h6></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_copy which
+ do a memcpy by default.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_stm.reference.transactional_objects.shallow_transaction_object_hpp.template_class__shallow_transaction_object___.virtual_function__move_state___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.shallow_transaction_object_hpp.template_class__shallow_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>
+</h6></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_copy which
+ do a memcpy by default.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_stm.reference.transactional_objects.shallow_transaction_object_hpp.template_class__shallow_transaction_object___.virtual_function__cache_deallocate___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.shallow_transaction_object_hpp.template_class__shallow_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>
+</h6></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>
+</pre>
+<p>
+ The cache_deallocate() method call to the free function cache_deallocate
+ which do a memcpy by default.
+ </p>
+</div>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.transactional_objects.transaction_object_hpp"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.transaction_object_hpp" title="
+ Header &lt;boost/stm/transaction_object.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.transaction_object_hpp.template_class__transaction_object___">Template
+ Class <code class="computeroutput"><span class="identifier">transaction_object</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.transaction_object_hpp.template_class__native_trans___">Template
+ Class <code class="computeroutput"><span class="identifier">native_trans</span><span class="special">&lt;&gt;</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">&lt;</span><span class="keyword">class</span> <span class="identifier">Derived</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">transaction_object</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">native_trans</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.transactional_objects.transaction_object_hpp.template_class__transaction_object___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.transaction_object_hpp.template_class__transaction_object___" title="Template
+ Class transaction_object&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">transaction_object</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.transaction_object_hpp.template_class__transaction_object___.virtual_function__clone___">Virtual
+ function <code class="computeroutput"><span class="identifier">clone</span><span class="special">()</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.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="transactional_objects.html#toward_boost_stm.reference.transactional_objects.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="transactional_objects.html#toward_boost_stm.reference.transactional_objects.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">&lt;</span><span class="keyword">class</span> <span class="identifier">Derived</span><span class="special">&gt;</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="identifier">base_transaction_object</span><span class="special">*</span> <span class="identifier">clone</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="keyword">const</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><h6 class="title">
+<a name="toward_boost_stm.reference.transactional_objects.transaction_object_hpp.template_class__transaction_object___.virtual_function__clone___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.transaction_object_hpp.template_class__transaction_object___.virtual_function__clone___" title="Virtual
+ function clone()">Virtual
+ function <code class="computeroutput"><span class="identifier">clone</span><span class="special">()</span></code></a>
+</h6></div></div></div>
+<pre class="programlisting"><span class="keyword">virtual</span> <span class="identifier">base_transaction_object</span><span class="special">*</span> <span class="identifier">clone</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="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ The clone() creates a new Derived instace using the copy constructor.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_stm.reference.transactional_objects.transaction_object_hpp.template_class__transaction_object___.virtual_function__copy_state___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.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>
+</h6></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() assigns the rhs to this instace using the copy-assignement
+ operator.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="toward_boost_stm.reference.transactional_objects.transaction_object_hpp.template_class__transaction_object___.virtual_function__move_state___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.transactional_objects.transaction_object_hpp.template_class__transaction_object___.virtual_function__cache_deallocate___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.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>
+</h6></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>
+</pre>
+<p>
+ The cache_deallocate() delete this instace using the delete operator.
+ </p>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="toward_boost_stm.reference.transactional_objects.transaction_object_hpp.template_class__native_trans___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.transaction_object_hpp.template_class__native_trans___" title="Template
+ Class native_trans&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">native_trans</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span> <span class="identifier">native_trans</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&gt;</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">&amp;</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">&amp;</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">&amp;&amp;</span><span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">native_trans</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">native_trans</span> <span class="special">&amp;&amp;</span><span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">native_trans</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span><span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">native_trans</span><span class="special">&amp;</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">&amp;</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">&amp;</span> <span class="keyword">operator</span><span class="special">+=(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</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">&amp;</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">&amp;</span> <span class="identifier">value</span><span class="special">();</span>
+ <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</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>
+<div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.transactional_objects.transaction_object_ptr_hpp"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.transaction_object_ptr_hpp" title="
+ Header &lt;boost/stm/transaction_object_ptr.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">transaction_object_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</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.transactional_objects.transactional_object_hpp"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.transactional_object_hpp" title="
+ Header &lt;boost/stm/transactional_object.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">transactional_object</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.transactional_object_hpp.template_class__transactional_object___">Template
+ Class <code class="computeroutput"><span class="identifier">transactional_object</span><span class="special">&lt;&gt;</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">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">transactional_object</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">static</span> <span class="identifier">transactional_object</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;*</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">&lt;</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">&gt;</span>
+ <span class="keyword">static</span> <span class="identifier">transactional_object</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;*</span> <span class="identifier">tx_static_cast</span><span class="special">(</span><span class="identifier">transactional_object</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;*</span> <span class="identifier">ptr</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</span>
+ <span class="keyword">static</span> <span class="identifier">transactional_object</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;*</span> <span class="identifier">tx_dynamic_cast</span><span class="special">(</span><span class="identifier">transactional_object</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;*</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><h5 class="title">
+<a name="toward_boost_stm.reference.transactional_objects.transactional_object_hpp.template_class__transactional_object___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.transactional_object_hpp.template_class__transactional_object___" title="Template
+ Class transactional_object&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">transactional_object</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.transactional_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="transactional_objects.html#toward_boost_stm.reference.transactional_objects.transactional_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="transactional_objects.html#toward_boost_stm.reference.transactional_objects.transactional_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">&lt;</span><span class="identifier">T</span><span class="special">&gt;</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_copy&lt;T&gt; 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_copy&lt;T&gt; 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">&lt;</span><span class="identifier">D</span><span class="special">&gt;</span></code> dont inherits from <code class="computeroutput"><span class="identifier">transactional_object</span><span class="special">&lt;</span><span class="identifier">B</span><span class="special">&gt;</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">&lt;</span><span class="identifier">D</span><span class="special">&gt;*</span> <span class="identifier">d</span><span class="special">=...;</span>
+<span class="identifier">transactional_object</span><span class="special">&lt;</span><span class="identifier">B</span><span class="special">&gt;*</span> <span class="identifier">b</span><span class="special">=</span><span class="identifier">tx_static_cast</span><span class="special">&lt;</span><span class="identifier">B</span><span class="special">&gt;(</span><span class="identifier">d</span><span class="special">);</span>
+
+<span class="identifier">transactional_object</span><span class="special">&lt;</span><span class="identifier">B</span><span class="special">&gt;*</span> <span class="identifier">b</span><span class="special">=...;</span>
+<span class="identifier">transactional_object</span><span class="special">&lt;</span><span class="identifier">D</span><span class="special">&gt;*</span> <span class="identifier">d</span><span class="special">=</span><span class="identifier">tx_dynamic_cast</span><span class="special">&lt;</span><span class="identifier">B</span><span class="special">&gt;(</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">r</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">&gt;</span>
+ <span class="identifier">transactional_object</span><span class="special">(</span><span class="identifier">T1</span> <span class="keyword">const</span> <span class="special">&amp;</span><span class="identifier">p1</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</span>
+ <span class="identifier">transactional_object</span><span class="special">(</span><span class="identifier">T1</span> <span class="keyword">const</span> <span class="special">&amp;</span><span class="identifier">p1</span><span class="special">,</span> <span class="identifier">T2</span> <span class="keyword">const</span> <span class="special">&amp;</span><span class="identifier">p2</span><span class="special">);</span>
+
+ <span class="identifier">transactional_object</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">transactional_object</span> <span class="keyword">const</span> <span class="special">&amp;</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><h6 class="title">
+<a name="toward_boost_stm.reference.transactional_objects.transactional_object_hpp.template_class__transactional_object___.virtual_function__copy_state___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.transactional_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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.transactional_objects.transactional_object_hpp.template_class__transactional_object___.virtual_function__move_state___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.transactional_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>
+</h6></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><h6 class="title">
+<a name="toward_boost_stm.reference.transactional_objects.transactional_object_hpp.template_class__transactional_object___.virtual_function__cache_deallocate___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.transactional_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>
+</h6></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>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.transactional_objects.txs_ptr_hpp"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.txs_ptr_hpp" title="
+ Header &lt;boost/stm/tx_ptr.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.txs_ptr_hpp.template_class__read_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">read_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.txs_ptr_hpp.template_class__write_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">write_ptr</span><span class="special">&lt;&gt;</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">read_ptr</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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><h5 class="title">
+<a name="toward_boost_stm.reference.transactional_objects.txs_ptr_hpp.template_class__read_ptr___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.txs_ptr_hpp.template_class__read_ptr___" title="Template
+ Class read_ptr&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">read_ptr</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&amp;</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</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">&amp;</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">-&gt;()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">inline</span> <span class="identifier">transaction</span> <span class="special">&amp;</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><h5 class="title">
+<a name="toward_boost_stm.reference.transactional_objects.txs_ptr_hpp.template_class__write_ptr___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.txs_ptr_hpp.template_class__write_ptr___" title="Template
+ Class write_ptr&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">write_ptr</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&amp;</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">&amp;</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">&amp;</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">-&gt;();</span>
+</pre>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="toward_boost_stm.reference.transactional_objects.tx_numeric_hpp"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_numeric_hpp" title="
+ Header &lt;boost/stm/tx/numeric.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">tx</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_numeric_hpp.template_class__tx__numeric___">Template
+ Class <code class="computeroutput"><span class="identifier">tx</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">&lt;&gt;</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">namespace</span> <span class="identifier">tx</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">numeric</span><span class="special">;</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">numeric</span><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">&gt;</span> <span class="identifier">boolean</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">numeric</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">&gt;</span> <span class="identifier">char_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">numeric</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">char</span><span class="special">&gt;</span> <span class="identifier">uchar_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">numeric</span><span class="special">&lt;</span><span class="keyword">short</span><span class="special">&gt;</span> <span class="identifier">short_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">numeric</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">short</span><span class="special">&gt;</span> <span class="identifier">ushort_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">numeric</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">int_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">numeric</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">uint_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">numeric</span><span class="special">&lt;</span><span class="keyword">long</span><span class="special">&gt;</span> <span class="identifier">long_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">numeric</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">long</span><span class="special">&gt;</span> <span class="identifier">ulong_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">numeric</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="identifier">float_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">numeric</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">double_t</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.transactional_objects.tx_numeric_hpp.template_class__tx__numeric___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_numeric_hpp.template_class__tx__numeric___" title="Template
+ Class tx::numeric&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">tx</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">numeric</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">transaction_object</span><span class="special">&lt;</span> <span class="identifier">numeric</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+<span class="special">{</span>
+<span class="keyword">protected</span><span class="special">:</span>
+ <span class="identifier">T</span> <span class="identifier">val_</span><span class="special">;</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">numeric</span><span class="special">();</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">&gt;</span> <span class="identifier">numeric</span><span class="special">(</span><span class="identifier">numeric</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">u</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">U</span><span class="special">&gt;</span> <span class="identifier">numeric</span><span class="special">(</span><span class="identifier">U</span> <span class="identifier">v</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="keyword">operator</span> <span class="identifier">T</span><span class="special">&amp;();</span>
+
+ <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">ref</span><span class="special">();</span>
+ <span class="identifier">T</span> <span class="identifier">value</span><span class="special">();</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.transactional_objects.tx_pointer_hpp"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_pointer_hpp" title="
+ Header &lt;boost/stm/tx/pointer.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">tx</span><span class="special">/</span><span class="identifier">pointer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_pointer_hpp.template_class__tx__pointer___">Template
+ Class <code class="computeroutput"><span class="identifier">tx</span><span class="special">::</span><span class="identifier">pointer</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_pointer_hpp.template_class__tx__pointer_to_member___">Template
+ Class <code class="computeroutput"><span class="identifier">tx</span><span class="special">::</span><span class="identifier">pointer_to_member</span><span class="special">&lt;&gt;</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">namespace</span> <span class="identifier">tx</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">pointer</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">C</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">pointer_to_member</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.transactional_objects.tx_pointer_hpp.template_class__tx__pointer___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_pointer_hpp.template_class__tx__pointer___" title="Template
+ Class tx::pointer&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">tx</span><span class="special">::</span><span class="identifier">pointer</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">pointer</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">transaction_object</span><span class="special">&lt;</span> <span class="identifier">pointer</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+<span class="special">{</span>
+<span class="keyword">protected</span><span class="special">:</span>
+ <span class="identifier">T</span><span class="special">*</span> <span class="identifier">val_</span><span class="special">;</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">pointer</span><span class="special">();</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">&gt;</span> <span class="identifier">pointer</span><span class="special">(</span><span class="identifier">pointer</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">r</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">U</span><span class="special">&gt;</span> <span class="identifier">pointer</span><span class="special">(</span><span class="identifier">U</span><span class="special">*</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="identifier">pointer</span><span class="special">(</span><span class="identifier">T</span><span class="special">*</span> <span class="identifier">v</span><span class="special">);</span>
+ <span class="special">~</span><span class="identifier">pointer</span><span class="special">()</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="keyword">operator</span> <span class="identifier">T</span><span class="special">*&amp;();</span>
+
+ <span class="identifier">T</span><span class="special">*&amp;</span> <span class="identifier">get</span><span class="special">();</span>
+ <span class="identifier">T</span> <span class="keyword">const</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="keyword">const</span> <span class="special">*</span> <span class="keyword">operator</span><span class="special">-&gt;()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</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">-&gt;();</span>
+ <span class="identifier">T</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">*();</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.transactional_objects.tx_pointer_hpp.template_class__tx__pointer_to_member___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_pointer_hpp.template_class__tx__pointer_to_member___" title="Template
+ Class tx::pointer_to_member&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">tx</span><span class="special">::</span><span class="identifier">pointer_to_member</span><span class="special">&lt;&gt;</span></code></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.reference.transactional_objects.tx_smart_ptr_hpp"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_smart_ptr_hpp" title="
+ Header &lt;boost/stm/tx/smart_ptr.hpp&gt;">
+ Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stm</span><span class="special">/</span><span class="identifier">tx</span><span class="special">/</span><span class="identifier">smart_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_smart_ptr_hpp.template_class__tx_obj___">Template
+ Class <code class="computeroutput"><span class="identifier">tx_obj</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_smart_ptr_hpp.template_class__tx_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">tx_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_smart_ptr_hpp.template_class__rd_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">rd_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_smart_ptr_hpp.template_class__upgrd_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">upgrd_ptr</span><span class="special">&lt;&gt;</span></code></a></span></dt>
+<dt><span class="section"><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_smart_ptr_hpp.template_class__wr_ptr___">Template
+ Class <code class="computeroutput"><span class="identifier">wr_ptr</span><span class="special">&lt;&gt;</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">tx_obj</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">tx_obj</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</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">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">tx_obj</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">tx_obj</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">tx_obj</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">tx_obj</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="identifier">b</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">tx_ptr</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="identifier">b</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">void</span> <span class="identifier">delete_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&amp;</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</span>
+ <span class="keyword">static</span> <span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">tx_static_cast</span><span class="special">(</span><span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</span>
+ <span class="keyword">static</span> <span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;*</span> <span class="identifier">tx_dynamic_cast</span><span class="special">(</span><span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">rd_ptr</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="identifier">rd_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">make_rd_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&amp;</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="identifier">rd_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">make_rd_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&amp;</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">tx_obj</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">ref</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="identifier">rd_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">make_rd_ptr</span><span class="special">(</span><span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="identifier">rd_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">make_rd_ptr</span><span class="special">(</span><span class="identifier">tx_obj</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">ref</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">void</span> <span class="identifier">delete_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&amp;</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">rd_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">upgrd_ptr</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">void</span> <span class="identifier">delete_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&amp;</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">upgrd_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">ptr</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">wr_ptr</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="identifier">wr_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">make_wr_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&amp;</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="identifier">wr_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">make_wr_ptr</span><span class="special">(</span><span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">void</span> <span class="identifier">delete_ptr</span><span class="special">(</span><span class="identifier">transaction</span><span class="special">&amp;</span> <span class="identifier">tx</span><span class="special">,</span> <span class="identifier">wr_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</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><h5 class="title">
+<a name="toward_boost_stm.reference.transactional_objects.tx_smart_ptr_hpp.template_class__tx_obj___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_smart_ptr_hpp.template_class__tx_obj___" title="Template
+ Class tx_obj&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">tx_obj</span><span class="special">&lt;&gt;</span></code></a>
+</h5></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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="identifier">ctypename</span> <span class="identifier">Y</span><span class="special">&gt;</span> <span class="identifier">tx_obj</span><span class="special">(</span><span class="identifier">tx_obj</span><span class="special">&lt;</span><span class="identifier">Y</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">r</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">&gt;</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">-&gt;();</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="keyword">operator</span><span class="special">-&gt;()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">*();</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</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">&amp;</span> <span class="identifier">ref</span><span class="special">();</span>
+ <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</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">&amp;</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">&amp;</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">&amp;</span> <span class="keyword">operator</span><span class="special">+=(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</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">&amp;</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><h5 class="title">
+<a name="toward_boost_stm.reference.transactional_objects.tx_smart_ptr_hpp.template_class__tx_ptr___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_smart_ptr_hpp.template_class__tx_ptr___" title="Template
+ Class tx_ptr&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">tx_ptr</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<p>
+ a tx_ptr&lt;T&gt; is an smart pointer to a transactional_object&lt;T&gt;
+ (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&lt;T&gt; 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&lt;T&gt;, wr_ptr&lt;T&gt;, or upgrd_ptr&lt;T&gt;.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;*</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="identifier">r</span><span class="special">);</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span> <span class="identifier">tx_ptr</span><span class="special">(</span><span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">Y</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">r</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span> <span class="identifier">tx_ptr</span><span class="special">(</span><span class="identifier">rd_ptr</span><span class="special">&lt;</span><span class="identifier">Y</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">r</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span> <span class="identifier">tx_ptr</span><span class="special">(</span><span class="identifier">wr_ptr</span><span class="special">&lt;</span><span class="identifier">Y</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">r</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span> <span class="identifier">tx_ptr</span><span class="special">(</span><span class="identifier">upgrd_ptr</span><span class="special">&lt;</span><span class="identifier">Y</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">r</span><span class="special">);</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span> <span class="identifier">tx_ptr</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">transactional_object</span><span class="special">&lt;</span><span class="identifier">Y</span><span class="special">&gt;*</span> <span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span> <span class="identifier">tx_ptr</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">Y</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</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">-&gt;()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span><span class="special">&amp;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;*</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">&amp;</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><h5 class="title">
+<a name="toward_boost_stm.reference.transactional_objects.tx_smart_ptr_hpp.template_class__rd_ptr___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_smart_ptr_hpp.template_class__rd_ptr___" title="Template
+ Class rd_ptr&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">rd_ptr</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<p>
+ A rd_ptr&lt;T&gt; ("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&lt;T&gt; is constructed from an tx_ptr&lt;T&gt; through an explicit
+ constructor. Once a rd_ptr&lt;T&gt; has been constructed, an tx_ptr&lt;T&gt;
+ can be opened for reading simply by assignment (operator=()) into the
+ constructed rd_ptr&lt;T&gt;.
+ </p>
+<p>
+ It is not safe to derreference a rd_ptr&lt;T&gt; after having assigned
+ the same tx_ptr&lt;T&gt; to a wr_ptr&lt;T&gt;. 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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&amp;</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</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">&amp;</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">tx_obj</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">tx_obj</span><span class="special">);</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span> <span class="identifier">rd_ptr</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">Y</span><span class="special">&gt;</span> <span class="identifier">r</span><span class="special">);</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span> <span class="identifier">rd_ptr</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">tx_obj</span><span class="special">&lt;</span><span class="identifier">Y</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</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">&amp;</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">-&gt;()</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><h5 class="title">
+<a name="toward_boost_stm.reference.transactional_objects.tx_smart_ptr_hpp.template_class__upgrd_ptr___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_smart_ptr_hpp.template_class__upgrd_ptr___" title="Template
+ Class upgrd_ptr&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">upgrd_ptr</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<p>
+ A upgrd_ptr&lt;T&gt; ("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&lt;T&gt; is constructed from an tx_ptr&lt;T&gt; through a
+ constructor having also the transaction as parameter. Once a rd_ptr&lt;T&gt;
+ has been constructed, an tx_ptr&lt;T&gt; can be opened for reading simply
+ by assignment (operator=()) into the constructed rd_ptr&lt;T&gt;.
+ </p>
+<p>
+ It is safe to derreference a rd_ptr&lt;T&gt; after having assigned the
+ same tx_ptr&lt;T&gt; to a wr_ptr&lt;T&gt;.
+ </p>
+<p>
+ A upgrd_ptr&lt;T&gt; can be upgraded to a wr_ptr&lt;T&gt; through a constructor.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&amp;</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">tx_obj</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Y</span><span class="special">&gt;</span>
+ <span class="identifier">upgrd_ptr</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">Y</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</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">&amp;</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">-&gt;()</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;*</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><h5 class="title">
+<a name="toward_boost_stm.reference.transactional_objects.tx_smart_ptr_hpp.template_class__wr_ptr___"></a><a href="transactional_objects.html#toward_boost_stm.reference.transactional_objects.tx_smart_ptr_hpp.template_class__wr_ptr___" title="Template
+ Class wr_ptr&lt;&gt;">Template
+ Class <code class="computeroutput"><span class="identifier">wr_ptr</span><span class="special">&lt;&gt;</span></code></a>
+</h5></div></div></div>
+<p>
+ A wr_ptr&lt;T&gt; ("write pointer") points to a shared object
+ that the current transaction has opened for writing.
+ </p>
+<p>
+ A wr_ptr&lt;T&gt; is initialized explicitly from an tx_ptr&lt;T&gt;.
+ </p>
+<p>
+ A wr_ptr&lt;T&gt; can also be explicitly constructed from a upgrd_ptr&lt;T&gt;
+ as an upgrade-to-writable operation.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&amp;</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">tx_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</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">&amp;</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">upgrd_ptr</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</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">&amp;</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">-&gt;();</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>
+</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="contention_managers.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="non_transactional_objects.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Modified: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/ext_references.html
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/ext_references.html (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/ext_references.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -26,6 +26,11 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="toward_boost_stm.users_guide.ext_references"></a> References
 </h3></div></div></div>
+<a name="toward_boost_stm.users_guide.ext_references.tboost_stm_relared"></a><h4>
+<a name="id4828784"></a>
+ <a href="ext_references.html#toward_boost_stm.users_guide.ext_references.tboost_stm_relared">TBoost.STM
+ relared</a>
+ </h4>
 <p>
         For an introduction to TM, please refer to
       </p>
@@ -120,6 +125,25 @@
 </dl>
 </div>
 <p>
+ C++ Language based approaches.
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"> <a href="http://www-949.ibm.com/software/rational/cafe/servlet/JiveServlet/download/3222-1-2389/C++-transactional-constructs-1.0.pdf" target="_top"><span class="bold"><strong>Draft Specification of Transactional Language Constructs for
+ C++</strong></span></a></span></dt>
+<dd><p>
+ Transactional Memory Specification Drafting Group <span class="emphasis"><em>Version:
+ 1.0 - August 4, 2009</em></span>
+ </p></dd>
+<dt><span class="term"> Integrating Transactional Memory into C++</span></dt>
+<dd><p>
+ Lawrence Crowl, Yossi Lev, Victor Luchangco, Mark Moir and Dan Nussbaum
+ - <span class="emphasis"><em>TRANSACT 2007</em></span>
+ </p></dd>
+</dl>
+</div>
+<p>
         Check for the last updates.
       </p>
 <div class="variablelist">
@@ -130,6 +154,22 @@
           </p></dd>
 </dl>
 </div>
+<a name="toward_boost_stm.users_guide.ext_references.stm_related"></a><h4>
+<a name="id4829159"></a>
+ <a href="ext_references.html#toward_boost_stm.users_guide.ext_references.stm_related">STM
+ related</a>
+ </h4>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"> Transactional Memory Categories</span></dt>
+<dd><p>
+ </p></dd>
+<dt><span class="term"> TinySTM Home page</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>

Modified: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/getting_started.html
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/getting_started.html (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/getting_started.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -64,7 +64,7 @@
           memory!
         </p>
 <a name="toward_boost_stm.users_guide.getting_started.install.getting_boost_stm"></a><h5>
-<a name="id4814721"></a>
+<a name="id4814715"></a>
           <a href="getting_started.html#toward_boost_stm.users_guide.getting_started.install.getting_boost_stm">Getting
           Boost.STM</a>
         </h5>
@@ -81,7 +81,7 @@
           Sandbox</a>.
         </p>
 <a name="toward_boost_stm.users_guide.getting_started.install.building_boost_stm"></a><h5>
-<a name="id4814773"></a>
+<a name="id4814768"></a>
           <a href="getting_started.html#toward_boost_stm.users_guide.getting_started.install.building_boost_stm">Building
           Boost.STM</a>
         </h5>
@@ -93,7 +93,7 @@
 <span class="identifier">bjam</span>
 </pre>
 <a name="toward_boost_stm.users_guide.getting_started.install.requirements"></a><h5>
-<a name="id4814835"></a>
+<a name="id4814830"></a>
           <a href="getting_started.html#toward_boost_stm.users_guide.getting_started.install.requirements">Requirements</a>
         </h5>
 <p>
@@ -164,7 +164,7 @@
 </dl>
 </div>
 <a name="toward_boost_stm.users_guide.getting_started.install.exceptions_safety"></a><h5>
-<a name="id4815100"></a>
+<a name="id4815095"></a>
           <a href="getting_started.html#toward_boost_stm.users_guide.getting_started.install.exceptions_safety">Exceptions
           safety</a>
         </h5>
@@ -173,7 +173,7 @@
           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><h5>
-<a name="id4815127"></a>
+<a name="id4815121"></a>
           <a href="getting_started.html#toward_boost_stm.users_guide.getting_started.install.thread_safety">Thread
           safety</a>
         </h5>
@@ -181,7 +181,7 @@
           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><h5>
-<a name="id4815152"></a>
+<a name="id4815146"></a>
           <a href="getting_started.html#toward_boost_stm.users_guide.getting_started.install.tested_compilers">Tested
           compilers</a>
         </h5>

Modified: sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/tutorial.html
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/tutorial.html (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/html/toward_boost_stm/users_guide/tutorial.html 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -81,7 +81,7 @@
           calls.
         </p>
 <a name="toward_boost_stm.users_guide.tutorial.a_simple_transaction.client_invoked_inserts"></a><h5>
-<a name="id4815470"></a>
+<a name="id4815465"></a>
           <a href="tutorial.html#toward_boost_stm.users_guide.tutorial.a_simple_transaction.client_invoked_inserts">Client
           Invoked Inserts</a>
         </h5>
@@ -104,7 +104,7 @@
           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><h5>
-<a name="id4815701"></a>
+<a name="id4815695"></a>
           <a href="tutorial.html#toward_boost_stm.users_guide.tutorial.a_simple_transaction.linked_list_declaration">Linked
           list declaration</a>
         </h5>
@@ -126,7 +126,7 @@
 <span class="special">};</span>
 </pre>
 <a name="toward_boost_stm.users_guide.tutorial.a_simple_transaction.insert_retry_transaction"></a><h5>
-<a name="id4815923"></a>
+<a name="id4815918"></a>
           <a href="tutorial.html#toward_boost_stm.users_guide.tutorial.a_simple_transaction.insert_retry_transaction">Insert
           retry transaction</a>
         </h5>
@@ -157,7 +157,7 @@
           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><h5>
-<a name="id4816172"></a>
+<a name="id4816167"></a>
           <a href="tutorial.html#toward_boost_stm.users_guide.tutorial.a_simple_transaction.insert_specific">Insert
           specific</a>
         </h5>
@@ -562,7 +562,7 @@
 <span class="special">}</span>
 </pre>
 <a name="toward_boost_stm.users_guide.tutorial.a_dynamically_prioritized__composed_transaction.priority_inversion_allowed"></a><h5>
-<a name="id4820854"></a>
+<a name="id4820849"></a>
           <a href="tutorial.html#toward_boost_stm.users_guide.tutorial.a_dynamically_prioritized__composed_transaction.priority_inversion_allowed">Priority
           Inversion Allowed</a>
         </h5>
@@ -589,7 +589,7 @@
           for their specific needs.
         </p>
 <a name="toward_boost_stm.users_guide.tutorial.a_dynamically_prioritized__composed_transaction.the_future_of_parallel_programming"></a><h5>
-<a name="id4820956"></a>
+<a name="id4820950"></a>
           <a href="tutorial.html#toward_boost_stm.users_guide.tutorial.a_dynamically_prioritized__composed_transaction.the_future_of_parallel_programming">The
           Future of Parallel Programming</a>
         </h5>
@@ -778,7 +778,7 @@
         values from a function</a>
 </h4></div></div></div>
 <a name="toward_boost_stm.users_guide.tutorial.returning_values_from_a_function.returning_from_outside_the_transaction_context"></a><h5>
-<a name="id4822561"></a>
+<a name="id4822555"></a>
           <a href="tutorial.html#toward_boost_stm.users_guide.tutorial.returning_values_from_a_function.returning_from_outside_the_transaction_context">Returning
           from outside the transaction context</a>
         </h5>
@@ -795,7 +795,7 @@
 <span class="special">}</span>
 </pre>
 <a name="toward_boost_stm.users_guide.tutorial.returning_values_from_a_function.returning_from_inside"></a><h5>
-<a name="id4822737"></a>
+<a name="id4822732"></a>
           <a href="tutorial.html#toward_boost_stm.users_guide.tutorial.returning_values_from_a_function.returning_from_inside">Returning
           from inside</a>
         </h5>
@@ -834,7 +834,7 @@
           care of modifications of the pointer itself.
         </p>
 <a name="toward_boost_stm.users_guide.tutorial.pointer_to_transactional_objects.using_the_mixin_transaction_object_lt__gt_"></a><h5>
-<a name="id4823140"></a>
+<a name="id4823134"></a>
           <a href="tutorial.html#toward_boost_stm.users_guide.tutorial.pointer_to_transactional_objects.using_the_mixin_transaction_object_lt__gt_">Using
           the mixin transaction_object&lt;&gt;</a>
         </h5>
@@ -902,7 +902,7 @@
           inheriting from a transactional class <code class="computeroutput"><span class="identifier">B</span></code>
         </p>
 <a name="toward_boost_stm.users_guide.tutorial.polymorphic.using_the_mixin_transaction_object_lt__gt_"></a><h5>
-<a name="id4824279"></a>
+<a name="id4824273"></a>
           <a href="tutorial.html#toward_boost_stm.users_guide.tutorial.polymorphic.using_the_mixin_transaction_object_lt__gt_">Using
           the mixin transaction_object&lt;&gt;</a>
         </h5>
@@ -936,7 +936,7 @@
 <span class="special">*</span><span class="identifier">ptr_b</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">D</span><span class="special">());</span>
 </pre>
 <a name="toward_boost_stm.users_guide.tutorial.polymorphic.using_the_wrapper_transactional_object_lt__gt_"></a><h5>
-<a name="id4824643"></a>
+<a name="id4824637"></a>
           <a href="tutorial.html#toward_boost_stm.users_guide.tutorial.polymorphic.using_the_wrapper_transactional_object_lt__gt_">Using
           the wrapper transactional_object&lt;&gt;</a>
         </h5>

Modified: sandbox/stm/branches/vbe/libs/stm/doc/implementation.qbk
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/implementation.qbk (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/implementation.qbk 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -8,6 +8,8 @@
 
 [section:implementation Appendix C: Implementation Notes]
 
+This section discusses how the __Boost_STM__ major design components are implemented.
+
 [section Language-like macro blocks]
 
 Our language-like lock and transaction parallel constructs are implemented in __Boost_STM__ as automatic objects wrapped inside of preprocessor macros. Automatic objects are common in C++ and are helpful in ensuring correct lock and transaction behavior as they create deterministic termination points [5, 22]. These deterministic termination points are invoked when the scope containing the automatic object is exited, guaranteeing locks are released and transactions are terminated even in the event of uncaught exceptions. The preprocessor macros used for the locking and transaction constructs are shown in Figures 6 and 8, respectively.

Modified: sandbox/stm/branches/vbe/libs/stm/doc/reference.qbk
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/reference.qbk (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/reference.qbk 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -8,25 +8,47 @@
 
 [section Reference]
 
-The following section presents the major design components identified in the background section and discusses how they are implemented within the __Boost_STM__ library.
+This section presents the interface of __Boost_STM__.
+
+[include reference/stm.qbk]
+
+[section Basics]
 
-[/include reference/stm.qbk]
 [/include reference/rt_configuration.qbk]
-[include reference/base_contention_manager.qbk]
 [include reference/base_transaction_object.qbk]
 [include reference/cache_fct.qbk]
-[/include reference/contention_manager/default_contention_manager.qbk]
-[/include reference/contention_manager/NoExceptionOnAbortNoticeOnReadWritesCM.qbk]
-[/include reference/contention_manager/ExceptAndBackOffOnAbortNoticeCM.qbk]
 [include reference/data_types.qbk]
 [include reference/exceptions.qbk]
 [include reference/language_like.qbk]
-[/include reference/synchro.qbk]
+[include reference/contention_manager.qbk]
 [include reference/transaction.qbk]
+[include reference/transaction_bookkeeping.qbk]
+[endsect]
+
+[section Contention managers]
+[include reference/base_contention_manager.qbk]
+[/include reference/contention_managers/default.qbk]
+[/include reference/contention_managers/NoExceptionOnAbortNoticeOnReadWrites.qbk]
+[/include reference/contention_managers/ExceptAndBackOffOnAbortNotice.qbk]
+[endsect]
+
+[section Transactional objects]
+[include reference/shallow_transaction_object.qbk]
 [include reference/transaction_object.qbk]
-[/include reference/transaction_object_ptr.qbk]
+[include reference/transaction_object_ptr.qbk]
+[include reference/transactional_object.qbk]
 [include reference/smart_pointers.qbk]
-[include reference/transaction_bookkeeping.qbk]
+[include reference/tx/numeric.qbk]
+[include reference/tx/pointer.qbk]
+[include reference/tx/smart_ptr.qbk]
+[endsect]
+
+[section Non transactional objects]
+[include reference/non_tx/numeric.qbk]
+[include reference/non_tx/pointer.qbk]
+[include reference/non_tx/smart_ptr.qbk]
+[endsect]
+
 
 [endsect]
 

Added: sandbox/stm/branches/vbe/libs/stm/doc/reference/contention_manager.qbk
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/reference/contention_manager.qbk 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -0,0 +1,25 @@
+[/
+ (C) Copyright 2009 Justin E. Gottchlich.
+ (C) Copyright 2009 Vicente J. Botet Escriba
+ /
+ / 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)
+ /]
+
+
+[/==========================================================================================]
+[section:select_contention_manager_hpp Header `<boost/stm/select_contention_manager.hpp>`]
+[/==========================================================================================]
+
+This file defines the contention manager depending on the compile directives:
+
+* BOOST_STM_CM_STATIC_CONF when you want a staticacly configured CM
+ * BOOST_STM_CM_STATIC_CONF_except_and_back_off_on_abort_notice_cm when configuration manager is except_and_back_off_on_abort_notice_cm
+
+* BOOST_STM_CM_DYNAMIC_CONF when you want a polymorphic CM configured at run time
+
+
+ typedef 'compilation_dependent_type' contention_manager_type;
+
+[endsect]
+

Added: sandbox/stm/branches/vbe/libs/stm/doc/reference/contention_managers/default.qbk
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/reference/contention_managers/default.qbk 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -0,0 +1,16 @@
+[/
+ (C) Copyright 2009 Justin E. Gottchlich.
+ (C) Copyright 2009 Vicente J. Botet Escriba
+ /
+ / 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)
+ /]
+
+
+[/==========================================================================================]
+[section:contention_manager_default_hpp Header `<boost/stm/contention_managers/default.hpp>`]
+[/==========================================================================================]
+
+
+[endsect]
+

Modified: sandbox/stm/branches/vbe/libs/stm/doc/reference/data_types.qbk
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/reference/data_types.qbk (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/reference/data_types.qbk 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -8,18 +8,29 @@
 
 
 [/==========================================================================================]
-[section:data_types_hpp Header `<boost/stm/data_types.hpp>`]
+[section:datatypes_hpp Header `<boost/stm/datatypes.hpp>`]
 [/==========================================================================================]
 
     namespace boost { namespace stm {
         enum transaction_type;
         enum latm_type;
         enum transaction_state;
+ typedef new_memory_t;
+ typedef priority_t;
+ typedef clock_t;
+ typedef milliseconds_t;
+ typedef version_t;
         typedef thread_id_t;
+ thread_id_t invalid_thread_id();
+ namespace this_thread {
+ thread_id_t get_id();
+ }
     }}
 
 [section Enum `transaction_type`]
 
+Type of transaction enumeration.
+
     enum transaction_type
     {
         eNormalTx,
@@ -30,6 +41,8 @@
 [endsect]
 [section Enum `latm_type`]
 
+Type of LATM enumeration.
+
     enum latm_type
     {
         eFullLatmProtection,
@@ -40,6 +53,8 @@
 [endsect]
 [section Enum `transaction_state`]
 
+Transaction states enumeration.
+
     enum transaction_state
     {
        e_no_state = -1, // no state is -1
@@ -50,11 +65,58 @@
     };
 
 [endsect]
+[section Typedef `new_memory_t`]
+
+This type should be bool, but for alignements purposes is a int.
+
+ typedef int new_memory_t;
+
+[endsect]
+[section Typedef `priority_t`]
+
+Type used for the user contention management with transaction priority.
+
+ typedef std::size_t priority_t;
+
+[endsect]
+[section Typedef `clock_t`]
+
+Type used to represent the time.
+
+ typedef std::size_t clock_t;
+ typedef std::size_t milliseconds_t;
+
+[endsect]
+[section Typedef `version_t`]
+
+Type used for validation using the version algorithm.
+
+ typedef std::size_t version_t;
+
+[endsect]
 [section Typedef `thread_id_t`]
 
+Thread id type, which is platform dependent.
+
     typedef platform_specific thread_id_t;
 
 [endsect]
+[section Function `invalid_thread_id()`]
+
+Invalid thread_id_t value.
+
+ thread_id_t invalid_thread_id();
+
+[endsect]
+[section Function `this_thread::get_id()`]
+
+thread_id_t for the current thread.
+
+ namespace this_thread {
+ inline thread_id_t get_id() {
+ }
+
+[endsect]
 [endsect]
 
 

Added: sandbox/stm/branches/vbe/libs/stm/doc/reference/non_tx/numeric.qbk
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/reference/non_tx/numeric.qbk 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -0,0 +1,56 @@
+[/
+ (C) Copyright 2009 Justin E. Gottchlich.
+ (C) Copyright 2009 Vicente J. Botet Escriba
+ /
+ / 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)
+ /]
+
+
+[/==========================================================================================]
+[section:non_tx_numeric_hpp Header `<boost/stm/non_tx/numeric.hpp>`]
+[/==========================================================================================]
+
+ namespace boost { namespace stm { namespace non_tx {
+
+ template <typename T> class numeric;
+
+ typedef numeric<bool> boolean;
+ typedef numeric<char> char_t;
+ typedef numeric<unsigned char> uchar_t;
+ typedef numeric<short> short_t;
+ typedef numeric<unsigned short> ushort_t;
+ typedef numeric<int> int_t;
+ typedef numeric<unsigned int> uint_t;
+ typedef numeric<long> long_t;
+ typedef numeric<unsigned long> ulong_t;
+ typedef numeric<float> float_t;
+ typedef numeric<double> double_t;
+
+ }}}
+
+
+[section Template Class `non_tx::numeric<>`]
+
+ template <typename T>
+ class numeric : public transaction_object< numeric<T> >
+ {
+ protected:
+ T val_;
+ public:
+ numeric();
+ template<class U> numeric(numeric<U> const& u);
+ template <typename U> numeric(U v);
+
+ operator T() const;
+ operator T&();
+
+ T& ref();
+ T value();
+
+ };
+
+[endsect]
+
+[endsect]
+

Added: sandbox/stm/branches/vbe/libs/stm/doc/reference/non_tx/pointer.qbk
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/reference/non_tx/pointer.qbk 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -0,0 +1,16 @@
+[/
+ (C) Copyright 2009 Justin E. Gottchlich.
+ (C) Copyright 2009 Vicente J. Botet Escriba
+ /
+ / 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)
+ /]
+
+
+[/==========================================================================================]
+[section:non_tx_pointer_hpp Header `<boost/stm/non_tx/pointer.hpp>`]
+[/==========================================================================================]
+
+
+[endsect]
+

Added: sandbox/stm/branches/vbe/libs/stm/doc/reference/non_tx/smart_ptr.qbk
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/reference/non_tx/smart_ptr.qbk 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -0,0 +1,130 @@
+[/
+ (C) Copyright 2009 Justin E. Gottchlich.
+ (C) Copyright 2009 Vicente J. Botet Escriba
+ /
+ / 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)
+ /]
+
+
+[/==========================================================================================]
+[section:non_tx_smart_ptr_hpp Header `<boost/stm/non_tx_smart_ptr.hpp>`]
+[/==========================================================================================]
+
+ namespace boost { namespace stm { namespace non_tx {
+ template <typename T> class rd_ptr;
+ template <typename T> rd_ptr<T> make_rd_ptr(transaction& tx, T* ptr);
+ template <typename T> rd_ptr<T> make_rd_ptr(transaction& tx, T& ref);
+ template <typename T> rd_ptr<T> make_rd_ptr(T* ptr);
+ template <typename T> rd_ptr<T> make_rd_ptr(T& ref);
+ template <typename T> void delete_ptr(rd_ptr<T> ptr);
+
+ template <typename T> class upgrd_ptr;
+ template <typename T> void delete_ptr(upgrd_ptr<T> const& ptr);
+ template <typename T> void delete_ptr(transaction& tx, upgrd_ptr<T> const& ptr);
+
+ template <typename T> class wr_ptr;
+ }}}
+
+These smart pointers points to an unspecified cache type which inherits from base_transactional object. This cache is obtained from an internal thread safe cache map.
+
+As the the non_tx smart pointers need to lookup on a cache they must be used only when you need to access to a non transactional variable on the context of a transaction. Otherwise, please use tx_ptr<> or the mixin transaction_object<>.
+
+[section Template Class `rd_ptr<>`]
+
+A rd_ptr<T> ("read pointer") points to an cache that the current transaction has opened for read only access. You can only call a const method through a read pointer.
+
+A rd_ptr<T> is constructed from an T pointer or reference.
+Once a rd_ptr<T> has been constructed, the associated cache is opened for
+reading.
+
+It is not safe to derreference a rd_ptr<T> after having assigned the same
+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.
+
+ template <typename T>
+ class rd_ptr {
+ public:
+ rd_ptr(transaction &t, T const * ptr);
+
+ rd_ptr(transaction &t, T const & obj);
+
+ template<class Y>
+ explicit rd_ptr & operator=(Y const* ptr);
+
+ template<class Y>
+ explicit rd_ptr & operator=(Y const& ref);
+
+ const T* get() const;
+
+ const T & operator*() const;
+ const T* operator->() const;
+
+ operator unspecified_bool_type() const;
+ };
+
+[endsect]
+
+[section Template Class `upgrd_ptr<>`]
+
+A upgrd_ptr<T> ("upgradable pointer") points to an cache that the current transaction has opened for read only access. You can only call const method of the wrapped type through a upgradable pointer.
+
+A upgrd_ptr<T> is constructed from an T pointer or reference through a constructor
+having also the transaction as parameter. Once a upgrd_ptr<T> has been constructed, an a cache of T can is opened for reading.
+
+It is safe to derreference a upgrd_ptr<T> after having assigned the same
+T to a wr_ptr<T>.
+
+A upgrd_ptr<T> can be upgraded to a wr_ptr<T> through a constructor.
+
+ template <typename T>
+ class upgrd_ptr {
+ public:
+ upgrd_ptr(transaction &t, T* ptr);
+ upgrd_ptr(transaction &t, T& ref);
+
+ template<class Y> upgrd_ptr & operator=(Y* ptr);
+
+ template<class Y> upgrd_ptr & operator=(Y& ref);
+
+ const T* get() const;
+ inline T const & operator*() const;
+ inline T const * operator->() const;
+
+ operator unspecified_bool_type() const;
+
+ void write_ptr(detail::cache<T>* ptr);
+ T* write_ptr();
+ };
+
+
+[endsect]
+
+[section Template Class `wr_ptr<>`]
+
+A wr_ptr<T> ("write pointer") points to a cache that the current transaction has opened for writing.
+
+A wr_ptr<T> is initialized explicitly from an T pointer or reference.
+
+A wr_ptr<T> can also be explicitly constructed from a upgrd_ptr<T> as an upgrade-to-writable operation.
+
+
+ template <typename T>
+ class wr_ptr {
+ public:
+ wr_ptr(transaction &t, T* ptr);
+ wr_ptr(transaction &t, T& obj);
+
+ T* get();
+ inline T& operator*();
+ inline T* operator->();
+
+ operator unspecified_bool_type() const;
+ };
+
+[endsect]
+
+
+[endsect]
+

Added: sandbox/stm/branches/vbe/libs/stm/doc/reference/shallow_transaction_object.qbk
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/reference/shallow_transaction_object.qbk 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -0,0 +1,71 @@
+[/
+ (C) Copyright 2009 Justin E. Gottchlich.
+ (C) Copyright 2009 Vicente J. Botet Escriba
+ /
+ / 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)
+ /]
+
+
+[/==========================================================================================]
+[section:shallow_transaction_object_hpp Header `<boost/stm/shallow_transaction_object.hpp>`]
+[/==========================================================================================]
+
+ namespace boost { namespace stm {
+ template <class Derived, typename Base=base_transaction_object>
+ class shallow_transaction_object;
+ }}
+
+[section Template Class `shallow_transaction_object<>`]
+
+To further simplify the usage of __Boost_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.
+
+With the templatized `shallow_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 __Boost_STM_s__ memory manager for all user-defined types derived from it.
+
+ template <class Derived, typename Base=base_transaction_object>
+ class shallow_transaction_object : public base_transaction_object {
+ public:
+
+ virtual base_transaction_object* clone(transaction* t) const;
+ virtual void cache_deallocate();
+
+ virtual void copy_state(base_transaction_object const * const rhs);
+ virtual void move_state(base_transaction_object * rhs);
+ };
+
+[section Virtual function `clone()`]
+
+ virtual base_transaction_object* clone(transaction* t) const;
+
+The clone() method calls to the free function cache_new_copy which allocates enough memory for the new object and then do a memcpy by default.
+
+[endsect]
+
+
+[section Virtual function `copy_state()`]
+
+ virtual void copy_state(base_transaction_object const * const rhs);
+
+The copy_state() method call to the free function cache_copy which do a memcpy by default.
+
+[endsect]
+
+[section Virtual function `move_state()`]
+
+ virtual void move_state(base_transaction_object * rhs);
+
+The move_state() method call to the free function cache_copy which do a memcpy by default.
+
+[endsect]
+
+[section Virtual function `cache_deallocate()`]
+
+ virtual void cache_deallocate();
+
+The cache_deallocate() method call to the free function cache_deallocate which do a memcpy by default.
+
+[endsect]
+[endsect]
+
+[endsect]
+

Modified: sandbox/stm/branches/vbe/libs/stm/doc/reference/smart_pointers.qbk
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/reference/smart_pointers.qbk (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/reference/smart_pointers.qbk 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -7,7 +7,7 @@
  /]
 
 [/==========================================================================================]
-[section:tx_ptr_hpp Header `<boost/stm/tx_ptr.hpp>`]
+[section:txs_ptr_hpp Header `<boost/stm/tx_ptr.hpp>`]
 [/==========================================================================================]
 
     namespace boost { namespace stm {
@@ -44,367 +44,3 @@
 
 [endsect]
 
-
-[/==========================================================================================]
-[section:tx_smart_ptr_hpp Header `<boost/stm/tx_smart_ptr.hpp>`]
-[/==========================================================================================]
-
- namespace boost { namespace stm {
-
- template <typename T> class tx_obj;
- template <typename T, typename U>
- bool operator==(const tx_obj<T>& lhs, const tx_obj<U>& rhs);
- template <typename T, typename U>
- bool operator==(const T& lhs, const tx_obj<U>& rhs);
- template <typename T, typename U>
- bool operator==(const tx_obj<T>& lhs, const U& rhs);
- template <typename T, typename U>
- bool operator!=(const tx_obj<T>& lhs, const tx_obj<U>& rhs);
- template <typename T, typename U>
- bool operator!=(const tx_obj<T>& lhs, const tx_obj<U>& rhs);
- template<class T> inline void swap(tx_obj<T> & a, tx_obj<T> & b);
-
- template <typename T> class tx_ptr;
- template <typename T, typename U>
- bool operator==(const tx_ptr<T>& lhs, const tx_ptr<U>& rhs);
- template <typename T, typename U>
- bool operator!=(const tx_ptr<T>& lhs, const tx_ptr<U>& rhs);
- template<class T> inline void swap(tx_ptr<T> & a, tx_ptr<T> & b);
-
- template <typename T>
- void delete_ptr(tx_ptr<T> ptr);
- template <typename T>
- void delete_ptr(transaction& tx, tx_ptr<T> ptr);
-
- template <typename T, typename U>
- static tx_ptr<T> tx_static_cast(tx_ptr<U> ptr);
- template <typename T, typename U>
- static tx_ptr<T>* tx_dynamic_cast(tx_ptr<U> ptr);
-
- template <typename T> class rd_ptr;
- template <typename T>
- rd_ptr<T> make_rd_ptr(transaction& tx, tx_ptr<T> ptr);
- template <typename T>
- rd_ptr<T> make_rd_ptr(transaction& tx, tx_obj<T> const & ref);
-
- template <typename T>
- rd_ptr<T> make_rd_ptr(tx_ptr<T> ptr);
- template <typename T>
- rd_ptr<T> make_rd_ptr(tx_obj<T> const & ref);
- template <typename T>
- void delete_ptr(rd_ptr<T> ptr);
- template <typename T>
- void delete_ptr(transaction& tx, rd_ptr<T> ptr);
-
- template <typename T> class upgrd_ptr;
- template <typename T>
- void delete_ptr(upgrd_ptr<T> const& ptr);
- template <typename T>
- void delete_ptr(transaction& tx, upgrd_ptr<T> const& ptr);
-
- template <typename T> class wr_ptr;
- template <typename T>
- wr_ptr<T> make_wr_ptr(transaction& tx, tx_ptr<T>& ptr);
- template <typename T>
- wr_ptr<T> make_wr_ptr(tx_ptr<T>& ptr);
- template <typename T>
- void delete_ptr(wr_ptr<T> ptr);
- template <typename T>
- void delete_ptr(transaction& tx, wr_ptr<T> const& ptr);
- }}
-
-[section Template Class `tx_obj<>`]
-
-tx_obj is a kind of smart pointer to a wrapped transactional_object T providing builting operators
-
- template <typename T> class tx_obj {
- public:
- tx_obj();
- template<ctypename Y> tx_obj(tx_obj<Y> const& r);
-
- template <typename T1> tx_obj(T1 p1);
-
- T* operator->();
- const T* operator->() const;
- T& operator*();
- const T& operator*() const;
- T* get();
- const T* get() const;
- T& ref();
- const T& ref() const;
-
- tx_obj& operator--();
- T operator--(int);
-
- tx_obj& operator++();
- T operator++(int);
-
- tx_obj& operator+=(T const &rhs);
- T operator+(T const &rhs) const;
- };
-
-[endsect]
-
-[section Template Class `tx_ptr<>`]
-
-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.
-
-Used to initialize a rd_ptr<T>, wr_ptr<T>, or upgrd_ptr<T>.
-
- template <typename T>
- class tx_ptr {
- public:
- typedef tx_ptr<T> this_type;
-
- tx_ptr();
- template<class Y> explicit tx_ptr(Y * ptr);
- explicit tx_ptr(transactional_object<T>* ptr);
- tx_ptr(const tx_obj<T>& r);
-
- template<class Y> tx_ptr(tx_ptr<Y> const& r);
- template<class Y> tx_ptr(rd_ptr<Y> const & r);
- template<class Y> tx_ptr(wr_ptr<Y> const & r);
- template<class Y> tx_ptr(upgrd_ptr<Y> const & r);
-
- template<class Y> tx_ptr& operator=(transactional_object<Y>* ptr);
- template<class Y> tx_ptr & operator=(tx_ptr<Y> const & r);
-
- T* operator->() const;
- T& operator*() const;
- T* get() const;
-
- typedef transactional_object<T>* this_type::*unspecified_bool_type;
-
- operator unspecified_bool_type() const;
- void swap(tx_ptr & other);
- };
-
-[endsect]
-
-[section Template Class `rd_ptr<>`]
-
-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.
-
-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>.
-
-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.
-
- template <typename T>
- class rd_ptr {
- public:
- rd_ptr(transaction &t, tx_ptr<T> tx_obj);
- rd_ptr(transaction &t, tx_obj<T> const& tx_obj);
-
- template<class Y> rd_ptr & operator=(tx_ptr<Y> r);
-
- template<class Y> rd_ptr& operator=(tx_obj<Y> const & r);
-
- const T* get() const;
-
- inline const T & operator*() const;
- inline const T* operator->() const;
-
- operator unspecified_bool_type() const;
-
- };
-
-[endsect]
-
-[section Template Class `upgrd_ptr<>`]
-
-A upgrd_ptr<T> ("upgradable pointer") points to an object that the current transaction has opened for read only access.
-
-You can only call const method of the wrapped type through a upgradable pointer.
-
-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>.
-
-It is safe to derreference a rd_ptr<T> after having assigned the same
-tx_ptr<T> to a wr_ptr<T>.
-
-A upgrd_ptr<T> can be upgraded to a wr_ptr<T> through a constructor.
-
- template <typename T>
- class upgrd_ptr {
- public:
-
- inline upgrd_ptr(transaction &t, tx_ptr<T> tx_obj);
- template<class Y>
- upgrd_ptr & operator=(tx_ptr<Y> const& r);
-
- const T* get() const;
-
- inline T const & operator*() const;
- inline T const * operator->() const;
-
- operator unspecified_bool_type() const;
-
- void write_ptr(transactional_object<T>* ptr);
- T* write_ptr();
-
- };
-
-
-[endsect]
-
-[section Template Class `wr_ptr<>`]
-
-A wr_ptr<T> ("write pointer") points to a shared object that the current transaction has opened for writing.
-
-A wr_ptr<T> is initialized explicitly from an tx_ptr<T>.
-
-A wr_ptr<T> can also be explicitly constructed from a upgrd_ptr<T> as an upgrade-to-writable operation.
-
-
- template <typename T>
- class wr_ptr {
- public:
- wr_ptr(transaction &t, tx_ptr<T> tx_obj);
-
- wr_ptr(transaction &t, upgrd_ptr<T> tx_obj);
-
- T* get();
-
- inline T& operator*();
- inline T* operator->();
-
- operator unspecified_bool_type() const;
- };
-
-[endsect]
-
-[endsect]
-
-[/==========================================================================================]
-[section:non_tx_smart_ptr_hpp Header `<boost/stm/non_tx_smart_ptr.hpp>`]
-[/==========================================================================================]
-
- namespace boost { namespace stm { namespace non_tx {
- template <typename T> class rd_ptr;
- template <typename T> rd_ptr<T> make_rd_ptr(transaction& tx, T* ptr);
- template <typename T> rd_ptr<T> make_rd_ptr(transaction& tx, T& ref);
- template <typename T> rd_ptr<T> make_rd_ptr(T* ptr);
- template <typename T> rd_ptr<T> make_rd_ptr(T& ref);
- template <typename T> void delete_ptr(rd_ptr<T> ptr);
-
- template <typename T> class upgrd_ptr;
- template <typename T> void delete_ptr(upgrd_ptr<T> const& ptr);
- template <typename T> void delete_ptr(transaction& tx, upgrd_ptr<T> const& ptr);
-
- template <typename T> class wr_ptr;
- }}}
-
-These smart pointers points to an unspecified cache type which inherits from base_transactional object. This cache is obtained from an internal thread safe cache map.
-
-As the the non_tx smart pointers need to lookup on a cache they must be used only when you need to access to a non transactional variable on the context of a transaction. Otherwise, please use tx_ptr<> or the mixin transaction_object<>.
-
-[section Template Class `rd_ptr<>`]
-
-A rd_ptr<T> ("read pointer") points to an cache that the current transaction has opened for read only access. You can only call a const method through a read pointer.
-
-A rd_ptr<T> is constructed from an T pointer or reference.
-Once a rd_ptr<T> has been constructed, the associated cache is opened for
-reading.
-
-It is not safe to derreference a rd_ptr<T> after having assigned the same
-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.
-
- template <typename T>
- class rd_ptr {
- public:
- rd_ptr(transaction &t, T const * ptr);
-
- rd_ptr(transaction &t, T const & obj);
-
- template<class Y>
- explicit rd_ptr & operator=(Y const* ptr);
-
- template<class Y>
- explicit rd_ptr & operator=(Y const& ref);
-
- const T* get() const;
-
- const T & operator*() const;
- const T* operator->() const;
-
- operator unspecified_bool_type() const;
- };
-
-[endsect]
-
-[section Template Class `upgrd_ptr<>`]
-
-A upgrd_ptr<T> ("upgradable pointer") points to an cache that the current transaction has opened for read only access. You can only call const method of the wrapped type through a upgradable pointer.
-
-A upgrd_ptr<T> is constructed from an T pointer or reference through a constructor
-having also the transaction as parameter. Once a upgrd_ptr<T> has been constructed, an a cache of T can is opened for reading.
-
-It is safe to derreference a upgrd_ptr<T> after having assigned the same
-T to a wr_ptr<T>.
-
-A upgrd_ptr<T> can be upgraded to a wr_ptr<T> through a constructor.
-
- template <typename T>
- class upgrd_ptr {
- public:
- upgrd_ptr(transaction &t, T* ptr);
- upgrd_ptr(transaction &t, T& ref);
-
- template<class Y> upgrd_ptr & operator=(Y* ptr);
-
- template<class Y> upgrd_ptr & operator=(Y& ref);
-
- const T* get() const;
- inline T const & operator*() const;
- inline T const * operator->() const;
-
- operator unspecified_bool_type() const;
-
- void write_ptr(detail::cache<T>* ptr);
- T* write_ptr();
- };
-
-
-[endsect]
-
-[section Template Class `wr_ptr<>`]
-
-A wr_ptr<T> ("write pointer") points to a cache that the current transaction has opened for writing.
-
-A wr_ptr<T> is initialized explicitly from an T pointer or reference.
-
-A wr_ptr<T> can also be explicitly constructed from a upgrd_ptr<T> as an upgrade-to-writable operation.
-
-
- template <typename T>
- class wr_ptr {
- public:
- wr_ptr(transaction &t, T* ptr);
- wr_ptr(transaction &t, T& obj);
-
- T* get();
- inline T& operator*();
- inline T* operator->();
-
- operator unspecified_bool_type() const;
- };
-
-[endsect]
-
-
-[endsect]
-
-

Added: sandbox/stm/branches/vbe/libs/stm/doc/reference/stm.qbk
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/reference/stm.qbk 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -0,0 +1,41 @@
+[/
+ (C) Copyright 2009 Justin E. Gottchlich.
+ (C) Copyright 2009 Vicente J. Botet Escriba
+ /
+ / 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)
+ /]
+
+
+[/==========================================================================================]
+[section:stm_hpp Header `<boost/stm.hpp>`]
+[/==========================================================================================]
+
+This file includes all the __Boost_STM__ public files.
+
+ #include <boost/stm/detail/config.hpp>
+
+ #include <boost/stm/base_contention_manager.hpp>
+ #include <boost/stm/base_transaction_object.hpp>
+ #include <boost/stm/cache_fct.hpp>
+ #include <boost/stm/contention_manager.hpp>
+ #include <boost/stm/datatypes.hpp>
+ #include <boost/stm/exceptions.hpp>
+ #include <boost/stm/language_like.hpp>
+ #include <boost/stm/move.hpp>
+ #include <boost/stm/non_tx/numeric.hpp>
+ #include <boost/stm/non_tx/smart_ptr.hpp>
+ #include <boost/stm/shallow_transaction_object.hpp>
+ #include <boost/stm/synchro.hpp>
+ #include <boost/stm/transaction.hpp>
+ #include <boost/stm/transaction_bookkeeping.hpp>
+ #include <boost/stm/transaction_object.hpp>
+ #include <boost/stm/transaction_object_ptr.hpp>
+ #include <boost/stm/transactional_object.hpp>
+ #include <boost/stm/tx_ptr.hpp>
+ #include <boost/stm/tx/numeric.hpp>
+ #include <boost/stm/tx/pointer.hpp>
+ #include <boost/stm/tx/smart_ptr.hpp>
+
+[endsect]
+

Modified: sandbox/stm/branches/vbe/libs/stm/doc/reference/transaction_object.qbk
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/reference/transaction_object.qbk (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/reference/transaction_object.qbk 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -26,16 +26,16 @@
     class transaction_object : public base_transaction_object {
     public:
 
- virtual base_transaction_object* clone() const;
+ virtual base_transaction_object* clone(transaction* t) const;
         virtual void copy_state(base_transaction_object const * const rhs);
         virtual void move_state(base_transaction_object * rhs);
     };
 
 [section Virtual function `clone()`]
 
- virtual base_transaction_object* clone() const;
+ virtual base_transaction_object* clone(transaction* t) const;
 
-The clone() method calls to the free function cache_new_copy which allocates enough memory for the new object and then do a memcpy by default.
+The clone() creates a new Derived instace using the copy constructor.
 
 [endsect]
 
@@ -44,7 +44,7 @@
 
        virtual void copy_state(base_transaction_object const * const rhs);
 
-The copy_state() method call to the free function cache_copy which do a memcpy by default.
+The copy_state() assigns the rhs to this instace using the copy-assignement operator.
 
 [endsect]
 
@@ -52,7 +52,6 @@
 
        virtual void move_state(base_transaction_object * rhs);
 
-The move_state() method call to the free function cache_copy which do a memcpy by default.
 
 [endsect]
 
@@ -60,7 +59,7 @@
 
         virtual void cache_deallocate();
 
-The cache_deallocate() method call to the free function cache_deallocate which do a memcpy by default.
+The cache_deallocate() delete this instace using the delete operator.
 
 [endsect]
 [endsect]
@@ -95,96 +94,5 @@
 [endsect]
 
 
-[/==========================================================================================]
-[section:transactional_object_hpp Header `<boost/stm/transactional_object.hpp>`]
-[/==========================================================================================]
-
- namespace boost { namespace stm {
- template <class T> class transactional_object;
-
- template <typename T>
- static transactional_object<T>* tx_up_cast(T* ptr);
-
- template <typename T, typename U>
- static transactional_object<T>* tx_static_cast(transactional_object<U>* ptr);
-
- template <typename T, typename U>
- static transactional_object<T>* tx_dynamic_cast(transactional_object<U>* ptr);
- }}
-
-[section Template Class `transactional_object<>`]
-
-Transactional object wrapper. A `transactional_object<T>` is a base_transaction_object wrapping an instance of type T. Provides the definition of the virtual functions
-
-* forward constructors to the wrapped type
-* `copy_state`: relaying on the cache_copy<T> generic function
-* `move_state` and
-* `cache_deallocate`: relaying on the cache_copy<T> generic function
-
-Defines in addition the functions `new` and `delete` when `BOOST_STM_USE_MEMORY_MANAGER` is defined
-
-If a class D inherits from B we have that `transactional_object<D>` dont inherits from `transactional_object<B>`, but
-we can static/dynamic cast them robustly.
-
-Evidently the `std::static_cast`/`std::dynamic_cast` do not works. We need to define the specific cast
-
- transactional_object<D>* d=...;
- transactional_object<B>* b=tx_static_cast<B>(d);
-
- transactional_object<B>* b=...;
- transactional_object<D>* d=tx_dynamic_cast<B>(b);
-
-Synopsis
-
- template <typename T>
- class transactional_object : public base_transaction_object {
- public:
- T value;
-
- transactional_object();
- transactional_object(const T*ptr);
- transactional_object(transactional_object<T> const & r);
- template <typename T1>
- transactional_object(T1 const &p1);
-
- template <typename T1, typename T2>
- transactional_object(T1 const &p1, T2 const &p2);
-
- transactional_object & operator=(transactional_object const & r);
-
- virtual void copy_state(base_transaction_object const * const rhs);
-
- #ifdef BOOST_STM_USE_UNASIGNED_COPY
- virtual void cache_deallocate();
- #endif
-
- #if BOST_STM_USE_MEMORY_MANAGER
- void* operator new(size_t size) throw ();
- void operator delete(void* mem);
- #endif
-
- };
-
-[section Virtual function `copy_state()`]
-
- virtual void copy_state(base_transaction_object const * const rhs);
-
-[endsect]
-
-[section Virtual function `move_state()`]
-
- virtual void move_state(base_transaction_object * rhs);
-
-[endsect]
-
-[section Virtual function `cache_deallocate()`]
-
- virtual void cache_deallocate()=0;
-
-[endsect]
-
-[endsect]
-
-[endsect]
 
 

Added: sandbox/stm/branches/vbe/libs/stm/doc/reference/transaction_object_ptr.qbk
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/reference/transaction_object_ptr.qbk 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -0,0 +1,16 @@
+[/
+ (C) Copyright 2009 Justin E. Gottchlich.
+ (C) Copyright 2009 Vicente J. Botet Escriba
+ /
+ / 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)
+ /]
+
+
+[/==========================================================================================]
+[section:transaction_object_ptr_hpp Header `<boost/stm/transaction_object_ptr.hpp>`]
+[/==========================================================================================]
+
+
+[endsect]
+

Added: sandbox/stm/branches/vbe/libs/stm/doc/reference/transactional_object.qbk
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/reference/transactional_object.qbk 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -0,0 +1,99 @@
+[/
+ (C) Copyright 2009 Justin E. Gottchlich.
+ (C) Copyright 2009 Vicente J. Botet Escriba
+ /
+ / 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)
+ /]
+
+
+[/==========================================================================================]
+[section:transactional_object_hpp Header `<boost/stm/transactional_object.hpp>`]
+[/==========================================================================================]
+
+ namespace boost { namespace stm {
+ template <class T> class transactional_object;
+
+ template <typename T>
+ static transactional_object<T>* tx_up_cast(T* ptr);
+
+ template <typename T, typename U>
+ static transactional_object<T>* tx_static_cast(transactional_object<U>* ptr);
+
+ template <typename T, typename U>
+ static transactional_object<T>* tx_dynamic_cast(transactional_object<U>* ptr);
+ }}
+
+[section Template Class `transactional_object<>`]
+
+Transactional object wrapper. A `transactional_object<T>` is a base_transaction_object wrapping an instance of type T. Provides the definition of the virtual functions
+
+* forward constructors to the wrapped type
+* `copy_state`: relaying on the cache_copy<T> generic function
+* `move_state` and
+* `cache_deallocate`: relaying on the cache_copy<T> generic function
+
+Defines in addition the functions `new` and `delete` when `BOOST_STM_USE_MEMORY_MANAGER` is defined
+
+If a class D inherits from B we have that `transactional_object<D>` dont inherits from `transactional_object<B>`, but
+we can static/dynamic cast them robustly.
+
+Evidently the `std::static_cast`/`std::dynamic_cast` do not works. We need to define the specific cast
+
+ transactional_object<D>* d=...;
+ transactional_object<B>* b=tx_static_cast<B>(d);
+
+ transactional_object<B>* b=...;
+ transactional_object<D>* d=tx_dynamic_cast<B>(b);
+
+Synopsis
+
+ template <typename T>
+ class transactional_object : public base_transaction_object {
+ public:
+ T value;
+
+ transactional_object();
+ transactional_object(const T*ptr);
+ transactional_object(transactional_object<T> const & r);
+ template <typename T1>
+ transactional_object(T1 const &p1);
+
+ template <typename T1, typename T2>
+ transactional_object(T1 const &p1, T2 const &p2);
+
+ transactional_object & operator=(transactional_object const & r);
+
+ virtual void copy_state(base_transaction_object const * const rhs);
+
+ #ifdef BOOST_STM_USE_UNASIGNED_COPY
+ virtual void cache_deallocate();
+ #endif
+
+ #if BOST_STM_USE_MEMORY_MANAGER
+ void* operator new(size_t size) throw ();
+ void operator delete(void* mem);
+ #endif
+
+ };
+
+[section Virtual function `copy_state()`]
+
+ virtual void copy_state(base_transaction_object const * const rhs);
+
+[endsect]
+
+[section Virtual function `move_state()`]
+
+ virtual void move_state(base_transaction_object * rhs);
+
+[endsect]
+
+[section Virtual function `cache_deallocate()`]
+
+ virtual void cache_deallocate()=0;
+
+[endsect]
+
+[endsect]
+[endsect]
\ No newline at end of file

Added: sandbox/stm/branches/vbe/libs/stm/doc/reference/tx/numeric.qbk
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/reference/tx/numeric.qbk 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -0,0 +1,55 @@
+[/
+ (C) Copyright 2009 Justin E. Gottchlich.
+ (C) Copyright 2009 Vicente J. Botet Escriba
+ /
+ / 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)
+ /]
+
+
+[/==========================================================================================]
+[section:tx_numeric_hpp Header `<boost/stm/tx/numeric.hpp>`]
+[/==========================================================================================]
+
+ namespace boost { namespace stm { namespace tx {
+
+ template <typename T> class numeric;
+
+ typedef numeric<bool> boolean;
+ typedef numeric<char> char_t;
+ typedef numeric<unsigned char> uchar_t;
+ typedef numeric<short> short_t;
+ typedef numeric<unsigned short> ushort_t;
+ typedef numeric<int> int_t;
+ typedef numeric<unsigned int> uint_t;
+ typedef numeric<long> long_t;
+ typedef numeric<unsigned long> ulong_t;
+ typedef numeric<float> float_t;
+ typedef numeric<double> double_t;
+
+ }}}
+
+
+[section Template Class `tx::numeric<>`]
+
+ template <typename T>
+ class numeric : public transaction_object< numeric<T> >
+ {
+ protected:
+ T val_;
+ public:
+ numeric();
+ template<class U> numeric(numeric<U> const& u);
+ template <typename U> numeric(U v);
+
+ operator T() const;
+ operator T&();
+
+ T& ref();
+ T value();
+
+ };
+
+[endsect]
+[endsect]
+

Added: sandbox/stm/branches/vbe/libs/stm/doc/reference/tx/pointer.qbk
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/reference/tx/pointer.qbk 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -0,0 +1,56 @@
+[/
+ (C) Copyright 2009 Justin E. Gottchlich.
+ (C) Copyright 2009 Vicente J. Botet Escriba
+ /
+ / 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)
+ /]
+
+
+[/==========================================================================================]
+[section:tx_pointer_hpp Header `<boost/stm/tx/pointer.hpp>`]
+[/==========================================================================================]
+
+ namespace boost { namespace stm { namespace tx {
+
+ template <typename T> class pointer;
+ template <typename C, typename R> class pointer_to_member;
+
+ }}}
+
+[section Template Class `tx::pointer<>`]
+
+ template <typename T>
+ class pointer : public transaction_object< pointer<T> >
+ {
+ protected:
+ T* val_;
+ public:
+ pointer();
+ template<class U> pointer(pointer<U> const& r);
+
+ template <typename U> pointer(U* v);
+ pointer(T* v);
+ ~pointer() {}
+
+ operator T*() const;
+ operator T*&();
+
+ T*& get();
+ T const * get() const;
+
+ T const * operator->() const;
+ T const & operator*() const;
+
+ T * operator->();
+ T & operator*();
+ };
+
+[endsect]
+
+[section Template Class `tx::pointer_to_member<>`]
+[endsect]
+
+
+[endsect]
+

Added: sandbox/stm/branches/vbe/libs/stm/doc/reference/tx/smart_ptr.qbk
==============================================================================
--- (empty file)
+++ sandbox/stm/branches/vbe/libs/stm/doc/reference/tx/smart_ptr.qbk 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -0,0 +1,250 @@
+[/
+ (C) Copyright 2009 Justin E. Gottchlich.
+ (C) Copyright 2009 Vicente J. Botet Escriba
+ /
+ / 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)
+ /]
+
+
+[/==========================================================================================]
+[section:tx_smart_ptr_hpp Header `<boost/stm/tx/smart_ptr.hpp>`]
+[/==========================================================================================]
+
+ namespace boost { namespace stm {
+
+ template <typename T> class tx_obj;
+ template <typename T, typename U>
+ bool operator==(const tx_obj<T>& lhs, const tx_obj<U>& rhs);
+ template <typename T, typename U>
+ bool operator==(const T& lhs, const tx_obj<U>& rhs);
+ template <typename T, typename U>
+ bool operator==(const tx_obj<T>& lhs, const U& rhs);
+ template <typename T, typename U>
+ bool operator!=(const tx_obj<T>& lhs, const tx_obj<U>& rhs);
+ template <typename T, typename U>
+ bool operator!=(const tx_obj<T>& lhs, const tx_obj<U>& rhs);
+ template<class T> inline void swap(tx_obj<T> & a, tx_obj<T> & b);
+
+ template <typename T> class tx_ptr;
+ template <typename T, typename U>
+ bool operator==(const tx_ptr<T>& lhs, const tx_ptr<U>& rhs);
+ template <typename T, typename U>
+ bool operator!=(const tx_ptr<T>& lhs, const tx_ptr<U>& rhs);
+ template<class T> inline void swap(tx_ptr<T> & a, tx_ptr<T> & b);
+
+ template <typename T>
+ void delete_ptr(tx_ptr<T> ptr);
+ template <typename T>
+ void delete_ptr(transaction& tx, tx_ptr<T> ptr);
+
+ template <typename T, typename U>
+ static tx_ptr<T> tx_static_cast(tx_ptr<U> ptr);
+ template <typename T, typename U>
+ static tx_ptr<T>* tx_dynamic_cast(tx_ptr<U> ptr);
+
+ template <typename T> class rd_ptr;
+ template <typename T>
+ rd_ptr<T> make_rd_ptr(transaction& tx, tx_ptr<T> ptr);
+ template <typename T>
+ rd_ptr<T> make_rd_ptr(transaction& tx, tx_obj<T> const & ref);
+
+ template <typename T>
+ rd_ptr<T> make_rd_ptr(tx_ptr<T> ptr);
+ template <typename T>
+ rd_ptr<T> make_rd_ptr(tx_obj<T> const & ref);
+ template <typename T>
+ void delete_ptr(rd_ptr<T> ptr);
+ template <typename T>
+ void delete_ptr(transaction& tx, rd_ptr<T> ptr);
+
+ template <typename T> class upgrd_ptr;
+ template <typename T>
+ void delete_ptr(upgrd_ptr<T> const& ptr);
+ template <typename T>
+ void delete_ptr(transaction& tx, upgrd_ptr<T> const& ptr);
+
+ template <typename T> class wr_ptr;
+ template <typename T>
+ wr_ptr<T> make_wr_ptr(transaction& tx, tx_ptr<T>& ptr);
+ template <typename T>
+ wr_ptr<T> make_wr_ptr(tx_ptr<T>& ptr);
+ template <typename T>
+ void delete_ptr(wr_ptr<T> ptr);
+ template <typename T>
+ void delete_ptr(transaction& tx, wr_ptr<T> const& ptr);
+ }}
+
+[section Template Class `tx_obj<>`]
+
+tx_obj is a kind of smart pointer to a wrapped transactional_object T providing builting operators
+
+ template <typename T> class tx_obj {
+ public:
+ tx_obj();
+ template<ctypename Y> tx_obj(tx_obj<Y> const& r);
+
+ template <typename T1> tx_obj(T1 p1);
+
+ T* operator->();
+ const T* operator->() const;
+ T& operator*();
+ const T& operator*() const;
+ T* get();
+ const T* get() const;
+ T& ref();
+ const T& ref() const;
+
+ tx_obj& operator--();
+ T operator--(int);
+
+ tx_obj& operator++();
+ T operator++(int);
+
+ tx_obj& operator+=(T const &rhs);
+ T operator+(T const &rhs) const;
+ };
+
+[endsect]
+
+[section Template Class `tx_ptr<>`]
+
+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.
+
+Used to initialize a rd_ptr<T>, wr_ptr<T>, or upgrd_ptr<T>.
+
+ template <typename T>
+ class tx_ptr {
+ public:
+ typedef tx_ptr<T> this_type;
+
+ tx_ptr();
+ template<class Y> explicit tx_ptr(Y * ptr);
+ explicit tx_ptr(transactional_object<T>* ptr);
+ tx_ptr(const tx_obj<T>& r);
+
+ template<class Y> tx_ptr(tx_ptr<Y> const& r);
+ template<class Y> tx_ptr(rd_ptr<Y> const & r);
+ template<class Y> tx_ptr(wr_ptr<Y> const & r);
+ template<class Y> tx_ptr(upgrd_ptr<Y> const & r);
+
+ template<class Y> tx_ptr& operator=(transactional_object<Y>* ptr);
+ template<class Y> tx_ptr & operator=(tx_ptr<Y> const & r);
+
+ T* operator->() const;
+ T& operator*() const;
+ T* get() const;
+
+ typedef transactional_object<T>* this_type::*unspecified_bool_type;
+
+ operator unspecified_bool_type() const;
+ void swap(tx_ptr & other);
+ };
+
+[endsect]
+
+[section Template Class `rd_ptr<>`]
+
+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.
+
+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>.
+
+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.
+
+ template <typename T>
+ class rd_ptr {
+ public:
+ rd_ptr(transaction &t, tx_ptr<T> tx_obj);
+ rd_ptr(transaction &t, tx_obj<T> const& tx_obj);
+
+ template<class Y> rd_ptr & operator=(tx_ptr<Y> r);
+
+ template<class Y> rd_ptr& operator=(tx_obj<Y> const & r);
+
+ const T* get() const;
+
+ inline const T & operator*() const;
+ inline const T* operator->() const;
+
+ operator unspecified_bool_type() const;
+
+ };
+
+[endsect]
+
+[section Template Class `upgrd_ptr<>`]
+
+A upgrd_ptr<T> ("upgradable pointer") points to an object that the current transaction has opened for read only access.
+
+You can only call const method of the wrapped type through a upgradable pointer.
+
+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>.
+
+It is safe to derreference a rd_ptr<T> after having assigned the same
+tx_ptr<T> to a wr_ptr<T>.
+
+A upgrd_ptr<T> can be upgraded to a wr_ptr<T> through a constructor.
+
+ template <typename T>
+ class upgrd_ptr {
+ public:
+
+ inline upgrd_ptr(transaction &t, tx_ptr<T> tx_obj);
+ template<class Y>
+ upgrd_ptr & operator=(tx_ptr<Y> const& r);
+
+ const T* get() const;
+
+ inline T const & operator*() const;
+ inline T const * operator->() const;
+
+ operator unspecified_bool_type() const;
+
+ void write_ptr(transactional_object<T>* ptr);
+ T* write_ptr();
+
+ };
+
+
+[endsect]
+
+[section Template Class `wr_ptr<>`]
+
+A wr_ptr<T> ("write pointer") points to a shared object that the current transaction has opened for writing.
+
+A wr_ptr<T> is initialized explicitly from an tx_ptr<T>.
+
+A wr_ptr<T> can also be explicitly constructed from a upgrd_ptr<T> as an upgrade-to-writable operation.
+
+
+ template <typename T>
+ class wr_ptr {
+ public:
+ wr_ptr(transaction &t, tx_ptr<T> tx_obj);
+
+ wr_ptr(transaction &t, upgrd_ptr<T> tx_obj);
+
+ T* get();
+
+ inline T& operator*();
+ inline T* operator->();
+
+ operator unspecified_bool_type() const;
+ };
+
+[endsect]
+
+[endsect]
+

Modified: sandbox/stm/branches/vbe/libs/stm/doc/references.qbk
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/doc/references.qbk (original)
+++ sandbox/stm/branches/vbe/libs/stm/doc/references.qbk 2009-10-19 12:03:35 EDT (Mon, 19 Oct 2009)
@@ -9,6 +9,8 @@
 
 [section:ext_references References]
 
+[heading __Boost_STM__ relared]
+
 For an introduction to TM, please refer to
 [variablelist
 
@@ -98,4 +100,31 @@
     []
 ]
 ]
+
+[heading STM related]
+
+[variablelist
+
+[
+ [ [@http://www.cs.wisc.edu/trans-memory/biblio/index.html [*Transactional Memory Categories]]]
+ []
+]
+
+[
+ [ [@http://tinystm.org/tinystm [*TinySTM Home page]]]
+ []
+]
+
+
+]
+
+
+
+
+
+
+
+
+
+
 [endsect]

Modified: sandbox/stm/branches/vbe/libs/stm/doc/stm.pdf
==============================================================================
Binary files. No diff available.


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk