$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: matt_calabrese_at_[hidden]
Date: 2007-07-11 21:02:27
Author: matt_calabrese
Date: 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
New Revision: 7409
URL: http://svn.boost.org/trac/boost/changeset/7409
Log:
Updated docs to include cages, added some tests.
Added:
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/flag.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/
      - copied from r7353, /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence.hpp
      - copied, changed from r7353, /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/
      - copied from r7408, /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence/detail/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/fence.hpp
      - copied unchanged from r7408, /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence/fence.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_acq_rel.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_acq_rel_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_acquire.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_acquire_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_release.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_release_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_sequential.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_sequential_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_thread_unsafe.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_thread_unsafe_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_unordered.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_unordered_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence_fwd.hpp
      - copied, changed from r7353, /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_barrier_models.html
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models/
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models.html
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models/interlocked_compiler_cage.html
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models/interlocked_memory_cage.html
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_cage.html
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_semantic_type.html
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_semantic_models.html
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_cage.qbk
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_semantic_type.qbk
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_cage_models/
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_cage_models.qbk
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_cage_models/interlocked_compiler_cage.qbk
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_cage_models/interlocked_memory_cage.qbk
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_semantic_models.qbk
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_acq_rel.cpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_unordered.cpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/cstdatomic.hpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/interlocked_integer_types.hpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/multiply_assign/
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/multiply_assign/multiply_assign.cpp
Removed:
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/implementation_info/compiler_fence_support.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/implementation_info/fence_support.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/fence_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/fence_load.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/fence_load_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/fence_store.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/fence_store_fwd.hpp
Properties modified: 
   sandbox/SOC/2006/concurrency/trunk/libs/act/   (props changed)
Text files modified: 
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/binary_bitwise_operation_checker.hpp                                                |     2                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/cas_support.hpp                                                              |     3                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/implementation_info/operation_support.hpp                                    |     1                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign.hpp                                                                   |    13                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign_fwd.hpp                                                               |    13                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/detail/load_acquire_default                                                    |    27 +++                                     
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/detail/load_unordered_default                                                  |     2                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence.hpp                                                                    |    20 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence_fwd.hpp                                                                |    20 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/sequential.hpp                                                            |    14 +                                       
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/sequential_fwd.hpp                                                        |    18 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/thread_unsafe.hpp                                                         |    14 +                                       
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/thread_unsafe_fwd.hpp                                                     |    18 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/store/detail/store_release_default                                                  |    42 +++++                                   
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/act.qbk                                                                                      |    10 +                                       
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/HTML.manifest                                                                           |     6                                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/compiler_setup.html                                                           |    10                                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked.html                                                              |    40 +++++                                   
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts.html                                         |    12 +                                       
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_arithmetic_type.html             |    16 +-                                      
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_integer_type.html                |    37 ++---                                   
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_natural_type.html                |    16 +-                                      
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_operation.html                   |   281 ++++----------------------------------- 
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_type.html                        |    41 ++---                                   
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models.html                                   |     6                                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models/interlocked_integer_metafunctions.html |    46 +++---                                  
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models/interlocked_integer_typedefs.html      |    18 +-                                      
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_support/checking_support.html                         |    24 +-                                      
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/introduction.html                                                             |    10                                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/rationale.html                                                                |     6                                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/index.html                                                                              |    44 +++++                                   
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked.qbk                                                                              |     2                                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts.qbk                                                                     |     2                                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_integer_type.qbk                                            |    11                                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_operation.qbk                                               |    99 ++-----------                           
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_type.qbk                                                    |    20 +-                                      
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/integer_models/metafunctions.qbk                                                 |    14                                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/support/checking_support.qbk                                                     |    10                                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/Jamfile.v2                                                                                  |     4                                         
   39 files changed, 488 insertions(+), 504 deletions(-)
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/binary_bitwise_operation_checker.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/binary_bitwise_operation_checker.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/binary_bitwise_operation_checker.hpp	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -64,7 +64,7 @@
                                    , OperationType operation
                                    )
 {
-  typedef boost::act::interlocked::uint_least8_t  uint_least8_t;
+  typedef boost::act::interlocked::uint_least8_t uint_least8_t;
 
   uint_least8_t test_var = 0;
 
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/cas_support.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/cas_support.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/cas_support.hpp	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -108,7 +108,8 @@
 #define BOOST_ACT_INTERLOCKED_DETAIL_SEMANTIC_ID_release         3
 #define BOOST_ACT_INTERLOCKED_DETAIL_SEMANTIC_ID_write           3
 #define BOOST_ACT_INTERLOCKED_DETAIL_SEMANTIC_ID_acq_rel         4
-#define BOOST_ACT_INTERLOCKED_DETAIL_SEMANTIC_ID_none            5
+#define BOOST_ACT_INTERLOCKED_DETAIL_SEMANTIC_ID_sequential      5
+#define BOOST_ACT_INTERLOCKED_DETAIL_SEMANTIC_ID_none            6
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_COMPARE( data, elem )                     \
 BOOST_PP_EQUAL                                                                 \
Deleted: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/implementation_info/compiler_fence_support.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/implementation_info/compiler_fence_support.hpp	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
+++ (empty file)
@@ -1,33 +0,0 @@
-/*=============================================================================
-    Copyright (c) 2006, 2007 Matthew Calabrese
-
-    Use, modification and distribution is subject to 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)
-==============================================================================*/
-
-#ifndef BOOST_ACT_INTERLOCKED_DETAIL_IMPLEMENTATION_INFO_COMPILER_FENCE_SUPP_HPP
-#define BOOST_ACT_INTERLOCKED_DETAIL_IMPLEMENTATION_INFO_COMPILER_FENCE_SUPP_HPP
-
-#include <boost/config.hpp>
-
-#ifdef BOOST_WINDOWS
-
-  #if WINVER >= 0x0600 // Windows Vista
-
-    // Note: Same name as vista windows on purpose
-    #define BOOST_ACT_INTERLOCKED_DETAIL_COMPILER_FENCE_SUPPORT                \
-            ( vista, ( acq_rel )( load_fence )( store_fence ) )
-
-  #endif // End WINVER checks
-
-#elif defined( __GNUC__ ) // if gcc
-
-  #define BOOST_ACT_INTERLOCKED_DETAIL_COMPILER_FENCE_SUPPORT                  \
-          ( gcc, ( acq_rel ) )
-
-#endif
-
-// Note: If no support is detected, the implementation automatically uses fences
-
-#endif
Deleted: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/implementation_info/fence_support.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/implementation_info/fence_support.hpp	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
+++ (empty file)
@@ -1,39 +0,0 @@
-/*=============================================================================
-    Copyright (c) 2006, 2007 Matthew Calabrese
-
-    Use, modification and distribution is subject to 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)
-==============================================================================*/
-
-#ifndef BOOST_ACT_INTERLOCKED_DETAIL_IMPLEMENTATION_INFO_FENCE_SUPPORT_HPP
-#define BOOST_ACT_INTERLOCKED_DETAIL_IMPLEMENTATION_INFO_FENCE_SUPPORT_HPP
-
-#include <boost/config.hpp>
-
-#ifdef BOOST_WINDOWS
-
-  #if WINVER >= 0x0600 // Windows Vista
-
-    // Note: Same name as vista windows on purpose
-    #define BOOST_ACT_INTERLOCKED_DETAIL_FENCE_SUPPORT                         \
-            ( vista, ( acq_rel )( load_fence )( store_fence ) )
-
-  #else
-
-    // ToDo: Add support (SSE sfence, SSE2 lfence, mfence)
-
-  #endif // End WINVER checks
-
-#elif defined( __GNUC__ ) // if gcc
-
-  // ToDo: Add support (SSE sfence, SSE2 lfence, mfence)
-
-#elif defined( _OPENMP ) // Else, resort to OpenMP (full fence only, via flush)
-
-  #define BOOST_ACT_INTERLOCKED_DETAIL_FENCE_SUPPORT                           \
-          ( openmp, ( acq_rel ) )
-
-#endif
-
-#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/implementation_info/operation_support.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/implementation_info/operation_support.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/implementation_info/operation_support.hpp	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -149,6 +149,7 @@
 /*
     The following are useful macros to use later on after detection.
 */
+
 #define BOOST_ACT_INTERLOCKED_DETAIL_ITANIUM_RW_ORDERING_SUPPORT               \
         ( acq_rel )( acquire )( release )( unordered )
 
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign.hpp	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -6,12 +6,13 @@
     http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#ifndef BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
-#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+#ifndef BOOST_ACT_INTERLOCKED_DIVIDE_ASSIGN_HPP
+#define BOOST_ACT_INTERLOCKED_DIVIDE_ASSIGN_HPP
 
-#include <boost/act/interlocked/subtract_assign/subtract_assign_fwd.hpp>
-#include <boost/act/interlocked/subtract_assign/subtract_assign_acquire_fwd.hpp>
-#include <boost/act/interlocked/subtract_assign/subtract_assign_release_fwd.hpp>
-#include <boost/act/interlocked/subtract_assign/subtract_assign_result_fwd.hpp>
+#include <boost/act/interlocked/divide_assign/divide_assign.hpp>
+#include <boost/act/interlocked/divide_assign/divide_assign_acquire.hpp>
+#include <boost/act/interlocked/divide_assign/divide_assign_release.hpp>
+#include <boost/act/interlocked/divide_assign/divide_assign_acq_rel.hpp>
+#include <boost/act/interlocked/divide_assign/divide_assign_unordered.hpp>
 
 #endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign_fwd.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign_fwd.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign_fwd.hpp	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -6,12 +6,13 @@
     http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#ifndef BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
-#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+#ifndef BOOST_ACT_INTERLOCKED_DIVIDE_ASSIGN_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_DIVIDE_ASSIGN_FWD_HPP
 
-#include <boost/act/interlocked/subtract_assign/subtract_assign_fwd.hpp>
-#include <boost/act/interlocked/subtract_assign/subtract_assign_acquire_fwd.hpp>
-#include <boost/act/interlocked/subtract_assign/subtract_assign_release_fwd.hpp>
-#include <boost/act/interlocked/subtract_assign/subtract_assign_result_fwd.hpp>
+#include <boost/act/interlocked/divide_assign/divide_assign_fwd.hpp>
+#include <boost/act/interlocked/divide_assign/divide_assign_acquire_fwd.hpp>
+#include <boost/act/interlocked/divide_assign/divide_assign_release_fwd.hpp>
+#include <boost/act/interlocked/divide_assign/divide_assign_acq_rel_fwd.hpp>
+#include <boost/act/interlocked/divide_assign/divide_assign_unordered_fwd.hpp>
 
 #endif
Deleted: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence.hpp
==============================================================================
Deleted: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence_fwd.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/flag.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/flag.hpp	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,67 @@
+/*=============================================================================
+    Copyright (c) 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_FLAG_HPP
+#define BOOST_ACT_INTERLOCKED_FLAG_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+// Too: Don't rely on bool when direct support is available (or bool isn't).
+
+#include <boost/act/interlocked/integer/types.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/remove_volatile.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/or.hpp>
+#include <boost/act/interlocked/assign_if_was.hpp>
+#include <boost/act/interlocked/type_traits/is_semantics.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+typedef bool_least_t flag_least_t;
+typedef bool_fast_t  flag_fast_t;
+
+// Note: Returns old value
+template< typename Semantics, typename Type >
+typename lazy_enable_if
+<
+  mpl::and_
+  <
+    is_semantics< Semantics >
+  , mpl::or_< is_same< typename remove_volatile< Type >::type, flag_least_t >
+            , is_same< typename remove_volatile< Type >::type, flag_fast_t >
+            >
+  >
+, remove_volatile< Type >
+>
+set_if_was_clear( Type& target )
+{
+  return assign_if_was< Semantics >( target, true, false );
+}
+
+template< typename Semantics, typename Type >
+typename lazy_enable_if
+<
+  mpl::and_
+  <
+    is_semantics< Semantics >
+  , mpl::or_< is_same< typename remove_volatile< Type >::type, flag_least_t >
+            , is_same< typename remove_volatile< Type >::type, flag_fast_t >
+            >
+  >
+, void
+>
+clear( Type& target )
+{
+  assign_if_was< Semantics >( target, false, true );
+}
+
+} } }
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/detail/load_acquire_default
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/detail/load_acquire_default	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/detail/load_acquire_default	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -31,6 +31,31 @@
 
 #else // Else: Custom interlocked load for this system (no default)
 
+#include <boost/act/config/interlocked/has.hpp>
+
+#if BOOST_ACT_INTERLOCKED_HAS( assign_if_was, acquire )
+
+#include <boost/act/interlocked/assign_if_was/assign_if_was_acquire.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+// ToDo: Change to default to load sequential if it exists
+struct load_acquire_default_impl
+{
+  template< typename TargetType >
+  static typename remove_cv< TargetType >::type execute( TargetType& target )
+  {
+    TargetType dummy_value;
+  
+    return assign_if_was< acquire >( target, dummy_value, dummy_value );
+  }
+};
+
+} } } }
+
+#else
+
 #include <boost/type_traits/remove_cv.hpp>
 
 #include <boost/mpl/assert.hpp>
@@ -59,3 +84,5 @@
 #endif
 
 #endif
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/detail/load_unordered_default
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/detail/load_unordered_default	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/detail/load_unordered_default	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -31,6 +31,8 @@
 
 #else // Else: Custom interlocked load for this system (no default)
 
+// ToDo: Change to default to assign_if_was if no custom load< acquire >
+
 #include <boost/act/interlocked/load/load_acquire.hpp>
 #include <boost/type_traits/remove_cv.hpp>
 
Copied: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence.hpp (from r7353, /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence.hpp)
==============================================================================
--- /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence.hpp	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,20 @@
+/*=============================================================================
+    Copyright (c) 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_FENCE_HPP
+#define BOOST_ACT_INTERLOCKED_FENCE_HPP
+
+#include <boost/act/interlocked/fence/fence.hpp>
+#include <boost/act/interlocked/fence/fence_thread_unsafe.hpp>
+#include <boost/act/interlocked/fence/fence_unordered.hpp>
+#include <boost/act/interlocked/fence/fence_acquire.hpp>
+#include <boost/act/interlocked/fence/fence_release.hpp>
+#include <boost/act/interlocked/fence/fence_acq_rel.hpp>
+#include <boost/act/interlocked/fence/fence_sequential.hpp>
+
+#endif
Deleted: /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence/fence_fwd.hpp
==============================================================================
Deleted: /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence/fence_load.hpp
==============================================================================
Deleted: /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence/fence_load_fwd.hpp
==============================================================================
Deleted: /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence/fence_store.hpp
==============================================================================
Deleted: /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence/fence_store_fwd.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_acq_rel.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_acq_rel_fwd.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_acquire.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_acquire_fwd.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_fwd.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_release.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_release_fwd.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_sequential.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_sequential_fwd.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_thread_unsafe.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_thread_unsafe_fwd.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_unordered.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_unordered_fwd.hpp
==============================================================================
Copied: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence_fwd.hpp (from r7353, /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence_fwd.hpp)
==============================================================================
--- /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence_fwd.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence_fwd.hpp	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,20 @@
+/*=============================================================================
+    Copyright (c) 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_FENCE_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_FENCE_FWD_HPP
+
+#include <boost/act/interlocked/fence/fence_fwd.hpp>
+#include <boost/act/interlocked/fence/fence_thread_unsafe_fwd.hpp>
+#include <boost/act/interlocked/fence/fence_unordered_fwd.hpp>
+#include <boost/act/interlocked/fence/fence_acquire_fwd.hpp>
+#include <boost/act/interlocked/fence/fence_release_fwd.hpp>
+#include <boost/act/interlocked/fence/fence_acq_rel_fwd.hpp>
+#include <boost/act/interlocked/fence/fence_sequential_fwd.hpp>
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/sequential.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/sequential.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/sequential.hpp	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,14 @@
+/*=============================================================================
+    Copyright (c) 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SEMANTICS_SEQUENTIAL_HPP
+#define BOOST_ACT_INTERLOCKED_SEMANTICS_SEQUENTIAL_HPP
+
+#include <boost/act/interlocked/semantics/sequential_fwd.hpp>
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/sequential_fwd.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/sequential_fwd.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/sequential_fwd.hpp	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,18 @@
+/*=============================================================================
+    Copyright (c) 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SEMANTICS_SEQUENTIAL_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_SEMANTICS_SEQUENTIAL_FWD_HPP
+
+namespace boost { namespace act { namespace interlocked {
+
+struct sequential {};
+
+} } }
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/thread_unsafe.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/thread_unsafe.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/thread_unsafe.hpp	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,14 @@
+/*=============================================================================
+    Copyright (c) 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SEMANTICS_THREAD_UNSAFE_HPP
+#define BOOST_ACT_INTERLOCKED_SEMANTICS_THREAD_UNSAFE_HPP
+
+#include <boost/act/interlocked/semantics/thread_unsafe_fwd.hpp>
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/thread_unsafe_fwd.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/thread_unsafe_fwd.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/thread_unsafe_fwd.hpp	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,18 @@
+/*=============================================================================
+    Copyright (c) 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SEMANTICS_THREAD_UNSAFE_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_SEMANTICS_THREAD_UNSAFE_FWD_HPP
+
+namespace boost { namespace act { namespace interlocked {
+
+struct thread_unsafe {};
+
+} } }
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/store/detail/store_release_default
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/store/detail/store_release_default	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/store/detail/store_release_default	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -32,6 +32,46 @@
 
 #else // Else: Custom interlocked store for this system (no default)
 
+#include <boost/act/config/interlocked/has.hpp>
+
+#if BOOST_ACT_INTERLOCKED_HAS( modify, release )
+
+#include <boost/type_traits/remove_cv.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+template< typename SourceType >
+class store_release_default_fun
+{
+public:
+  explicit store_release_default_fun( SourceType& source_init )
+    : source_m( source_init ) {}
+public:
+  template< typename TargetType >
+  typename remove_cv< TargetType >::type operator ()( TargetType& ) const
+  {
+    return static_cast< typename remove_cv< TargetType >::type >( source_m );
+  }
+private:
+  SourceType& source_m;
+};
+
+struct store_release_default_impl
+{
+  template< typename TargetType, typename SourceType >
+  static typename remove_cv< TargetType >::type
+  execute( TargetType& target, SourceType& source )
+  {
+    return modify< release >( target
+                            , store_release_default_fun< SourceType >( source )
+                            );
+  }
+};
+
+} } } }
+
+#else
+
 #include <boost/mpl/assert.hpp>
 #include <boost/mpl/always.hpp>
 #include <boost/mpl/apply.hpp>
@@ -58,3 +98,5 @@
 #endif
 
 #endif
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/act.qbk
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/act.qbk	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/act.qbk	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -27,10 +27,18 @@
 [def __pc_queue__                    [link boost_act.concepts.queue_concepts.pc_queue                 [concept PC Queue]]]
 [def __interlocked_type__            [link boost_act.interlocked.interlocked_concepts.interlocked_type                       [concept Interlocked Type]]]
 [def __interlocked_natural_type__    [link boost_act.interlocked.interlocked_concepts.interlocked_natural_type                       [concept Interlocked Natural Type]]]
+[def __interlocked_cage__            [link boost_act.interlocked.interlocked_concepts.interlocked_cage [concept Interlocked Cage]]]
+[def __interlocked_cages__           [link boost_act.interlocked.interlocked_concepts.interlocked_cage [concept Interlocked Cages]]]
 [def __interlocked_operation__       [link boost_act.interlocked.interlocked_concepts.interlocked_operation [concept Interlocked Operation]]]
-[def __semantic_type__               [link boost_act.interlocked.interlocked_concepts.interlocked_operation.semantic_type [concept Semantic Type]]]
+[def __interlocked_operations__      [link boost_act.interlocked.interlocked_concepts.interlocked_operation [concept Interlocked Operations]]]
+[def __interlocked_semantic_type__   [link boost_act.interlocked.interlocked_concepts.interlocked_semantic_type [concept Interlocked Semantic Type]]]
+[def __interlocked_semantic_types__  [link boost_act.interlocked.interlocked_concepts.interlocked_semantic_type [concept Interlocked Semantic Types]]]
+[def __interlocked_semantic_models__ [link boost_act.interlocked.interlocked_semantic_models [concept Interlocked Semantic Models]]]
+[def __interlocked_cage_models__     [link boost_act.interlocked.interlocked_cage_models [concept Interlocked Cage Models]]]
 [def __interlocked_arithmetic_type__ [link boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type        [concept Interlocked Arithmetic Type]]]
 [def __interlocked_integer_type__    [link boost_act.interlocked.interlocked_concepts.interlocked_integer_type           [concept Interlocked Integer Type]]]
+[def __interlocked_memory_cage__     [link boost_act.interlocked.interlocked_cage_models.interlocked_memory_cage         [concept Interlocked Memory Cage]]]
+[def __interlocked_compiler_cage__   [link boost_act.interlocked.interlocked_cage_models.interlocked_compiler_cage       [concept Interlocked Compiler Cage]]]
 [def __worker_policy__               [link boost_act.concepts.worker_policy                           [concept Worker Policy]]]
 [def __worker__                      [link boost_act.concepts.worker                                  [concept Worker]]]
 [def __threaded_worker_policy__      [link boost_act.concepts.threaded_worker_policy                  [concept Threaded Worker Policy]]]
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/HTML.manifest
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/HTML.manifest	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/HTML.manifest	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -6,10 +6,16 @@
 boost_act/interlocked.html
 boost_act/interlocked/interlocked_concepts.html
 boost_act/interlocked/interlocked_concepts/interlocked_operation.html
+boost_act/interlocked/interlocked_concepts/interlocked_cage.html
+boost_act/interlocked/interlocked_concepts/interlocked_semantic_type.html
 boost_act/interlocked/interlocked_concepts/interlocked_type.html
 boost_act/interlocked/interlocked_concepts/interlocked_natural_type.html
 boost_act/interlocked/interlocked_concepts/interlocked_arithmetic_type.html
 boost_act/interlocked/interlocked_concepts/interlocked_integer_type.html
+boost_act/interlocked/interlocked_semantic_models.html
+boost_act/interlocked/interlocked_cage_models.html
+boost_act/interlocked/interlocked_cage_models/interlocked_memory_cage.html
+boost_act/interlocked/interlocked_cage_models/interlocked_compiler_cage.html
 boost_act/interlocked/interlocked_integer_models.html
 boost_act/interlocked/interlocked_integer_models/interlocked_integer_typedefs.html
 boost_act/interlocked/interlocked_integer_models/interlocked_integer_metafunctions.html
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/compiler_setup.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/compiler_setup.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/compiler_setup.html	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -88,7 +88,7 @@
               </div>
             </div>
             <a id="boost_act.compiler_setup.activating_openmp_support_in_visual_c___2005"></a>
-            <h4><a id="id390172"></a>
+            <h4><a id="id390176"></a>
       <a href="compiler_setup.html#boost_act.compiler_setup.activating_openmp_support_in_visual_c___2005">Activating
       OpenMP Support in Visual C++ 2005</a>
     </h4>
@@ -139,7 +139,7 @@
               </div>
             </div>
             <div class="table">
-              <a id="id390240"></a>
+              <a id="id390247"></a>
               <p class="title">
                 <b>Table 1. OpenMP Extension Support</b>
               </p>
@@ -301,7 +301,7 @@
             <p>
     </p>
             <a id="boost_act.compiler_setup.activating_openmp_support_in_visual_c___2005"></a>
-            <h4><a id="id388485"></a>
+            <h4><a id="id388496"></a>
       <a href="compiler_setup.html#boost_act.compiler_setup.activating_openmp_support_in_visual_c___2005">Activating
       OpenMP Support in Visual C++ 2005</a>
     </h4>
@@ -315,7 +315,7 @@
       get a linker error upon build.
     </p>
             <a id="boost_act.compiler_setup.linking_with_boost_threads"></a>
-            <h4><a id="id388545"></a>
+            <h4><a id="id388556"></a>
       <a href="compiler_setup.html#boost_act.compiler_setup.linking_with_boost_threads">Linking
       with Boost.Threads</a>
     </h4>
@@ -326,7 +326,7 @@
       and Install</a>.
     </p>
             <a id="boost_act.compiler_setup.compiling_the_library"></a>
-            <h4><a id="id388598"></a>
+            <h4><a id="id388610"></a>
       <a href="compiler_setup.html#boost_act.compiler_setup.compiling_the_library">Compiling the
       Library</a>
     </h4>
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked.html	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -110,6 +110,18 @@
                         </dt>
                         <dt>
                           <span class="section">
+                            <a href="interlocked/interlocked_concepts/interlocked_cage.html">Interlocked
+        Cage</a>
+                          </span>
+                        </dt>
+                        <dt>
+                          <span class="section">
+                            <a href="interlocked/interlocked_concepts/interlocked_semantic_type.html">Interlocked
+        Semantic Type</a>
+                          </span>
+                        </dt>
+                        <dt>
+                          <span class="section">
                             <a href="interlocked/interlocked_concepts/interlocked_type.html">Interlocked
         Type</a>
                           </span>
@@ -136,6 +148,34 @@
                     </dd>
                     <dt>
                       <span class="section">
+                        <a href="interlocked/interlocked_semantic_models.html">Interlocked
+      Semantic Models</a>
+                      </span>
+                    </dt>
+                    <dt>
+                      <span class="section">
+                        <a href="interlocked/interlocked_cage_models.html">Interlocked
+      Cage Models</a>
+                      </span>
+                    </dt>
+                    <dd>
+                      <dl>
+                        <dt>
+                          <span class="section">
+                            <a href="interlocked/interlocked_cage_models/interlocked_memory_cage.html">Interlocked
+        Memory Cage</a>
+                          </span>
+                        </dt>
+                        <dt>
+                          <span class="section">
+                            <a href="interlocked/interlocked_cage_models/interlocked_compiler_cage.html">Interlocked
+        Compiler Cage</a>
+                          </span>
+                        </dt>
+                      </dl>
+                    </dd>
+                    <dt>
+                      <span class="section">
                         <a href="interlocked/interlocked_integer_models.html">Interlocked
       Integer Models</a>
                       </span>
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_barrier_models.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_barrier_models.html	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Barrier Models</title><link rel="stylesheet" href="../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked.html" title="Interlocked" /><link rel="prev" href="interlocked_semantic_models.html" title="Interlocked Semantic Models" /><link rel="next" href="interlocked_barrier_models/interlocked_fence.html" title="Interlocked Fence" /><script type="text/javascript" src="../../../../doc/javascript/main.js"></script>
+      <script type="text/javascript" > <!--
+         boostscript.init( new Array(
+            boostscript.nested_links,
+            boostscript.style_switcher,
+            boostscript.common
+         ),
+         '../../../../doc/javascript'
+         );
+      //--></script>
+
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'include_alternate_stylesheets',
+             '../../../../doc/style/html/syntax.xml',
+             '../../../../doc/style/html'
+          );
+      //--></script>
+<link rel="alternate stylesheet" type="text/css" title="Quickbook source" href="../../../../doc/style/html/conversion/boostbook_to_quickbook.css" />
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'load_user_stylesheet' );
+      //--></script>
+</head>
+  <body>
+    <div id="heading">
+      <div id="heading-placard"></div>
+      <div class="heading-navigation-box">
+        <div class="nested-links-select-box" id="chapters_select_box">
+      <script type="text/javascript" > <!--
+         boostscript.call( boostscript.nested_links, 'select_box',
+            'chapters_select_box',
+            '../../../../doc/chapters.xml',
+            '../../../../libs');
+      //--></script>
+</div>
+        <div class="nested-links-select-box" id="sections_select_box">
+      <script type="text/javascript" > <!--
+         boostscript.call( boostscript.nested_links, 'select_box',
+            'sections_select_box',
+            '../../sections.xml',
+            '../.././');
+      //--></script>
+</div>
+      </div>
+      <div class="search-box">
+        <form id="cref" action="http://google.com/cse">
+          <div class="search-box-label"></div>
+          <div>
+            <input type="hidden" name="cref" value="http://tinyurl.com/33np8c" />
+            <input class="search-box" type="text" name="q" id="q" size="40" maxlength="255" alt="Search Text" />
+          </div>
+        </form>
+      </div>
+    </div>
+    <div class="spirit-nav">
+      <div class="spirit-nav-icon">
+        <a accesskey="p" href="interlocked_semantic_models.html">
+          <div class="prev-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="u" href="../interlocked.html">
+          <div class="up-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="h" href="../../index.html">
+          <div class="home-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="n" href="interlocked_barrier_models/interlocked_fence.html">
+          <div class="next-icon"></div>
+        </a>
+      </div>
+    </div>
+    <div id="body">
+      <div id="body-inner">
+        <div id="content">
+          <div class="section">
+            <div class="titlepage">
+              <div>
+                <div>
+                  <h3 class="title"><a id="boost_act.interlocked.interlocked_barrier_models"></a><a href="interlocked_barrier_models.html" title="Interlocked Barrier Models">Interlocked
+      Barrier Models</a></h3>
+                </div>
+              </div>
+            </div>
+            <div class="toc">
+              <div class="box-outer-wrapper">
+                <div class="box-top-left"></div>
+                <div class="box-top-right"></div>
+                <div class="box-top"></div>
+                <div class="box-inner-wrapper">
+                  <dl>
+                    <dt>
+                      <span class="section">
+                        <a href="interlocked_barrier_models/interlocked_fence.html">Interlocked
+        Fence</a>
+                      </span>
+                    </dt>
+                    <dt>
+                      <span class="section">
+                        <a href="interlocked_barrier_models/interlocked_compiler_fence.html">Interlocked
+        Compiler Fence</a>
+                      </span>
+                    </dt>
+                  </dl>
+                </div>
+                <div class="box-bottom-left"></div>
+                <div class="box-bottom-right"></div>
+                <div class="box-bottom"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+        <div class="clear"></div>
+      </div>
+    </div>
+    <div class="spirit-nav">
+      <div class="spirit-nav-icon">
+        <a accesskey="p" href="interlocked_semantic_models.html">
+          <div class="prev-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="u" href="../interlocked.html">
+          <div class="up-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="h" href="../../index.html">
+          <div class="home-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="n" href="interlocked_barrier_models/interlocked_fence.html">
+          <div class="next-icon"></div>
+        </a>
+      </div>
+    </div>
+    <div id="footer">
+      <div id="footer-left">
+        <div id="copyright">
+          <p>Copyright © 2006 , 2007 Matthew Calabrese</p>
+        </div>
+        <div id="license">
+          <p>Distributed under the
+                  Boost Software License, Version 1.0.
+               </p>
+        </div>
+      </div>
+      <div id="footer-right">
+        <div id="banners">
+          <p id="banner-xhtml">
+            XHTML 1.0
+          </p>
+          <p id="banner-css">
+            CSS
+          </p>
+          <p id="banner-sourceforge">
+            SourceForge
+          </p>
+        </div>
+      </div>
+      <div class="clear"></div>
+    </div>
+  </body>
+</html>
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models.html	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Cage Models</title><link rel="stylesheet" href="../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked.html" title="Interlocked" /><link rel="prev" href="interlocked_semantic_models.html" title="Interlocked Semantic Models" /><link rel="next" href="interlocked_cage_models/interlocked_memory_cage.html" title="Interlocked Memory Cage" /><script type="text/javascript" src="../../../../doc/javascript/main.js"></script>
+      <script type="text/javascript" > <!--
+         boostscript.init( new Array(
+            boostscript.nested_links,
+            boostscript.style_switcher,
+            boostscript.common
+         ),
+         '../../../../doc/javascript'
+         );
+      //--></script>
+
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'include_alternate_stylesheets',
+             '../../../../doc/style/html/syntax.xml',
+             '../../../../doc/style/html'
+          );
+      //--></script>
+<link rel="alternate stylesheet" type="text/css" title="Quickbook source" href="../../../../doc/style/html/conversion/boostbook_to_quickbook.css" />
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'load_user_stylesheet' );
+      //--></script>
+</head>
+  <body>
+    <div id="heading">
+      <div id="heading-placard"></div>
+      <div class="heading-navigation-box">
+        <div class="nested-links-select-box" id="chapters_select_box">
+      <script type="text/javascript" > <!--
+         boostscript.call( boostscript.nested_links, 'select_box',
+            'chapters_select_box',
+            '../../../../doc/chapters.xml',
+            '../../../../libs');
+      //--></script>
+</div>
+        <div class="nested-links-select-box" id="sections_select_box">
+      <script type="text/javascript" > <!--
+         boostscript.call( boostscript.nested_links, 'select_box',
+            'sections_select_box',
+            '../../sections.xml',
+            '../.././');
+      //--></script>
+</div>
+      </div>
+      <div class="search-box">
+        <form id="cref" action="http://google.com/cse">
+          <div class="search-box-label"></div>
+          <div>
+            <input type="hidden" name="cref" value="http://tinyurl.com/33np8c" />
+            <input class="search-box" type="text" name="q" id="q" size="40" maxlength="255" alt="Search Text" />
+          </div>
+        </form>
+      </div>
+    </div>
+    <div class="spirit-nav">
+      <div class="spirit-nav-icon">
+        <a accesskey="p" href="interlocked_semantic_models.html">
+          <div class="prev-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="u" href="../interlocked.html">
+          <div class="up-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="h" href="../../index.html">
+          <div class="home-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="n" href="interlocked_cage_models/interlocked_memory_cage.html">
+          <div class="next-icon"></div>
+        </a>
+      </div>
+    </div>
+    <div id="body">
+      <div id="body-inner">
+        <div id="content">
+          <div class="section">
+            <div class="titlepage">
+              <div>
+                <div>
+                  <h3 class="title"><a id="boost_act.interlocked.interlocked_cage_models"></a><a href="interlocked_cage_models.html" title="Interlocked Cage Models">Interlocked
+      Cage Models</a></h3>
+                </div>
+              </div>
+            </div>
+            <div class="toc">
+              <div class="box-outer-wrapper">
+                <div class="box-top-left"></div>
+                <div class="box-top-right"></div>
+                <div class="box-top"></div>
+                <div class="box-inner-wrapper">
+                  <dl>
+                    <dt>
+                      <span class="section">
+                        <a href="interlocked_cage_models/interlocked_memory_cage.html">Interlocked
+        Memory Cage</a>
+                      </span>
+                    </dt>
+                    <dt>
+                      <span class="section">
+                        <a href="interlocked_cage_models/interlocked_compiler_cage.html">Interlocked
+        Compiler Cage</a>
+                      </span>
+                    </dt>
+                  </dl>
+                </div>
+                <div class="box-bottom-left"></div>
+                <div class="box-bottom-right"></div>
+                <div class="box-bottom"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+        <div class="clear"></div>
+      </div>
+    </div>
+    <div class="spirit-nav">
+      <div class="spirit-nav-icon">
+        <a accesskey="p" href="interlocked_semantic_models.html">
+          <div class="prev-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="u" href="../interlocked.html">
+          <div class="up-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="h" href="../../index.html">
+          <div class="home-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="n" href="interlocked_cage_models/interlocked_memory_cage.html">
+          <div class="next-icon"></div>
+        </a>
+      </div>
+    </div>
+    <div id="footer">
+      <div id="footer-left">
+        <div id="copyright">
+          <p>Copyright © 2006 , 2007 Matthew Calabrese</p>
+        </div>
+        <div id="license">
+          <p>Distributed under the
+                  Boost Software License, Version 1.0.
+               </p>
+        </div>
+      </div>
+      <div id="footer-right">
+        <div id="banners">
+          <p id="banner-xhtml">
+            XHTML 1.0
+          </p>
+          <p id="banner-css">
+            CSS
+          </p>
+          <p id="banner-sourceforge">
+            SourceForge
+          </p>
+        </div>
+      </div>
+      <div class="clear"></div>
+    </div>
+  </body>
+</html>
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models/interlocked_compiler_cage.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models/interlocked_compiler_cage.html	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Compiler Cage</title><link rel="stylesheet" href="../../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked_cage_models.html" title="Interlocked Cage Models" /><link rel="prev" href="interlocked_memory_cage.html" title="Interlocked Memory Cage" /><link rel="next" href="../interlocked_integer_models.html" title="Interlocked Integer Models" /><script type="text/javascript" src="../../../../../doc/javascript/main.js"></script>
+      <script type="text/javascript" > <!--
+         boostscript.init( new Array(
+            boostscript.nested_links,
+            boostscript.style_switcher,
+            boostscript.common
+         ),
+         '../../../../../doc/javascript'
+         );
+      //--></script>
+
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'include_alternate_stylesheets',
+             '../../../../../doc/style/html/syntax.xml',
+             '../../../../../doc/style/html'
+          );
+      //--></script>
+<link rel="alternate stylesheet" type="text/css" title="Quickbook source" href="../../../../../doc/style/html/conversion/boostbook_to_quickbook.css" />
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'load_user_stylesheet' );
+      //--></script>
+</head>
+  <body>
+    <div id="heading">
+      <div id="heading-placard"></div>
+      <div class="heading-navigation-box">
+        <div class="nested-links-select-box" id="chapters_select_box">
+      <script type="text/javascript" > <!--
+         boostscript.call( boostscript.nested_links, 'select_box',
+            'chapters_select_box',
+            '../../../../../doc/chapters.xml',
+            '../../../../../libs');
+      //--></script>
+</div>
+        <div class="nested-links-select-box" id="sections_select_box">
+      <script type="text/javascript" > <!--
+         boostscript.call( boostscript.nested_links, 'select_box',
+            'sections_select_box',
+            '../../../sections.xml',
+            '../../.././');
+      //--></script>
+</div>
+      </div>
+      <div class="search-box">
+        <form id="cref" action="http://google.com/cse">
+          <div class="search-box-label"></div>
+          <div>
+            <input type="hidden" name="cref" value="http://tinyurl.com/33np8c" />
+            <input class="search-box" type="text" name="q" id="q" size="40" maxlength="255" alt="Search Text" />
+          </div>
+        </form>
+      </div>
+    </div>
+    <div class="spirit-nav">
+      <div class="spirit-nav-icon">
+        <a accesskey="p" href="interlocked_memory_cage.html">
+          <div class="prev-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="u" href="../interlocked_cage_models.html">
+          <div class="up-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="h" href="../../../index.html">
+          <div class="home-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="n" href="../interlocked_integer_models.html">
+          <div class="next-icon"></div>
+        </a>
+      </div>
+    </div>
+    <div id="body">
+      <div id="body-inner">
+        <div id="content">
+          <div class="section">
+            <div class="titlepage">
+              <div>
+                <div>
+                  <h4 class="title"><a id="boost_act.interlocked.interlocked_cage_models.interlocked_compiler_cage"></a><a href="interlocked_compiler_cage.html" title="Interlocked Compiler Cage">Interlocked
+        Compiler Cage</a></h4>
+                </div>
+              </div>
+            </div>
+            <div class="important">
+              <div class="box-outer-wrapper">
+                <div class="box-top-left"></div>
+                <div class="box-top-right"></div>
+                <div class="box-top"></div>
+                <div class="box-inner-wrapper">
+                  <div class="admonition-graphic">
+                    <div class="admonition-icon">
+                      <div class="important-icon"></div>
+                    </div>
+                  </div>
+                  <div class="admonition-body">
+                    <div class="admonition-title">Important</div>
+                    <div class="admonition-content">
+                      <p>
+            </p>
+                      <p>
+              The features described on this page are not yet implemented.
+            </p>
+                      <p>
+          </p>
+                    </div>
+                  </div>
+                </div>
+                <div class="box-bottom-left"></div>
+                <div class="box-bottom-right"></div>
+                <div class="box-bottom"></div>
+              </div>
+            </div>
+            <a id="boost_act.interlocked.interlocked_cage_models.interlocked_compiler_cage.description"></a>
+            <h6><a id="id467284"></a>
+          Description
+        </h6>
+            <p>
+          An <a href="../interlocked_concepts/interlocked_cage.html" title="Interlocked Cage">
+          <code class="literal">Interlocked Cage</code></a> whose instantiations and semantics
+          apply to compiler reordering of operations only. Order of visibility of
+          operations with respect to other threads of execution is not specified.
+        </p>
+            <a id="boost_act.interlocked.interlocked_cage_models.interlocked_compiler_cage.model_of"></a>
+            <h6><a id="id467335"></a>
+          <a href="interlocked_compiler_cage.html#boost_act.interlocked.interlocked_cage_models.interlocked_compiler_cage.model_of">Model
+          of</a>
+        </h6>
+            <div class="itemizedlist">
+              <ul>
+                <li>
+                  <a href="../interlocked_concepts/interlocked_cage.html" title="Interlocked Cage">
+            <code class="literal">Interlocked Cage</code></a>
+                </li>
+              </ul>
+            </div>
+            <a id="boost_act.interlocked.interlocked_cage_models.interlocked_compiler_cage.example"></a>
+            <h6><a id="id467387"></a>
+          Example
+        </h6>
+            <p>
+          ToDo: Insert example here
+        </p>
+          </div>
+        </div>
+        <div class="clear"></div>
+      </div>
+    </div>
+    <div class="spirit-nav">
+      <div class="spirit-nav-icon">
+        <a accesskey="p" href="interlocked_memory_cage.html">
+          <div class="prev-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="u" href="../interlocked_cage_models.html">
+          <div class="up-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="h" href="../../../index.html">
+          <div class="home-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="n" href="../interlocked_integer_models.html">
+          <div class="next-icon"></div>
+        </a>
+      </div>
+    </div>
+    <div id="footer">
+      <div id="footer-left">
+        <div id="copyright">
+          <p>Copyright © 2006 , 2007 Matthew Calabrese</p>
+        </div>
+        <div id="license">
+          <p>Distributed under the
+                  Boost Software License, Version 1.0.
+               </p>
+        </div>
+      </div>
+      <div id="footer-right">
+        <div id="banners">
+          <p id="banner-xhtml">
+            XHTML 1.0
+          </p>
+          <p id="banner-css">
+            CSS
+          </p>
+          <p id="banner-sourceforge">
+            SourceForge
+          </p>
+        </div>
+      </div>
+      <div class="clear"></div>
+    </div>
+  </body>
+</html>
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models/interlocked_memory_cage.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models/interlocked_memory_cage.html	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,275 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Memory Cage</title><link rel="stylesheet" href="../../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked_cage_models.html" title="Interlocked Cage Models" /><link rel="prev" href="../interlocked_cage_models.html" title="Interlocked Cage Models" /><link rel="next" href="interlocked_compiler_cage.html" title="Interlocked Compiler Cage" /><script type="text/javascript" src="../../../../../doc/javascript/main.js"></script>
+      <script type="text/javascript" > <!--
+         boostscript.init( new Array(
+            boostscript.nested_links,
+            boostscript.style_switcher,
+            boostscript.common
+         ),
+         '../../../../../doc/javascript'
+         );
+      //--></script>
+
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'include_alternate_stylesheets',
+             '../../../../../doc/style/html/syntax.xml',
+             '../../../../../doc/style/html'
+          );
+      //--></script>
+<link rel="alternate stylesheet" type="text/css" title="Quickbook source" href="../../../../../doc/style/html/conversion/boostbook_to_quickbook.css" />
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'load_user_stylesheet' );
+      //--></script>
+</head>
+  <body>
+    <div id="heading">
+      <div id="heading-placard"></div>
+      <div class="heading-navigation-box">
+        <div class="nested-links-select-box" id="chapters_select_box">
+      <script type="text/javascript" > <!--
+         boostscript.call( boostscript.nested_links, 'select_box',
+            'chapters_select_box',
+            '../../../../../doc/chapters.xml',
+            '../../../../../libs');
+      //--></script>
+</div>
+        <div class="nested-links-select-box" id="sections_select_box">
+      <script type="text/javascript" > <!--
+         boostscript.call( boostscript.nested_links, 'select_box',
+            'sections_select_box',
+            '../../../sections.xml',
+            '../../.././');
+      //--></script>
+</div>
+      </div>
+      <div class="search-box">
+        <form id="cref" action="http://google.com/cse">
+          <div class="search-box-label"></div>
+          <div>
+            <input type="hidden" name="cref" value="http://tinyurl.com/33np8c" />
+            <input class="search-box" type="text" name="q" id="q" size="40" maxlength="255" alt="Search Text" />
+          </div>
+        </form>
+      </div>
+    </div>
+    <div class="spirit-nav">
+      <div class="spirit-nav-icon">
+        <a accesskey="p" href="../interlocked_cage_models.html">
+          <div class="prev-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="u" href="../interlocked_cage_models.html">
+          <div class="up-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="h" href="../../../index.html">
+          <div class="home-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="n" href="interlocked_compiler_cage.html">
+          <div class="next-icon"></div>
+        </a>
+      </div>
+    </div>
+    <div id="body">
+      <div id="body-inner">
+        <div id="content">
+          <div class="section">
+            <div class="titlepage">
+              <div>
+                <div>
+                  <h4 class="title"><a id="boost_act.interlocked.interlocked_cage_models.interlocked_memory_cage"></a><a href="interlocked_memory_cage.html" title="Interlocked Memory Cage">Interlocked
+        Memory Cage</a></h4>
+                </div>
+              </div>
+            </div>
+            <div class="important">
+              <div class="box-outer-wrapper">
+                <div class="box-top-left"></div>
+                <div class="box-top-right"></div>
+                <div class="box-top"></div>
+                <div class="box-inner-wrapper">
+                  <div class="admonition-graphic">
+                    <div class="admonition-icon">
+                      <div class="important-icon"></div>
+                    </div>
+                  </div>
+                  <div class="admonition-body">
+                    <div class="admonition-title">Important</div>
+                    <div class="admonition-content">
+                      <p>
+            </p>
+                      <p>
+              The features described on this page are not yet implemented.
+            </p>
+                      <p>
+          </p>
+                    </div>
+                  </div>
+                </div>
+                <div class="box-bottom-left"></div>
+                <div class="box-bottom-right"></div>
+                <div class="box-bottom"></div>
+              </div>
+            </div>
+            <a id="boost_act.interlocked.interlocked_cage_models.interlocked_memory_cage.description"></a>
+            <h6><a id="id466283"></a>
+          Description
+        </h6>
+            <p>
+          An <a href="../interlocked_concepts/interlocked_cage.html" title="Interlocked Cage">
+          <code class="literal">Interlocked Cage</code></a> whose instantiations and semantics
+          apply to both compiler reordering of operations as well as order of visibility
+          of operations with respect to other threads of execution. Internally,
+          <code class="literal">Interlocked Memory Cages</code> often imply low-level memory
+          and compiler barriers during construction and/or destruction and therefore
+          should be used sparingly. When given the option, one should always prefer
+          to directly apply semantics to their operation rather than use a cage.
+          One common use would be to implement a user-defined interlocked operation
+          with strict ordering requirements when the target system does not provide
+          direct support for such semantics for that particular operation.
+        </p>
+            <a id="boost_act.interlocked.interlocked_cage_models.interlocked_memory_cage.model_of"></a>
+            <h6><a id="id466351"></a>
+          <a href="interlocked_memory_cage.html#boost_act.interlocked.interlocked_cage_models.interlocked_memory_cage.model_of">Model
+          of</a>
+        </h6>
+            <div class="itemizedlist">
+              <ul>
+                <li>
+                  <a href="../interlocked_concepts/interlocked_cage.html" title="Interlocked Cage">
+            <code class="literal">Interlocked Cage</code></a>
+                </li>
+              </ul>
+            </div>
+            <a id="boost_act.interlocked.interlocked_cage_models.interlocked_memory_cage.example"></a>
+            <h6><a id="id466401"></a>
+          Example
+        </h6>
+            <p>
+          ToDo: Incorporate this into tests
+        </p>
+            <div class="programlisting">
+              <div class="box-outer-wrapper">
+                <div class="box-top-left"></div>
+                <div class="box-top-right"></div>
+                <div class="box-top"></div>
+                <div class="box-inner-wrapper">
+                  <div class="style-switcher-box" id="id466427">
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'insert_style_selector',
+             'id466427',
+             '../../../../../doc/style/html/syntax.xml',
+             '../../../../../doc/style/html'
+          );
+      //--></script>
+</div>
+                  <pre>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">memory_cage</span><span class="special">/</span><span class="identifier">memory_cage_sequential</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">memory_cage</span><span class="special">/</span><span class="identifier">memory_cage_acq_rel</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">add_assign</span><span class="special">/</span><span class="identifier">add_assign_unordered</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">add_assign</span><span class="special">/</span><span class="identifier">add_assign_acquire</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">types</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+  <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">act</span><span class="special">::</span><span class="identifier">interlocked</span><span class="special">;</span>
+
+  <span class="identifier">int_fast32_t</span> <span class="identifier">var</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+  
+  <span class="comment">/* ... */</span>
+  
+  <span class="comment">// The following block turns the contained unordered add_assign into an
+</span>  <span class="comment">// add_assign operation with sequential semantics.
+</span>  <span class="special">{</span>
+    <span class="identifier">memory_cage</span><span class="special"><</span> <span class="identifier">sequential</span> <span class="special">></span> <span class="identifier">cage</span><span class="special">;</span>
+
+    <span class="identifier">add_assign</span><span class="special"><</span> <span class="identifier">unordered</span> <span class="special">>(</span> <span class="identifier">var</span><span class="special">,</span> <span class="number">4</span> <span class="special">);</span>
+  <span class="special">}</span>
+
+  <span class="comment">/* ... */</span>
+
+  <span class="comment">// The following block turns the contained acquire add_assign into an
+</span>  <span class="comment">// add_assign operation with acq_rel semantics. The second template
+</span>  <span class="comment">// argument to fence along with the first effectively makes the type
+</span>  <span class="comment">// a fence with just release semantics. Since add_assign already
+</span>  <span class="comment">// specifies acquire semantics, the resulting operation correctly has
+</span>  <span class="comment">// acq_rel semantics without any potential redundant memory barriers.
+</span>  <span class="comment">// Leaving the second argument out would also work, but may generate
+</span>  <span class="comment">// less efficient code.
+</span>  <span class="special">{</span>
+    <span class="identifier">memory_cage</span><span class="special"><</span> <span class="identifier">acq_rel</span><span class="special">,</span> <span class="identifier">acquire</span> <span class="special">></span> <span class="identifier">cage</span><span class="special">;</span>
+
+    <span class="identifier">add_assign</span><span class="special"><</span> <span class="identifier">acquire</span> <span class="special">>(</span> <span class="identifier">var</span><span class="special">,</span> <span class="number">4</span> <span class="special">);</span>
+  <span class="special">}</span>
+
+  <span class="comment">// An add_assign operation with unordered semantics.
+</span>  <span class="identifier">add_assign</span><span class="special"><</span> <span class="identifier">unordered</span> <span class="special">>(</span> <span class="identifier">var</span><span class="special">,</span> <span class="number">4</span> <span class="special">);</span>
+<span class="special">}</span>
+</pre>
+                </div>
+                <div class="box-bottom-left"></div>
+                <div class="box-bottom-right"></div>
+                <div class="box-bottom"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+        <div class="clear"></div>
+      </div>
+    </div>
+    <div class="spirit-nav">
+      <div class="spirit-nav-icon">
+        <a accesskey="p" href="../interlocked_cage_models.html">
+          <div class="prev-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="u" href="../interlocked_cage_models.html">
+          <div class="up-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="h" href="../../../index.html">
+          <div class="home-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="n" href="interlocked_compiler_cage.html">
+          <div class="next-icon"></div>
+        </a>
+      </div>
+    </div>
+    <div id="footer">
+      <div id="footer-left">
+        <div id="copyright">
+          <p>Copyright © 2006 , 2007 Matthew Calabrese</p>
+        </div>
+        <div id="license">
+          <p>Distributed under the
+                  Boost Software License, Version 1.0.
+               </p>
+        </div>
+      </div>
+      <div id="footer-right">
+        <div id="banners">
+          <p id="banner-xhtml">
+            XHTML 1.0
+          </p>
+          <p id="banner-css">
+            CSS
+          </p>
+          <p id="banner-sourceforge">
+            SourceForge
+          </p>
+        </div>
+      </div>
+      <div class="clear"></div>
+    </div>
+  </body>
+</html>
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts.html	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -103,6 +103,18 @@
                     </dt>
                     <dt>
                       <span class="section">
+                        <a href="interlocked_concepts/interlocked_cage.html">Interlocked
+        Cage</a>
+                      </span>
+                    </dt>
+                    <dt>
+                      <span class="section">
+                        <a href="interlocked_concepts/interlocked_semantic_type.html">Interlocked
+        Semantic Type</a>
+                      </span>
+                    </dt>
+                    <dt>
+                      <span class="section">
                         <a href="interlocked_concepts/interlocked_type.html">Interlocked
         Type</a>
                       </span>
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_arithmetic_type.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_arithmetic_type.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_arithmetic_type.html	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.description"></a>
-            <h6><a id="id460718"></a>
+            <h6><a id="id460794"></a>
           <a href="interlocked_arithmetic_type.html#boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.description">Description</a>
         </h6>
             <p>
@@ -145,7 +145,7 @@
               </dl>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.refinement_of"></a>
-            <h6><a id="id460928"></a>
+            <h6><a id="id461004"></a>
           <a href="interlocked_arithmetic_type.html#boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.refinement_of">Refinement
           of</a>
         </h6>
@@ -154,7 +154,7 @@
           <code class="literal">Interlocked Natural Type</code></a>
         </p>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.expression_requirements"></a>
-            <h6><a id="id460977"></a>
+            <h6><a id="id461053"></a>
           <a href="interlocked_arithmetic_type.html#boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.expression_requirements">Expression
           Requirements</a>
         </h6>
@@ -206,7 +206,7 @@
               </div>
             </div>
             <div class="table">
-              <a id="id461193"></a>
+              <a id="id461268"></a>
               <p class="title">
                 <b>Table 6. Interlocked Arithmetic Type Requirements</b>
               </p>
@@ -339,7 +339,7 @@
             </div>
             <br class="table-break" />
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.headers"></a>
-            <h6><a id="id461807"></a>
+            <h6><a id="id461882"></a>
           <a href="interlocked_arithmetic_type.html#boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.headers">Headers</a>
         </h6>
             <p>
@@ -351,10 +351,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
-                  <div class="style-switcher-box" id="id461828">
+                  <div class="style-switcher-box" id="id461904">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id461828',
+             'id461904',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -400,7 +400,7 @@
             <p>
         </p>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.example"></a>
-            <h6><a id="id462710"></a>
+            <h6><a id="id462785"></a>
           <a href="interlocked_arithmetic_type.html#boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.example">Example</a>
         </h6>
             <p>
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_cage.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_cage.html	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,319 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Cage</title><link rel="stylesheet" href="../../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked_concepts.html" title="Interlocked Concepts" /><link rel="prev" href="interlocked_operation.html" title="Interlocked Operation" /><link rel="next" href="interlocked_semantic_type.html" title="Interlocked Semantic Type" /><script type="text/javascript" src="../../../../../doc/javascript/main.js"></script>
+      <script type="text/javascript" > <!--
+         boostscript.init( new Array(
+            boostscript.nested_links,
+            boostscript.style_switcher,
+            boostscript.common
+         ),
+         '../../../../../doc/javascript'
+         );
+      //--></script>
+
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'include_alternate_stylesheets',
+             '../../../../../doc/style/html/syntax.xml',
+             '../../../../../doc/style/html'
+          );
+      //--></script>
+<link rel="alternate stylesheet" type="text/css" title="Quickbook source" href="../../../../../doc/style/html/conversion/boostbook_to_quickbook.css" />
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'load_user_stylesheet' );
+      //--></script>
+</head>
+  <body>
+    <div id="heading">
+      <div id="heading-placard"></div>
+      <div class="heading-navigation-box">
+        <div class="nested-links-select-box" id="chapters_select_box">
+      <script type="text/javascript" > <!--
+         boostscript.call( boostscript.nested_links, 'select_box',
+            'chapters_select_box',
+            '../../../../../doc/chapters.xml',
+            '../../../../../libs');
+      //--></script>
+</div>
+        <div class="nested-links-select-box" id="sections_select_box">
+      <script type="text/javascript" > <!--
+         boostscript.call( boostscript.nested_links, 'select_box',
+            'sections_select_box',
+            '../../../sections.xml',
+            '../../.././');
+      //--></script>
+</div>
+      </div>
+      <div class="search-box">
+        <form id="cref" action="http://google.com/cse">
+          <div class="search-box-label"></div>
+          <div>
+            <input type="hidden" name="cref" value="http://tinyurl.com/33np8c" />
+            <input class="search-box" type="text" name="q" id="q" size="40" maxlength="255" alt="Search Text" />
+          </div>
+        </form>
+      </div>
+    </div>
+    <div class="spirit-nav">
+      <div class="spirit-nav-icon">
+        <a accesskey="p" href="interlocked_operation.html">
+          <div class="prev-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="u" href="../interlocked_concepts.html">
+          <div class="up-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="h" href="../../../index.html">
+          <div class="home-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="n" href="interlocked_semantic_type.html">
+          <div class="next-icon"></div>
+        </a>
+      </div>
+    </div>
+    <div id="body">
+      <div id="body-inner">
+        <div id="content">
+          <div class="section">
+            <div class="titlepage">
+              <div>
+                <div>
+                  <h4 class="title"><a id="boost_act.interlocked.interlocked_concepts.interlocked_cage"></a><a href="interlocked_cage.html" title="Interlocked Cage">Interlocked
+        Cage</a></h4>
+                </div>
+              </div>
+            </div>
+            <a id="boost_act.interlocked.interlocked_concepts.interlocked_cage.description"></a>
+            <h6><a id="id456351"></a>
+          Description
+        </h6>
+            <p>
+          An <code class="literal">Interlocked Cage</code> is a template whose instantiations
+          are types which manage the order of visibility of read and write operations
+          that occur during their objects' lifetime, effectively providing those
+          operations with potentially more restrictive ordering constraints. Semantics
+          for such cages may be specified by the programmer at compile-time via explicit
+          template arguments.
+        </p>
+            <a id="boost_act.interlocked.interlocked_concepts.interlocked_cage.concept_of"></a>
+            <h6><a id="id456396"></a>
+          <a href="interlocked_cage.html#boost_act.interlocked.interlocked_concepts.interlocked_cage.concept_of">Concept
+          of</a>
+        </h6>
+            <div class="itemizedlist">
+              <ul>
+                <li>
+                  <a href="../interlocked_cage_models/interlocked_memory_cage.html" title="Interlocked Memory Cage">
+            <code class="literal">Interlocked Memory Cage</code></a>
+                </li>
+                <li>
+                  <a href="../interlocked_cage_models/interlocked_compiler_cage.html" title="Interlocked Compiler Cage">
+            <code class="literal">Interlocked Compiler Cage</code></a>
+                </li>
+              </ul>
+            </div>
+            <div class="variablelist">
+              <p class="title">
+                <b>Notation</b>
+              </p>
+              <dl>
+                <dt>
+                  <span class="term">
+          <em class="replaceable"><code>
+            name
+          </code></em>
+          </span>
+                </dt>
+                <dd>
+            An <code class="literal">Interlocked Cage</code>.
+          </dd>
+                <dt>
+                  <span class="term">
+                    <code class="computeroutput">
+                      <span class="identifier">S1</span>
+                    </code>
+                  </span>
+                </dt>
+                <dd>
+            An <a href="interlocked_semantic_type.html" title="Interlocked Semantic Type">
+            <code class="literal">Interlocked Semantic Type</code></a>.
+          </dd>
+                <dt>
+                  <span class="term">
+                    <code class="computeroutput">
+                      <span class="identifier">S2</span>
+                    </code>
+                  </span>
+                </dt>
+                <dd>
+            An <a href="interlocked_semantic_type.html" title="Interlocked Semantic Type">
+            <code class="literal">Interlocked Semantic Type</code></a>.
+          </dd>
+                <dt>
+                  <span class="term">
+                    <code class="computeroutput">
+                      <span class="identifier">B</span>
+                    </code>
+                  </span>
+                </dt>
+                <dd>
+            A type which is an instantiation of <code class="computeroutput"><span class="identifier">name</span></code>
+            with or without additional <span class="emphasis"><em>cv-qualification</em></span>.
+          </dd>
+                <dt>
+                  <span class="term">
+                    <code class="computeroutput">
+                      <span class="identifier">b</span>
+                    </code>
+                  </span>
+                </dt>
+                <dd>
+            An object of type <code class="computeroutput"><span class="identifier">B</span><span class="special">&</span></code>.
+          </dd>
+              </dl>
+            </div>
+            <a id="boost_act.interlocked.interlocked_concepts.interlocked_cage.expression_requirements"></a>
+            <h6><a id="id456633"></a>
+          <a href="interlocked_cage.html#boost_act.interlocked.interlocked_concepts.interlocked_cage.expression_requirements">Expression
+          Requirements</a>
+        </h6>
+            <div class="table">
+              <a id="id456651"></a>
+              <p class="title">
+                <b>Table 3. Interlocked Operation Requirements</b>
+              </p>
+              <div class="table-contents">
+                <table class="table" summary="Interlocked Operation Requirements">
+                  <colgroup>
+                    <col />
+                    <col />
+                  </colgroup>
+                  <thead>
+                    <tr>
+                      <th>
+              <p>
+                Expression
+              </p>
+              </th>
+                      <th>
+              <p>
+                Pre/Post-Condition
+              </p>
+              </th>
+                    </tr>
+                  </thead>
+                  <tbody>
+                    <tr>
+                      <td>
+              <p>
+                <code class="computeroutput"><span class="identifier">name</span><span class="special"><>()</span></code>
+              </p>
+              </td>
+                      <td>
+              <p>
+                Instantiates a cage with the default semantics (<code class="computeroutput"><span class="identifier">sequential</span></code>).
+              </p>
+              </td>
+                    </tr>
+                    <tr>
+                      <td>
+              <p>
+                <code class="computeroutput"><span class="identifier">name</span><span class="special"><</span><span class="identifier">S1</span><span class="special">>()</span></code>
+              </p>
+              </td>
+                      <td>
+              <p>
+                Instantiates a cage with the specified semantics.
+              </p>
+              </td>
+                    </tr>
+                    <tr>
+                      <td>
+              <p>
+                <code class="computeroutput"><span class="identifier">name</span><span class="special"><</span><span class="identifier">S1</span><span class="special">,</span><span class="identifier">S2</span><span class="special">>()</span></code>
+              </p>
+              </td>
+                      <td>
+              <p>
+                Instantiates a cage with the semantic requirements of <code class="computeroutput"><span class="identifier">S1</span></code> which are not already specified
+                by <code class="computeroutput"><span class="identifier">S2</span></code>.
+              </p>
+              </td>
+                    </tr>
+                    <tr>
+                      <td>
+              <p>
+                <code class="computeroutput"><span class="identifier">b</span><span class="special">.~</span><span class="identifier">B</span><span class="special">()</span></code>
+              </p>
+              </td>
+                      <td>
+              <p>
+                Destroys the cage <code class="computeroutput"><span class="identifier">b</span></code>.
+              </p>
+              </td>
+                    </tr>
+                  </tbody>
+                </table>
+              </div>
+            </div>
+            <br class="table-break" />
+          </div>
+        </div>
+        <div class="clear"></div>
+      </div>
+    </div>
+    <div class="spirit-nav">
+      <div class="spirit-nav-icon">
+        <a accesskey="p" href="interlocked_operation.html">
+          <div class="prev-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="u" href="../interlocked_concepts.html">
+          <div class="up-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="h" href="../../../index.html">
+          <div class="home-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="n" href="interlocked_semantic_type.html">
+          <div class="next-icon"></div>
+        </a>
+      </div>
+    </div>
+    <div id="footer">
+      <div id="footer-left">
+        <div id="copyright">
+          <p>Copyright © 2006 , 2007 Matthew Calabrese</p>
+        </div>
+        <div id="license">
+          <p>Distributed under the
+                  Boost Software License, Version 1.0.
+               </p>
+        </div>
+      </div>
+      <div id="footer-right">
+        <div id="banners">
+          <p id="banner-xhtml">
+            XHTML 1.0
+          </p>
+          <p id="banner-css">
+            CSS
+          </p>
+          <p id="banner-sourceforge">
+            SourceForge
+          </p>
+        </div>
+      </div>
+      <div class="clear"></div>
+    </div>
+  </body>
+</html>
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_integer_type.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_integer_type.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_integer_type.html	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
-  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Integer Type</title><link rel="stylesheet" href="../../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked_concepts.html" title="Interlocked Concepts" /><link rel="prev" href="interlocked_arithmetic_type.html" title="Interlocked Arithmetic Type" /><link rel="next" href="../interlocked_integer_models.html" title="Interlocked Integer Models" /><script type="text/javascript" src="../../../../../doc/javascript/main.js"></script>
+  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Integer Type</title><link rel="stylesheet" href="../../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked_concepts.html" title="Interlocked Concepts" /><link rel="prev" href="interlocked_arithmetic_type.html" title="Interlocked Arithmetic Type" /><link rel="next" href="../interlocked_semantic_models.html" title="Interlocked Semantic Models" /><script type="text/javascript" src="../../../../../doc/javascript/main.js"></script>
       <script type="text/javascript" > <!--
          boostscript.init( new Array(
             boostscript.nested_links,
@@ -71,7 +71,7 @@
         </a>
       </div>
       <div class="spirit-nav-icon">
-        <a accesskey="n" href="../interlocked_integer_models.html">
+        <a accesskey="n" href="../interlocked_semantic_models.html">
           <div class="next-icon"></div>
         </a>
       </div>
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_integer_type.description"></a>
-            <h6><a id="id462765"></a>
+            <h6><a id="id462840"></a>
           <a href="interlocked_integer_type.html#boost_act.interlocked.interlocked_concepts.interlocked_integer_type.description">Description</a>
         </h6>
             <p>
@@ -145,7 +145,7 @@
               </dl>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_integer_type.refinement_of"></a>
-            <h6><a id="id462985"></a>
+            <h6><a id="id463060"></a>
           <a href="interlocked_integer_type.html#boost_act.interlocked.interlocked_concepts.interlocked_integer_type.refinement_of">Refinement
           of</a>
         </h6>
@@ -154,7 +154,7 @@
           <code class="literal">Interlocked Arithmetic Type</code></a>
         </p>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_integer_type.expression_requirements"></a>
-            <h6><a id="id463033"></a>
+            <h6><a id="id463108"></a>
           <a href="interlocked_integer_type.html#boost_act.interlocked.interlocked_concepts.interlocked_integer_type.expression_requirements">Expression
           Requirements</a>
         </h6>
@@ -206,7 +206,7 @@
               </div>
             </div>
             <div class="table">
-              <a id="id463250"></a>
+              <a id="id463325"></a>
               <p class="title">
                 <b>Table 7. Interlocked Integer Type Requirements</b>
               </p>
@@ -341,22 +341,19 @@
             </div>
             <br class="table-break" />
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_integer_type.headers"></a>
-            <h6><a id="id463889"></a>
+            <h6><a id="id463964"></a>
           <a href="interlocked_integer_type.html#boost_act.interlocked.interlocked_concepts.interlocked_integer_type.headers">Headers</a>
         </h6>
-            <p>
-          
-</p>
             <div class="programlisting">
               <div class="box-outer-wrapper">
                 <div class="box-top-left"></div>
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
-                  <div class="style-switcher-box" id="id463910">
+                  <div class="style-switcher-box" id="id463983">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id463910',
+             'id463983',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -372,10 +369,12 @@
 <span class="comment">// bitand_assign headers.
 </span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitand_assign</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitand_assign</span><span class="special">/</span><span class="identifier">bitand_assign</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitand_assign</span><span class="special">/</span><span class="identifier">bitand_assign_thread_unsafe</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitand_assign</span><span class="special">/</span><span class="identifier">bitand_assign_unordered</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitand_assign</span><span class="special">/</span><span class="identifier">bitand_assign_acquire</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitand_assign</span><span class="special">/</span><span class="identifier">bitand_assign_release</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitand_assign</span><span class="special">/</span><span class="identifier">bitand_assign_acq_rel</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
-<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitand_assign</span><span class="special">/</span><span class="identifier">bitand_assign_unordered</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitand_assign</span><span class="special">/</span><span class="identifier">bitand_assign_sequential</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
 
 <span class="comment">// Forward declarations.
 </span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitand_assign_fwd</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
@@ -386,21 +385,15 @@
 </span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitor_assign</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitor_assign</span><span class="special">/</span><span class="identifier">bitor_assign</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
 <span class="comment">/* etc. */</span>
-
-<span class="comment">////////////////////////////////////////////////////////////////////////////
-</span><span class="comment">// Headers for the remaining operations follow the same pattern as above. //
-</span><span class="comment">////////////////////////////////////////////////////////////////////////////
-</span></pre>
+</pre>
                 </div>
                 <div class="box-bottom-left"></div>
                 <div class="box-bottom-right"></div>
                 <div class="box-bottom"></div>
               </div>
             </div>
-            <p>
-        </p>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_integer_type.example"></a>
-            <h6><a id="id464792"></a>
+            <h6><a id="id464991"></a>
           <a href="interlocked_integer_type.html#boost_act.interlocked.interlocked_concepts.interlocked_integer_type.example">Example</a>
         </h6>
             <p>
@@ -428,7 +421,7 @@
         </a>
       </div>
       <div class="spirit-nav-icon">
-        <a accesskey="n" href="../interlocked_integer_models.html">
+        <a accesskey="n" href="../interlocked_semantic_models.html">
           <div class="next-icon"></div>
         </a>
       </div>
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_natural_type.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_natural_type.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_natural_type.html	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_natural_type.description"></a>
-            <h6><a id="id458848"></a>
+            <h6><a id="id458925"></a>
           <a href="interlocked_natural_type.html#boost_act.interlocked.interlocked_concepts.interlocked_natural_type.description">Description</a>
         </h6>
             <p>
@@ -184,7 +184,7 @@
               </dl>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_natural_type.refinement_of"></a>
-            <h6><a id="id459246"></a>
+            <h6><a id="id459324"></a>
           <a href="interlocked_natural_type.html#boost_act.interlocked.interlocked_concepts.interlocked_natural_type.refinement_of">Refinement
           of</a>
         </h6>
@@ -193,7 +193,7 @@
           <code class="literal">Interlocked Type</code></a>
         </p>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_natural_type.expression_requirements"></a>
-            <h6><a id="id459295"></a>
+            <h6><a id="id459371"></a>
           <a href="interlocked_natural_type.html#boost_act.interlocked.interlocked_concepts.interlocked_natural_type.expression_requirements">Expression
           Requirements</a>
         </h6>
@@ -242,7 +242,7 @@
               </div>
             </div>
             <div class="table">
-              <a id="id459495"></a>
+              <a id="id459571"></a>
               <p class="title">
                 <b>Table 5. Interlocked Natural Type Requirements</b>
               </p>
@@ -323,7 +323,7 @@
             </div>
             <br class="table-break" />
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_natural_type.headers"></a>
-            <h6><a id="id459854"></a>
+            <h6><a id="id459931"></a>
           <a href="interlocked_natural_type.html#boost_act.interlocked.interlocked_concepts.interlocked_natural_type.headers">Headers</a>
         </h6>
             <p>
@@ -335,10 +335,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
-                  <div class="style-switcher-box" id="id459876">
+                  <div class="style-switcher-box" id="id459952">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id459876',
+             'id459952',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -377,7 +377,7 @@
             <p>
         </p>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_natural_type.example"></a>
-            <h6><a id="id460662"></a>
+            <h6><a id="id460738"></a>
           <a href="interlocked_natural_type.html#boost_act.interlocked.interlocked_concepts.interlocked_natural_type.example">Example</a>
         </h6>
             <p>
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_operation.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_operation.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_operation.html	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
-  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Operation</title><link rel="stylesheet" href="../../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked_concepts.html" title="Interlocked Concepts" /><link rel="prev" href="../interlocked_concepts.html" title="Interlocked Concepts" /><link rel="next" href="interlocked_type.html" title="Interlocked Type" /><script type="text/javascript" src="../../../../../doc/javascript/main.js"></script>
+  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Operation</title><link rel="stylesheet" href="../../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked_concepts.html" title="Interlocked Concepts" /><link rel="prev" href="../interlocked_concepts.html" title="Interlocked Concepts" /><link rel="next" href="interlocked_cage.html" title="Interlocked Cage" /><script type="text/javascript" src="../../../../../doc/javascript/main.js"></script>
       <script type="text/javascript" > <!--
          boostscript.init( new Array(
             boostscript.nested_links,
@@ -71,7 +71,7 @@
         </a>
       </div>
       <div class="spirit-nav-icon">
-        <a accesskey="n" href="interlocked_type.html">
+        <a accesskey="n" href="interlocked_cage.html">
           <div class="next-icon"></div>
         </a>
       </div>
@@ -89,14 +89,15 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_operation.description"></a>
-            <h6><a id="id455469"></a>
+            <h6><a id="id455480"></a>
           <a href="interlocked_operation.html#boost_act.interlocked.interlocked_concepts.interlocked_operation.description">Description</a>
         </h6>
             <p>
-          An <code class="literal">Interlocked Operation</code> is a function which provides
-          guarantees concerning order and visibility of read and write operations
-          with respect to multiple threads, often with semantics which may be specified
-          by users at the call site.
+          An <code class="literal">Interlocked Operation</code> is a function template whose
+          instantiations provide guarantees about atomicity and order of visibility
+          of read and write operations with respect to multiple threads. Semantics
+          for such operations may be specified by the programmer at compile-time
+          via explicit template arguments.
         </p>
             <p>
           In order to be considered a valid <code class="literal">Interlocked Operation</code>,
@@ -126,8 +127,8 @@
                   </span>
                 </dt>
                 <dd>
-            A <a href="interlocked_operation.html#boost_act.interlocked.interlocked_concepts.interlocked_operation.semantic_type">
-            <code class="literal">Semantic Type</code></a>.
+            An <a href="interlocked_semantic_type.html" title="Interlocked Semantic Type">
+            <code class="literal">Interlocked Semantic Type</code></a>.
           </dd>
                 <dt>
                   <span class="term">
@@ -142,12 +143,12 @@
               </dl>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_operation.expression_requirements"></a>
-            <h6><a id="id455609"></a>
+            <h6><a id="id455620"></a>
           <a href="interlocked_operation.html#boost_act.interlocked.interlocked_concepts.interlocked_operation.expression_requirements">Expression
           Requirements</a>
         </h6>
             <div class="table">
-              <a id="id455628"></a>
+              <a id="id455638"></a>
               <p class="title">
                 <b>Table 2. Interlocked Operation Requirements</b>
               </p>
@@ -181,7 +182,11 @@
                       <td>
               <p>
                 Performs the operation with the default semantics as specified for
-                that operation.
+                that operation. <span class="emphasis"><em>Note: Currently, all interlocked operations
+                in this library default to <code class="computeroutput"><span class="identifier">sequential</span></code>
+                semantics, which will likely become the required default for all
+                <code class="literal">Interlocked Operations</code> in future versions. --end
+                note</em></span>
               </p>
               </td>
                     </tr>
@@ -193,15 +198,7 @@
               </td>
                       <td>
               <p>
-                Performs the operation with the specified semantics. <span class="emphasis"><em>Note:
-                Not all <code class="literal">Interlocked Operations</code> support every
-                <a href="interlocked_operation.html#boost_act.interlocked.interlocked_concepts.interlocked_operation.semantic_type">
-                <code class="literal">Semantic Type</code></a>. Refer to documentation for
-                the corresponding operation for exactly which semantics are supported
-                for that operation. All <code class="literal">Interlocked Operations</code>
-                must support the <code class="computeroutput"><span class="identifier">default_</span></code>
-                <a href="interlocked_operation.html#boost_act.interlocked.interlocked_concepts.interlocked_operation.semantic_type">
-                <code class="literal">Semantic Type</code></a>. --end note</em></span>
+                Performs the operation with the specified semantics.
               </p>
               </td>
                     </tr>
@@ -210,238 +207,18 @@
               </div>
             </div>
             <br class="table-break" />
-            <a id="boost_act.interlocked.interlocked_concepts.interlocked_operation.semantic_type"></a>
-            <h6><a id="id455796"></a>
-          <a href="interlocked_operation.html#boost_act.interlocked.interlocked_concepts.interlocked_operation.semantic_type">Semantic
-          Type</a>
-        </h6>
-            <p>
-          While all <code class="literal">Interlocked Operations</code> specify certain guarantees
-          by default, these may often be toggled to make an operation's ordering
-          more or less constrained by passing a <code class="literal">Semantic Type</code>
-          as an explicit template argument to the corresponding template. Not all
-          <code class="literal">Interlocked Operations</code> support all <code class="literal">Semantic
-          Types</code>.
-        </p>
-            <div class="important">
-              <div class="box-outer-wrapper">
-                <div class="box-top-left"></div>
-                <div class="box-top-right"></div>
-                <div class="box-top"></div>
-                <div class="box-inner-wrapper">
-                  <div class="admonition-graphic">
-                    <div class="admonition-icon">
-                      <div class="important-icon"></div>
-                    </div>
-                  </div>
-                  <div class="admonition-body">
-                    <div class="admonition-title">Important</div>
-                    <div class="admonition-content">
-                      <p>
-            </p>
-                      <p>
-              If you are unsure as to which semantics you should use for a given
-              situation, it is generally safest to use the default semantics of the
-              corresponding <code class="literal">Interlocked Operation</code>. If efficiency
-              is important for your application, you should prefer to use the least-restrictive
-              semantics that you can without breaking allowable ordering of visibility
-              between threads.
-            </p>
-                      <p>
-          </p>
-                    </div>
-                  </div>
-                </div>
-                <div class="box-bottom-left"></div>
-                <div class="box-bottom-right"></div>
-                <div class="box-bottom"></div>
-              </div>
-            </div>
-            <div class="table">
-              <a id="id455862"></a>
-              <p class="title">
-                <b>Table 3. Semantic Types</b>
-              </p>
-              <div class="table-contents">
-                <table class="table" summary="Semantic Types">
-                  <colgroup>
-                    <col />
-                    <col />
-                  </colgroup>
-                  <thead>
-                    <tr>
-                      <th>
-              <p>
-                Type
-              </p>
-              </th>
-                      <th>
-              <p>
-                Ordering Guarantee
-              </p>
-              </th>
-                    </tr>
-                  </thead>
-                  <tbody>
-                    <tr>
-                      <td>
-              <p>
-                <code class="computeroutput"><span class="identifier">unordered</span></code>
-              </p>
-              </td>
-                      <td>
-              <p>
-                No ordering guarantee.
-              </p>
-              </td>
-                    </tr>
-                    <tr>
-                      <td>
-              <p>
-                <code class="computeroutput"><span class="identifier">acquire</span></code>
-              </p>
-              </td>
-                      <td>
-              <p>
-                The operation is made visible before all subsequent instructions.
-                <code class="computeroutput"><span class="identifier">acquire</span></code> semantics
-                are generally used for read or read-write operations.
-              </p>
-              </td>
-                    </tr>
-                    <tr>
-                      <td>
-              <p>
-                <code class="computeroutput"><span class="identifier">release</span></code>
-              </p>
-              </td>
-                      <td>
-              <p>
-                The operation is made visible after all prior instructions. <code class="computeroutput"><span class="identifier">release</span></code> semantics are generally
-                used for write or read-write operations.
-              </p>
-              </td>
-                    </tr>
-                    <tr>
-                      <td>
-              <p>
-                <code class="computeroutput"><span class="identifier">acq_rel</span></code>
-              </p>
-              </td>
-                      <td>
-              <p>
-                Combines the ordering guarantees of both <code class="computeroutput"><span class="identifier">acquire</span></code>
-                and <code class="computeroutput"><span class="identifier">release</span></code>. <code class="computeroutput"><span class="identifier">acq_rel</span></code> semantics are generally
-                used for read-write operations only.
-              </p>
-              </td>
-                    </tr>
-                    <tr>
-                      <td>
-              <p>
-                <code class="computeroutput"><span class="identifier">default_</span></code>
-              </p>
-              </td>
-                      <td>
-              <p>
-                Uses the default ordering guarantees as specified by the corresponding
-                <code class="literal">Interlocked Operation</code>. This <code class="literal">Semantic
-                Type</code> must be supported by all <code class="literal">Interlocked Operations</code>.
-              </p>
-              </td>
-                    </tr>
-                  </tbody>
-                </table>
-              </div>
-            </div>
-            <br class="table-break" />
-            <div class="note">
-              <div class="box-outer-wrapper">
-                <div class="box-top-left"></div>
-                <div class="box-top-right"></div>
-                <div class="box-top"></div>
-                <div class="box-inner-wrapper">
-                  <div class="admonition-graphic">
-                    <div class="admonition-icon">
-                      <div class="note-icon"></div>
-                    </div>
-                  </div>
-                  <div class="admonition-body">
-                    <div class="admonition-title">Note</div>
-                    <div class="admonition-content">
-                      <p>
-            </p>
-                      <p>
-              In a future release, another <code class="literal">Semantic Type</code> may be
-              introduced called <code class="computeroutput"><span class="identifier">thread_unsafe</span></code>
-              which does not perform the operation atomically at all. This type would
-              be a required semantic for all <code class="literal">Interlocked Operations</code>,
-              much like <code class="computeroutput"><span class="identifier">default_</span></code>.
-            </p>
-                      <p>
-          </p>
-                    </div>
-                  </div>
-                </div>
-                <div class="box-bottom-left"></div>
-                <div class="box-bottom-right"></div>
-                <div class="box-bottom"></div>
-              </div>
-            </div>
-            <a id="boost_act.interlocked.interlocked_concepts.interlocked_operation.headers"></a>
-            <h6><a id="id456185"></a>
-          Headers
-        </h6>
-            <p>
-          In general, you should not have to include the following files in order
-          to use <code class="literal">Interlocked Operations</code>, since including the file
-          for the operation implicitly includes the corresponding semantics. However,
-          if you wish to create your own <code class="literal">Interlocked Operations</code>,
-          you would use the headers notated below to bring in the semantic types
-          which are necessary for use with your operation.
-        </p>
-            <p>
-          
-</p>
-            <div class="programlisting">
-              <div class="box-outer-wrapper">
-                <div class="box-top-left"></div>
-                <div class="box-top-right"></div>
-                <div class="box-top"></div>
-                <div class="box-inner-wrapper">
-                  <div class="style-switcher-box" id="id456230">
-      <script type="text/javascript" > <!--
-          boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id456230',
-             '../../../../../doc/style/html/syntax.xml',
-             '../../../../../doc/style/html'
-          );
-      //--></script>
-</div>
-                  <pre>
-<span class="comment">// Brings in all semantic types.
-</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
-
-<span class="comment">// Fine-grained semantic headers.
-</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">/</span><span class="identifier">unordered</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
-<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">/</span><span class="identifier">acquire</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
-<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">/</span><span class="identifier">release</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
-<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">/</span><span class="identifier">acq_rel</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
-<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">/</span><span class="keyword">default</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
-</pre>
-                </div>
-                <div class="box-bottom-left"></div>
-                <div class="box-bottom-right"></div>
-                <div class="box-bottom"></div>
-              </div>
-            </div>
-            <p>
-        </p>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_operation.example"></a>
-            <h6><a id="id456685"></a>
+            <h6><a id="id455770"></a>
           <a href="interlocked_operation.html#boost_act.interlocked.interlocked_concepts.interlocked_operation.example">Example</a>
         </h6>
             <p>
+          The following example uses <code class="computeroutput"><span class="identifier">multiply_assign</span></code>,
+          which is a model of <code class="literal">Interlocked Operation</code> that multiplies
+          the first argument by the second argument and stores the result back into
+          the first argument. The result of the call is the value of the first argument
+          prior to the operation being performed.
+        </p>
+            <p>
           </p>
             <p>
             
@@ -452,10 +229,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
-                  <div class="style-switcher-box" id="id456710">
+                  <div class="style-switcher-box" id="id455814">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id456710',
+             'id455814',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -537,7 +314,7 @@
         </a>
       </div>
       <div class="spirit-nav-icon">
-        <a accesskey="n" href="interlocked_type.html">
+        <a accesskey="n" href="interlocked_cage.html">
           <div class="next-icon"></div>
         </a>
       </div>
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_semantic_type.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_semantic_type.html	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Semantic Type</title><link rel="stylesheet" href="../../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked_concepts.html" title="Interlocked Concepts" /><link rel="prev" href="interlocked_cage.html" title="Interlocked Cage" /><link rel="next" href="interlocked_type.html" title="Interlocked Type" /><script type="text/javascript" src="../../../../../doc/javascript/main.js"></script>
+      <script type="text/javascript" > <!--
+         boostscript.init( new Array(
+            boostscript.nested_links,
+            boostscript.style_switcher,
+            boostscript.common
+         ),
+         '../../../../../doc/javascript'
+         );
+      //--></script>
+
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'include_alternate_stylesheets',
+             '../../../../../doc/style/html/syntax.xml',
+             '../../../../../doc/style/html'
+          );
+      //--></script>
+<link rel="alternate stylesheet" type="text/css" title="Quickbook source" href="../../../../../doc/style/html/conversion/boostbook_to_quickbook.css" />
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'load_user_stylesheet' );
+      //--></script>
+</head>
+  <body>
+    <div id="heading">
+      <div id="heading-placard"></div>
+      <div class="heading-navigation-box">
+        <div class="nested-links-select-box" id="chapters_select_box">
+      <script type="text/javascript" > <!--
+         boostscript.call( boostscript.nested_links, 'select_box',
+            'chapters_select_box',
+            '../../../../../doc/chapters.xml',
+            '../../../../../libs');
+      //--></script>
+</div>
+        <div class="nested-links-select-box" id="sections_select_box">
+      <script type="text/javascript" > <!--
+         boostscript.call( boostscript.nested_links, 'select_box',
+            'sections_select_box',
+            '../../../sections.xml',
+            '../../.././');
+      //--></script>
+</div>
+      </div>
+      <div class="search-box">
+        <form id="cref" action="http://google.com/cse">
+          <div class="search-box-label"></div>
+          <div>
+            <input type="hidden" name="cref" value="http://tinyurl.com/33np8c" />
+            <input class="search-box" type="text" name="q" id="q" size="40" maxlength="255" alt="Search Text" />
+          </div>
+        </form>
+      </div>
+    </div>
+    <div class="spirit-nav">
+      <div class="spirit-nav-icon">
+        <a accesskey="p" href="interlocked_cage.html">
+          <div class="prev-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="u" href="../interlocked_concepts.html">
+          <div class="up-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="h" href="../../../index.html">
+          <div class="home-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="n" href="interlocked_type.html">
+          <div class="next-icon"></div>
+        </a>
+      </div>
+    </div>
+    <div id="body">
+      <div id="body-inner">
+        <div id="content">
+          <div class="section">
+            <div class="titlepage">
+              <div>
+                <div>
+                  <h4 class="title"><a id="boost_act.interlocked.interlocked_concepts.interlocked_semantic_type"></a><a href="interlocked_semantic_type.html" title="Interlocked Semantic Type">Interlocked
+        Semantic Type</a></h4>
+                </div>
+              </div>
+            </div>
+            <a id="boost_act.interlocked.interlocked_concepts.interlocked_semantic_type.description"></a>
+            <h6><a id="id456944"></a>
+          Description
+        </h6>
+            <p>
+          An <code class="literal">Interlocked Semantic type</code> is a types which is used
+          to specify atomicity and ordering guarantees when instantiating <a href="interlocked_operation.html" title="Interlocked Operation">
+          <code class="literal">Interlocked Operations</code></a> and <a href="interlocked_cage.html" title="Interlocked Cage">
+          <code class="literal">Interlocked Cages</code></a>.
+        </p>
+            <a id="boost_act.interlocked.interlocked_concepts.interlocked_semantic_type.concept_of"></a>
+            <h6><a id="id457014"></a>
+          <a href="interlocked_semantic_type.html#boost_act.interlocked.interlocked_concepts.interlocked_semantic_type.concept_of">Concept
+          of</a>
+        </h6>
+            <div class="itemizedlist">
+              <ul>
+                <li>
+                  <a href="../interlocked_semantic_models.html" title="Interlocked Semantic Models"> <code class="literal">Interlocked
+            Semantic Models</code></a>
+                </li>
+              </ul>
+            </div>
+          </div>
+        </div>
+        <div class="clear"></div>
+      </div>
+    </div>
+    <div class="spirit-nav">
+      <div class="spirit-nav-icon">
+        <a accesskey="p" href="interlocked_cage.html">
+          <div class="prev-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="u" href="../interlocked_concepts.html">
+          <div class="up-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="h" href="../../../index.html">
+          <div class="home-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="n" href="interlocked_type.html">
+          <div class="next-icon"></div>
+        </a>
+      </div>
+    </div>
+    <div id="footer">
+      <div id="footer-left">
+        <div id="copyright">
+          <p>Copyright © 2006 , 2007 Matthew Calabrese</p>
+        </div>
+        <div id="license">
+          <p>Distributed under the
+                  Boost Software License, Version 1.0.
+               </p>
+        </div>
+      </div>
+      <div id="footer-right">
+        <div id="banners">
+          <p id="banner-xhtml">
+            XHTML 1.0
+          </p>
+          <p id="banner-css">
+            CSS
+          </p>
+          <p id="banner-sourceforge">
+            SourceForge
+          </p>
+        </div>
+      </div>
+      <div class="clear"></div>
+    </div>
+  </body>
+</html>
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_type.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_type.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_type.html	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
-  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Type</title><link rel="stylesheet" href="../../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked_concepts.html" title="Interlocked Concepts" /><link rel="prev" href="interlocked_operation.html" title="Interlocked Operation" /><link rel="next" href="interlocked_natural_type.html" title="Interlocked Natural Type" /><script type="text/javascript" src="../../../../../doc/javascript/main.js"></script>
+  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Type</title><link rel="stylesheet" href="../../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked_concepts.html" title="Interlocked Concepts" /><link rel="prev" href="interlocked_semantic_type.html" title="Interlocked Semantic Type" /><link rel="next" href="interlocked_natural_type.html" title="Interlocked Natural Type" /><script type="text/javascript" src="../../../../../doc/javascript/main.js"></script>
       <script type="text/javascript" > <!--
          boostscript.init( new Array(
             boostscript.nested_links,
@@ -56,7 +56,7 @@
     </div>
     <div class="spirit-nav">
       <div class="spirit-nav-icon">
-        <a accesskey="p" href="interlocked_operation.html">
+        <a accesskey="p" href="interlocked_semantic_type.html">
           <div class="prev-icon"></div>
         </a>
       </div>
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_type.description"></a>
-            <h6><a id="id457247"></a>
+            <h6><a id="id457086"></a>
           <a href="interlocked_type.html#boost_act.interlocked.interlocked_concepts.interlocked_type.description">Description</a>
         </h6>
             <p>
@@ -156,7 +156,7 @@
               </dl>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_type.expression_requirements"></a>
-            <h6><a id="id457532"></a>
+            <h6><a id="id457369"></a>
           <a href="interlocked_type.html#boost_act.interlocked.interlocked_concepts.interlocked_type.expression_requirements">Expression
           Requirements</a>
         </h6>
@@ -204,7 +204,7 @@
               </div>
             </div>
             <div class="table">
-              <a id="id457731"></a>
+              <a id="id457567"></a>
               <p class="title">
                 <b>Table 4. Interlocked Type Requirements</b>
               </p>
@@ -250,11 +250,8 @@
                       <td>
               <p>
                 Returns the value stored in <code class="computeroutput"><span class="identifier">i</span></code>.
-                This function is an <a href="interlocked_operation.html" title="Interlocked Operation">
-                <code class="literal">Interlocked Operation</code></a> and defaults to
-                <code class="computeroutput"><span class="identifier">acquire</span></code> semantics.
-                Allowable semantics for this operation are <code class="computeroutput"><span class="identifier">unordered</span></code>
-                and <code class="computeroutput"><span class="identifier">acquire</span></code>.
+                <code class="computeroutput"><span class="identifier">load</span></code> is an <a href="interlocked_operation.html" title="Interlocked Operation">
+                <code class="literal">Interlocked Operation</code></a>.
               </p>
               </td>
                     </tr>
@@ -274,12 +271,8 @@
                       <td>
               <p>
                 Stores the value of <code class="computeroutput"><span class="identifier">c1</span></code>
-                to object <code class="computeroutput"><span class="identifier">i</span></code>. This
-                function is an <a href="interlocked_operation.html" title="Interlocked Operation">
-                <code class="literal">Interlocked Operation</code></a> and defaults to
-                <code class="computeroutput"><span class="identifier">release</span></code> semantics.
-                Allowable semantics for this operation are <code class="computeroutput"><span class="identifier">unordered</span></code>
-                and <code class="computeroutput"><span class="identifier">release</span></code>.
+                to object <code class="computeroutput"><span class="identifier">i</span></code>. <code class="computeroutput"><span class="identifier">store</span></code> is an <a href="interlocked_operation.html" title="Interlocked Operation">
+                <code class="literal">Interlocked Operation</code></a>.
               </p>
               </td>
                     </tr>
@@ -289,7 +282,7 @@
             </div>
             <br class="table-break" />
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_type.headers"></a>
-            <h6><a id="id458057"></a>
+            <h6><a id="id457843"></a>
           <a href="interlocked_type.html#boost_act.interlocked.interlocked_concepts.interlocked_type.headers">Headers</a>
         </h6>
             <p>
@@ -301,10 +294,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
-                  <div class="style-switcher-box" id="id458078">
+                  <div class="style-switcher-box" id="id457865">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id458078',
+             'id457865',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -320,8 +313,12 @@
 <span class="comment">// load headers.
 </span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">load</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">load</span><span class="special">/</span><span class="identifier">load</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
-<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">load</span><span class="special">/</span><span class="identifier">load_acquire</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">load</span><span class="special">/</span><span class="identifier">load_thread_unsafe</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">load</span><span class="special">/</span><span class="identifier">load_unordered</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">load</span><span class="special">/</span><span class="identifier">load_acquire</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">load</span><span class="special">/</span><span class="identifier">load_release</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">load</span><span class="special">/</span><span class="identifier">load_acq_rel</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">load</span><span class="special">/</span><span class="identifier">load_sequential</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
 
 <span class="comment">// Forward declarations.
 </span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">load_fwd</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
@@ -342,7 +339,7 @@
             <p>
         </p>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_type.example"></a>
-            <h6><a id="id458791"></a>
+            <h6><a id="id458869"></a>
           <a href="interlocked_type.html#boost_act.interlocked.interlocked_concepts.interlocked_type.example">Example</a>
         </h6>
             <p>
@@ -355,7 +352,7 @@
     </div>
     <div class="spirit-nav">
       <div class="spirit-nav-icon">
-        <a accesskey="p" href="interlocked_operation.html">
+        <a accesskey="p" href="interlocked_semantic_type.html">
           <div class="prev-icon"></div>
         </a>
       </div>
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models.html	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
-  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Integer Models</title><link rel="stylesheet" href="../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked.html" title="Interlocked" /><link rel="prev" href="interlocked_concepts/interlocked_integer_type.html" title="Interlocked Integer Type" /><link rel="next" href="interlocked_integer_models/interlocked_integer_typedefs.html" title="Interlocked Integer Typedefs" /><script type="text/javascript" src="../../../../doc/javascript/main.js"></script>
+  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Integer Models</title><link rel="stylesheet" href="../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked.html" title="Interlocked" /><link rel="prev" href="interlocked_cage_models/interlocked_compiler_cage.html" title="Interlocked Compiler Cage" /><link rel="next" href="interlocked_integer_models/interlocked_integer_typedefs.html" title="Interlocked Integer Typedefs" /><script type="text/javascript" src="../../../../doc/javascript/main.js"></script>
       <script type="text/javascript" > <!--
          boostscript.init( new Array(
             boostscript.nested_links,
@@ -56,7 +56,7 @@
     </div>
     <div class="spirit-nav">
       <div class="spirit-nav-icon">
-        <a accesskey="p" href="interlocked_concepts/interlocked_integer_type.html">
+        <a accesskey="p" href="interlocked_cage_models/interlocked_compiler_cage.html">
           <div class="prev-icon"></div>
         </a>
       </div>
@@ -121,7 +121,7 @@
     </div>
     <div class="spirit-nav">
       <div class="spirit-nav-icon">
-        <a accesskey="p" href="interlocked_concepts/interlocked_integer_type.html">
+        <a accesskey="p" href="interlocked_cage_models/interlocked_compiler_cage.html">
           <div class="prev-icon"></div>
         </a>
       </div>
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models/interlocked_integer_metafunctions.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models/interlocked_integer_metafunctions.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models/interlocked_integer_metafunctions.html	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.description"></a>
-            <h6><a id="id465586"></a>
+            <h6><a id="id468184"></a>
           <a href="interlocked_integer_metafunctions.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.description">Description</a>
         </h6>
             <p>
@@ -101,7 +101,7 @@
           library (<span class="emphasis"><em>ToDo: insert link here</em></span>).
         </p>
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.header"></a>
-            <h6><a id="id465692"></a>
+            <h6><a id="id468290"></a>
           <a href="interlocked_integer_metafunctions.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.header">Header</a>
         </h6>
             <p>
@@ -113,10 +113,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
-                  <div class="style-switcher-box" id="id465714">
+                  <div class="style-switcher-box" id="id468312">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id465714',
+             'id468312',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -138,7 +138,7 @@
             <p>
         </p>
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.synopsis"></a>
-            <h6><a id="id465879"></a>
+            <h6><a id="id468476"></a>
           <a href="interlocked_integer_metafunctions.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.synopsis">Synopsis</a>
         </h6>
             <div class="programlisting">
@@ -147,10 +147,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
-                  <div class="style-switcher-box" id="id465899">
+                  <div class="style-switcher-box" id="id468496">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id465899',
+             'id468496',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -161,47 +161,47 @@
 </span><span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">LeastInt</span> <span class="special">></span>
 <span class="keyword">struct</span> <span class="identifier">int_fast_t</span>
 <span class="special">{</span>
-  <span class="keyword">typedef</span> <em class="replaceable"><code>implementation_supplied</code></em> <span class="identifier">fast</span><span class="special">;</span>
+  <span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em> <span class="identifier">fast</span><span class="special">;</span>
 <span class="special">};</span>
 
 <span class="comment">// signed
 </span><span class="keyword">template</span><span class="special"><</span> <span class="keyword">int</span> <span class="identifier">Bits</span> <span class="special">></span>
 <span class="keyword">struct</span> <span class="identifier">int_t</span> 
 <span class="special">{</span>
-  <span class="keyword">typedef</span> <em class="replaceable"><code>implementation_supplied</code></em>   <span class="identifier">least</span><span class="special">;</span>
-  <span class="keyword">typedef</span> <span class="identifier">int_fast_t</span><span class="special"><</span> <span class="identifier">least</span> <span class="special">>::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
+  <span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em>                   <span class="identifier">least</span><span class="special">;</span>
+  <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">int_fast_t</span><span class="special"><</span> <span class="identifier">least</span> <span class="special">>::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
 <span class="special">};</span>
 
 <span class="comment">// unsigned
 </span><span class="keyword">template</span><span class="special"><</span> <span class="keyword">int</span> <span class="identifier">Bits</span> <span class="special">></span>
 <span class="keyword">struct</span> <span class="identifier">uint_t</span> 
 <span class="special">{</span>
-  <span class="keyword">typedef</span> <em class="replaceable"><code>implementation_supplied</code></em>   <span class="identifier">least</span><span class="special">;</span>
-  <span class="keyword">typedef</span> <span class="identifier">int_fast_t</span><span class="special"><</span> <span class="identifier">least</span> <span class="special">>::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
+  <span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em>                   <span class="identifier">least</span><span class="special">;</span>
+  <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">int_fast_t</span><span class="special"><</span> <span class="identifier">least</span> <span class="special">>::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
 <span class="special">};</span>
 
 <span class="comment">// signed
 </span><span class="keyword">template</span><span class="special"><</span> <span class="keyword">long</span> <span class="identifier">MaxValue</span> <span class="special">></span>
 <span class="keyword">struct</span> <span class="identifier">int_max_value_t</span> 
 <span class="special">{</span>
-  <span class="keyword">typedef</span> <em class="replaceable"><code>implementation_supplied</code></em>   <span class="identifier">least</span><span class="special">;</span>
-  <span class="keyword">typedef</span> <span class="identifier">int_fast_t</span><span class="special"><</span> <span class="identifier">least</span> <span class="special">>::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
+  <span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em>                   <span class="identifier">least</span><span class="special">;</span>
+  <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">int_fast_t</span><span class="special"><</span> <span class="identifier">least</span> <span class="special">>::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
 <span class="special">};</span>
 
 <span class="comment">// signed
 </span><span class="keyword">template</span><span class="special"><</span> <span class="keyword">long</span> <span class="identifier">MinValue</span> <span class="special">></span>
 <span class="keyword">struct</span> <span class="identifier">int_min_value_t</span> 
 <span class="special">{</span>
-  <span class="keyword">typedef</span> <em class="replaceable"><code>implementation_supplied</code></em>   <span class="identifier">least</span><span class="special">;</span>
-  <span class="keyword">typedef</span> <span class="identifier">int_fast_t</span><span class="special"><</span> <span class="identifier">least</span> <span class="special">>::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
+  <span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em>                   <span class="identifier">least</span><span class="special">;</span>
+  <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">int_fast_t</span><span class="special"><</span> <span class="identifier">least</span> <span class="special">>::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
 <span class="special">};</span>
 
 <span class="comment">// unsigned
 </span><span class="keyword">template</span><span class="special"><</span> <span class="keyword">unsigned</span> <span class="keyword">long</span> <span class="identifier">Value</span> <span class="special">></span>
 <span class="keyword">struct</span> <span class="identifier">uint_value_t</span> 
 <span class="special">{</span>
-  <span class="keyword">typedef</span> <em class="replaceable"><code>implementation_supplied</code></em>   <span class="identifier">least</span><span class="special">;</span>
-  <span class="keyword">typedef</span> <span class="identifier">int_fast_t</span><span class="special"><</span> <span class="identifier">least</span> <span class="special">>::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
+  <span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em>                   <span class="identifier">least</span><span class="special">;</span>
+  <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">int_fast_t</span><span class="special"><</span> <span class="identifier">least</span> <span class="special">>::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
 <span class="special">};</span>
 </pre>
                 </div>
@@ -211,7 +211,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.model_of"></a>
-            <h6><a id="id466648"></a>
+            <h6><a id="id469278"></a>
           <a href="interlocked_integer_metafunctions.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.model_of">Model
           of</a>
         </h6>
@@ -281,14 +281,14 @@
               </dl>
             </div>
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.expression_semantics"></a>
-            <h6><a id="id466861"></a>
+            <h6><a id="id469491"></a>
           <a href="interlocked_integer_metafunctions.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.expression_semantics">Expression
           Semantics</a>
         </h6>
             <div class="table">
-              <a id="id466880"></a>
+              <a id="id469510"></a>
               <p class="title">
-                <b>Table 8. Interlocked Integer Metafunction Requirements</b>
+                <b>Table 9. Interlocked Integer Metafunction Requirements</b>
               </p>
               <div class="table-contents">
                 <table class="table" summary="Interlocked Integer Metafunction Requirements">
@@ -481,7 +481,7 @@
             </div>
             <br class="table-break" />
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.example"></a>
-            <h6><a id="id467791"></a>
+            <h6><a id="id470420"></a>
           <a href="interlocked_integer_metafunctions.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.example">Example</a>
         </h6>
             <p>
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models/interlocked_integer_typedefs.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models/interlocked_integer_typedefs.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models/interlocked_integer_typedefs.html	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.description"></a>
-            <h6><a id="id464872"></a>
+            <h6><a id="id467470"></a>
           <a href="interlocked_integer_typedefs.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.description">Description</a>
         </h6>
             <p>
@@ -98,7 +98,7 @@
           size and performance requirements are specified by their name.
         </p>
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.header"></a>
-            <h6><a id="id464923"></a>
+            <h6><a id="id467520"></a>
           <a href="interlocked_integer_typedefs.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.header">Header</a>
         </h6>
             <div class="programlisting">
@@ -107,10 +107,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
-                  <div class="style-switcher-box" id="id464943">
+                  <div class="style-switcher-box" id="id467540">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id464943',
+             'id467540',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -128,7 +128,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.synopsis"></a>
-            <h6><a id="id465095"></a>
+            <h6><a id="id467692"></a>
           <a href="interlocked_integer_typedefs.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.synopsis">Synopsis</a>
         </h6>
             <div class="programlisting">
@@ -137,10 +137,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
-                  <div class="style-switcher-box" id="id465114">
+                  <div class="style-switcher-box" id="id467712">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id465114',
+             'id467712',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -174,7 +174,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.model_of"></a>
-            <h6><a id="id465479"></a>
+            <h6><a id="id468076"></a>
           <a href="interlocked_integer_typedefs.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.model_of">Model
           of</a>
         </h6>
@@ -183,7 +183,7 @@
           <code class="literal">Interlocked Integer Type</code></a>.
         </p>
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.example"></a>
-            <h6><a id="id465527"></a>
+            <h6><a id="id468125"></a>
           <a href="interlocked_integer_typedefs.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.example">Example</a>
         </h6>
             <p>
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_semantic_models.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_semantic_models.html	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,447 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Semantic Models</title><link rel="stylesheet" href="../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked.html" title="Interlocked" /><link rel="prev" href="interlocked_concepts/interlocked_integer_type.html" title="Interlocked Integer Type" /><link rel="next" href="interlocked_cage_models.html" title="Interlocked Cage Models" /><script type="text/javascript" src="../../../../doc/javascript/main.js"></script>
+      <script type="text/javascript" > <!--
+         boostscript.init( new Array(
+            boostscript.nested_links,
+            boostscript.style_switcher,
+            boostscript.common
+         ),
+         '../../../../doc/javascript'
+         );
+      //--></script>
+
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'include_alternate_stylesheets',
+             '../../../../doc/style/html/syntax.xml',
+             '../../../../doc/style/html'
+          );
+      //--></script>
+<link rel="alternate stylesheet" type="text/css" title="Quickbook source" href="../../../../doc/style/html/conversion/boostbook_to_quickbook.css" />
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'load_user_stylesheet' );
+      //--></script>
+</head>
+  <body>
+    <div id="heading">
+      <div id="heading-placard"></div>
+      <div class="heading-navigation-box">
+        <div class="nested-links-select-box" id="chapters_select_box">
+      <script type="text/javascript" > <!--
+         boostscript.call( boostscript.nested_links, 'select_box',
+            'chapters_select_box',
+            '../../../../doc/chapters.xml',
+            '../../../../libs');
+      //--></script>
+</div>
+        <div class="nested-links-select-box" id="sections_select_box">
+      <script type="text/javascript" > <!--
+         boostscript.call( boostscript.nested_links, 'select_box',
+            'sections_select_box',
+            '../../sections.xml',
+            '../.././');
+      //--></script>
+</div>
+      </div>
+      <div class="search-box">
+        <form id="cref" action="http://google.com/cse">
+          <div class="search-box-label"></div>
+          <div>
+            <input type="hidden" name="cref" value="http://tinyurl.com/33np8c" />
+            <input class="search-box" type="text" name="q" id="q" size="40" maxlength="255" alt="Search Text" />
+          </div>
+        </form>
+      </div>
+    </div>
+    <div class="spirit-nav">
+      <div class="spirit-nav-icon">
+        <a accesskey="p" href="interlocked_concepts/interlocked_integer_type.html">
+          <div class="prev-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="u" href="../interlocked.html">
+          <div class="up-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="h" href="../../index.html">
+          <div class="home-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="n" href="interlocked_cage_models.html">
+          <div class="next-icon"></div>
+        </a>
+      </div>
+    </div>
+    <div id="body">
+      <div id="body-inner">
+        <div id="content">
+          <div class="section">
+            <div class="titlepage">
+              <div>
+                <div>
+                  <h3 class="title"><a id="boost_act.interlocked.interlocked_semantic_models"></a><a href="interlocked_semantic_models.html" title="Interlocked Semantic Models">Interlocked
+      Semantic Models</a></h3>
+                </div>
+              </div>
+            </div>
+            <div class="important">
+              <div class="box-outer-wrapper">
+                <div class="box-top-left"></div>
+                <div class="box-top-right"></div>
+                <div class="box-top"></div>
+                <div class="box-inner-wrapper">
+                  <div class="admonition-graphic">
+                    <div class="admonition-icon">
+                      <div class="important-icon"></div>
+                    </div>
+                  </div>
+                  <div class="admonition-body">
+                    <div class="admonition-title">Important</div>
+                    <div class="admonition-content">
+                      <p>
+          </p>
+                      <p>
+            The <code class="computeroutput"><span class="identifier">sequential</span></code> and <code class="computeroutput"><span class="identifier">thread_unsafe</span></code> semantics described on
+            this page are not yet implemented.
+          </p>
+                      <p>
+        </p>
+                    </div>
+                  </div>
+                </div>
+                <div class="box-bottom-left"></div>
+                <div class="box-bottom-right"></div>
+                <div class="box-bottom"></div>
+              </div>
+            </div>
+            <a id="boost_act.interlocked.interlocked_semantic_models.description"></a>
+            <h5><a id="id465080"></a>
+        Description
+      </h5>
+            <p>
+        The types detailed in this section are the <a href="interlocked_concepts/interlocked_semantic_type.html" title="Interlocked Semantic Type">
+        <code class="literal">Interlocked Semantic Types</code></a> for use with <a href="interlocked_concepts/interlocked_operation.html" title="Interlocked Operation">
+        <code class="literal">Interlocked Operations</code></a> and __interlocked<span class="underline">barriers</span>_.
+      </p>
+            <a id="boost_act.interlocked.interlocked_semantic_models.model_of"></a>
+            <h5><a id="id465148"></a>
+        <a href="interlocked_semantic_models.html#boost_act.interlocked.interlocked_semantic_models.model_of">Model
+        of</a>
+      </h5>
+            <p>
+        Each type mentioned above is an <a href="interlocked_concepts/interlocked_semantic_type.html" title="Interlocked Semantic Type">
+        <code class="literal">Interlocked Semantic Type</code></a>.
+      </p>
+            <div class="important">
+              <div class="box-outer-wrapper">
+                <div class="box-top-left"></div>
+                <div class="box-top-right"></div>
+                <div class="box-top"></div>
+                <div class="box-inner-wrapper">
+                  <div class="admonition-graphic">
+                    <div class="admonition-icon">
+                      <div class="important-icon"></div>
+                    </div>
+                  </div>
+                  <div class="admonition-body">
+                    <div class="admonition-title">Important</div>
+                    <div class="admonition-content">
+                      <p>
+          </p>
+                      <p>
+            If you are unsure as to which semantics you should use for a given situation,
+            it is generally safest to use the default semantics of the corresponding
+            operation. If efficiency is important for your application, you should
+            prefer to use the least-restrictive semantics that you can without breaking
+            allowable ordering of visibility between threads.
+          </p>
+                      <p>
+        </p>
+                    </div>
+                  </div>
+                </div>
+                <div class="box-bottom-left"></div>
+                <div class="box-bottom-right"></div>
+                <div class="box-bottom"></div>
+              </div>
+            </div>
+            <div class="table">
+              <a id="id465203"></a>
+              <p class="title">
+                <b>Table 8. Semantic Types</b>
+              </p>
+              <div class="table-contents">
+                <table class="table" summary="Semantic Types">
+                  <colgroup>
+                    <col />
+                    <col />
+                    <col />
+                  </colgroup>
+                  <thead>
+                    <tr>
+                      <th>
+            <p>
+              Type
+            </p>
+            </th>
+                      <th>
+            <p>
+              Thread-Safe
+            </p>
+            </th>
+                      <th>
+            <p>
+              Ordering Guarantee
+            </p>
+            </th>
+                    </tr>
+                  </thead>
+                  <tbody>
+                    <tr>
+                      <td>
+            <p>
+              <code class="computeroutput"><span class="identifier">thread_unsafe</span></code>
+            </p>
+            </td>
+                      <td>
+            <p>
+              no
+            </p>
+            </td>
+                      <td>
+            <p>
+              No atomicity or ordering with respect to multiple threads. <span class="emphasis"><em>Note:
+              Useful for generic programming, particular when the requirement for
+              thread-safety is dependent on a template argument. --end note</em></span>
+            </p>
+            </td>
+                    </tr>
+                    <tr>
+                      <td>
+            <p>
+              <code class="computeroutput"><span class="identifier">unordered</span></code>
+            </p>
+            </td>
+                      <td>
+            <p>
+              yes
+            </p>
+            </td>
+                      <td>
+            <p>
+              No ordering guarantee.
+            </p>
+            </td>
+                    </tr>
+                    <tr>
+                      <td>
+            <p>
+              <code class="computeroutput"><span class="identifier">acquire</span></code>
+            </p>
+            </td>
+                      <td>
+            <p>
+              yes
+            </p>
+            </td>
+                      <td>
+            <p>
+              Ensures that all subsequent operations in program order are performed
+              after all preceding loads in program order.
+            </p>
+            </td>
+                    </tr>
+                    <tr>
+                      <td>
+            <p>
+              <code class="computeroutput"><span class="identifier">release</span></code>
+            </p>
+            </td>
+                      <td>
+            <p>
+              yes
+            </p>
+            </td>
+                      <td>
+            <p>
+              Ensures that all preceding operations in program order are performed
+              after all subsequent stores in program order.
+            </p>
+            </td>
+                    </tr>
+                    <tr>
+                      <td>
+            <p>
+              <code class="computeroutput"><span class="identifier">acq_rel</span></code>
+            </p>
+            </td>
+                      <td>
+            <p>
+              yes
+            </p>
+            </td>
+                      <td>
+            <p>
+              Combines the semantics of <code class="computeroutput"><span class="identifier">acquire</span></code>
+              and <code class="computeroutput"><span class="identifier">release</span></code>.
+            </p>
+            </td>
+                    </tr>
+                    <tr>
+                      <td>
+            <p>
+              <code class="computeroutput"><span class="identifier">sequential</span></code>
+            </p>
+            </td>
+                      <td>
+            <p>
+              yes
+            </p>
+            </td>
+                      <td>
+            <p>
+              Ensures that all preceding operations in program order are performed
+              after all subsequent operations in program order.
+            </p>
+            </td>
+                    </tr>
+                    <tr>
+                      <td>
+            <p>
+              <code class="computeroutput"><span class="identifier">default_</span></code>
+            </p>
+            </td>
+                      <td>
+            <p>
+            </p>
+            </td>
+                      <td>
+            <p>
+              Uses the default ordering guarantees as specified by the corresponding
+              operation. <span class="emphasis"><em>Note: This will likely be removed as all operations
+              should now default to sequential. --end note</em></span>
+            </p>
+            </td>
+                    </tr>
+                  </tbody>
+                </table>
+              </div>
+            </div>
+            <br class="table-break" />
+            <a id="boost_act.interlocked.interlocked_semantic_models.headers"></a>
+            <h5><a id="id465553"></a>
+        Headers
+      </h5>
+            <p>
+        In general, you should not have to explicitly include the following files
+        in order to use <code class="literal">Interlocked Operations</code> and <code class="literal">Interlocked
+        Barriers</code>, since including the file for the operation implicitly
+        includes the corresponding semantics. However, if you wish to create your
+        own operations, you would use the headers notated below to bring in the semantic
+        types which are necessary.
+      </p>
+            <p>
+        
+</p>
+            <div class="programlisting">
+              <div class="box-outer-wrapper">
+                <div class="box-top-left"></div>
+                <div class="box-top-right"></div>
+                <div class="box-top"></div>
+                <div class="box-inner-wrapper">
+                  <div class="style-switcher-box" id="id465598">
+      <script type="text/javascript" > <!--
+          boostscript.call( boostscript.style_switcher, 'insert_style_selector',
+             'id465598',
+             '../../../../doc/style/html/syntax.xml',
+             '../../../../doc/style/html'
+          );
+      //--></script>
+</div>
+                  <pre>
+<span class="comment">// Brings in all semantic types.
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="comment">// Fine-grained semantic headers.
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">/</span><span class="identifier">thread_unsafe</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">/</span><span class="identifier">unordered</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">/</span><span class="identifier">acquire</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">/</span><span class="identifier">release</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">/</span><span class="identifier">acq_rel</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">/</span><span class="identifier">sequential</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">/</span><span class="keyword">default</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+                </div>
+                <div class="box-bottom-left"></div>
+                <div class="box-bottom-right"></div>
+                <div class="box-bottom"></div>
+              </div>
+            </div>
+            <p>
+      </p>
+            <a id="boost_act.interlocked.interlocked_semantic_models.example"></a>
+            <h5><a id="id466197"></a>
+        Example
+      </h5>
+            <p>
+        ToDo: Add an example here.
+      </p>
+          </div>
+        </div>
+        <div class="clear"></div>
+      </div>
+    </div>
+    <div class="spirit-nav">
+      <div class="spirit-nav-icon">
+        <a accesskey="p" href="interlocked_concepts/interlocked_integer_type.html">
+          <div class="prev-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="u" href="../interlocked.html">
+          <div class="up-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="h" href="../../index.html">
+          <div class="home-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="n" href="interlocked_cage_models.html">
+          <div class="next-icon"></div>
+        </a>
+      </div>
+    </div>
+    <div id="footer">
+      <div id="footer-left">
+        <div id="copyright">
+          <p>Copyright © 2006 , 2007 Matthew Calabrese</p>
+        </div>
+        <div id="license">
+          <p>Distributed under the
+                  Boost Software License, Version 1.0.
+               </p>
+        </div>
+      </div>
+      <div id="footer-right">
+        <div id="banners">
+          <p id="banner-xhtml">
+            XHTML 1.0
+          </p>
+          <p id="banner-css">
+            CSS
+          </p>
+          <p id="banner-sourceforge">
+            SourceForge
+          </p>
+        </div>
+      </div>
+      <div class="clear"></div>
+    </div>
+  </body>
+</html>
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_support/checking_support.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_support/checking_support.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_support/checking_support.html	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_support.checking_support.description"></a>
-            <h6><a id="id467867"></a>
+            <h6><a id="id470497"></a>
           <a href="checking_support.html#boost_act.interlocked.interlocked_support.checking_support.description">Description</a>
         </h6>
             <p>
@@ -126,23 +126,23 @@
                   </span>
                 </dt>
                 <dd>
-            A <a href="../interlocked_concepts/interlocked_operation.html#boost_act.interlocked.interlocked_concepts.interlocked_operation.semantic_type">
-            <code class="literal">Semantic Type</code></a>, as specified without qualification
-            and with the exact name as listed in documentation (not a typedef name).
-            As an exception, <code class="literal">default_</code>, <code class="literal">default</code>,
+            An <a href="../interlocked_concepts/interlocked_semantic_type.html" title="Interlocked Semantic Type">
+            <code class="literal">Interlocked Semantic Type</code></a>, as specified without
+            qualification and with the exact name as listed in documentation (not
+            a typedef name). As an exception, <code class="literal">default_</code>, <code class="literal">default</code>,
             and <code class="literal">_</code> may each be used when specifying default semantics.
           </dd>
               </dl>
             </div>
             <a id="boost_act.interlocked.interlocked_support.checking_support.expression_requirements"></a>
-            <h6><a id="id468022"></a>
+            <h6><a id="id470651"></a>
           <a href="checking_support.html#boost_act.interlocked.interlocked_support.checking_support.expression_requirements">Expression
           Requirements</a>
         </h6>
             <div class="table">
-              <a id="id468040"></a>
+              <a id="id470670"></a>
               <p class="title">
-                <b>Table 9. Interlocked Operation Requirements</b>
+                <b>Table 10. Interlocked Operation Requirements</b>
               </p>
               <div class="table-contents">
                 <table class="table" summary="Interlocked Operation Requirements">
@@ -185,7 +185,7 @@
             </div>
             <br class="table-break" />
             <a id="boost_act.interlocked.interlocked_support.checking_support.headers"></a>
-            <h6><a id="id468175"></a>
+            <h6><a id="id470804"></a>
           <a href="checking_support.html#boost_act.interlocked.interlocked_support.checking_support.headers">Headers</a>
         </h6>
             <p>
@@ -197,10 +197,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
-                  <div class="style-switcher-box" id="id468195">
+                  <div class="style-switcher-box" id="id470825">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id468195',
+             'id470825',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -224,7 +224,7 @@
             <p>
         </p>
             <a id="boost_act.interlocked.interlocked_support.checking_support.example"></a>
-            <h6><a id="id468302"></a>
+            <h6><a id="id470933"></a>
           <a href="checking_support.html#boost_act.interlocked.interlocked_support.checking_support.example">Example</a>
         </h6>
             <p>
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/introduction.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/introduction.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/introduction.html	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -111,7 +111,7 @@
       strategy on a case-by-case basis with potentially no runtime cost to the application.
     </p>
             <a id="boost_act.introduction.interlocked_types"></a>
-            <h4><a id="id388726"></a>
+            <h4><a id="id388718"></a>
       <a href="introduction.html#boost_act.introduction.interlocked_types">Interlocked Types</a>
     </h4>
             <p>
@@ -124,7 +124,7 @@
       thread-safe operations with semantics specified by the user at the call-site.
     </p>
             <a id="boost_act.introduction.polymorphic_algorithms"></a>
-            <h4><a id="id388786"></a>
+            <h4><a id="id388778"></a>
       <a href="introduction.html#boost_act.introduction.polymorphic_algorithms">Polymorphic Algorithms</a>
     </h4>
             <p>
@@ -146,7 +146,7 @@
       of the creation of user-defined polymorphic algorithms.
     </p>
             <a id="boost_act.introduction.algorithm_models"></a>
-            <h4><a id="id388833"></a>
+            <h4><a id="id388825"></a>
       <a href="introduction.html#boost_act.introduction.algorithm_models">Algorithm Models</a>
     </h4>
             <p>
@@ -159,7 +159,7 @@
       library.
     </p>
             <a id="boost_act.introduction.actions"></a>
-            <h4><a id="id388858"></a>
+            <h4><a id="id388850"></a>
       <a href="introduction.html#boost_act.introduction.actions">Actions</a>
     </h4>
             <p>
@@ -178,7 +178,7 @@
       and which execute in the same thread as the original call.
     </p>
             <a id="boost_act.introduction.active_objects"></a>
-            <h4><a id="id390126"></a>
+            <h4><a id="id390131"></a>
       <a href="introduction.html#boost_act.introduction.active_objects">Active Objects</a>
     </h4>
             <p>
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/rationale.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/rationale.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/rationale.html	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -88,7 +88,7 @@
       decisions.
     </p>
             <a id="boost_act.rationale.interlocked_operation_names"></a>
-            <h4><a id="id468550"></a>
+            <h4><a id="id471168"></a>
       <a href="rationale.html#boost_act.rationale.interlocked_operation_names">Interlocked
       Operation Names</a>
     </h4>
@@ -131,7 +131,7 @@
       around, especially if you have a desirable alternative.
     </p>
             <a id="boost_act.rationale.policy_based_design"></a>
-            <h4><a id="id468766"></a>
+            <h4><a id="id471368"></a>
       <a href="rationale.html#boost_act.rationale.policy_based_design">Policy-Based Design</a>
     </h4>
             <p>
@@ -171,7 +171,7 @@
       design.
     </p>
             <a id="boost_act.rationale.actions_vs__futures"></a>
-            <h4><a id="id468845"></a>
+            <h4><a id="id471720"></a>
       <a href="rationale.html#boost_act.rationale.actions_vs__futures">Actions vs. Futures</a>
     </h4>
             <p>
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/index.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/index.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/index.html	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -82,7 +82,7 @@
                 </div>
                 <div>
                   <div class="legalnotice">
-                    <a id="id388330"></a>
+                    <a id="id388323"></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)
@@ -145,6 +145,18 @@
                             </dt>
                             <dt>
                               <span class="section">
+                                <a href="boost_act/interlocked/interlocked_concepts/interlocked_cage.html">Interlocked
+        Cage</a>
+                              </span>
+                            </dt>
+                            <dt>
+                              <span class="section">
+                                <a href="boost_act/interlocked/interlocked_concepts/interlocked_semantic_type.html">Interlocked
+        Semantic Type</a>
+                              </span>
+                            </dt>
+                            <dt>
+                              <span class="section">
                                 <a href="boost_act/interlocked/interlocked_concepts/interlocked_type.html">Interlocked
         Type</a>
                               </span>
@@ -171,6 +183,34 @@
                         </dd>
                         <dt>
                           <span class="section">
+                            <a href="boost_act/interlocked/interlocked_semantic_models.html">Interlocked
+      Semantic Models</a>
+                          </span>
+                        </dt>
+                        <dt>
+                          <span class="section">
+                            <a href="boost_act/interlocked/interlocked_cage_models.html">Interlocked
+      Cage Models</a>
+                          </span>
+                        </dt>
+                        <dd>
+                          <dl>
+                            <dt>
+                              <span class="section">
+                                <a href="boost_act/interlocked/interlocked_cage_models/interlocked_memory_cage.html">Interlocked
+        Memory Cage</a>
+                              </span>
+                            </dt>
+                            <dt>
+                              <span class="section">
+                                <a href="boost_act/interlocked/interlocked_cage_models/interlocked_compiler_cage.html">Interlocked
+        Compiler Cage</a>
+                              </span>
+                            </dt>
+                          </dl>
+                        </dd>
+                        <dt>
+                          <span class="section">
                             <a href="boost_act/interlocked/interlocked_integer_models.html">Interlocked
       Integer Models</a>
                           </span>
@@ -241,7 +281,7 @@
     </div>
     <div id="footer">
       <div id="footer-left">
-        <div id="revised">Revised: July 08, 2007 at 01:21:02 GMT</div>
+        <div id="revised">Revised: July 12, 2007 at 00:15:27 GMT</div>
         <div id="copyright"></div>
         <div id="license">
           <p>Distributed under the
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked.qbk
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked.qbk	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked.qbk	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -1,6 +1,8 @@
 [section Interlocked]
 
 [include interlocked/concepts.qbk]
+[include interlocked/interlocked_semantic_models.qbk]
+[include interlocked/interlocked_cage_models.qbk]
 [include interlocked/integer_models.qbk]
 [include interlocked/support.qbk]
 
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts.qbk
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts.qbk	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts.qbk	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -1,6 +1,8 @@
 [section Interlocked Concepts]
 
 [include concepts/interlocked_operation.qbk]
+[include concepts/interlocked_cage.qbk]
+[include concepts/interlocked_semantic_type.qbk]
 [include concepts/interlocked_type.qbk]
 [include concepts/interlocked_natural_type.qbk]
 [include concepts/interlocked_arithmetic_type.qbk]
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_cage.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_cage.qbk	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,43 @@
+[section Interlocked Cage]
+
+[heading Description]
+
+An [concept Interlocked Cage] is a template whose instantiations are types which
+manage the order of visibility of read and write operations that occur during
+their objects' lifetime, effectively providing those operations with potentially
+more restrictive ordering constraints. Semantics for such cages may be specified
+by the programmer at compile-time via explicit template arguments.
+
+[heading Concept of]
+
+* __interlocked_memory_cage__
+* __interlocked_compiler_cage__
+
+[variablelist Notation
+[[[~name]]          [An [concept Interlocked Cage].]                        ]
+[[`S1`]             [An __interlocked_semantic_type__.]                        ]
+[[`S2`]             [An __interlocked_semantic_type__.]                        ]
+[[`B`]              [A type which is an instantiation of `name` with or without
+                     additional /cv-qualification/.
+                    ]                                                          ]
+[[`b`]              [An object of type `B&`.]                                  ]
+]
+
+[heading Expression Requirements]
+
+[table Interlocked Operation Requirements
+[[Expression]                             [Pre/Post-Condition]                 ]
+[[`name<>()`]                             [Instantiates a cage with the
+                                           default semantics (`sequential`).
+                                          ]                                    ]
+[[`name<S1>()`]                           [Instantiates a cage with the
+                                           specified semantics.
+                                          ]                                    ]
+[[`name<S1,S2>()`]                        [Instantiates a cage with the
+                                           semantic requirements of `S1` which
+                                           are not already specified by `S2`.
+                                          ]                                    ]
+[[`b.~B()`]                               [Destroys the cage `b`.]          ]
+]
+
+[endsect]
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_integer_type.qbk
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_integer_type.qbk	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_integer_type.qbk	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -48,7 +48,6 @@
 
 [heading Headers]
 
-``
   // Brings in all interlocked operations.
   #include <boost/act/interlocked.hpp>
   
@@ -58,10 +57,12 @@
   // bitand_assign headers.
   #include <boost/act/interlocked/bitand_assign.hpp>
   #include <boost/act/interlocked/bitand_assign/bitand_assign.hpp>
+  #include <boost/act/interlocked/bitand_assign/bitand_assign_thread_unsafe.hpp>
+  #include <boost/act/interlocked/bitand_assign/bitand_assign_unordered.hpp>
   #include <boost/act/interlocked/bitand_assign/bitand_assign_acquire.hpp>
   #include <boost/act/interlocked/bitand_assign/bitand_assign_release.hpp>
   #include <boost/act/interlocked/bitand_assign/bitand_assign_acq_rel.hpp>
-  #include <boost/act/interlocked/bitand_assign/bitand_assign_unordered.hpp>
+  #include <boost/act/interlocked/bitand_assign/bitand_assign_sequential.hpp>
   
   // Forward declarations.
   #include <boost/act/interlocked/bitand_assign_fwd.hpp>
@@ -72,11 +73,7 @@
   #include <boost/act/interlocked/bitor_assign.hpp>
   #include <boost/act/interlocked/bitor_assign/bitor_assign.hpp>
   /* etc. */
-  
-  ////////////////////////////////////////////////////////////////////////////
-  // Headers for the remaining operations follow the same pattern as above. //
-  ////////////////////////////////////////////////////////////////////////////
-``
+
 
 [heading Example]
 
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_operation.qbk
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_operation.qbk	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_operation.qbk	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -2,10 +2,10 @@
 
 [heading Description]
 
-An [concept Interlocked Operation] is a function which provides guarantees
-concerning order and visibility of read and write operations with respect to
-multiple threads, often with semantics which may be specified by users at the
-call site.
+An [concept Interlocked Operation] is a function template whose instantiations
+provide guarantees about atomicity and order of visibility of read and write
+operations with respect to multiple threads. Semantics for such operations may
+be specified by the programmer at compile-time via explicit template arguments.
 
 In order to be considered a valid [concept Interlocked Operation], given
 the variable definitions below, the following expressions must be well-formed
@@ -13,7 +13,7 @@
 
 [variablelist Notation
 [[[~name]][An       [concept Interlocked Operation].]                          ]
-[[`S`]              [A __semantic_type__.]                                     ]
+[[`S`]              [An __interlocked_semantic_type__.]                        ]
 [[[~args]]          [The argument list (if any) for the
                      [concept Interlocked Operation].
                     ]                                                          ]
@@ -29,91 +29,26 @@
 [[`__op_call__`]                          [Performs the operation with the
                                            default semantics as specified for
                                            that operation.
+                                           [tablenote Currently, all interlocked
+                                            operations in this library default
+                                            to `sequential` semantics, which
+                                            will likely become the required
+                                            default for all [concept Interlocked
+                                            Operations] in future versions.
+                                           ]
                                           ]                                    ]
 [[`__op_call_sem__`]                      [Performs the operation with the
                                            specified semantics.
-                                           [tablenote Not all
-                                            [concept Interlocked Operations]
-                                            support every __semantic_type__.
-                                            Refer to documentation for the
-                                            corresponding operation for exactly
-                                            which semantics are supported for
-                                            that operation. All
-                                            [concept Interlocked Operations]
-                                            must support the `default_`
-                                            __semantic_type__.
-                                           ]
                                           ]                                    ]
 ]
 
-[heading Semantic Type]
-
-While all [concept Interlocked Operations] specify certain guarantees by
-default, these may often be toggled to make an operation's ordering more or less
-constrained by passing a [concept Semantic Type] as an explicit template
-argument to the corresponding template. Not all [concept Interlocked Operations]
-support all [concept Semantic Types].
-
-[important
-If you are unsure as to which semantics you should use for a given situation, it
-is generally safest to use the default semantics of the corresponding
-[concept Interlocked Operation]. If efficiency is important for your
-application, you should prefer to use the least-restrictive semantics that you
-can without breaking allowable ordering of visibility between threads.
-]
-
-[table Semantic Types
-[[Type]       [Ordering Guarantee]                                             ]
-[[`unordered`][No ordering guarantee.]                                         ]
-[[`acquire`]  [The operation is made visible before all subsequent instructions.
-               `acquire` semantics are generally used for read or read-write
-               operations.
-              ]                                                                ]
-[[`release`]  [The operation is made visible after all prior instructions.
-               `release` semantics are generally used for write or read-write
-               operations.
-              ]                                                                ]
-[[`acq_rel`]  [Combines the ordering guarantees of both `acquire` and `release`.
-               `acq_rel` semantics are generally used for read-write operations
-               only.
-              ]                                                                ]
-[[`default_`] [Uses the default ordering guarantees as specified by the
-               corresponding [concept Interlocked Operation]. This
-               [concept Semantic Type] must be supported by all
-               [concept Interlocked Operations].
-              ]                                                                ]
-]
-
-[note
-In a future release, another [concept Semantic Type] may be introduced called
-`thread_unsafe` which does not perform the operation atomically at all. This
-type would be a required semantic for all [concept Interlocked Operations], much
-like `default_`.
-]
-
-[heading Headers]
-
-In general, you should not have to include the following files in order to use
-[concept Interlocked Operations], since including the file for the operation
-implicitly includes the corresponding semantics. However, if you wish to create
-your own [concept Interlocked Operations], you would use the headers notated
-below to bring in the semantic types which are necessary for use with your
-operation.
-
-``
-  // Brings in all semantic types.
-  #include <boost/act/interlocked/semantics.hpp>
-  
-  // Fine-grained semantic headers.
-  #include <boost/act/interlocked/semantics/unordered.hpp>
-  #include <boost/act/interlocked/semantics/acquire.hpp>
-  #include <boost/act/interlocked/semantics/release.hpp>
-  #include <boost/act/interlocked/semantics/acq_rel.hpp>
-  #include <boost/act/interlocked/semantics/default.hpp>
-``
-
 [heading Example]
 
+The following example uses `multiply_assign`, which is a model of
+[concept Interlocked Operation] that multiplies the first argument by the second
+argument and stores the result back into the first argument. The result of the
+call is the value of the first argument prior to the operation being performed.
+
 [import ../../../example/multiply_assign.cpp]
 
 [multiply_assign]
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_semantic_type.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_semantic_type.qbk	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,13 @@
+[section Interlocked Semantic Type]
+
+[heading Description]
+
+An [concept Interlocked Semantic type] is a types which is used to specify
+atomicity and ordering guarantees when instantiating __interlocked_operations__
+and __interlocked_cages__.
+
+[heading Concept of]
+
+* __interlocked_semantic_models__
+
+[endsect]
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_type.qbk
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_type.qbk	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_type.qbk	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -36,19 +36,11 @@
 
 [table Interlocked Type Requirements
 [[Expression]           [Return Type][Pre/Post-Condition]                      ]
-[[`load( i )`]          [`IU`]       [Returns the value stored in `i`. This
-                                      function is an
-                                      __interlocked_operation__ and defaults to
-                                      `acquire` semantics. Allowable semantics
-                                      for this operation are `unordered` and
-                                      `acquire`.
+[[`load( i )`]          [`IU`]       [Returns the value stored in `i`. `load` is
+                                      an __interlocked_operation__.
                                      ]                                         ]
 [[`store( i, c1 )`]     [`void`]     [Stores the value of `c1` to object `i`.
-                                      This function is an
-                                      __interlocked_operation__ and defaults to
-                                      `release` semantics. Allowable semantics
-                                      for this operation are `unordered` and
-                                      `release`.
+                                      `store` is an __interlocked_operation__.
                                      ]                                         ]
 ]
 
@@ -64,8 +56,12 @@
   // load headers.
   #include <boost/act/interlocked/load.hpp>
   #include <boost/act/interlocked/load/load.hpp>
-  #include <boost/act/interlocked/load/load_acquire.hpp>
+  #include <boost/act/interlocked/load/load_thread_unsafe.hpp>
   #include <boost/act/interlocked/load/load_unordered.hpp>
+  #include <boost/act/interlocked/load/load_acquire.hpp>
+  #include <boost/act/interlocked/load/load_release.hpp>
+  #include <boost/act/interlocked/load/load_acq_rel.hpp>
+  #include <boost/act/interlocked/load/load_sequential.hpp>
   
   // Forward declarations.
   #include <boost/act/interlocked/load_fwd.hpp>
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/integer_models/metafunctions.qbk
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/integer_models/metafunctions.qbk	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/integer_models/metafunctions.qbk	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -24,14 +24,14 @@
   template< typename LeastInt >
   struct int_fast_t
   {
-    typedef ``[~implementation-supplied]`` fast;
+    typedef ``[~unspecified-type]`` fast;
   };
   
   // signed
   template< int Bits >
   struct int_t 
   {
-    typedef ``[~implementation-supplied]``   least;
+    typedef ``[~unspecified-type]``                   least;
     typedef typename int_fast_t< least >::fast fast;
   };
   
@@ -39,7 +39,7 @@
   template< int Bits >
   struct uint_t 
   {
-    typedef ``[~implementation-supplied]``   least;
+    typedef ``[~unspecified-type]``                   least;
     typedef typename int_fast_t< least >::fast fast;
   };
   
@@ -47,7 +47,7 @@
   template< long MaxValue >
   struct int_max_value_t 
   {
-    typedef ``[~implementation-supplied]``   least;
+    typedef ``[~unspecified-type]``                   least;
     typedef typename int_fast_t< least >::fast fast;
   };
   
@@ -55,7 +55,7 @@
   template< long MinValue >
   struct int_min_value_t 
   {
-    typedef ``[~implementation-supplied]``   least;
+    typedef ``[~unspecified-type]``                   least;
     typedef typename int_fast_t< least >::fast fast;
   };
   
@@ -63,8 +63,8 @@
   template< unsigned long Value >
   struct uint_value_t 
   {
-    typedef ``[~implementation-supplied]`` least;
-    typedef typename int_fast_t< least >::fast        fast;
+    typedef ``[~unspecified-type]``                   least;
+    typedef typename int_fast_t< least >::fast fast;
   };
 
 [heading Model of]
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_cage_models.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_cage_models.qbk	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,6 @@
+[section Interlocked Cage Models]
+
+[include interlocked_cage_models/interlocked_memory_cage.qbk]
+[include interlocked_cage_models/interlocked_compiler_cage.qbk]
+
+[endsect]
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_cage_models/interlocked_compiler_cage.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_cage_models/interlocked_compiler_cage.qbk	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,19 @@
+[section Interlocked Compiler Cage]
+
+[important The features described on this page are not yet implemented.]
+
+[heading Description]
+
+An __interlocked_cage__ whose instantiations and semantics apply to compiler
+reordering of operations only. Order of visibility of operations with respect to
+other threads of execution is not specified.
+
+[heading Model of]
+
+* __interlocked_cage__
+
+[heading Example]
+
+ToDo: Insert example here
+
+[endsect]
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_cage_models/interlocked_memory_cage.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_cage_models/interlocked_memory_cage.qbk	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,68 @@
+[section Interlocked Memory Cage]
+
+[important The features described on this page are not yet implemented.]
+
+[heading Description]
+
+An __interlocked_cage__ whose instantiations and semantics apply to both
+compiler reordering of operations as well as order of visibility of operations
+with respect to other threads of execution. Internally, [concept Interlocked
+Memory Cages] often imply low-level memory and compiler barriers during
+construction and/or destruction and therefore should be used sparingly. When
+given the option, one should always prefer to directly apply semantics to their
+operation rather than use a cage. One common use would be to implement a
+user-defined interlocked operation with strict ordering requirements when the
+target system does not provide direct support for such semantics for that
+particular operation.
+
+[heading Model of]
+
+* __interlocked_cage__
+
+[heading Example]
+
+ToDo: Incorporate this into tests
+
+  #include <boost/act/interlocked/memory_cage/memory_cage_sequential.hpp>
+  #include <boost/act/interlocked/memory_cage/memory_cage_acq_rel.hpp>
+  #include <boost/act/interlocked/add_assign/add_assign_unordered.hpp>
+  #include <boost/act/interlocked/add_assign/add_assign_acquire.hpp>
+  #include <boost/act/interlocked/integer/types.hpp>
+  
+  int main()
+  {
+    using namespace boost::act::interlocked;
+  
+    int_fast32_t var = 0;
+    
+    /* ... */
+    
+    // The following block turns the contained unordered add_assign into an
+    // add_assign operation with sequential semantics.
+    {
+      memory_cage< sequential > cage;
+  
+      add_assign< unordered >( var, 4 );
+    }
+  
+    /* ... */
+  
+    // The following block turns the contained acquire add_assign into an
+    // add_assign operation with acq_rel semantics. The second template
+    // argument to fence along with the first effectively makes the type
+    // a fence with just release semantics. Since add_assign already
+    // specifies acquire semantics, the resulting operation correctly has
+    // acq_rel semantics without any potential redundant memory barriers.
+    // Leaving the second argument out would also work, but may generate
+    // less efficient code.
+    {
+      memory_cage< acq_rel, acquire > cage;
+  
+      add_assign< acquire >( var, 4 );
+    }
+  
+    // An add_assign operation with unordered semantics.
+    add_assign< unordered >( var, 4 );
+  }
+
+[endsect]
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_semantic_models.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_semantic_models.qbk	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,85 @@
+[section Interlocked Semantic Models]
+
+[important The `sequential` and `thread_unsafe` semantics described on this page
+ are not yet implemented.
+]
+
+[heading Description]
+
+The types detailed in this section are the __interlocked_semantic_types__ for
+use with __interlocked_operations__ and __interlocked_barriers__.
+
+[heading Model of]
+
+Each type mentioned above is an __interlocked_semantic_type__.
+
+[important
+If you are unsure as to which semantics you should use for a given situation, it
+is generally safest to use the default semantics of the corresponding operation.
+If efficiency is important for your application, you should prefer to use the
+least-restrictive semantics that you can without breaking allowable ordering of
+visibility between threads.
+]
+
+[table Semantic Types
+[[Type]            [Thread-Safe][Ordering Guarantee]                           ]
+[[`thread_unsafe`] [no]         [No atomicity or ordering with respect to
+                                 multiple threads.
+                                 [tablenote Useful for generic programming,
+                                  particular when the requirement for
+                                  thread-safety is dependent on a template
+                                  argument.
+                                 ]
+                                ]                                              ]
+[[`unordered`]     [yes]        [No ordering guarantee.]                       ]
+[[`acquire`]       [yes]        [Ensures that all subsequent operations in
+                                 program order are performed after all preceding
+                                 loads in program order.
+                                ]                                              ]
+[[`release`]       [yes]        [Ensures that all preceding operations in
+                                 program order are performed after all
+                                 subsequent stores in program order.
+                                ]                                              ]
+[[`acq_rel`]       [yes]        [Combines the semantics of `acquire` and
+                                 `release`.
+                                ]                                              ]
+[[`sequential`]    [yes]        [Ensures that all preceding operations in
+                                 program order are performed after all
+                                 subsequent operations in program order.
+                                ]                                              ]
+[[`default_`]      []           [Uses the default ordering guarantees as
+                                 specified by the corresponding operation.
+                                 [tablenote This will likely be removed as all
+                                  operations should now default to sequential.
+                                 ]
+                                ]                                              ]
+]
+
+[heading Headers]
+
+In general, you should not have to explicitly include the following files in
+order to use [concept Interlocked Operations] and [concept Interlocked
+Barriers], since including the file for the operation implicitly includes the
+corresponding semantics. However, if you wish to create your own operations, you
+would use the headers notated below to bring in the semantic types which are
+necessary.
+
+``
+  // Brings in all semantic types.
+  #include <boost/act/interlocked/semantics.hpp>
+  
+  // Fine-grained semantic headers.
+  #include <boost/act/interlocked/semantics/thread_unsafe.hpp>
+  #include <boost/act/interlocked/semantics/unordered.hpp>
+  #include <boost/act/interlocked/semantics/acquire.hpp>
+  #include <boost/act/interlocked/semantics/release.hpp>
+  #include <boost/act/interlocked/semantics/acq_rel.hpp>
+  #include <boost/act/interlocked/semantics/sequential.hpp>
+  #include <boost/act/interlocked/semantics/default.hpp>
+``
+
+[heading Example]
+
+ToDo: Add an example here.
+
+[endsect]
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/support/checking_support.qbk
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/support/checking_support.qbk	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/support/checking_support.qbk	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -12,11 +12,11 @@
 
 [variablelist Notation
 [[[~name]]          [The name of an __interlocked_operation__ in =Boost.Act=.] ]
-[[`S`]              [A __semantic_type__, as specified without qualification
-                     and with the exact name as listed in documentation
-                     (not a typedef name). As an exception, =default_=,
-                     =default=, and =_= may each be used when specifying default
-                     semantics.
+[[`S`]              [An __interlocked_semantic_type__, as specified without
+                     qualification and with the exact name as listed in
+                     documentation (not a typedef name). As an exception,
+                     =default_=, =default=, and =_= may each be used when
+                     specifying default semantics.
                     ]                                                          ]
 ]
 
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/test/Jamfile.v2
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/test/Jamfile.v2	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/Jamfile.v2	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -27,8 +27,8 @@
           [ run interlocked/assign_if_was/assign_if_was.cpp ]
           [ run interlocked/assign_if_was/assign_if_was_acquire.cpp ]
           [ run interlocked/assign_if_was/assign_if_was_release.cpp ]
-          #[ run interlocked/assign_if_was/assign_if_was_acq_rel.cpp ]
-          #[ run interlocked/assign_if_was/assign_if_was_unordered.cpp ]
+          [ run interlocked/assign_if_was/assign_if_was_acq_rel.cpp ]
+          [ run interlocked/assign_if_was/assign_if_was_unordered.cpp ]
 
           [ run interlocked/add_assign/add_assign.cpp ]
           [ run interlocked/add_assign/add_assign_acquire.cpp ]
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_acq_rel.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_acq_rel.cpp	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,17 @@
+/*=============================================================================
+    Copyright (c) 2006, 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to 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)
+==============================================================================*/
+
+// Note: These tests could be a little bit better. Currently testing is done by
+//       forcing compound CAS operations to use their default implementation
+//       (which is to internally use assign_if_was).
+
+#include <boost/test/minimal.hpp>
+
+#define BOOST_ACT_INTERLOCKED_FORCE_DEFAULTS
+
+#include "../add_assign/add_assign_acq_rel.cpp"
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_unordered.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_unordered.cpp	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,17 @@
+/*=============================================================================
+    Copyright (c) 2006, 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to 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)
+==============================================================================*/
+
+// Note: These tests could be a little bit better. Currently testing is done by
+//       forcing compound CAS operations to use their default implementation
+//       (which is to internally use assign_if_was).
+
+#include <boost/test/minimal.hpp>
+
+#define BOOST_ACT_INTERLOCKED_FORCE_DEFAULTS
+
+#include "../add_assign/add_assign_unordered.cpp"
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/cstdatomic.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/cstdatomic.hpp	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,564 @@
+/*=============================================================================
+    Copyright (c) 2006, 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_CSTDATOMIC_HPP
+#define BOOST_ACT_INTERLOCKED_CSTDATOMIC_HPP
+
+#include <boost/act/interlocked/store.hpp>
+#include <boost/act/interlocked/load.hpp>
+#include <boost/act/interlocked/add_assign.hpp>
+#include <boost/act/interlocked/subtract_assign.hpp>
+#include <boost/act/interlocked/and_assign.hpp>
+#include <boost/act/interlocked/or_assign.hpp>
+#include <boost/act/interlocked/xor_assign.hpp>
+#include <boost/act/interlocked/integer/types.hpp>
+#include <boost/act/interlocked/flag.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <cassert>
+#include <cstddef>
+
+namespace boost { namespace act { namespace interlocked { namespace std_atomic {
+
+enum memory_order
+{ memory_order_relaxed
+, memory_order_acquire
+, memory_order_release
+, memory_order_acq_rel
+, memory_order_seq_cst
+};
+
+#define BOOST_ACT_DETAIL_RETURN_CALL_IMPL( macro, name, order, args, data )    \
+switch( order )                                                                \
+{                                                                              \
+case memory_order_relaxed:                                                     \
+  macro( interlocked::name< unordered > args, data )                           \
+  break;                                                                       \
+case memory_order_acquire:                                                     \
+  macro( interlocked::name< acquire > args, data )                             \
+  break;                                                                       \
+case memory_order_release:                                                     \
+  macro( interlocked::name< release > args, data )                             \
+  break;                                                                       \
+case memory_order_acq_rel:                                                     \
+  macro( interlocked::name< acq_rel > args, data )                             \
+  break;                                                                       \
+case memory_order_seq_cst:                                                     \
+  macro( interlocked::name< sequential > args, data )                          \
+  break;                                                                       \
+}
+
+#define BOOST_ACT_DETAIL_CALL_MAC( expression, dummy ) result;
+
+#define BOOST_ACT_DETAIL_RETURN_CALL_MAC( expression, dummy ) return result;
+
+#define BOOST_ACT_DETAIL_CAS_CALL_MAC( expression, type_and_old_val )          \
+BOOST_PP_TUPLE_ELEM( 2, 0 ) expected_val = BOOST_PP_TUPLE_ELEM( 2, 1 );        \
+BOOST_PP_TUPLE_ELEM( 2, 1 ) = expression;                                      \
+return expected_val == BOOST_PP_TUPLE_ELEM( 2, 1 );
+
+#define BOOST_ACT_DETAIL_CALL( name, order, args )                             \
+BOOST_ACT_DETAIL_RETURN_CALL_IMPL( BOOST_ACT_DETAIL_CALL_MAC                   \
+                                 , name, order, args                           \
+                                 )
+
+#define BOOST_ACT_DETAIL_RETURN_CALL( name, order, args )                      \
+BOOST_ACT_DETAIL_RETURN_CALL_IMPL( BOOST_ACT_DETAIL_RETURN_CALL_MAC            \
+                                 , name, order, args                           \
+                                 )
+
+#define BOOST_ACT_DETAIL_RETURN_CAS_CALL( name, order, args, type, expected )  \
+BOOST_ACT_DETAIL_RETURN_CALL_IMPL( BOOST_ACT_DETAIL_CAS_CALL_MAC               \
+                                 , name, order, args, ( type, expected )       \
+                                 )
+
+// ToDo: Initialize in constructor to clear (figure out how to guarantee order)
+struct atomic_flag
+  : noncopyable
+{
+public:
+  bool test_and_set( memory_order order = memory_order_seq_cst ) volatile
+  {
+    BOOST_ACT_DETAIL_RETURN_CALL( set_if_was_clear, order, ( flag_m ) )
+  }
+
+  void clear( memory_order order = memory_order_seq_cst ) volatile
+  {
+    BOOST_ACT_DETAIL_CALL( clear, order, ( flag_m ) )
+  }
+private:
+  interlocked::flag_fast_t flag_m;
+}
+
+inline bool atomic_flag_test_and_set( volatile atomic_flag* target )
+{
+  assert( target != 0 );
+  return target->test_and_set( memory_order_seq_cst );
+}
+
+inline bool atomic_flag_test_and_set_explicit( volatile atomic_flag* target
+                                             , memory_order order
+                                             )
+{
+  assert( target != 0 );
+  return target->test_and_set( order );
+}
+
+inline void atomic_flag_clear( volatile atomic_flag* target )
+{
+  assert( target != 0 );
+  target->clear( memory_order_seq_cst );
+}
+
+inline void atomic_flag_clear_explicit( volatile atomic_flag* target
+                                      , memory_order order
+                                      )
+{
+  assert( target != 0 );
+  target->clear( order );
+}
+
+struct atomic_bool
+  : noncopyable
+{
+public:
+  bool lock_free()
+  {
+    return true; // ToDo: Change when emulation is supported.
+  }
+
+  void store( bool val, memory_order order = memory_order_seq_cst ) volatile
+  {
+    BOOST_ACT_DETAIL_CALL( store, order, ( bool_m, val ) )
+  }
+
+  bool load( memory_order order = memory_order_seq_cst ) volatile
+  {
+    BOOST_ACT_DETAIL_RETURN_CALL( load, order, ( bool_m ) )
+  }
+
+  bool swap( bool val, memory_order = memory_order_seq_cst ) volatile
+  {
+    BOOST_ACT_DETAIL_RETURN_CALL( assign, order, ( bool_m, val ) )
+  }
+
+  bool compare_swap( bool& expected, bool new_val
+                   , memory_order order = memory_order_seq_cst
+                   ) volatile
+  {
+    BOOST_ACT_DETAIL_RETURN_CAS_CALL( assign_if_was, order
+                                    , ( bool_m, new_val, expected )
+                                    , bool, expected
+                                    )
+  }
+/*
+  void fence( memory_order ) volatile
+  {
+    // ToDo: Define
+  }
+*/
+  //constexpr atomic_bool( bool __v__ );
+
+  bool operator =( bool val ) volatile
+  {
+    store( val );
+    return val;
+  }
+
+  operator bool() volatile
+  {
+    return load();
+  }
+private:
+  interlocked::bool_fast_t bool_m;
+};
+
+inline bool atomic_lock_free( volatile atomic_bool* target )
+{
+  assert( target != 0 );
+  return target->lock_free();
+}
+
+inline void atomic_store( volatile atomic_bool* target, bool val )
+{
+  assert( target != 0 );
+  target->store( val );
+}
+
+inline void atomic_store_explicit( volatile atomic_bool* target, bool val
+                                 , memory_order order
+                                 )
+{
+  assert( target != 0 );
+  target->store( val, order );
+}
+
+inline bool atomic_load( volatile atomic_bool* target )
+{
+  assert( target != 0 );
+  return target->load();
+}
+
+inline bool atomic_load_explicit( volatile atomic_bool* target, memory_order order )
+{
+  assert( target != 0 );
+  return target->load( order );
+}
+
+inline bool atomic_swap( volatile atomic_bool* target, bool val )
+{
+  assert( target != 0 );
+  return target->swap( val );
+}
+
+inline bool atomic_swap_explicit( volatile atomic_bool* target, bool val
+                                , memory_order order
+                                )
+{
+  assert( target != 0 );
+  return target->swap( val, order );
+}
+
+inline bool atomic_compare_swap( volatile atomic_bool* target
+                               , bool* expected, bool val
+                               )
+{
+  assert( target != 0 );
+  return target->compare_swap( *expected, val );
+}
+
+inline bool atomic_compare_swap_explicit( volatile atomic_bool* target
+                                        , bool*, bool val, memory_order order
+                                        )
+{
+  assert( target != 0 );
+  return target->compare_swap( *expected, val, order );
+}
+
+inline void atomic_fence( volatile atomic_bool* target, memory_order order )
+{
+  assert( target != 0 );
+  // ToDo: Define
+}
+
+struct atomic_address
+  : noncopyable
+{
+  bool lock_free()
+  {
+    return true; // ToDo: Change when emulation is supported.
+  }
+  void store( void* val, memory_order order = memory_order_seq_cst ) volatile
+  {
+    BOOST_ACT_DETAIL_CALL( store, order, ( address_m, val ) )
+  }
+
+  void* load( memory_order order = memory_order_seq_cst ) volatile
+  {
+    BOOST_ACT_DETAIL_RETURN_CALL( load, order, ( address_m ) )
+  }
+
+  void* swap( void* val, memory_order order = memory_order_seq_cst ) volatile
+  {
+    BOOST_ACT_DETAIL_RETURN_CALL( assign, order, ( address_m, val ) )
+  }
+
+  void* compare_swap( void*& expected, void*, new_val
+                    , memory_order order = memory_order_seq_cst
+                    ) volatile
+  {
+    BOOST_ACT_DETAIL_RETURN_CAS_CALL( assign_if_was, order
+                                    , ( address_m, new_val, expected )
+                                    , void*, expected
+                                    )
+  }
+/*
+  void fence( memory_order ) volatile
+  {
+    // ToDo: Define
+  }
+*/
+  void* fetch_add( std::ptrdiff_t offset
+                 , memory_order order = memory_order_seq_cst
+                 ) volatile
+  {
+    BOOST_ACT_DETAIL_RETURN_CALL( add_assign, order, ( address_m, offset ) )
+  }
+
+  void* fetch_sub( std::ptrdiff_t offset
+                 , memory_order order = memory_order_seq_cst
+                 ) volatile
+  {
+    BOOST_ACT_DETAIL_RETURN_CALL( subtract_assign, order, ( address_m,offset ) )
+  }
+
+  //constexpr atomic_address( void* );
+
+  void* operator =( void* address ) volatile
+  {
+    store( address );
+    return address;
+  }
+
+  operator void*() volatile
+  {
+    return load();
+  }
+
+  void* operator +=( std::ptrdiff_t offset ) volatile
+  {
+    BOOST_ACT_DETAIL_RETURN_CALL( add_assign, order, ( address_m,offset ) )
+  }
+
+  void* operator -=( std::ptrdiff_t offset ) volatile
+  {
+    BOOST_ACT_DETAIL_RETURN_CALL( subtract_assign, order, ( address_m,offset ) )
+  }
+private:
+  void* address_m;
+};
+
+inline bool atomic_lock_free( volatile atomic_address* target )
+{
+  assert( target != 0 );
+  return target->lock_free();
+}
+
+inline void atomic_store( volatile atomic_address* target, void* val )
+{
+  assert( target != 0 );
+  target->store( val );
+}
+
+inline void atomic_store_explicit( volatile atomic_address* target, void* val
+                                 , memory_order order
+                                 )
+{
+  assert( target != 0 );
+  target->store( val, order );
+}
+
+inline void* atomic_load( volatile atomic_address* target )
+{
+  assert( target != 0 );
+  return target->load();
+}
+
+inline void* atomic_load_explicit( volatile atomic_address* target
+                                 , memory_order order
+                                 )
+{
+  assert( target != 0 );
+  return target->load( order );
+}
+
+inline void* atomic_swap( volatile atomic_address* target, void* val )
+{
+  assert( target != 0 );
+  return target->swap( val );
+}
+
+inline void* atomic_swap_explicit( volatile atomic_address* target, void* val
+                                 , memory_order order
+                                 )
+{
+  assert( target != 0 );
+  return target->swap( val, order );
+}
+
+inline void* atomic_compare_swap( volatile atomic_address* target
+                                , void** expected, void* new_val
+                                )
+{
+  assert( target != 0 );
+  return target->compare_swap( *expected, val );
+}
+
+inline void* atomic_compare_swap_explicit( volatile atomic_address* target
+                                         , void** expected, void* new_val
+                                         , memory_order order
+                                         )
+{
+  assert( target != 0 );
+  return target->compare_swap( *expected, val, order );
+}
+/*
+inline void atomic_fence( volatile atomic_address* target, memory_order order )
+{
+  assert( target != 0 );
+  // ToDo: Define
+}
+*/
+inline void* atomic_fetch_add( volatile atomic_address* target
+                             , std::ptrdiff_t offset
+                             )
+{
+  assert( target != 0 );
+  return target->fetch_add( offset );
+}
+
+inline void* atomic_fetch_add_explicit( volatile atomic_address* target
+                                      , std::ptrdiff_t offset
+                                      , memory_order order
+                                      )
+{
+  assert( target != 0 );
+  return target->fetch_add( offset, order );
+}
+
+inline void* atomic_fetch_sub( volatile atomic_address* target
+                             , std::ptrdiff_t offset
+                             )
+{
+  assert( target != 0 );
+  return target->fetch_sub( offset );
+}
+
+inline void* atomic_fetch_sub_explicit( volatile atomic_address* target
+                                      , std::ptrdiff_t offset
+                                      , memory_order order
+                                      )
+{
+  assert( target != 0 );
+  return target->fetch_sub( offset, order );
+}
+
+template< typename T >
+struct atomic
+  : noncopyable
+{
+  bool lock_free() volatile
+  {
+    return true; // ToDo: Change when emulation is supported.
+  }
+
+  void store( T val, memory_order order = memory_order_seq_cst ) volatile
+  {
+    BOOST_ACT_DETAIL_CALL( store, order, ( val_m, val ) )
+  }
+
+  T load( memory_order order = memory_order_seq_cst ) volatile
+  {
+    BOOST_ACT_DETAIL_RETURN_CALL( load, order, ( val_m ) )
+  }
+
+  T swap( T val, memory_order order = memory_order_seq_cst ) volatile
+  {
+    BOOST_ACT_DETAIL_RETURN_CALL( assign, order, ( val_m, val ) )
+  }
+
+  bool compare_swap( T& expected, T new_val
+                   , memory_order order = memory_order_seq_cst
+                   ) volatile
+  {
+    BOOST_ACT_DETAIL_RETURN_CAS_CALL( assign_if_was, order
+                                    , ( val_m, new_val, expected )
+                                    , T, expected
+                                    )
+  }
+/*
+  void fence( memory_order ) volatile
+  {
+    //ToDo: Define
+  }
+*/
+  //CPP0X(constexpr) atomic( T __v__ ) : __f__( __v__ ) { }
+
+  T operator =( T val ) volatile
+  {
+    store( val );
+    return val;
+  }
+
+  operator T() volatile
+  {
+    return load();
+  }
+private:
+  T val_m;
+};
+
+//And for each of the integral (character and integer) types listed above, 
+
+/*
+#define BOOST_ACT_ATOMIC_INTEGRAL( type )                                      \
+struct BOOST_PP_CAT( atomic_, type )                                           \
+  : noncopyable                                                                \
+{                                                                              \
+  bool lock_free();                                                            \
+  void store( integral, memory_order = memory_order_seq_cst ) volatile;        \
+  integral load( memory_order = memory_order_seq_cst ) volatile;               \
+  integral swap( integral,
+                 memory_order = memory_order_seq_cst ) volatile;
+  bool compare_swap( integral&, integral,
+                     memory_order = memory_order_seq_cst ) volatile;
+  void fence( memory_order ) volatile;
+  integral fetch_add( integral,
+                      memory_order = memory_order_seq_cst ) volatile;
+  integral fetch_sub( integral,
+                      memory_order = memory_order_seq_cst ) volatile;
+  integral fetch_and( integral,
+                      memory_order = memory_order_seq_cst ) volatile;
+  integral fetch_or( integral,
+                      memory_order = memory_order_seq_cst ) volatile;
+  integral fetch_xor( integral,
+                      memory_order = memory_order_seq_cst ) volatile;
+
+  atomic_integral() = default;
+  constexpr atomic_integral( integral );
+  integral operator =( integral ) volatile;
+  operator integral() volatile;
+  integral operator +=( integral ) volatile;
+  integral operator -=( integral ) volatile;
+  integral operator &=( integral ) volatile;
+  integral operator |=( integral ) volatile;
+  integral operator ^=( integral ) volatile;
+private:
+  interlocked::type val_m;
+};
+
+inline bool atomic_lock_free( volatile atomic_integral* );
+inline void atomic_store( volatile atomic_integral*, integral );
+inline void atomic_store_explicit( volatile atomic_integral*, integral, memory_order );
+inline integral atomic_load( volatile atomic_integral* );
+inline integral atomic_load_explicit( volatile atomic_integral*, memory_order );
+inline integral atomic_swap( volatile atomic_integral*, integral );
+inline integral atomic_swap_explicit( volatile atomic_integral*, integral,
+                               memory_order );
+inline bool atomic_compare_swap( volatile atomic_integral*, integral*, integral );
+inline bool atomic_compare_swap_explicit( volatile atomic_integral*, integral*,
+                                   integral, memory_order );
+inline void atomic_fence( volatile atomic_integral*, memory_order ) volatile;
+inline integral atomic_fetch_add( volatile atomic_integral*, integral );
+inline integral atomic_fetch_add_explicit( volatile atomic_integral*, integral,
+                                    memory_order );
+inline integral atomic_fetch_sub( volatile atomic_integral*, integral );
+inline integral atomic_fetch_sub_explicit( volatile atomic_integral*, integral,
+                                    memory_order );
+inline integral atomic_fetch_and( volatile atomic_integral*, integral );
+inline integral atomic_fetch_and_explicit( volatile atomic_integral*, integral,
+                                    memory_order );
+inline integral atomic_fetch_or( volatile atomic_integral*, integral );
+inline integral atomic_fetch_or_explicit( volatile atomic_integral*, integral,
+                                    memory_order );
+inline integral atomic_fetch_xor( volatile atomic_integral*, integral );
+inline integral atomic_fetch_xor_explicit( volatile atomic_integral*, integral,
+                                    memory_order );
+*/
+
+#undef BOOST_ACT_DETAIL_RETURN_CAS_CALL
+#undef BOOST_ACT_DETAIL_RETURN_CALL
+#undef BOOST_ACT_DETAIL_CALL
+#undef BOOST_ACT_DETAIL_CAS_CALL_MAC
+#undef BOOST_ACT_DETAIL_RETURN_CALL_MAC
+#undef BOOST_ACT_DETAIL_CALL_MAC
+#undef BOOST_ACT_DETAIL_RETURN_CALL_IMPL
+
+} } } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/interlocked_integer_types.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/interlocked_integer_types.hpp	2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,87 @@
+/*=============================================================================
+    Copyright (c) 2007 Matthew Calabrese
+
+    Use, modification and distribution is subject to 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_TEST_INTERLOCKED_INTERLOCKED_INTEGER_TYPES_HPP
+#define BOOST_ACT_TEST_INTERLOCKED_INTERLOCKED_INTEGER_TYPES_HPP
+
+#include <boost/act/interlocked/integer/types.hpp>
+#include <boost/mpl/vector.hpp>
+#include <boost/mpl/joint_view.hpp>
+#include <boost/act/config/interlocked/has_int.hpp>
+
+typedef boost::mpl::vector< 
+
+#if BOOST_ACT_INTERLOCKED_HAS_INT_LEAST( 8 )
+
+boost::act::interlocked::int_fast8_t;
+boost::act::interlocked::int_least8_t;
+
+#endif
+
+#if BOOST_ACT_INTERLOCKED_HAS_INT_LEAST( 16 )
+
+boost::act::interlocked::int_fast16_t;
+boost::act::interlocked::int_least16_t;
+
+#endif
+
+#if BOOST_ACT_INTERLOCKED_HAS_INT_LEAST( 32 )
+
+boost::act::interlocked::int_fast32_t;
+boost::act::interlocked::int_least32_t;
+
+#endif
+
+#if BOOST_ACT_INTERLOCKED_HAS_INT_LEAST( 64 )
+
+boost::act::interlocked::int_fast64_t;
+boost::act::interlocked::int_least64_t;
+
+#endif
+
+> signed_interlocked_ints;
+
+
+typedef boost::mpl::vector< 
+
+#if BOOST_ACT_INTERLOCKED_HAS_UINT_LEAST( 8 )
+
+boost::act::interlocked::uint_fast8_t;
+boost::act::interlocked::uint_least8_t;
+
+#endif
+
+#if BOOST_ACT_INTERLOCKED_HAS_UINT_LEAST( 16 )
+
+boost::act::interlocked::uint_fast16_t;
+boost::act::interlocked::uint_least16_t;
+
+#endif
+
+#if BOOST_ACT_INTERLOCKED_HAS_UINT_LEAST( 32 )
+
+boost::act::interlocked::uint_fast32_t;
+boost::act::interlocked::uint_least32_t;
+
+#endif
+
+#if BOOST_ACT_INTERLOCKED_HAS_UINT_LEAST( 64 )
+
+boost::act::interlocked::uint_fast64_t;
+boost::act::interlocked::uint_least64_t;
+
+#endif
+
+> unsigned_interlocked_ints;
+
+typedef boost::mpl::joint_view< signed_interlocked_ints
+                              , unsigned_interlocked_ints
+                              >
+                              all_interlocked_ints;
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/multiply_assign/multiply_assign.cpp
==============================================================================