$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: matt_calabrese_at_[hidden]
Date: 2007-07-14 04:46:28
Author: matt_calabrese
Date: 2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
New Revision: 7423
URL: http://svn.boost.org/trac/boost/changeset/7423
Log:
Doc updates, added some more support for the additional bidirectional semantics. GCC x86 support is broken for this release temporarily.
Added:
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_sequential.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_sequential_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_thread_unsafe.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_thread_unsafe_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/detail/add_assign_sequential_default
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_sequential.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_sequential_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_thread_unsafe.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_thread_unsafe_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/assign_sequential_windows
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_sequential.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_sequential_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_thread_unsafe.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_thread_unsafe_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_sequential_windows
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_sequential.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_sequential_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_thread_unsafe.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_thread_unsafe_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/detail/bitand_assign_sequential_default
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/detail/bitand_assign_unordered_default
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/compiler_fence_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/compiler_fence_thread_unsafe.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/compiler_fence_thread_unsafe_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_acq_rel_default
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_acquire_default
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_release_default
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_sequential_default
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_sequential_gcc
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_sequential_vc
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_thread_unsafe_default
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_unordered_default
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/impl_includer.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/cstdatomic.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/compiler_cage
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/compiler_fence
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/memory_cage
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/memory_fence
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/detail/load_sequential_default
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/load_sequential.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/load_sequential_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/impl_includer.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/memory_fence_acq_rel_default
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/memory_fence_acquire_default
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/memory_fence_release_default
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/memory_fence_sequential_default
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/memory_fence_sequential_windows
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/memory_fence_thread_unsafe_default
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/memory_fence_unordered_default
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence.hpp
      - copied, changed from r7409, /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/fence.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/modify/modify_sequential.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/modify/modify_sequential_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/store/detail/store_sequential_default
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/detail/subtract_assign_sequential_default
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_sequential.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_sequential_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_thread_unsafe.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_thread_unsafe_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_fence.html
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_fence_models/
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_fence_models.html
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_fence_models/interlocked_compiler_fence.html
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_fence_models/interlocked_memory_fence.html
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_fence.qbk
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_fence_models/
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_fence_models.qbk
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_fence_models/interlocked_compiler_fence.qbk
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_fence_models/interlocked_memory_fence.qbk
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_sequential.cpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_thread_unsafe.h
Removed:
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/compiler_fence_load.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/compiler_fence_store.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_load_vista
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_store_vista
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_vista
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/fence_read_vc_x86
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/fence_vc_x86
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/fence_vista
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/fence_write_vc_x86
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/fence.hpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/cstdatomic.hpp
Text files modified: 
   sandbox/SOC/2006/concurrency/trunk/boost/act/config/interlocked/has.hpp                                                                      |   134 ++++++++++++++++++++++++++++----------- 
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked.hpp                                                                                 |     5 +                                       
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign.hpp                                                                          |     4                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign.hpp                                                                   |     8 +-                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_fwd.hpp                                                               |     2                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/assign_acq_rel_default                                                |     9 +-                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/assign_unordered_default                                              |    19 +----                                   
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/impl_includer.hpp                                                     |     8 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_fwd.hpp                                                                      |     4                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was.hpp                                                                   |     4                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was.hpp                                                     |    16 ++--                                    
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_fwd.hpp                                                 |     2                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_acq_rel_default                                  |    20 +----                                   
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_unordered_default                                |     6 -                                       
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was_fwd.hpp                                                               |     4                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign.hpp                                                     |     2                                         
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/cas_support.hpp                                                              |     7 +                                       
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/add_assign                                                     |     8 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/assign                                                         |     8 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/assign_if_was                                                  |     8 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/bitand_assign                                                  |     8 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/bitor_assign                                                   |     8 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/compl_assign                                                   |     8 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/decrement                                                      |     8 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/divide_assign                                                  |     8 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/impl_includer.hpp                                              |     8 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/increment                                                      |     8 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/load                                                           |     8 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/lshift_assign                                                  |     8 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/mod_assign                                                     |     8 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/multiply_assign                                                |     8 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/negate_assign                                                  |     8 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/retrieve                                                       |     8 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/rshift_assign                                                  |     8 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/store                                                          |     8 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/subtract_assign                                                |     8 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/xor_assign                                                     |     8 ++                                      
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/implementation_info/operation_support.hpp                                    |    82 ++++--------------------                
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence.hpp                                                                    |    18 ++--                                    
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence.hpp                                                       |    38 +++++++++++                             
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_acq_rel.hpp                                               |    44 +++++++++++++                           
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_acq_rel_fwd.hpp                                           |    29 ++++++++                                
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_acquire.hpp                                               |    44 +++++++++++++                           
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_acquire_fwd.hpp                                           |    29 ++++++++                                
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_fwd.hpp                                                   |    31 +++++++++                               
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_release.hpp                                               |    44 +++++++++++++                           
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_release_fwd.hpp                                           |    29 ++++++++                                
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_sequential.hpp                                            |    44 +++++++++++++                           
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_sequential_fwd.hpp                                        |    29 ++++++++                                
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_thread_unsafe.hpp                                         |    25 +++++++                                 
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_thread_unsafe_fwd.hpp                                     |    23 ++++++                                  
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_unordered.hpp                                             |    24 +++++++                                 
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_unordered_fwd.hpp                                         |    22 ++++++                                  
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence_fwd.hpp                                                                |    18 ++--                                    
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/store/detail/store_release_default                                                  |    38 +++++-----                              
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/store/detail/store_unordered_default                                                |    22 +++++                                   
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked_fwd.hpp                                                                             |     5 +                                       
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/act.qbk                                                                                      |    53 ++++++++------                          
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/HTML.manifest                                                                           |     7 +                                       
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/beta_warning.html                                                             |     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                                                              |    34 +++++++++                               
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models.html                                      |     6                                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models/interlocked_compiler_cage.html            |     6                                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models/interlocked_memory_cage.html              |    52 +++++++++++---                          
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts.html                                         |     6 +                                       
   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_cage.html                        |    36 +++++-----                              
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_integer_type.html                |    16 ++--                                    
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_natural_type.html                |    20 +++--                                   
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_operation.html                   |    20 ++--                                    
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_semantic_type.html               |     4                                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_type.html                        |    14 ++--                                    
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models/interlocked_integer_metafunctions.html |    22 +++---                                  
   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_semantic_models.html                                  |    54 +++------------                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_support/checking_support.html                         |    14 ++--                                    
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/introduction.html                                                             |    20 ++--                                    
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/rationale.html                                                                |   111 ++++++--------------------------        
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/index.html                                                                              |    45 ++++++++----                            
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked.qbk                                                                              |     1                                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts.qbk                                                                     |     1                                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_cage.qbk                                                    |    13 +--                                     
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_natural_type.qbk                                            |     4                                         
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_cage_models/interlocked_memory_cage.qbk                              |    14 +--                                     
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_semantic_models.qbk                                                  |     7 -                                       
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/rationale.qbk                                                                                |    39 +++++-----                              
   87 files changed, 1171 insertions(+), 550 deletions(-)
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/config/interlocked/has.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/config/interlocked/has.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/config/interlocked/has.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -15,36 +15,42 @@
 #include <boost/preprocessor/comparison/equal.hpp>
 #include <boost/preprocessor/control/if.hpp>
 
-#define BOOST_ACT_CONFIG_DETAIL_IS_DEFAULT_SEMANTICSacquire()   0
-#define BOOST_ACT_CONFIG_DETAIL_IS_DEFAULT_SEMANTICSrelease()   0
-#define BOOST_ACT_CONFIG_DETAIL_IS_DEFAULT_SEMANTICSacq_rel()   0
-#define BOOST_ACT_CONFIG_DETAIL_IS_DEFAULT_SEMANTICSunordered() 0
-#define BOOST_ACT_CONFIG_DETAIL_IS_DEFAULT_SEMANTICSdefault()   1
-#define BOOST_ACT_CONFIG_DETAIL_IS_DEFAULT_SEMANTICSdefault_()  1
-#define BOOST_ACT_CONFIG_DETAIL_IS_DEFAULT_SEMANTICS_()         1
-
-#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_add_assign()      acq_rel
-#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_assign()          acq_rel
-#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_assign_if_was()   acq_rel
-#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_bitand_assign()   acq_rel
-#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_bitor_assign()    acq_rel
-#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_compiler_fence()  acq_rel /*Change*/
-#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_compl_assign()    acq_rel
-#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_decrement()       acq_rel
-#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_divide_assign()   acq_rel
-#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_fence()           acq_rel /*Change*/
-#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_increment()       acq_rel
-#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_lshift_assign()   acq_rel
-#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_mod_assign()      acq_rel
-#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_modify()          acq_rel
-#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_multiply_assign() acq_rel
-#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_negate_assign()   acq_rel
-#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_not_assign()      acq_rel
-#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_load()            acquire
-#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_rshift_assign()   acq_rel
-#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_store()           release
-#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_subtract_assign() acq_rel
-#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_xor_assign()      acq_rel
+// ToDo: Fence detection here is completely wrong -- fix it!
+//       Store and load are wrong
+//       Create support check for thread_unsafe (always yield 1)
+
+#define BOOST_ACT_CONFIG_DETAIL_IS_DEFAULT_SEMANTICSthread_unsafe() 0
+#define BOOST_ACT_CONFIG_DETAIL_IS_DEFAULT_SEMANTICSunordered()     0
+#define BOOST_ACT_CONFIG_DETAIL_IS_DEFAULT_SEMANTICSacquire()       0
+#define BOOST_ACT_CONFIG_DETAIL_IS_DEFAULT_SEMANTICSrelease()       0
+#define BOOST_ACT_CONFIG_DETAIL_IS_DEFAULT_SEMANTICSacq_rel()       0
+#define BOOST_ACT_CONFIG_DETAIL_IS_DEFAULT_SEMANTICSsequential()    0
+#define BOOST_ACT_CONFIG_DETAIL_IS_DEFAULT_SEMANTICSdefault()       1
+#define BOOST_ACT_CONFIG_DETAIL_IS_DEFAULT_SEMANTICSdefault_()      1
+#define BOOST_ACT_CONFIG_DETAIL_IS_DEFAULT_SEMANTICS_()             1
+
+#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_add_assign()      sequential
+#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_assign()          sequential
+#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_assign_if_was()   sequential
+#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_bitand_assign()   sequential
+#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_bitor_assign()    sequential
+#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_compiler_fence()  sequential
+#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_compl_assign()    sequential
+#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_decrement()       sequential
+#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_divide_assign()   sequential
+#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_memory_fence()    sequential
+#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_increment()       sequential
+#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_lshift_assign()   sequential
+#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_mod_assign()      sequential
+#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_modify()          sequential
+#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_multiply_assign() sequential
+#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_negate_assign()   sequential
+#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_not_assign()      sequential
+#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_load()            sequential
+#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_rshift_assign()   sequential
+#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_store()           sequential
+#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_subtract_assign() sequential
+#define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_xor_assign()      sequential
 
 #define BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF( name )                             \
 BOOST_PP_CAT( BOOST_ACT_CONFIG_DETAIL_DEFAULT_OF_, name )()
@@ -52,8 +58,14 @@
 #define BOOST_ACT_CONFIG_DETAIL_IS_DEFAULT_SEMANTICS( semantics )              \
 BOOST_PP_CAT( BOOST_ACT_CONFIG_DETAIL_IS_DEFAULT_SEMANTICS, semantics )()
 
+#define BOOST_ACT_CONFIG_DETAIL_HAS_ASSIGN_IF_WAS_sequential()                 \
+BOOST_ACT_INTERLOCKED_DETAIL_HAS_CUSTOM_IMPL( assign_if_was, sequential )
+
 #define BOOST_ACT_CONFIG_DETAIL_HAS_ASSIGN_IF_WAS_acq_rel()                    \
-BOOST_ACT_INTERLOCKED_DETAIL_HAS_CUSTOM_IMPL( assign_if_was, acq_rel )
+BOOST_PP_BITOR                                                                 \
+( BOOST_ACT_INTERLOCKED_DETAIL_HAS_CUSTOM_IMPL( assign_if_was, acq_rel )       \
+, BOOST_ACT_CONFIG_DETAIL_HAS_ASSIGN_IF_WAS_sequential()                       \
+)
 
 #define BOOST_ACT_CONFIG_DETAIL_HAS_ASSIGN_IF_WAS_acquire()                    \
 BOOST_PP_BITOR                                                                 \
@@ -82,12 +94,18 @@
 #define BOOST_ACT_CONFIG_DETAIL_HAS_ASSIGN_IF_WAS_DUMMY( name, semantics )     \
 BOOST_ACT_CONFIG_DETAIL_HAS_ASSIGN_IF_WAS( semantics )
 
+#define BOOST_ACT_CONFIG_DETAIL_HAS_AIW_DERIVABLE_sequential( name )           \
+BOOST_PP_BITOR                                                                 \
+( BOOST_ACT_INTERLOCKED_DETAIL_HAS_CUSTOM_IMPL( name, sequential )             \
+, BOOST_ACT_CONFIG_DETAIL_HAS_ASSIGN_IF_WAS_sequential()                       \
+)
+
 #define BOOST_ACT_CONFIG_DETAIL_HAS_AIW_DERIVABLE_acq_rel( name )              \
 BOOST_PP_BITOR                                                                 \
 ( BOOST_ACT_INTERLOCKED_DETAIL_HAS_CUSTOM_IMPL( name, acq_rel )                \
 , BOOST_PP_BITOR                                                               \
-  ( BOOST_ACT_CONFIG_DETAIL_HAS_ASSIGN_IF_WAS_acquire()                        \
-  , BOOST_ACT_CONFIG_DETAIL_HAS_ASSIGN_IF_WAS_release()                        \
+  ( BOOST_ACT_CONFIG_DETAIL_HAS_ASSIGN_IF_WAS_acq_rel()                        \
+  , BOOST_ACT_CONFIG_DETAIL_HAS_AIW_DERIVABLE_sequential( name )               \
   )                                                                            \
 )
 
@@ -184,18 +202,37 @@
 )                                                                              \
 ( name, semantics )
 
+#define BOOST_ACT_CONFIG_DETAIL_HAS_STORE_sequential()                         \
+BOOST_PP_BITOR                                                                 \
+( BOOST_ACT_INTERLOCKED_DETAIL_HAS_CUSTOM_IMPL( store, sequential )            \
+, BOOST_ACT_CONFIG_DETAIL_HAS_ASSIGN_IF_WAS_sequential()                       \
+)
+
+#define BOOST_ACT_CONFIG_DETAIL_HAS_STORE_acq_rel() 0
+
+#define BOOST_ACT_CONFIG_DETAIL_HAS_STORE_acquire() 0
+
 #define BOOST_ACT_CONFIG_DETAIL_HAS_STORE_release()                            \
 BOOST_PP_BITOR                                                                 \
 ( BOOST_ACT_INTERLOCKED_DETAIL_HAS_VOLATILE_STORE_RELEASE                      \
-, BOOST_ACT_INTERLOCKED_DETAIL_HAS_CUSTOM_IMPL( store, release )               \
+, BOOST_PP_BITOR                                                               \
+  ( BOOST_PP_BITOR                                                             \
+    ( BOOST_ACT_INTERLOCKED_DETAIL_HAS_CUSTOM_IMPL( store, release )           \
+    , BOOST_ACT_CONFIG_DETAIL_HAS_STORE_sequential()                           \
+    )                                                                          \
+  , BOOST_ACT_CONFIG_DETAIL_HAS_ASSIGN_IF_WAS_release()                        \
+  )                                                                            \
 )
 
 #define BOOST_ACT_CONFIG_DETAIL_HAS_STORE_unordered()                          \
 BOOST_PP_BITOR                                                                 \
 ( BOOST_ACT_INTERLOCKED_DETAIL_HAS_VOLATILE_STORE_UNORDERED                    \
 , BOOST_PP_BITOR                                                               \
-  ( BOOST_ACT_CONFIG_DETAIL_HAS_STORE_release()                                \
-  , BOOST_ACT_INTERLOCKED_DETAIL_HAS_CUSTOM_IMPL( store, unordered )           \
+  ( BOOST_PP_BITOR                                                             \
+    ( BOOST_ACT_INTERLOCKED_DETAIL_HAS_CUSTOM_IMPL( store, unordered )         \
+    , BOOST_ACT_CONFIG_DETAIL_HAS_STORE_release()                              \
+    )                                                                          \
+  , BOOST_ACT_CONFIG_DETAIL_HAS_ASSIGN_IF_WAS_unordered()                      \
   )                                                                            \
 )
 
@@ -210,18 +247,37 @@
 )                                                                              \
 ( name, semantics )
 
+#define BOOST_ACT_CONFIG_DETAIL_HAS_LOAD_sequential()                          \
+BOOST_PP_BITOR                                                                 \
+( BOOST_ACT_INTERLOCKED_DETAIL_HAS_CUSTOM_IMPL( load, sequential )             \
+, BOOST_ACT_CONFIG_DETAIL_HAS_ASSIGN_IF_WAS_sequential()                       \
+)
+
+#define BOOST_ACT_CONFIG_DETAIL_HAS_LOAD_acq_rel() 0
+
 #define BOOST_ACT_CONFIG_DETAIL_HAS_LOAD_acquire()                             \
 BOOST_PP_BITOR                                                                 \
 ( BOOST_ACT_INTERLOCKED_DETAIL_HAS_VOLATILE_LOAD_ACQUIRE                       \
-, BOOST_ACT_INTERLOCKED_DETAIL_HAS_CUSTOM_IMPL( load, acquire )                \
+, BOOST_PP_BITOR                                                               \
+  ( BOOST_PP_BITOR                                                             \
+    ( BOOST_ACT_INTERLOCKED_DETAIL_HAS_CUSTOM_IMPL( load, acquire )            \
+    , BOOST_ACT_CONFIG_DETAIL_HAS_LOAD_sequential()                            \
+    )                                                                          \
+  , BOOST_ACT_CONFIG_DETAIL_HAS_ASSIGN_IF_WAS_acquire()                        \
+  )                                                                            \
 )
 
+#define BOOST_ACT_CONFIG_DETAIL_HAS_LOAD_release() 0
+
 #define BOOST_ACT_CONFIG_DETAIL_HAS_LOAD_unordered()                           \
 BOOST_PP_BITOR                                                                 \
 ( BOOST_ACT_INTERLOCKED_DETAIL_HAS_VOLATILE_LOAD_UNORDERED                     \
 , BOOST_PP_BITOR                                                               \
-  ( BOOST_ACT_CONFIG_DETAIL_HAS_LOAD_acquire()                                 \
-  , BOOST_ACT_INTERLOCKED_DETAIL_HAS_CUSTOM_IMPL( load, unordered )            \
+  ( BOOST_PP_BITOR                                                             \
+    ( BOOST_ACT_INTERLOCKED_DETAIL_HAS_CUSTOM_IMPL( load, unordered )          \
+    , BOOST_ACT_CONFIG_DETAIL_HAS_LOAD_acquire()                               \
+    )                                                                          \
+  , BOOST_ACT_CONFIG_DETAIL_HAS_ASSIGN_IF_WAS_unordered()                      \
   )                                                                            \
 )
 
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -13,14 +13,19 @@
 #include <boost/act/interlocked/assign_if_was.hpp>
 #include <boost/act/interlocked/bitand_assign.hpp>
 #include <boost/act/interlocked/bitor_assign.hpp>
+#include <boost/act/interlocked/compiler_cage.hpp>
+#include <boost/act/interlocked/compiler_fence.hpp>
 #include <boost/act/interlocked/decrement.hpp>
 #include <boost/act/interlocked/divide_assign.hpp>
 #include <boost/act/interlocked/increment.hpp>
 #include <boost/act/interlocked/integer.hpp>
 #include <boost/act/interlocked/load.hpp>
 #include <boost/act/interlocked/lshift_assign.hpp>
+#include <boost/act/interlocked/memory_cage.hpp>
+#include <boost/act/interlocked/memory_fence.hpp>
 #include <boost/act/interlocked/modify.hpp>
 #include <boost/act/interlocked/multiply_assign.hpp>
+#include <boost/act/interlocked/negate_assign.hpp>
 #include <boost/act/interlocked/rshift_assign.hpp>
 #include <boost/act/interlocked/semantics.hpp>
 #include <boost/act/interlocked/store.hpp>
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_sequential.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_sequential.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,19 @@
+/*=============================================================================
+    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_ADD_ASSIGN_ADD_ASSIGN_SEQUENTIAL_HPP
+#define BOOST_ACT_INTERLOCKED_ADD_ASSIGN_ADD_ASSIGN_SEQUENTIAL_HPP
+
+#include <boost/act/interlocked/detail/binary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
+( add_assign, sequential, +, additive )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_sequential_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_sequential_fwd.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,19 @@
+/*=============================================================================
+    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_ADD_ASSIGN_ADD_ASSIGN_SEQUENTIAL_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_ADD_ASSIGN_ADD_ASSIGN_SEQUENTIAL_FWD_HPP
+
+#include <boost/act/interlocked/detail/binary_forwarder_fwd.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_INFO                 \
+( add_assign, sequential, additive )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_thread_unsafe.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/add_assign_thread_unsafe_fwd.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/detail/add_assign_sequential_default
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/add_assign/detail/add_assign_sequential_default	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,19 @@
+/*=============================================================================
+    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_ADD_ASSIGN_DETAIL_ADD_ASSIGN_SEQ_DEFAULT_HPP
+#define BOOST_ACT_INTERLOCKED_ADD_ASSIGN_DETAIL_ADD_ASSIGN_SEQ_DEFAULT_HPP
+
+#include <boost/act/interlocked/detail/binary_default.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_DEFAULT_INFO                       \
+( add_assign, sequential, + )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_DEFAULT()
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -10,8 +10,10 @@
 #define BOOST_ACT_INTERLOCKED_ASSIGN_HPP
 
 #include <boost/act/interlocked/assign/assign.hpp>
+#include <boost/act/interlocked/assign/assign_unordered.hpp>
 #include <boost/act/interlocked/assign/assign_acquire.hpp>
 #include <boost/act/interlocked/assign/assign_release.hpp>
-#include <boost/act/interlocked/assign/assign_unordered.hpp>
+#include <boost/act/interlocked/assign/assign_acq_rel.hpp>
+#include <boost/act/interlocked/assign/assign_sequential.hpp>
 
 #endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -11,14 +11,14 @@
 
 #include <boost/act/config/interlocked/has.hpp>
 
-#if BOOST_ACT_INTERLOCKED_HAS( assign, acq_rel )
+#if BOOST_ACT_INTERLOCKED_HAS( assign, sequential )
 
 #include <boost/act/interlocked/semantics/default.hpp>
 #include <boost/mpl/and.hpp>
 #include <boost/type_traits/is_same.hpp>
 #include <boost/utility/enable_if.hpp>
 #include <boost/type_traits/remove_cv.hpp>
-#include <boost/act/interlocked/assign/assign_acq_rel.hpp>
+#include <boost/act/interlocked/assign/assign_sequential.hpp>
 
 #include <boost/act/interlocked/detail/interlocked_operand_validators.hpp>
 
@@ -33,7 +33,7 @@
 ::type
 assign( TargetType& destination, SourceType const& new_value )
 {
-  return interlocked::assign< acq_rel >( destination, new_value );
+  return interlocked::assign< sequential >( destination, new_value );
 }
 
 template< typename Semantics, typename TargetType, typename SourceType >
@@ -48,7 +48,7 @@
 ::type
 assign( TargetType& destination, SourceType const& new_value )
 {
-  return interlocked::assign< acq_rel >( destination, new_value );
+  return interlocked::assign< sequential >( destination, new_value );
 }
 
 } } }
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_fwd.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_fwd.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_fwd.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -11,7 +11,7 @@
 
 #include <boost/act/config/interlocked/has.hpp>
 
-#if BOOST_ACT_INTERLOCKED_HAS( assign, acq_rel )
+#if BOOST_ACT_INTERLOCKED_HAS( assign, sequential )
 
 #include <boost/act/interlocked/semantics/default.hpp>
 #include <boost/mpl/and.hpp>
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_sequential.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_sequential.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,126 @@
+/*=============================================================================
+    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_ASSIGN_ASSIGN_SEQUENTIAL_HPP
+#define BOOST_ACT_INTERLOCKED_ASSIGN_ASSIGN_SEQUENTIAL_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+#if BOOST_ACT_INTERLOCKED_HAS( assign, sequential )
+
+#include <boost/act/interlocked/semantics/sequential.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/remove_volatile.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+#include <boost/act/interlocked/detail/interlocked_operand_validators.hpp>
+#include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
+#include <boost/act/interlocked/integer/selection.hpp>
+#include <boost/act/interlocked/modify/modify_sequential.hpp>
+
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/not.hpp>
+
+#include <boost/act/interlocked/detail/impl.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_INFO                                 \
+( assign, sequential )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_BEGIN()
+
+namespace boost { namespace act { namespace interlocked {
+
+namespace detail
+{
+
+template< typename OperandType >
+class assign_sequential_fun
+{
+public:
+  explicit assign_sequential_fun( OperandType const& operand_init )
+    : operand_m( operand_init ) {}
+
+  template< typename Type >
+  typename remove_cv< Type >::type operator ()( Type& ) const
+  {
+    return static_cast< typename remove_cv< Type >::type >( operand_m );
+  }
+private:
+  OperandType const& operand_m;
+};
+
+struct assign_sequential_unaligned
+{
+  template< typename TargetType, typename SourceType >
+  static typename remove_cv< TargetType >::type
+  execute( TargetType& destination, SourceType const& source )
+  {
+    return modify< sequential >( destination
+                               , assign_sequential_fun< SourceType >( source )
+                               );
+  }
+};
+
+}
+
+template< typename Semantics, typename TargetType, typename SourceType >
+typename lazy_enable_if
+<
+  mpl::and_
+  <
+    is_same< Semantics, sequential >
+  , detail::are_valid_store_style_params< TargetType, SourceType const >
+  , mpl::not_< detail::is_interlocked_bool< TargetType > >
+  >
+, remove_cv< TargetType >
+>
+::type
+assign( TargetType& destination, SourceType const& new_value )
+{
+  return mpl::if_< detail::is_unaligned_interlocked< TargetType >
+                 , detail::assign_sequential_unaligned
+                 , detail::assign_sequential_impl
+                 >
+                 ::type::execute( destination, new_value );
+}
+
+template< typename Semantics, typename TargetType, typename SourceType >
+typename lazy_enable_if
+<
+  mpl::and_
+  <
+    is_same< Semantics, sequential >
+  , detail::are_valid_store_style_params< TargetType, SourceType const >
+  , detail::is_interlocked_bool< TargetType >
+  >
+, remove_cv< TargetType >
+>
+::type
+assign( TargetType& destination, SourceType const& new_value )
+{
+  typedef typename remove_cv< TargetType >::type result_type;
+
+  return result_type
+         (
+           interlocked::assign< sequential >
+           ( interlocked_bool_internal_value( destination )
+           , static_cast< bool >( new_value )
+           )
+           != 0
+         );
+}
+
+} } }
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_END()
+
+#endif
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_sequential_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_sequential_fwd.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,61 @@
+/*=============================================================================
+    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_ASSIGN_ASSIGN_SEQ_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_ASSIGN_ASSIGN_SEQ_FWD_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+#if BOOST_ACT_INTERLOCKED_HAS( assign, sequential )
+
+#include <boost/act/interlocked/semantics/sequential.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+#include <boost/act/interlocked/detail/interlocked_operand_validators.hpp>
+#include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
+
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/not.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename Semantics, typename TargetType, typename SourceType >
+typename lazy_enable_if
+<
+  mpl::and_
+  <
+    is_same< Semantics, sequential >
+  , detail::are_valid_store_style_params< TargetType, SourceType const >
+  , mpl::not_< detail::is_interlocked_bool< TargetType > >
+  >
+, remove_cv< TargetType >
+>
+::type
+assign( TargetType& destination, SourceType const& new_value );
+
+template< typename Semantics, typename TargetType, typename SourceType >
+typename lazy_enable_if
+<
+  mpl::and_
+  <
+    is_same< Semantics, sequential >
+  , detail::are_valid_store_style_params< TargetType, SourceType const >
+  , detail::is_interlocked_bool< TargetType >
+  >
+, remove_cv< TargetType >
+>
+::type
+assign( TargetType& destination, SourceType const& new_value );
+
+} } }
+
+#endif
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_thread_unsafe.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_thread_unsafe.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,45 @@
+/*=============================================================================
+    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_ASSIGN_ASSIGN_THUN_HPP
+#define BOOST_ACT_INTERLOCKED_ASSIGN_ASSIGN_THUN_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+#include <boost/act/interlocked/semantics/thread_unsafe.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+#include <boost/act/interlocked/detail/interlocked_operand_validators.hpp>
+
+#include <boost/mpl/and.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename Semantics, typename TargetType, typename SourceType >
+typename lazy_enable_if
+<
+  mpl::and_
+  <
+    is_same< Semantics, thread_unsafe >
+  , detail::are_valid_store_style_params< TargetType, SourceType const >
+  >
+, remove_cv< TargetType >
+>
+::type
+assign( TargetType& destination, SourceType const& new_value )
+{
+  typename remove_cv< TargetType >::type result = destination;
+  destination = new_value;
+  return result;
+}
+
+} } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_thread_unsafe_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/assign_thread_unsafe_fwd.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,40 @@
+/*=============================================================================
+    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_ASSIGN_ASSIGN_THUN_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_ASSIGN_ASSIGN_THUN_FWD_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+#include <boost/act/interlocked/semantics/thread_unsafe.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+#include <boost/act/interlocked/detail/interlocked_operand_validators.hpp>
+
+#include <boost/mpl/and.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename Semantics, typename TargetType, typename SourceType >
+typename lazy_enable_if
+<
+  mpl::and_
+  <
+    is_same< Semantics, thread_unsafe >
+  , detail::are_valid_store_style_params< TargetType, SourceType const >
+  >
+, remove_cv< TargetType >
+>
+::type
+assign( TargetType& destination, SourceType const& new_value );
+
+} } }
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/assign_acq_rel_default
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/assign_acq_rel_default	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/assign_acq_rel_default	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -17,10 +17,10 @@
 namespace boost { namespace act { namespace interlocked { namespace detail {
 
 template< typename Type >
-struct assign_acq_rel_fun
+struct assign_acq_rel_def_fun
 {
 public:
-  assign_acq_rel_fun( Type const& right_init ) : right_m( right_init ) {}
+  assign_acq_rel_def_fun( Type const& right_init ) : right_m( right_init ) {}
 public:
   template< typename LeftType >
   Type operator ()( LeftType& ) const
@@ -32,10 +32,11 @@
 };
 
 template< typename Type >
-assign_acq_rel_fun< typename remove_volatile< Type >::type >
+assign_acq_rel_def_fun< typename remove_volatile< Type >::type >
 make_assign_acq_rel_fun( Type const& right )
 {
-  return assign_acq_rel_fun< typename remove_volatile< Type >::type >( right );
+  return assign_acq_rel_def_fun< typename remove_volatile< Type >::type >
+         ( right );
 }
 
 struct assign_acq_rel_default_impl
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/assign_sequential_windows
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/assign_sequential_windows	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,76 @@
+/*=============================================================================
+    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_ASSIGN_DETAIL_ASSIGN_SEQUENTIAL_WINDOWS_HPP
+#define BOOST_ACT_INTERLOCKED_ASSIGN_DETAIL_ASSIGN_SEQUENTIAL_WINDOWS_HPP
+
+#include <boost/config.hpp>
+
+#include <boost/detail/interlocked.hpp>
+
+#include <boost/utility/enable_if.hpp>
+
+#include <windows.h> // ToDo: Remove (forward declare functions)
+
+#include <boost/type_traits/remove_volatile.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct assign_sequential_impl
+{
+  template< typename Type >
+  static
+  typename lazy_enable_if_c
+  <
+    ( sizeof( Type ) == 4 )
+  , remove_volatile< Type >
+  >
+  ::type
+  execute( Type& left, typename remove_volatile< Type >::type right )
+  {
+    typedef typename remove_volatile< Type >::type unqualified_type;
+
+    return static_cast< unqualified_type >
+           (
+             BOOST_INTERLOCKED_EXCHANGE
+             ( reinterpret_cast< LONG volatile* >( &left )
+             , reinterpret_cast< LONG const& >( right )
+             )
+           );
+  }
+
+#if WINVER >= 0x0600
+
+  template< typename Type >
+  static
+  typename lazy_enable_if_c
+  <
+    ( sizeof( Type ) == 8 )
+  , remove_volatile< Type >
+  >
+  ::type
+  execute( Type& left, typename remove_volatile< Type >::type right )
+  {
+    typedef typename remove_volatile< Type >::type unqualified_type;
+
+    return static_cast< unqualified_type >
+           (
+             InterlockedExchange64
+             ( reinterpret_cast< LONGLONG volatile* >( &left )
+             , reinterpret_cast< LONGLONG const& >( right )
+             )
+           );
+  }
+
+#endif
+
+};
+
+} } } }
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/assign_unordered_default
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/assign_unordered_default	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/assign_unordered_default	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -9,31 +9,23 @@
 #ifndef BOOST_ACT_INTERLOCKED_ASSIGN_DETAIL_ASSIGN_UNORDERED_DEFAULT_HPP
 #define BOOST_ACT_INTERLOCKED_ASSIGN_DETAIL_ASSIGN_UNORDERED_DEFAULT_HPP
 
-#include <boost/act/interlocked/detail/cas_support.hpp>
+// ToDo: Change the way defaults are picked here.
+
+#include <boost/act/config/interlocked/has.hpp>
 #include <boost/type_traits/remove_cv.hpp>
 
-#if BOOST_ACT_INTERLOCKED_DETAIL_HAS_CUSTOM_IMPL( assign, acquire )
+#if BOOST_ACT_INTERLOCKED_HAS( assign, acquire )
 
 #include <boost/act/interlocked/assign/assign_acquire.hpp>
 
 #define BOOST_ACT_INTERLOCKED_ASSIGN_DETAIL_UNORDERED_IMPL assign< acquire >
 
-#elif BOOST_ACT_INTERLOCKED_DETAIL_HAS_CUSTOM_IMPL( assign, release )
+#elif BOOST_ACT_INTERLOCKED_HAS( assign, release )
 
 #include <boost/act/interlocked/assign/assign_release.hpp>
 
 #define BOOST_ACT_INTERLOCKED_ASSIGN_DETAIL_UNORDERED_IMPL assign< release >
 
-#elif BOOST_ACT_INTERLOCKED_DETAIL_HAS_CUSTOM_IMPL( assign, acq_rel )
-
-#include <boost/act/interlocked/assign/assign.hpp>
-
-#define BOOST_ACT_INTERLOCKED_ASSIGN_DETAIL_UNORDERED_IMPL assign
-
-#else
-
-#error If you read this, assign_unordered_default was improperly included.
-
 #endif
 
 namespace boost { namespace act { namespace interlocked { namespace detail {
@@ -49,7 +41,6 @@
   }
 };
 
-
 } } } }
 
 #endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/impl_includer.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/impl_includer.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign/detail/impl_includer.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -1 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
 #include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_LOCAL_INCLUDE()
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_fwd.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_fwd.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_fwd.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -10,8 +10,10 @@
 #define BOOST_ACT_INTERLOCKED_ASSIGN_FWD_HPP
 
 #include <boost/act/interlocked/assign/assign_fwd.hpp>
+#include <boost/act/interlocked/assign/assign_unordered_fwd.hpp>
 #include <boost/act/interlocked/assign/assign_acquire_fwd.hpp>
 #include <boost/act/interlocked/assign/assign_release_fwd.hpp>
-#include <boost/act/interlocked/assign/assign_unordered_fwd.hpp>
+#include <boost/act/interlocked/assign/assign_acq_rel_fwd.hpp>
+#include <boost/act/interlocked/assign/assign_sequential_fwd.hpp>
 
 #endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -10,9 +10,11 @@
 #define BOOST_ACT_INTERLOCKED_ASSIGN_IF_WAS_HPP
 
 #include <boost/act/interlocked/assign_if_was/assign_if_was.hpp>
+#include <boost/act/interlocked/assign_if_was/assign_if_was_thread_unsafe.hpp>
+#include <boost/act/interlocked/assign_if_was/assign_if_was_unordered.hpp>
 #include <boost/act/interlocked/assign_if_was/assign_if_was_acquire.hpp>
 #include <boost/act/interlocked/assign_if_was/assign_if_was_release.hpp>
 #include <boost/act/interlocked/assign_if_was/assign_if_was_acq_rel.hpp>
-#include <boost/act/interlocked/assign_if_was/assign_if_was_unordered.hpp>
+#include <boost/act/interlocked/assign_if_was/assign_if_was_sequential.hpp>
 
 #endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -11,12 +11,12 @@
 
 #include <boost/act/config/interlocked/has.hpp>
 
-#if BOOST_ACT_INTERLOCKED_HAS( assign_if_was, acq_rel )
+#if BOOST_ACT_INTERLOCKED_HAS( assign_if_was, sequential )
 
 #include <boost/act/interlocked/semantics/default.hpp>
 #include <boost/mpl/and.hpp>
 #include <boost/type_traits/is_same.hpp>
-#include <boost/act/interlocked/assign_if_was/assign_if_was_acq_rel.hpp>
+#include <boost/act/interlocked/assign_if_was/assign_if_was_sequential.hpp>
 #include <boost/utility/enable_if.hpp>
 #include <boost/type_traits/remove_cv.hpp>
 
@@ -37,9 +37,9 @@
              , ConditionType const& expected_value
              )
 {
-  return interlocked::assign_if_was< acq_rel >( destination, new_value
-                                              , expected_value
-                                              );
+  return interlocked::assign_if_was< sequential >( destination, new_value
+                                                 , expected_value
+                                                 );
 }
 
 template< typename Semantics
@@ -61,9 +61,9 @@
              , ConditionType const& expected_value
              )
 {
-  return interlocked::assign_if_was< acq_rel >( destination, new_value
-                                              , expected_value
-                                              );
+  return interlocked::assign_if_was< sequential >( destination, new_value
+                                                 , expected_value
+                                                 );
 }
 
 } } }
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_fwd.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_fwd.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_fwd.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -11,7 +11,7 @@
 
 #include <boost/act/config/interlocked/has.hpp>
 
-#if BOOST_ACT_INTERLOCKED_HAS( assign, acq_rel )
+#if BOOST_ACT_INTERLOCKED_HAS( assign_if_was, sequential )
 
 #include <boost/act/interlocked/semantics/default.hpp>
 #include <boost/mpl/and.hpp>
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_sequential.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_sequential.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,113 @@
+/*=============================================================================
+    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_ASSIGN_IF_WAS_ASSIGN_IF_WAS_SEQ_HPP
+#define BOOST_ACT_INTERLOCKED_ASSIGN_IF_WAS_ASSIGN_IF_WAS_SEQ_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+#if BOOST_ACT_INTERLOCKED_HAS( assign_if_was, sequential )
+
+#include <boost/act/interlocked/semantics/sequential.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/remove_volatile.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+#include <boost/act/interlocked/detail/interlocked_operand_validators.hpp>
+#include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
+#include <boost/act/interlocked/integer/selection.hpp>
+
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/not.hpp>
+
+#include <boost/act/interlocked/assign_if_was/detail/unaligned_assign_if_was.hpp>
+
+#include <boost/act/interlocked/detail/impl.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_INFO                                 \
+( assign_if_was, sequential )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_BEGIN()
+
+namespace boost { namespace act { namespace interlocked {
+
+namespace detail
+{
+template< typename Semantics >
+struct unaligned_assign_if_was;
+}
+
+template< typename Semantics
+        , typename TargetType, typename SourceType, typename ConditionType
+        >
+typename lazy_enable_if
+<
+  mpl::and_
+  <
+    is_same< Semantics, sequential >
+  , detail::are_valid_store_style_params< TargetType, SourceType const
+                                        , ConditionType const
+                                        >
+  , mpl::not_< detail::is_interlocked_bool< TargetType > >
+  >
+, remove_cv< TargetType >
+>
+::type
+assign_if_was( TargetType& destination, SourceType const& new_value
+             , ConditionType const& expected_value
+             )
+{
+  return mpl::if_< detail::is_unaligned_interlocked< TargetType >
+                 , detail::unaligned_assign_if_was< Semantics >
+                 , detail::assign_if_was_sequential_impl
+                 >
+                 ::type::execute( destination, new_value, expected_value );
+}
+
+template< typename Semantics
+        , typename TargetType, typename SourceType, typename ConditionType
+        >
+typename lazy_enable_if
+<
+  mpl::and_
+  <
+    is_same< Semantics, sequential >
+  , detail::are_valid_store_style_params< TargetType, SourceType const
+                                        , ConditionType const
+                                        >
+  , detail::is_interlocked_bool< TargetType >
+  >
+, remove_cv< TargetType >
+>
+::type
+assign_if_was( TargetType& destination, SourceType const& new_value
+             , ConditionType const& expected_value
+             )
+{
+  typedef typename remove_cv< TargetType >::type result_type;
+
+  return result_type
+         (
+           interlocked::assign_if_was< Semantics >
+           ( interlocked_bool_internal_value( destination )
+           , static_cast< bool >( new_value )
+           , static_cast< bool >( expected_value )
+           )
+           != 0
+         );
+}
+
+} } }
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_END()
+
+#endif
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_sequential_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_sequential_fwd.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,73 @@
+/*=============================================================================
+    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_ASSIGN_IF_WAS_ASSIGN_IF_WAS_SEQ_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_ASSIGN_IF_WAS_ASSIGN_IF_WAS_SEQ_FWD_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+#if BOOST_ACT_INTERLOCKED_HAS( assign_if_was, sequential )
+
+#include <boost/act/interlocked/semantics/sequential.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+#include <boost/act/interlocked/detail/interlocked_operand_validators.hpp>
+#include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
+
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/not.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename Semantics
+        , typename TargetType, typename SourceType, typename ConditionType
+        >
+typename lazy_enable_if
+<
+  mpl::and_
+  <
+    is_same< Semantics, sequential >
+  , detail::are_valid_store_style_params< TargetType, SourceType const
+                                         , ConditionType const
+                                         >
+  , mpl::not_< detail::is_interlocked_bool< TargetType > >
+  >
+, remove_cv< TargetType >
+>
+::type
+assign_if_was( TargetType& destination, SourceType const& new_value
+             , ConditionType const& expected_value
+             );
+
+template< typename Semantics
+        , typename TargetType, typename SourceType, typename ConditionType
+        >
+typename lazy_enable_if
+<
+  mpl::and_
+  <
+    is_same< Semantics, sequential >
+  , detail::are_valid_store_style_params< TargetType, SourceType const
+                                         , ConditionType const
+                                         >
+  , detail::is_interlocked_bool< TargetType >
+  >
+, remove_cv< TargetType >
+>
+::type
+assign_if_was( TargetType& destination, SourceType const& new_value
+             , ConditionType const& expected_value
+             );
+
+} } }
+
+#endif
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_thread_unsafe.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_thread_unsafe.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,55 @@
+/*=============================================================================
+    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_ASSIGN_IF_WAS_ASSIGN_IF_WAS_THUN_HPP
+#define BOOST_ACT_INTERLOCKED_ASSIGN_IF_WAS_ASSIGN_IF_WAS_THUN_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+#include <boost/act/interlocked/semantics/thread_unsafe.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+#include <boost/act/interlocked/detail/interlocked_operand_validators.hpp>
+
+#include <boost/mpl/and.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename Semantics
+        , typename TargetType, typename SourceType, typename ConditionType
+        >
+typename lazy_enable_if
+<
+  mpl::and_
+  <
+    is_same< Semantics, thread_unsafe >
+  , detail::are_valid_store_style_params< TargetType, SourceType const
+                                        , ConditionType const
+                                        >
+  >
+, remove_cv< TargetType >
+>
+::type
+assign_if_was( TargetType& destination, SourceType const& new_value
+             , ConditionType const& expected_value
+             )
+{
+  if( destination == expected_value )
+  {
+    destination = new_value;
+    return expected_value;
+  }
+  else
+    return destination;
+}
+
+} } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_thread_unsafe_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/assign_if_was_thread_unsafe_fwd.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,46 @@
+/*=============================================================================
+    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_ASSIGN_IF_WAS_ASSIGN_IF_WAS_THUN_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_ASSIGN_IF_WAS_ASSIGN_IF_WAS_THUN_FWD_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+#include <boost/act/interlocked/semantics/thread_unsafe.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+#include <boost/act/interlocked/detail/interlocked_operand_validators.hpp>
+
+#include <boost/mpl/and.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename Semantics
+        , typename TargetType, typename SourceType, typename ConditionType
+        >
+typename lazy_enable_if
+<
+  mpl::and_
+  <
+    is_same< Semantics, thread_unsafe >
+  , detail::are_valid_store_style_params< TargetType, SourceType const
+                                        , ConditionType const
+                                        >
+  >
+, remove_cv< TargetType >
+>
+::type
+assign_if_was( TargetType& destination, SourceType const& new_value
+             , ConditionType const& expected_value
+             );
+
+} } }
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_acq_rel_default
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_acq_rel_default	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_acq_rel_default	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -9,26 +9,18 @@
 #ifndef BOOST_ACT_INTERLOCKED_ASSIGN_DETAIL_ASSIGN_IF_WAS_ACQ_REL_DEF_IMPL_HPP
 #define BOOST_ACT_INTERLOCKED_ASSIGN_DETAIL_ASSIGN_IF_WAS_ACQ_REL_DEF_IMPL_HPP
 
-#include <boost/mpl/assert.hpp>
-#include <boost/mpl/always.hpp>
-#include <boost/mpl/apply.hpp>
-#include <boost/mpl/bool.hpp>
+#include <boost/act/interlocked/assign_if_was/assign_if_was_sequential.hpp>
+#include <boost/type_traits/remove_cv.hpp>
 
 namespace boost { namespace act { namespace interlocked { namespace detail {
 
-// ToDo: Make better stub impl
-
 struct assign_if_was_acq_rel_default_impl
 {
-  template< typename LeftType, typename RightType, typename ConditionType >
-  static void execute( LeftType&, RightType&, ConditionType& )
+  template< typename LeftType, typename RightType, typename OldType >
+  static typename boost::remove_cv< LeftType >::type
+  execute( LeftType& left, RightType& right, OldType& old )
   {
-    BOOST_MPL_ASSERT_MSG
-    (
-      ( mpl::apply< mpl::always< mpl::false_ >, TargetType >::type::value )
-    , NO_DEFAULT_INTERLOCKED_ASSIGN_IF_WAS_IMPLEMENTATION
-    , ()
-    );
+    return interlocked::assign_if_was< sequential >( left, right, old );
   }
 };
 
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_sequential_windows
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_sequential_windows	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,88 @@
+/*=============================================================================
+    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_ASSIGN_IF_WAS_DETAIL_ASSIGN_IF_WAS_SEQ_WIN_HPP
+#define BOOST_ACT_INTERLOCKED_ASSIGN_IF_WAS_DETAIL_ASSIGN_IF_WAS_SEQ_WIN_HPP
+
+#include <boost/detail/interlocked.hpp>
+
+#include <boost/utility/enable_if.hpp>
+
+#include <windows.h> // ToDo: Remove (forward declare functions)
+
+#include <boost/type_traits/remove_cv.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct assign_if_was_sequential_impl
+{
+  template< typename Type >
+  static
+  typename lazy_enable_if_c
+  <
+    ( sizeof( Type ) == 4 )
+  , remove_cv< Type >
+  >
+  ::type
+  execute( Type& left, typename remove_cv< Type >::type right
+         , typename remove_cv< Type >::type old
+         )
+  {
+    typedef typename remove_cv< Type >::type unqualified_type;
+
+    MemoryBarrier();
+
+    LONG const result = BOOST_INTERLOCKED_COMPARE_EXCHANGE
+                        ( reinterpret_cast< LONG volatile* >( &left )
+                        , reinterpret_cast< LONG const& >( right )
+                        , reinterpret_cast< LONG const& >( old )
+                        );
+                        
+    MemoryBarrier();
+        
+    return reinterpret_cast< unqualified_type const& >( result );
+  }
+  
+#ifdef _M_IA64
+
+  template< typename Type >
+  static
+  typename lazy_enable_if_c
+  <
+    ( sizeof( Type ) == 8 )
+  , remove_cv< Type >
+  >
+  ::type
+  execute( Type& left, typename remove_cv< Type >::type right
+         , typename remove_cv< Type >::type old
+         )
+  {
+    typedef typename remove_cv< Type >::type unqualified_type;
+
+    MemoryBarrier();
+    
+    unqualified_type const result
+      = static_cast< unqualified_type >
+        (
+          InterlockedCompareExchange64
+          ( reinterpret_cast< LONGLONG volatile* >( &left )
+          , reinterpret_cast< LONGLONG const& >( right )
+          , reinterpret_cast< LONGLONG const& >( old )
+          )
+        );
+        
+    MemoryBarrier();
+  }
+
+#endif
+
+};
+
+} } } }
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_unordered_default
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_unordered_default	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was/detail/assign_if_was_unordered_default	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -26,17 +26,13 @@
 #define BOOST_ACT_INTERLOCKED_ASSIGN_IF_WAS_DETAIL_UN_IMPL                     \
 assign_if_was< release >
 
-#elif BOOST_ACT_INTERLOCKED_DETAIL_HAS_CUSTOM_IMPL( assign_if_was, acq_rel )
+#else
 
 #include <boost/act/interlocked/assign_if_was/assign_if_was_acq_rel.hpp>
 
 #define BOOST_ACT_INTERLOCKED_ASSIGN_IF_WAS_DETAIL_UN_IMPL                     \
 assign_if_was< acq_rel >
 
-#else
-
-#error assign_if_was_unordered_default was improperly included.
-
 #endif
 
 namespace boost { namespace act { namespace interlocked { namespace detail {
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was_fwd.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was_fwd.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/assign_if_was_fwd.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -10,9 +10,11 @@
 #define BOOST_ACT_INTERLOCKED_ASSIGN_IF_WAS_FWD_HPP
 
 #include <boost/act/interlocked/assign_if_was/assign_if_was_fwd.hpp>
+#include <boost/act/interlocked/assign_if_was/assign_if_was_thread_unsafe_fwd.hpp>
+#include <boost/act/interlocked/assign_if_was/assign_if_was_unordered_fwd.hpp>
 #include <boost/act/interlocked/assign_if_was/assign_if_was_acquire_fwd.hpp>
 #include <boost/act/interlocked/assign_if_was/assign_if_was_release_fwd.hpp>
 #include <boost/act/interlocked/assign_if_was/assign_if_was_acq_rel_fwd.hpp>
-#include <boost/act/interlocked/assign_if_was/assign_if_was_unordered_fwd.hpp>
+#include <boost/act/interlocked/assign_if_was/assign_if_was_sequential_fwd.hpp>
 
 #endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -12,7 +12,7 @@
 #include <boost/act/interlocked/detail/binary_forwarder.hpp>
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
-( bitand_assign, acq_rel, not_additive )
+( bitand_assign, sequential, not_additive )
 
 #include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
 
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_sequential.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_sequential.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,19 @@
+/*=============================================================================
+    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_BITAND_ASSIGN_BITAND_ASSIGN_SEQUENTIAL_HPP
+#define BOOST_ACT_INTERLOCKED_BITAND_ASSIGN_BITAND_ASSIGN_SEQUENTIAL_HPP
+
+#include <boost/act/interlocked/detail/binary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
+( bitand_assign, sequential, &, not_additive )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_sequential_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_sequential_fwd.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,19 @@
+/*=============================================================================
+    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_BITAND_ASSIGN_BITAND_ASSIGN_SEQUENTIAL_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_BITAND_ASSIGN_BITAND_ASSIGN_SEQUENTIAL_FWD_HPP
+
+#include <boost/act/interlocked/detail/binary_forwarder_fwd.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_INFO                 \
+( bitand_assign, sequential, not_additive )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_thread_unsafe.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/bitand_assign_thread_unsafe_fwd.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/detail/bitand_assign_sequential_default
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/detail/bitand_assign_sequential_default	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,19 @@
+/*=============================================================================
+    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_BITAND_ASSIGN_DETAIL_BITAND_ASSIGN_SEQ_DEFAULT_HPP
+#define BOOST_ACT_INTERLOCKED_BITAND_ASSIGN_DETAIL_BITAND_ASSIGN_SEQ_DEFAULT_HPP
+
+#include <boost/act/interlocked/detail/binary_default.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_DEFAULT_INFO                       \
+( bitand_assign, sequential, & )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_DEFAULT()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/detail/bitand_assign_unordered_default
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/bitand_assign/detail/bitand_assign_unordered_default	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,19 @@
+/*=============================================================================
+    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_BITAND_ASSIGN_DETAIL_BITAND_ASSIGN_UN_DEFAULT_HPP
+#define BOOST_ACT_INTERLOCKED_BITAND_ASSIGN_DETAIL_BITAND_ASSIGN_UN_DEFAULT_HPP
+
+#include <boost/act/interlocked/detail/binary_default.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_DEFAULT_INFO                       \
+( bitand_assign, unordered, & )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_DEFAULT()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/compiler_fence_fwd.hpp
==============================================================================
Deleted: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/compiler_fence_load.hpp
==============================================================================
Deleted: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/compiler_fence_store.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/compiler_fence_thread_unsafe.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/compiler_fence_thread_unsafe_fwd.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_acq_rel_default
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_acq_rel_default	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,26 @@
+/*=============================================================================
+    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_COMP_FENCE_DETAIL_COMP_FENCE_ACQ_REL_DEF_HPP
+#define BOOST_ACT_INTERLOCKED_COMP_FENCE_DETAIL_COMP_FENCE_ACQ_REL_DEF_HPP
+
+#include <boost/act/interlocked/compiler_fence/compiler_fence_sequential.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct compiler_fence_acq_rel_default_impl
+{
+  static void execute()
+  {
+    compiler_fence< sequential >();
+  }
+};
+
+} } } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_acquire_default
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_acquire_default	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,26 @@
+/*=============================================================================
+    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_COMP_FENCE_DETAIL_COMP_FENCE_ACQUIRE_DEF_HPP
+#define BOOST_ACT_INTERLOCKED_COMP_FENCE_DETAIL_COMP_FENCE_ACQUIRE_DEF_HPP
+
+#include <boost/act/interlocked/compiler_fence/compiler_fence_acq_rel.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct compiler_fence_acquire_default_impl
+{
+  static void execute()
+  {
+    compiler_fence< acq_rel >();
+  }
+};
+
+} } } }
+
+#endif
Deleted: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_load_vista
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_load_vista	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
+++ (empty file)
@@ -1,24 +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_COMPILER_FENCE_DETAIL_COMPILER_FENCE_LD_VISTA_HPP
-#define BOOST_ACT_INTERLOCKED_COMPILER_FENCE_DETAIL_COMPILER_FENCE_LD_VISTA_HPP
-
-// ToDo: Don't include windows.h
-#include <windows.h>
-
-namespace boost { namespace act { namespace interlocked { namespace detail {
-
-inline void compiler_fence_load_impl()
-{
-  _ReadBarrier();
-}
-
-} } } }
-
-#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_release_default
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_release_default	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,26 @@
+/*=============================================================================
+    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_COMP_FENCE_DETAIL_COMP_FENCE_RELEASE_DEF_HPP
+#define BOOST_ACT_INTERLOCKED_COMP_FENCE_DETAIL_COMP_FENCE_RELEASE_DEF_HPP
+
+#include <boost/act/interlocked/compiler_fence/compiler_fence_acq_rel.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct compiler_fence_release_default_impl
+{
+  static void execute()
+  {
+    compiler_fence< acq_rel >();
+  }
+};
+
+} } } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_sequential_default
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_sequential_default	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,26 @@
+/*=============================================================================
+    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_COMP_FENCE_DETAIL_COMP_FENCE_SEQ_DEF_HPP
+#define BOOST_ACT_INTERLOCKED_COMP_FENCE_DETAIL_COMP_FENCE_SEQ_DEF_HPP
+
+#include <boost/act/interlocked/memory_fence/memory_fence_sequential.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct compiler_fence_sequential_default_impl
+{
+  static void execute()
+  {
+    memory_fence< sequential >();
+  }
+};
+
+} } } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_sequential_gcc
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_sequential_gcc	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,24 @@
+/*=============================================================================
+    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_COMP_FENCE_DETAIL_COMP_FENCE_SEQ_GCC_HPP
+#define BOOST_ACT_INTERLOCKED_COMP_FENCE_DETAIL_COMP_FENCE_SEQ_GCC_HPP
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct memory_fence_sequential_impl
+{
+  static void execute()
+  {
+    __asm__ __volatile__ ();
+  }
+};
+
+} } } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_sequential_vc
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_sequential_vc	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,27 @@
+/*=============================================================================
+    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_COMP_FENCE_DETAIL_COMP_FENCE_SEQ_VC_HPP
+#define BOOST_ACT_INTERLOCKED_COMP_FENCE_DETAIL_COMP_FENCE_SEQ_VC_HPP
+
+extern "C" void _ReadWriteBarrier();
+#pragma intrinsic( _ReadWriteBarrier )
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct memory_fence_sequential_impl
+{
+  static void execute()
+  {
+    _ReadWriteBarrier();
+  }
+};
+
+} } } }
+
+#endif
Deleted: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_store_vista
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_store_vista	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
+++ (empty file)
@@ -1,24 +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_COMPILER_FENCE_DETAIL_COMPILER_FENCE_STR_VISTA_HPP
-#define BOOST_ACT_INTERLOCKED_COMPILER_FENCE_DETAIL_COMPILER_FENCE_STR_VISTA_HPP
-
-// ToDo: Don't include windows.h
-#include <windows.h>
-
-namespace boost { namespace act { namespace interlocked { namespace detail {
-
-inline void compiler_fence_store_impl()
-{
-  _WriteBarrier();
-}
-
-} } } }
-
-#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_thread_unsafe_default
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_thread_unsafe_default	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,21 @@
+/*=============================================================================
+    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_COMP_FENCE_DETAIL_COMP_FENCE_THUN_DEF_HPP
+#define BOOST_ACT_INTERLOCKED_COMP_FENCE_DETAIL_COMP_FENCE_THUN_DEF_HPP
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct compiler_fence_thread_unsafe_default_impl
+{
+  static void execute() {}
+};
+
+} } } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_unordered_default
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_unordered_default	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,21 @@
+/*=============================================================================
+    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_COMP_FENCE_DETAIL_COMP_FENCE_UN_DEF_HPP
+#define BOOST_ACT_INTERLOCKED_COMP_FENCE_DETAIL_COMP_FENCE_UN_DEF_HPP
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct compiler_fence_unordered_default_impl
+{
+  static void execute() {}
+};
+
+} } } }
+
+#endif
Deleted: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_vista
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/compiler_fence_vista	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
+++ (empty file)
@@ -1,24 +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_COMPILER_FENCE_DETAIL_COMPILER_FENCE_VISTA_HPP
-#define BOOST_ACT_INTERLOCKED_COMPILER_FENCE_DETAIL_COMPILER_FENCE_VISTA_HPP
-
-// ToDo: Don't include windows.h
-#include <windows.h>
-
-namespace boost { namespace act { namespace interlocked { namespace detail {
-
-inline void compiler_fence_impl()
-{
-  _ReadWriteBarrier();
-}
-
-} } } }
-
-#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/impl_includer.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence/detail/impl_includer.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_LOCAL_INCLUDE()
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/compiler_fence_fwd.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/cstdatomic.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/cstdatomic.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,564 @@
+/*=============================================================================
+    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_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::int_fast8_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
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-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -70,8 +70,8 @@
 #else
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_IMPL_INFO                     \
-( ( assign,        ( acq_rel ) ) )                                             \
-( ( assign_if_was, ( acq_rel ) ) )                                             \
+( ( assign,        ( sequential ) ) )                                          \
+( ( assign_if_was, ( sequential ) ) )                                          \
 ( ( load,          ( acquire ) ) )                                             \
 ( ( store,         ( release ) ) )
 
@@ -102,6 +102,7 @@
 #define BOOST_ACT_INTERLOCKED_DETAIL_FUNCTION_ID_xor_assign      22
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_SEMANTIC_ID_0               0
+#define BOOST_ACT_INTERLOCKED_DETAIL_SEMANTIC_ID_thread_unsafe   1
 #define BOOST_ACT_INTERLOCKED_DETAIL_SEMANTIC_ID_unordered       1
 #define BOOST_ACT_INTERLOCKED_DETAIL_SEMANTIC_ID_acquire         2
 #define BOOST_ACT_INTERLOCKED_DETAIL_SEMANTIC_ID_read            2
@@ -176,7 +177,7 @@
       , BOOST_PP_CAT( BOOST_ACT_INTERLOCKED_DETAIL_SEMANTIC_ID_, semantics )   \
       )                                                                        \
     , BOOST_ACT_INTERLOCKED_DETAIL_CAS_SUPPORT_IMPL_INFO                       \
-      ((0,(unordered)(acquire)(release)(acq_rel)))                             \
+      ((0,(thread_unsafe)(unordered)(acquire)(release)(acq_rel)(sequential)))  \
     )                                                                          \
   )                                                                            \
 , 2                                                                            \
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/add_assign
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/add_assign	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/add_assign	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -1 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
 #include <boost/act/interlocked/add_assign/detail/impl_includer.hpp>
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/assign
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/assign	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/assign	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -1 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
 #include <boost/act/interlocked/assign/detail/impl_includer.hpp>
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/assign_if_was
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/assign_if_was	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/assign_if_was	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -1 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
 #include <boost/act/interlocked/assign_if_was/detail/impl_includer.hpp>
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/bitand_assign
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/bitand_assign	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/bitand_assign	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -1 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
 #include <boost/act/interlocked/bitand_assign/detail/impl_includer.hpp>
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/bitor_assign
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/bitor_assign	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/bitor_assign	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -1 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
 #include <boost/act/interlocked/bitor_assign/detail/impl_includer.hpp>
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/compiler_cage
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/compiler_cage	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
+#include <boost/act/interlocked/compiler_cage/detail/impl_includer.hpp>
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/compiler_fence
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/compiler_fence	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
+#include <boost/act/interlocked/compiler_fence/detail/impl_includer.hpp>
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/compl_assign
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/compl_assign	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/compl_assign	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -1 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
 #include <boost/act/interlocked/compl_assign/detail/impl_includer.hpp>
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/decrement
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/decrement	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/decrement	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -1 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
 #include <boost/act/interlocked/decrement/detail/impl_includer.hpp>
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/divide_assign
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/divide_assign	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/divide_assign	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -1 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
 #include <boost/act/interlocked/divide_assign/detail/impl_includer.hpp>
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/impl_includer.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/impl_includer.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/impl_includer.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -1,3 +1,11 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
 #include <boost/preprocessor/stringize.hpp>
 
 #include BOOST_PP_STRINGIZE( BOOST_ACT_INTERLOCKED_DETAIL_IMPL_SHORT_NAME )
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/increment
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/increment	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/increment	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -1 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
 #include <boost/act/interlocked/increment/detail/impl_includer.hpp>
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/load
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/load	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/load	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -1 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
 #include <boost/act/interlocked/load/detail/impl_includer.hpp>
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/lshift_assign
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/lshift_assign	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/lshift_assign	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -1 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
 #include <boost/act/interlocked/lshift_assign/detail/impl_includer.hpp>
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/memory_cage
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/memory_cage	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
+#include <boost/act/interlocked/memory_cage/detail/impl_includer.hpp>
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/memory_fence
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/memory_fence	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
+#include <boost/act/interlocked/memory_fence/detail/impl_includer.hpp>
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/mod_assign
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/mod_assign	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/mod_assign	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -1 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
 #include <boost/act/interlocked/mod_assign/detail/impl_includer.hpp>
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/multiply_assign
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/multiply_assign	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/multiply_assign	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -1 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
 #include <boost/act/interlocked/multiply_assign/detail/impl_includer.hpp>
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/negate_assign
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/negate_assign	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/negate_assign	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -1 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
 #include <boost/act/interlocked/negate_assign/detail/impl_includer.hpp>
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/retrieve
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/retrieve	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/retrieve	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -1 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
 #include <boost/act/interlocked/load/detail/impl_includer.hpp>
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/rshift_assign
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/rshift_assign	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/rshift_assign	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -1 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
 #include <boost/act/interlocked/rshift_assign/detail/impl_includer.hpp>
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/store
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/store	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/store	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -1 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
 #include <boost/act/interlocked/store/detail/impl_includer.hpp>
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/subtract_assign
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/subtract_assign	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/subtract_assign	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -1 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
 #include <boost/act/interlocked/subtract_assign/detail/impl_includer.hpp>
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/xor_assign
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/xor_assign	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/impl_includer/xor_assign	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -1 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
 #include <boost/act/interlocked/xor_assign/detail/impl_includer.hpp>
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-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -96,9 +96,9 @@
         , custom_store_release                                                 \
         , (( load,         ( unordered ) ))                                    \
           (( store,        ( release )( unordered ) ))                         \
-          (( assign,       ( acq_rel )( acquire )( release )( unordered ) ))\
-          (( assign_if_was,( acq_rel ) ))                                   \
-          (( add_assign,   ( acq_rel ) ))                                   \
+          (( assign,       ( acq_rel )( acquire )( release )( unordered ) ))   \
+          (( assign_if_was,( acq_rel ) ))                                      \
+          (( add_assign,   ( acq_rel ) ))                                      \
         )
 */
 
@@ -151,37 +151,23 @@
 */
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_ITANIUM_RW_ORDERING_SUPPORT               \
-        ( acq_rel )( acquire )( release )( unordered )
+        ( sequential )( acq_rel )( acquire )( release )( unordered )
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_ITANIUM_LOAD_ORDERING_SUPPORT             \
-        ( acq_rel )( acquire )( unordered )
+        ( sequential )( acq_rel )( acquire )( unordered )
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_ITANIUM_STORE_ORDERING_SUPPORT            \
-        ( acq_rel )( release )( unordered )
+        ( sequential )( acq_rel )( release )( unordered )
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_X86_RW_ORDERING_SUPPORT                   \
-        ( acq_rel )
+        ( sequential )
 
+// ToDo: Change to acquire
 #define BOOST_ACT_INTERLOCKED_DETAIL_X86_LOAD_ORDERING_SUPPORT                 \
-        ( acquire )
+        ( sequential )
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_X86_STORE_ORDERING_SUPPORT                \
-        ( release )
-
-#define BOOST_ACT_INTERLOCKED_DETAIL_NO_FENCE_SUPPORT                          \
-        ( none )
-
-#define BOOST_ACT_INTERLOCKED_DETAIL_X86_FENCE_SUPPORT                         \
-        BOOST_ACT_INTERLOCKED_DETAIL_NO_FENCE_SUPPORT
-
-#define BOOST_ACT_INTERLOCKED_DETAIL_SSE_FENCE_SUPPORT                         \
-        ( write )
-
-#define BOOST_ACT_INTERLOCKED_DETAIL_SSE2_FENCE_SUPPORT                        \
-        ( full )( read )( write )
-
-#define BOOST_ACT_INTERLOCKED_DETAIL_ITANIUM_FENCE_SUPPORT                     \
-        ( full )( read )( write )
+        ( sequential )
 
 /******************************************************************************/
 /******************************************************************************/
@@ -251,23 +237,6 @@
       #define BOOST_ACT_INTERLOCKED_DETAIL_STORE_ORDERING_SUPPORT              \
               BOOST_ACT_INTERLOCKED_DETAIL_X86_STORE_ORDERING_SUPPORT
 
-      #if _M_IX86_FP >= 2 // SSE2 generation is enabled
-
-        #define BOOST_ACT_INTERLOCKED_DETAIL_FENCE_SUPPORT                     \
-                BOOST_ACT_INTERLOCKED_DETAIL_SSE2_FENCE_SUPPORT
-
-      #elif _M_IX86_FP >= 1 // Else, if SSE generation is enabled
-
-        #define BOOST_ACT_INTERLOCKED_DETAIL_FENCE_SUPPORT                     \
-                BOOST_ACT_INTERLOCKED_DETAIL_SSE_FENCE_SUPPORT
-
-      #else // Else, SSE generation not enabled
-
-        #define BOOST_ACT_INTERLOCKED_DETAIL_FENCE_SUPPORT                     \
-                BOOST_ACT_INTERLOCKED_DETAIL_X86_FENCE_SUPPORT
-
-      #endif // End detailed SSE support checks
-
     #else // Else, SSE generation not enabled
 
       #define BOOST_ACT_INTERLOCKED_DETAIL_FENCE_SUPPORT                       \
@@ -290,17 +259,11 @@
       #define BOOST_ACT_INTERLOCKED_DETAIL_RW_ORDERING_SUPPORT                 \
               BOOST_ACT_INTERLOCKED_DETAIL_ITANIUM_RW_ORDERING_SUPPORT
 
-      #define BOOST_ACT_INTERLOCKED_DETAIL_FENCE_SUPPORT                       \
-              BOOST_ACT_INTERLOCKED_DETAIL_ITANIUM_FENCE_SUPPORT
-
     #elif defined( __QMSPP_ ) // Else: if x86
 
       #define BOOST_ACT_INTERLOCKED_DETAIL_RW_ORDERING_SUPPORT                 \
               BOOST_ACT_INTERLOCKED_DETAIL_X86_RW_ORDERING_SUPPORT
 
-      #define BOOST_ACT_INTERLOCKED_DETAIL_RW_ORDERING_SUPPORT                 \
-              BOOST_ACT_INTERLOCKED_DETAIL_X86_RW_ORDERING_SUPPORT
-
     #else
 
       // No support yet!
@@ -334,10 +297,10 @@
             &&  defined( BOOST_ACT_INTERLOCKED_DETAIL_RW_ORDERING_SUPPORT )    \
             &&  defined( BOOST_ACT_INTERLOCKED_DETAIL_INTERLOCKED_SIZES )      \
           )
-
+/*
   // ToDo: Possibly change to check for 64-bit instead
   #if BOOST_ACT_INTERLOCKED_DETAIL_NONVISTA_HAS_OP_SUPPORT() // Pre-vista
-
+*/
     // Note: Same name as vista windows on purpose
     // ToDo: Add assembly implementation when possible even though named
     //       versions are not available (including 64-bit support).
@@ -347,7 +310,7 @@
     , (( assign,        BOOST_ACT_INTERLOCKED_DETAIL_RW_ORDERING_SUPPORT ))    \
       (( assign_if_was, BOOST_ACT_INTERLOCKED_DETAIL_RW_ORDERING_SUPPORT ))    \
     )
-
+/*
   #elif BOOST_ACT_INTERLOCKED_DETAIL_VISTA_HAS_OP_SUPPORT() // Vista and up
 
     // Note: Same name as pre-vista windows on purpose
@@ -358,8 +321,8 @@
     , (( assign,        BOOST_ACT_INTERLOCKED_DETAIL_RW_ORDERING_SUPPORT ))    \
       (( assign_if_was, BOOST_ACT_INTERLOCKED_DETAIL_RW_ORDERING_SUPPORT ))    \
     )
-
   #endif // End WINVER checks
+*/
 
 #elif defined( __GNUC__ ) // GCC
 
@@ -371,23 +334,6 @@
 
     #define BOOST_ACT_INTERLOCKED_DETAIL_RW_ORDERING_SUPPORT ( acq_rel )
 
-    #ifdef __SSE2__ // SSE2 support
-
-      #define BOOST_ACT_INTERLOCKED_DETAIL_FENCE_SUPPORT                       \
-              BOOST_ACT_INTERLOCKED_DETAIL_SSE2_FENCE_SUPPORT
-
-    #elif defined( __SSE__ ) // SSE support
-
-      #define BOOST_ACT_INTERLOCKED_DETAIL_FENCE_SUPPORT                       \
-              BOOST_ACT_INTERLOCKED_DETAIL_SSE_FENCE_SUPPORT
-
-    #else // Else: Neither SSE nor SSE2 support
-
-      #define BOOST_ACT_INTERLOCKED_DETAIL_FENCE_SUPPORT                       \
-              BOOST_ACT_INTERLOCKED_DETAIL_X86_FENCE_SUPPORT
-
-    #endif // End SSE detection
-
     #define BOOST_ACT_INTERLOCKED_DETAIL_OPERATION_SUPPORT                     \
     ( gcc_x86, (32), volatile_load_acquire, volatile_store_release             \
     , (( assign,        BOOST_ACT_INTERLOCKED_DETAIL_RW_ORDERING_SUPPORT ))    \
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/detail/load_sequential_default
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/detail/load_sequential_default	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,32 @@
+/*=============================================================================
+    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_LOAD_DETAIL_LOAD_SEQUENTIAL_DEFAULT_IMPL_HPP
+#define BOOST_ACT_INTERLOCKED_LOAD_DETAIL_LOAD_SEQUENTIAL_DEFAULT_IMPL_HPP
+
+#include <boost/act/interlocked/assign_if_was/assign_if_was_sequential.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct load_sequential_default_impl
+{
+  template< typename TargetType >
+  static typename remove_cv< TargetType >::type execute( TargetType& target )
+  {
+    // ToDo: Change so that it doesn't rely on const_cast (use a memory cage)
+    return interlocked::assign_if_was< sequential >
+           ( const_cast< typename remove_cv< TargetType >::type& >( target )
+           , 0, 0
+           );
+  }
+};
+
+} } } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/load_sequential.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/load_sequential.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,90 @@
+/*=============================================================================
+    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_LOAD_LOAD_SEQUENTIAL_HPP
+#define BOOST_ACT_INTERLOCKED_LOAD_LOAD_SEQUENTIAL_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+#if BOOST_ACT_INTERLOCKED_HAS( load, sequential )
+
+#include <boost/act/interlocked/semantics/sequential.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/remove_volatile.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+#include <boost/act/interlocked/detail/interlocked_operand_validators.hpp>
+#include <boost/act/interlocked/integer/detail/interlocked_bool.hpp>
+
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/not.hpp>
+
+#include <boost/act/interlocked/detail/impl_meta.hpp>
+
+#include <boost/act/interlocked/detail/impl.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_INFO                                 \
+( load, sequential )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_BEGIN()
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename Semantics, typename TargetType >
+typename lazy_enable_if
+<
+  mpl::and_
+  <
+    is_same< Semantics, sequential >
+  , detail::are_valid_store_style_params< TargetType >
+  , mpl::not_< detail::is_interlocked_bool< TargetType > >
+  >
+, remove_cv< TargetType >
+>
+::type
+load( TargetType& destination )
+{
+  return detail::impl_meta< detail::load_sequential_impl, TargetType >
+         ::execute( destination );
+
+}
+
+template< typename Semantics, typename TargetType >
+typename lazy_enable_if
+<
+  mpl::and_
+  <
+    is_same< Semantics, sequential >
+  , detail::are_valid_store_style_params< TargetType >
+  , detail::is_interlocked_bool< TargetType >
+  >
+, remove_cv< TargetType >
+>
+::type
+load( TargetType& destination )
+{
+  typedef typename remove_cv< TargetType >::type result_type;
+
+  return result_type
+         (
+           interlocked::load< sequential >
+           ( interlocked_bool_internal_value( destination )
+           )
+           != 0
+         );
+}
+
+} } }
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_END()
+
+#endif
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/load_sequential_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/load_sequential_fwd.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,56 @@
+/*=============================================================================
+    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_LOAD_LOAD_SEQUENTIAL_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_LOAD_LOAD_SEQUENTIAL_FWD_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+#if BOOST_ACT_INTERLOCKED_HAS( load, sequential )
+
+#include <boost/act/interlocked/detail/interlocked_operand_validators.hpp>
+#include <boost/act/interlocked/semantics/sequential.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/remove_volatile.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename Semantics, typename TargetType >
+typename lazy_enable_if
+<
+  mpl::and_
+  <
+    is_same< Semantics, sequential >
+  , detail::are_valid_store_style_params< TargetType >
+  , mpl::not_< detail::is_interlocked_bool< TargetType > >
+  >
+, remove_cv< TargetType >
+>
+::type
+load( TargetType const& target );
+
+template< typename Semantics, typename TargetType >
+typename lazy_enable_if
+<
+  mpl::and_
+  <
+    is_same< Semantics, sequential >
+  , detail::are_valid_store_style_params< TargetType >
+  , detail::is_interlocked_bool< TargetType >
+  >
+, remove_cv< TargetType >
+>
+::type
+load( TargetType& destination );
+
+} } }
+
+#endif
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -6,15 +6,15 @@
     http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#ifndef BOOST_ACT_INTERLOCKED_FENCE_HPP
-#define BOOST_ACT_INTERLOCKED_FENCE_HPP
+#ifndef BOOST_ACT_INTERLOCKED_MEMORY_FENCE_HPP
+#define BOOST_ACT_INTERLOCKED_MEMORY_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>
+#include <boost/act/interlocked/memory_fence/memory_fence.hpp>
+#include <boost/act/interlocked/memory_fence/memory_fence_thread_unsafe.hpp>
+#include <boost/act/interlocked/memory_fence/memory_fence_unordered.hpp>
+#include <boost/act/interlocked/memory_fence/memory_fence_acquire.hpp>
+#include <boost/act/interlocked/memory_fence/memory_fence_release.hpp>
+#include <boost/act/interlocked/memory_fence/memory_fence_acq_rel.hpp>
+#include <boost/act/interlocked/memory_fence/memory_fence_sequential.hpp>
 
 #endif
Deleted: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/fence_read_vc_x86
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/fence_read_vc_x86	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
+++ (empty file)
@@ -1,18 +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_FENCE_DETAIL_FENCE_READ_VC_X86_HPP
-#define BOOST_ACT_INTERLOCKED_FENCE_DETAIL_FENCE_READ_VC_X86_HPP
-
-namespace boost { namespace act { namespace interlocked { namespace detail {
-
-inline void fence_read_impl() { __asm lfence }
-
-} } } }
-
-#endif
Deleted: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/fence_vc_x86
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/fence_vc_x86	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
+++ (empty file)
@@ -1,18 +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_FENCE_DETAIL_FENCE_VC_X86_HPP
-#define BOOST_ACT_INTERLOCKED_FENCE_DETAIL_FENCE_VC_X86_HPP
-
-namespace boost { namespace act { namespace interlocked { namespace detail {
-
-inline void fence_impl() { __asm mfence }
-
-} } } }
-
-#endif
Deleted: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/fence_vista
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/fence_vista	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
+++ (empty file)
@@ -1,24 +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_FENCE_DETAIL_FENCE_VISTA_HPP
-#define BOOST_ACT_INTERLOCKED_FENCE_DETAIL_FENCE_VISTA_HPP
-
-// ToDo: Don't include windows.h
-#include <windows.h>
-
-namespace boost { namespace act { namespace interlocked { namespace detail {
-
-inline void fence_impl()
-{
-  MemoryBarrier();
-}
-
-} } } }
-
-#endif
Deleted: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/fence_write_vc_x86
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/fence_write_vc_x86	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
+++ (empty file)
@@ -1,18 +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_FENCE_DETAIL_FENCE_WRITE_VC_X86_HPP
-#define BOOST_ACT_INTERLOCKED_FENCE_DETAIL_FENCE_WRITE_VC_X86_HPP
-
-namespace boost { namespace act { namespace interlocked { namespace detail {
-
-inline void fence_write_impl() { __asm sfence }
-
-} } } }
-
-#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/impl_includer.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/impl_includer.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,9 @@
+/*=============================================================================
+    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)
+==============================================================================*/
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_LOCAL_INCLUDE()
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/memory_fence_acq_rel_default
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/memory_fence_acq_rel_default	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,27 @@
+/*=============================================================================
+    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_MEMORY_FENCE_DETAIL_MEM_FENCE_ACQ_REL_DEF_HPP
+#define BOOST_ACT_INTERLOCKED_MEMORY_FENCE_DETAIL_MEM_FENCE_ACQ_REL_DEF_HPP
+
+#include <boost/act/interlocked/memory_fence/memory_fence_sequential.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct memory_fence_acq_rel_default_impl
+{
+  // ToDo: Use store or load acq_rel when not dependenton explicit barriers.
+  static void execute()
+  {
+    memory_fence< sequential >();
+  }
+};
+
+} } } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/memory_fence_acquire_default
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/memory_fence_acquire_default	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,27 @@
+/*=============================================================================
+    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_MEM_FENCE_DETAIL_MEM_FENCE_ACQ_DEF_IMPL_HPP
+#define BOOST_ACT_INTERLOCKED_MEM_FENCE_DETAIL_MEM_FENCE_ACQ_DEF_IMPL_HPP
+
+#include <boost/act/interlocked/memory_fence/memory_fence_acq_rel.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct memory_fence_acquire_default_impl
+{
+  // ToDo: Use store or load acquire when not dependenton explicit barriers.
+  static void execute()
+  {
+    interlocked::memory_fence< acq_rel >();
+  }
+};
+
+} } } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/memory_fence_release_default
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/memory_fence_release_default	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,27 @@
+/*=============================================================================
+    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_MEM_FENCE_DETAIL_MEM_FENCE_REL_DEF_IMPL_HPP
+#define BOOST_ACT_INTERLOCKED_MEM_FENCE_DETAIL_MEM_FENCE_REL_DEF_IMPL_HPP
+
+#include <boost/act/interlocked/memory_fence/memory_fence_acq_rel.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct memory_fence_release_default_impl
+{
+  // ToDo: Use store or load acquire when not dependenton explicit barriers.
+  static void execute()
+  {
+    interlocked::memory_fence< acq_rel >();
+  }
+};
+
+} } } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/memory_fence_sequential_default
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/memory_fence_sequential_default	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,76 @@
+/*=============================================================================
+    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_MEMORY_FENCE_DETAIL_MEM_FENCE_SEQ_DEFAULT_HPP
+#define BOOST_ACT_INTERLOCKED_MEMORY_FENCE_DETAIL_MEM_FENCE_SEQ_DEFAULT_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+#include <boost/act/config/interlocked/types.hpp>
+
+// ToDo: Change the order that these are selected without creating a loop
+#if BOOST_ACT_INTERLOCKED_HAS( assign_if_was, sequential )
+
+#include <boost/act/interlocked/assign_if_was/assign_if_was_sequential.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct memory_fence_sequential_default_impl
+{
+  static void execute()
+  {
+    int_fast8_t dummy;
+    
+    assign_if_was< sequential >( dummy, 0, 0 );
+  }
+};
+
+} } } }
+
+#elif BOOST_ACT_INTERLOCKED_HAS( assign, sequential )
+
+#include <boost/act/interlocked/assign/assign_sequential.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct memory_fence_sequential_default_impl
+{
+  static void execute()
+  {
+    int_fast8_t dummy;
+    
+    assign< sequential >( dummy, 0 );
+  }
+};
+
+} } } }
+
+#elif BOOST_ACT_INTERLOCKED_HAS( store, sequential )
+
+#include <boost/act/interlocked/store/store_sequential.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct memory_fence_sequential_default_impl
+{
+  static void execute()
+  {
+    int_fast8_t dummy;
+    
+    store< sequential >( dummy, 0 );
+  }
+};
+
+} } } }
+
+#else
+
+#error You found the gold at the end of the rainbow! rivorus_katarni_at_[hidden]
+
+#endif
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/memory_fence_sequential_windows
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/memory_fence_sequential_windows	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,26 @@
+/*=============================================================================
+    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_MEMORY_FENCE_DETAIL_MEM_FENCE_SEQ_WINDOWS_HPP
+#define BOOST_ACT_INTERLOCKED_MEMORY_FENCE_DETAIL_MEM_FENCE_SEQ_WINDOWS_HPP
+
+#include <windows.h> // ToDo: Remove (forward declare functions)
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct memory_fence_sequential_impl
+{
+  static void execute()
+  {
+    MemoryBarrier();
+  }
+};
+
+} } } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/memory_fence_thread_unsafe_default
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/memory_fence_thread_unsafe_default	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,21 @@
+/*=============================================================================
+    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_MEMORY_FENCE_DETAIL_MEM_FENCE_UNSAFE_DEFAULT_HPP
+#define BOOST_ACT_INTERLOCKED_MEMORY_FENCE_DETAIL_MEM_FENCE_UNSAFE_DEFAULT_HPP
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct memory_fence_thread_unsafe_default_impl
+{
+  static void execute() {}
+};
+
+} } } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/memory_fence_unordered_default
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/memory_fence_unordered_default	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,19 @@
+/*=============================================================================
+    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_MEMORY_FENCE_DETAIL_MEM_FENCE_UN_DEFAULT_HPP
+#define BOOST_ACT_INTERLOCKED_MEMORY_FENCE_DETAIL_MEM_FENCE_UN_DEFAULT_HPP
+
+struct memory_fence_unordered_default_impl
+{
+  static void execute() {}
+};
+
+} } } }
+
+#endif
Deleted: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/fence.hpp
==============================================================================
Copied: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence.hpp (from r7409, /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/fence.hpp)
==============================================================================
--- /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/fence.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,38 @@
+/*=============================================================================
+    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_MEMORY_FENCE_MEMORY_FENCE_HPP
+#define BOOST_ACT_INTERLOCKED_MEMORY_FENCE_MEMORY_FENCE_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+#if BOOST_ACT_INTERLOCKED_HAS( memory_fence, _ )
+
+#include <boost/act/interlocked/semantics/default.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/act/interlocked/memory_fence/memory_fence_sequential.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+void memory_fence()
+{
+  return interlocked::memory_fence< sequential >();
+}
+
+template< typename Semantics >
+typename enable_if< is_same< Semantics, default_ > >::type memory_fence()
+{
+  return interlocked::memory_fence< sequential >();
+}
+
+} } }
+
+#endif
+
+#endif
Modified: 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.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_acq_rel.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,44 @@
+/*=============================================================================
+    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_MEMORY_FENCE_MEMORY_FENCE_ACQ_REL_HPP
+#define BOOST_ACT_INTERLOCKED_MEMORY_FENCE_MEMORY_FENCE_ACQ_REL_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+#if BOOST_ACT_INTERLOCKED_HAS( memory_fence, acq_rel )
+
+#include <boost/act/interlocked/semantics/acq_rel.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+#include <boost/act/interlocked/detail/impl_meta.hpp>
+
+#include <boost/act/interlocked/detail/impl.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_INFO                                 \
+( memory_fence, acq_rel )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_BEGIN()
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename Semantics >
+typename enable_if< is_same< Semantics, acq_rel > >::type memory_fence()
+{
+  return detail::impl_meta< detail::memory_fence_acq_rel_impl, Semantics >
+         ::execute();
+}
+
+} } }
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_END()
+
+#endif
+
+#endif
Modified: 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_acq_rel_fwd.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_acq_rel_fwd.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,29 @@
+/*=============================================================================
+    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_MEMORY_FENCE_MEMORY_FENCE_ACQ_REL_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_MEMORY_FENCE_MEMORY_FENCE_ACQ_REL_FWD_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+#if BOOST_ACT_INTERLOCKED_HAS( memory_fence, acq_rel )
+
+#include <boost/act/interlocked/semantics/acq_rel.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename Semantics >
+typename enable_if< is_same< Semantics, acq_rel > >::type memory_fence();
+
+} } }
+
+#endif
+
+#endif
Modified: 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.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_acquire.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,44 @@
+/*=============================================================================
+    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_MEMORY_FENCE_MEMORY_FENCE_ACQUIRE_HPP
+#define BOOST_ACT_INTERLOCKED_MEMORY_FENCE_MEMORY_FENCE_ACQUIRE_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+#if BOOST_ACT_INTERLOCKED_HAS( memory_fence, acquire )
+
+#include <boost/act/interlocked/semantics/acquire.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+#include <boost/act/interlocked/detail/impl_meta.hpp>
+
+#include <boost/act/interlocked/detail/impl.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_INFO                                 \
+( memory_fence, acquire )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_BEGIN()
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename Semantics >
+typename enable_if< is_same< Semantics, acquire > >::type memory_fence()
+{
+  return detail::impl_meta< detail::memory_fence_acquire_impl, Semantics >
+         ::execute();
+}
+
+} } }
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_END()
+
+#endif
+
+#endif
Modified: 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_acquire_fwd.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_acquire_fwd.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,29 @@
+/*=============================================================================
+    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_MEMORY_FENCE_MEMORY_FENCE_ACQUIRE_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_MEMORY_FENCE_MEMORY_FENCE_ACQUIRE_FWD_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+#if BOOST_ACT_INTERLOCKED_HAS( memory_fence, acquire )
+
+#include <boost/act/interlocked/semantics/acquire.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename Semantics >
+typename enable_if< is_same< Semantics, acquire > >::type memory_fence();
+
+} } }
+
+#endif
+
+#endif
Modified: 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_fwd.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_fwd.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,31 @@
+/*=============================================================================
+    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_MEMORY_FENCE_MEMORY_FENCE_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_MEMORY_FENCE_MEMORY_FENCE_FWD_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+#if BOOST_ACT_INTERLOCKED_HAS( memory_fence, _ )
+
+#include <boost/act/interlocked/semantics/default.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+void memory_fence();
+
+template< typename Semantics >
+typename enable_if< is_same< Semantics, default_ > >::type memory_fence();
+
+} } }
+
+#endif
+
+#endif
Modified: 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.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_release.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,44 @@
+/*=============================================================================
+    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_MEMORY_FENCE_MEMORY_FENCE_RELEASE_HPP
+#define BOOST_ACT_INTERLOCKED_MEMORY_FENCE_MEMORY_FENCE_RELEASE_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+#if BOOST_ACT_INTERLOCKED_HAS( memory_fence, release )
+
+#include <boost/act/interlocked/semantics/release.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+#include <boost/act/interlocked/detail/impl_meta.hpp>
+
+#include <boost/act/interlocked/detail/impl.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_INFO                                 \
+( memory_fence, release )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_BEGIN()
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename Semantics >
+typename enable_if< is_same< Semantics, release > >::type memory_fence()
+{
+  return detail::impl_meta< detail::memory_fence_release_impl, Semantics >
+         ::execute();
+}
+
+} } }
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_END()
+
+#endif
+
+#endif
Modified: 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_release_fwd.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_release_fwd.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,29 @@
+/*=============================================================================
+    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_MEMORY_FENCE_MEMORY_FENCE_RELEASE_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_MEMORY_FENCE_MEMORY_FENCE_RELEASE_FWD_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+#if BOOST_ACT_INTERLOCKED_HAS( memory_fence, release )
+
+#include <boost/act/interlocked/semantics/release.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename Semantics >
+typename enable_if< is_same< Semantics, release > >::type memory_fence();
+
+} } }
+
+#endif
+
+#endif
Modified: 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.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_sequential.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,44 @@
+/*=============================================================================
+    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_MEMORY_FENCE_MEMORY_FENCE_SEQUENTIAL_HPP
+#define BOOST_ACT_INTERLOCKED_MEMORY_FENCE_MEMORY_FENCE_SEQUENTIAL_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+#if BOOST_ACT_INTERLOCKED_HAS( memory_fence, sequential )
+
+#include <boost/act/interlocked/semantics/sequential.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+#include <boost/act/interlocked/detail/impl_meta.hpp>
+
+#include <boost/act/interlocked/detail/impl.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_IMPL_INFO                                 \
+( memory_fence, sequential )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_BEGIN()
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename Semantics >
+typename enable_if< is_same< Semantics, sequential > >::type memory_fence()
+{
+  return detail::impl_meta< detail::memory_fence_sequential_impl, Semantics >
+         ::execute();
+}
+
+} } }
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_IMPL_END()
+
+#endif
+
+#endif
Modified: 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_sequential_fwd.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_sequential_fwd.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,29 @@
+/*=============================================================================
+    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_MEMORY_FENCE_MEMORY_FENCE_SEQUENTIAL_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_MEMORY_FENCE_MEMORY_FENCE_SEQUENTIAL_FWD_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+#if BOOST_ACT_INTERLOCKED_HAS( memory_fence, sequential )
+
+#include <boost/act/interlocked/semantics/sequential.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename Semantics >
+typename enable_if< is_same< Semantics, sequential > >::type memory_fence();
+
+} } }
+
+#endif
+
+#endif
Modified: 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.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_thread_unsafe.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,25 @@
+/*=============================================================================
+    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_MEMORY_FENCE_MEMORY_FENCE_THREAD_UNSAFE_HPP
+#define BOOST_ACT_INTERLOCKED_MEMORY_FENCE_MEMORY_FENCE_THREAD_UNSAFE_HPP
+
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/act/interlocked/semantics/thread_unsafe.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename Semantics >
+typename enable_if< is_same< Semantics, thread_unsafe > >::type memory_fence()
+{
+}
+
+} } }
+
+#endif
Modified: 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_thread_unsafe_fwd.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_thread_unsafe_fwd.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,23 @@
+/*=============================================================================
+    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_MEMORY_FENCE_MEMORY_FENCE_THREAD_UNSAFE_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_MEMORY_FENCE_MEMORY_FENCE_THREAD_UNSAFE_FWD_HPP
+
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/act/interlocked/semantics/thread_unsafe.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename Semantics >
+typename enable_if< is_same< Semantics, thread_unsafe > >::type memory_fence();
+
+} } }
+
+#endif
Modified: 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.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_unordered.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,24 @@
+/*=============================================================================
+    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_MEMORY_FENCE_MEMORY_FENCE_UNORDERED_HPP
+#define BOOST_ACT_INTERLOCKED_MEMORY_FENCE_MEMORY_FENCE_UNORDERED_HPP
+
+#include <boost/utility/enable_if.hpp>
+#include <boost/act/interlocked/semantics/unordered.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename Semantics >
+typename enable_if< is_same< Semantics, unordered > >::type memory_fence()
+{
+}
+
+} } }
+
+#endif
Modified: 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/memory_fence_unordered_fwd.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_unordered_fwd.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,22 @@
+/*=============================================================================
+    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_MEMORY_FENCE_MEMORY_FENCE_UNORDERED_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_MEMORY_FENCE_MEMORY_FENCE_UNORDERED_FWD_HPP
+
+#include <boost/utility/enable_if.hpp>
+#include <boost/act/interlocked/semantics/unordered.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename Semantics >
+typename enable_if< is_same< Semantics, unordered > >::type memory_fence();
+
+} } }
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence_fwd.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence_fwd.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence_fwd.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -6,15 +6,15 @@
     http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#ifndef BOOST_ACT_INTERLOCKED_FENCE_FWD_HPP
-#define BOOST_ACT_INTERLOCKED_FENCE_FWD_HPP
+#ifndef BOOST_ACT_INTERLOCKED_MEMORY_FENCE_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_MEMORY_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>
+#include <boost/act/interlocked/memory_fence/memory_fence_fwd.hpp>
+#include <boost/act/interlocked/memory_fence/memory_fence_thread_unsafe_fwd.hpp>
+#include <boost/act/interlocked/memory_fence/memory_fence_unordered_fwd.hpp>
+#include <boost/act/interlocked/memory_fence/memory_fence_acquire_fwd.hpp>
+#include <boost/act/interlocked/memory_fence/memory_fence_release_fwd.hpp>
+#include <boost/act/interlocked/memory_fence/memory_fence_acq_rel_fwd.hpp>
+#include <boost/act/interlocked/memory_fence/memory_fence_sequential_fwd.hpp>
 
 #endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/modify/modify_sequential.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/modify/modify_sequential.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,55 @@
+/*=============================================================================
+    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_MODIFY_MODIFY_SEQUENTIAL_HPP
+#define BOOST_ACT_INTERLOCKED_MODIFY_MODIFY_SEQUENTIAL_HPP
+
+#include <boost/act/interlocked/assign_if_was/assign_if_was_sequential.hpp>
+#include <boost/act/interlocked/detail/cas_support.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/act/interlocked/semantics/sequential.hpp>
+#include <boost/act/interlocked/load/load_sequential.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename Semantics, typename TargetType, typename OperationType >
+typename lazy_enable_if
+<
+  mpl::and_< is_same< Semantics, sequential >
+           , detail::are_valid_store_style_params< TargetType >
+           >
+, remove_cv< TargetType >
+>
+::type
+modify( TargetType& destination, OperationType operation )
+{
+  typedef typename remove_cv< TargetType >::type unqualified_type;
+  unqualified_type old_value = interlocked::load< sequential >( destination ),
+                   expected_value;
+
+  do
+  {
+    expected_value = old_value;
+
+    old_value = interlocked::assign_if_was< sequential >
+                ( destination
+                , operation( expected_value )
+                , expected_value
+                );
+  }
+  while( old_value != expected_value );
+
+  return old_value;
+}
+
+} } }
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/modify/modify_sequential_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/modify/modify_sequential_fwd.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,35 @@
+/*=============================================================================
+    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_MODIFY_MODIFY_SEQUENTIAL_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_MODIFY_MODIFY_SEQUENTIAL_FWD_HPP
+
+#include <boost/act/interlocked/assign_if_was/assign_if_was_sequential.hpp>
+#include <boost/act/interlocked/detail/cas_support.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/act/interlocked/semantics/sequential.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+template< typename Semantics, typename TargetType, typename OperationType >
+typename lazy_enable_if
+<
+  mpl::and_< is_same< Semantics, sequential >
+           , detail::are_valid_store_style_params< TargetType >
+           >
+, remove_cv< TargetType >
+>
+::type
+modify( TargetType& destination, OperationType operation );
+
+} } }
+
+#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-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -30,41 +30,41 @@
 
 } } } }
 
-#else // Else: Custom interlocked store for this system (no default)
+#else
 
 #include <boost/act/config/interlocked/has.hpp>
 
-#if BOOST_ACT_INTERLOCKED_HAS( modify, release )
+#if BOOST_ACT_INTERLOCKED_HAS( assign, release )
 
-#include <boost/type_traits/remove_cv.hpp>
+#include <boost/act/interlocked/assign/assign_release.hpp>
 
 namespace boost { namespace act { namespace interlocked { namespace detail {
 
-template< typename SourceType >
-class store_release_default_fun
+struct store_release_default_impl
 {
-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
+  template< typename TargetType, typename SourceType >
+  void execute( TargetType& target, SourceType& source )
   {
-    return static_cast< typename remove_cv< TargetType >::type >( source_m );
+    assign< release >( target, source );
   }
-private:
-  SourceType& source_m;
 };
 
+} } } }
+
+#elif BOOST_ACT_INTERLOCKED_HAS( store, sequential )
+
+#include <boost/act/interlocked/store/store_sequential.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
 struct store_release_default_impl
 {
   template< typename TargetType, typename SourceType >
-  static typename remove_cv< TargetType >::type
-  execute( TargetType& target, SourceType& source )
+  static void execute( TargetType& target
+                     , SourceType const& source
+                     )
   {
-    return modify< release >( target
-                            , store_release_default_fun< SourceType >( source )
-                            );
+    interlocked::store< sequential >( target, source );
   }
 };
 
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/store/detail/store_sequential_default
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/store/detail/store_sequential_default	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,59 @@
+/*=============================================================================
+    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_STORE_DETAIL_STORE_SEQUENTIAL_DEFAULT_IMPL_HPP
+#define BOOST_ACT_INTERLOCKED_STORE_DETAIL_STORE_SEQUENTIAL_DEFAULT_IMPL_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+// ToDo: Possibly prefer memory barrier
+#if BOOST_ACT_INTERLOCKED_HAS( assign, sequential )
+
+#include <boost/act/interlocked/assign/assign_sequential.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct store_sequential_default_impl
+{
+  template< typename TargetType, typename SourceType >
+  void execute( TargetType& target, SourceType& source )
+  {
+    return assign< sequential >( target, source );
+  }
+};
+
+} } } }
+
+#else
+
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/always.hpp>
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct store_sequential_default_impl
+{
+  template< typename TargetType, typename SourceType >
+  static void execute( TargetType&, SourceType& )
+  {
+    BOOST_MPL_ASSERT_MSG
+    (
+      ( mpl::apply< mpl::always< mpl::false_ >, TargetType >::type::value )
+    , NO_DEFAULT_INTERLOCKED_STORE_SEQUENTIAL_IMPLEMENTATION_FOR_THIS_SYSTEM
+    , ()
+    );
+  }
+};
+
+} } } }
+
+#endif
+
+#endif
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/store/detail/store_unordered_default
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/store/detail/store_unordered_default	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/store/detail/store_unordered_default	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -29,10 +29,26 @@
 
 } } } }
 
-#else // Else: Custom interlocked store for this system (no default)
+#elif BOOST_ACT_INTERLOCKED_HAS( assign, unordered )
+
+#include <boost/act/interlocked/assign/assign_unordered.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+struct store_unordered_default_impl
+{
+  template< typename TargetType, typename SourceType >
+  void execute( TargetType& target, SourceType& source )
+  {
+    assign< unordered >( target, source );
+  }
+};
+
+} } } }
+
+#else
 
 #include <boost/act/interlocked/store/store_release.hpp>
-#include <boost/type_traits/remove_cv.hpp>
 
 namespace boost { namespace act { namespace interlocked { namespace detail {
 
@@ -42,7 +58,7 @@
   static typename remove_cv< TargetType >::type execute( TargetType& target )
   {
     // ToDo: Look ahead for store_release_support and produce error here
-    return interlocked::store< release >( target );
+    interlocked::store< release >( target );
   }
 };
 
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/detail/subtract_assign_sequential_default
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/detail/subtract_assign_sequential_default	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,19 @@
+/*=============================================================================
+    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_SUB_ASSIGN_DETAIL_SUB_ASSIGN_SEQ_DEFAULT_HPP
+#define BOOST_ACT_INTERLOCKED_SUB_ASSIGN_DETAIL_SUB_ASSIGN_SEQ_DEFAULT_HPP
+
+#include <boost/act/interlocked/detail/binary_default.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_DEFAULT_INFO                       \
+( subtract_assign, sequential, - )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_DEFAULT()
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_sequential.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_sequential.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,25 @@
+/*=============================================================================
+    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_SUBTRACT_ASSIGN_SUBTRACT_ASSIGN_SEQ_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_SUBTRACT_ASSIGN_SEQ_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+#if BOOST_ACT_INTERLOCKED_HAS( subtract_assign, sequential )
+
+#include <boost/act/interlocked/detail/binary_forwarder.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_INFO                     \
+( subtract_assign, sequential, -, additive )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER()
+
+#endif
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_sequential_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_sequential_fwd.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,25 @@
+/*=============================================================================
+    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_SUBTRACT_ASSIGN_SUBTRACT_ASSIGN_SEQ_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_SUBTRACT_ASSIGN_SEQ_FWD_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+#if BOOST_ACT_INTERLOCKED_HAS( subtract_assign, sequential )
+
+#include <boost/act/interlocked/detail/binary_forwarder_fwd.hpp>
+
+#define BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD_INFO                 \
+( subtract_assign, sequential, additive )
+
+#include BOOST_ACT_INTERLOCKED_DETAIL_BINARY_FORWARDER_FWD()
+
+#endif
+
+#endif
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_thread_unsafe.hpp
==============================================================================
Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/subtract_assign/subtract_assign_thread_unsafe_fwd.hpp
==============================================================================
Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked_fwd.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked_fwd.hpp	(original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked_fwd.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -13,14 +13,19 @@
 #include <boost/act/interlocked/assign_if_was_fwd.hpp>
 #include <boost/act/interlocked/bitand_assign_fwd.hpp>
 #include <boost/act/interlocked/bitor_assign_fwd.hpp>
+#include <boost/act/interlocked/compiler_cage_fwd.hpp>
+#include <boost/act/interlocked/compiler_fence_fwd.hpp>
 #include <boost/act/interlocked/decrement_fwd.hpp>
 #include <boost/act/interlocked/divide_assign_fwd.hpp>
 #include <boost/act/interlocked/increment_fwd.hpp>
 #include <boost/act/interlocked/integer_fwd.hpp>
 #include <boost/act/interlocked/load_fwd.hpp>
 #include <boost/act/interlocked/lshift_assign_fwd.hpp>
+#include <boost/act/interlocked/memory_cage_fwd.hpp>
+#include <boost/act/interlocked/memory_fence_fwd.hpp>
 #include <boost/act/interlocked/modify_fwd.hpp>
 #include <boost/act/interlocked/multiply_assign_fwd.hpp>
+#include <boost/act/interlocked/negate_assign_fwd.hpp>
 #include <boost/act/interlocked/rshift_assign_fwd.hpp>
 #include <boost/act/interlocked/semantics_fwd.hpp>
 #include <boost/act/interlocked/store_fwd.hpp>
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-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -15,38 +15,45 @@
 ]
 
 [template concept[ name ] [^[name]]]
+[template model[ name ] [^[*[name]]]]
 [template tablenote[ body ] ['Note: [body] --end note]]
 
 [def __alert__              [$images/alert.png]]
 [def __note__               [$images/note.png]]
 [def __OpenMP__             [@http://www.OpenMP.org OpenMP]]
 
-[def __consumer_policy__             [link boost_act.concepts.consumer_concepts.consumer_policy       [concept Consumer Policy]]]
-[def __consumer__                    [link boost_act.concepts.consumer_concepts.consumer              [concept Consumer]]]
-[def __queue_policy__                [link boost_act.concepts.queue_concepts.queue_policy             [concept Queue Policy]]]
-[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 __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 __consumer_policy__             [link boost_act.concepts.consumer_concepts.consumer_policy                          [concept Consumer Policy]]]
+[def __consumer__                    [link boost_act.concepts.consumer_concepts.consumer                                 [concept Consumer]]]
+[def __queue_policy__                [link boost_act.concepts.queue_concepts.queue_policy                                [concept Queue Policy]]]
+[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_fence__           [link boost_act.interlocked.interlocked_concepts.interlocked_fence                  [concept Interlocked Fence]]]
+[def __interlocked_fences__          [link boost_act.interlocked.interlocked_concepts.interlocked_fence                  [concept Interlocked Fences]]]
+[def __interlocked_operation__       [link boost_act.interlocked.interlocked_concepts.interlocked_operation              [concept Interlocked Operation]]]
+[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_fence_models__    [link boost_act.interlocked.interlocked_fence_models                                [concept Interlocked Fence 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]]]
-[def __threaded_worker__             [link boost_act.concepts.threaded_worker                         [concept Threaded Worker]]]
+[def __interlocked_memory_cage__     [link boost_act.interlocked.interlocked_cage_models.interlocked_memory_cage         [model Interlocked Memory Cage]]]
+[def __interlocked_memory_cages__    [link boost_act.interlocked.interlocked_cage_models.interlocked_memory_cage         [model Interlocked Memory Cages]]]
+[def __interlocked_compiler_cage__   [link boost_act.interlocked.interlocked_cage_models.interlocked_compiler_cage       [model Interlocked Compiler Cage]]]
+[def __interlocked_compiler_cages__  [link boost_act.interlocked.interlocked_cage_models.interlocked_compiler_cage       [model Interlocked Compiler Cages]]]
+[def __interlocked_memory_fence__    [link boost_act.interlocked.interlocked_fence_models.interlocked_memory_fence       [model Interlocked Memory Fence]]]
+[def __interlocked_memory_fences__   [link boost_act.interlocked.interlocked_fence_models.interlocked_memory_fence       [model Interlocked Memory Fences]]]
+[def __interlocked_compiler_fence__  [link boost_act.interlocked.interlocked_fence_models.interlocked_compiler_fence     [model Interlocked Compiler Fence]]]
+[def __interlocked_compiler_fences__ [link boost_act.interlocked.interlocked_fence_models.interlocked_compiler_fence     [model Interlocked Compiler Fence]]]
+[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]]]
+[def __threaded_worker__             [link boost_act.concepts.threaded_worker                                            [concept Threaded Worker]]]
 
 [include beta_warning.qbk]
-[include brief_description.qbk]
-[include introduction.qbk]
-[include compiler_setup.qbk]
 [include interlocked.qbk]
 [include rationale.qbk]
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-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -1,11 +1,9 @@
 index.html
 boost_act/beta_warning.html
-boost_act/brief_description.html
-boost_act/introduction.html
-boost_act/compiler_setup.html
 boost_act/interlocked.html
 boost_act/interlocked/interlocked_concepts.html
 boost_act/interlocked/interlocked_concepts/interlocked_operation.html
+boost_act/interlocked/interlocked_concepts/interlocked_fence.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
@@ -13,6 +11,9 @@
 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_fence_models.html
+boost_act/interlocked/interlocked_fence_models/interlocked_memory_fence.html
+boost_act/interlocked/interlocked_fence_models/interlocked_compiler_fence.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
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/beta_warning.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/beta_warning.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/beta_warning.html	2007-07-14 04:46:15 EDT (Sat, 14 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>Beta Warning</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="../index.html" title="Boost.Act" /><link rel="prev" href="../index.html" title="Boost.Act" /><link rel="next" href="brief_description.html" title="Brief Description" /><script type="text/javascript" src="../../../doc/javascript/main.js"></script>
+  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Beta Warning</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="../index.html" title="Boost.Act" /><link rel="prev" href="../index.html" title="Boost.Act" /><link rel="next" href="interlocked.html" title="Interlocked" /><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="brief_description.html">
+        <a accesskey="n" href="interlocked.html">
           <div class="next-icon"></div>
         </a>
       </div>
@@ -143,7 +143,7 @@
         </a>
       </div>
       <div class="spirit-nav-icon">
-        <a accesskey="n" href="brief_description.html">
+        <a accesskey="n" href="interlocked.html">
           <div class="next-icon"></div>
         </a>
       </div>
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-14 04:46:15 EDT (Sat, 14 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="id390176"></a>
+            <h4><a id="id390162"></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="id390247"></a>
+              <a id="id390233"></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="id388496"></a>
+            <h4><a id="id388482"></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="id388556"></a>
+            <h4><a id="id388542"></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="id388610"></a>
+            <h4><a id="id388596"></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-14 04:46:15 EDT (Sat, 14 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</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="../index.html" title="Boost.Act" /><link rel="prev" href="compiler_setup.html" title="Compiler Setup" /><link rel="next" href="interlocked/interlocked_concepts.html" title="Interlocked Concepts" /><script type="text/javascript" src="../../../doc/javascript/main.js"></script>
+  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked</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="../index.html" title="Boost.Act" /><link rel="prev" href="beta_warning.html" title="Beta Warning" /><link rel="next" href="interlocked/interlocked_concepts.html" title="Interlocked Concepts" /><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="compiler_setup.html">
+        <a accesskey="p" href="beta_warning.html">
           <div class="prev-icon"></div>
         </a>
       </div>
@@ -110,6 +110,12 @@
                         </dt>
                         <dt>
                           <span class="section">
+                            <a href="interlocked/interlocked_concepts/interlocked_fence.html">Interlocked
+        Fence</a>
+                          </span>
+                        </dt>
+                        <dt>
+                          <span class="section">
                             <a href="interlocked/interlocked_concepts/interlocked_cage.html">Interlocked
         Cage</a>
                           </span>
@@ -154,6 +160,28 @@
                     </dt>
                     <dt>
                       <span class="section">
+                        <a href="interlocked/interlocked_fence_models.html">Interlocked
+      Fence Models</a>
+                      </span>
+                    </dt>
+                    <dd>
+                      <dl>
+                        <dt>
+                          <span class="section">
+                            <a href="interlocked/interlocked_fence_models/interlocked_memory_fence.html">Interlocked
+        Memory Fence</a>
+                          </span>
+                        </dt>
+                        <dt>
+                          <span class="section">
+                            <a href="interlocked/interlocked_fence_models/interlocked_compiler_fence.html">Interlocked
+        Compiler Fence</a>
+                          </span>
+                        </dt>
+                      </dl>
+                    </dd>
+                    <dt>
+                      <span class="section">
                         <a href="interlocked/interlocked_cage_models.html">Interlocked
       Cage Models</a>
                       </span>
@@ -232,7 +260,7 @@
     </div>
     <div class="spirit-nav">
       <div class="spirit-nav-icon">
-        <a accesskey="p" href="compiler_setup.html">
+        <a accesskey="p" href="beta_warning.html">
           <div class="prev-icon"></div>
         </a>
       </div>
Modified: 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.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models.html	2007-07-14 04:46:15 EDT (Sat, 14 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 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>
+  <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_fence_models/interlocked_compiler_fence.html" title="Interlocked Compiler Fence" /><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,
@@ -56,7 +56,7 @@
     </div>
     <div class="spirit-nav">
       <div class="spirit-nav-icon">
-        <a accesskey="p" href="interlocked_semantic_models.html">
+        <a accesskey="p" href="interlocked_fence_models/interlocked_compiler_fence.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_semantic_models.html">
+        <a accesskey="p" href="interlocked_fence_models/interlocked_compiler_fence.html">
           <div class="prev-icon"></div>
         </a>
       </div>
Modified: 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_compiler_cage.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models/interlocked_compiler_cage.html	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -118,7 +118,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_cage_models.interlocked_compiler_cage.description"></a>
-            <h6><a id="id467284"></a>
+            <h6><a id="id467243"></a>
           <a href="interlocked_compiler_cage.html#boost_act.interlocked.interlocked_cage_models.interlocked_compiler_cage.description">Description</a>
         </h6>
             <p>
@@ -128,7 +128,7 @@
           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>
+            <h6><a id="id467294"></a>
           <a href="interlocked_compiler_cage.html#boost_act.interlocked.interlocked_cage_models.interlocked_compiler_cage.model_of">Model
           of</a>
         </h6>
@@ -141,7 +141,7 @@
               </ul>
             </div>
             <a id="boost_act.interlocked.interlocked_cage_models.interlocked_compiler_cage.example"></a>
-            <h6><a id="id467387"></a>
+            <h6><a id="id467346"></a>
           <a href="interlocked_compiler_cage.html#boost_act.interlocked.interlocked_cage_models.interlocked_compiler_cage.example">Example</a>
         </h6>
             <p>
Modified: 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_cage_models/interlocked_memory_cage.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models/interlocked_memory_cage.html	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -118,24 +118,50 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_cage_models.interlocked_memory_cage.description"></a>
-            <h6><a id="id466283"></a>
+            <h6><a id="id466230"></a>
           <a href="interlocked_memory_cage.html#boost_act.interlocked.interlocked_cage_models.interlocked_memory_cage.description">Description</a>
         </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.
+          of operations with respect to other threads of execution.
         </p>
+            <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 most cases, you should avoid explicit cages and should instead favor
+              the use of <a href="../interlocked_concepts/interlocked_operation.html" title="Interlocked Operation">
+              <code class="literal">Interlocked Operations</code></a> with proper semantics
+              as they may allow for more optimized code generation and are generally
+              less prone to error.
+            </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.model_of"></a>
-            <h6><a id="id466351"></a>
+            <h6><a id="id466310"></a>
           <a href="interlocked_memory_cage.html#boost_act.interlocked.interlocked_cage_models.interlocked_memory_cage.model_of">Model
           of</a>
         </h6>
@@ -148,7 +174,7 @@
               </ul>
             </div>
             <a id="boost_act.interlocked.interlocked_cage_models.interlocked_memory_cage.example"></a>
-            <h6><a id="id466401"></a>
+            <h6><a id="id466360"></a>
           <a href="interlocked_memory_cage.html#boost_act.interlocked.interlocked_cage_models.interlocked_memory_cage.example">Example</a>
         </h6>
             <p>
@@ -160,10 +186,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
-                  <div class="style-switcher-box" id="id466427">
+                  <div class="style-switcher-box" id="id466385">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id466427',
+             'id466385',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/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-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -103,6 +103,12 @@
                     </dt>
                     <dt>
                       <span class="section">
+                        <a href="interlocked_concepts/interlocked_fence.html">Interlocked
+        Fence</a>
+                      </span>
+                    </dt>
+                    <dt>
+                      <span class="section">
                         <a href="interlocked_concepts/interlocked_cage.html">Interlocked
         Cage</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-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.description"></a>
-            <h6><a id="id460794"></a>
+            <h6><a id="id460373"></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="id461004"></a>
+            <h6><a id="id460583"></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="id461053"></a>
+            <h6><a id="id460631"></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="id461268"></a>
+              <a id="id460841"></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="id461882"></a>
+            <h6><a id="id461448"></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="id461904">
+                  <div class="style-switcher-box" id="id461469">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id461904',
+             'id461469',
              '../../../../../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="id462785"></a>
+            <h6><a id="id462350"></a>
           <a href="interlocked_arithmetic_type.html#boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.example">Example</a>
         </h6>
             <p>
Modified: 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_cage.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_cage.html	2007-07-14 04:46:15 EDT (Sat, 14 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 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>
+  <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_fence.html" title="Interlocked Fence" /><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,
@@ -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_fence.html">
           <div class="prev-icon"></div>
         </a>
       </div>
@@ -89,19 +89,17 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_cage.description"></a>
-            <h6><a id="id456351"></a>
+            <h6><a id="id455779"></a>
           <a href="interlocked_cage.html#boost_act.interlocked.interlocked_concepts.interlocked_cage.description">Description</a>
         </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.
+          are types which manage the order of read and write operations with respect
+          to construction and destruction of the cage. Semantics 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>
+            <h6><a id="id455822"></a>
           <a href="interlocked_cage.html#boost_act.interlocked.interlocked_concepts.interlocked_cage.concept_of">Concept
           of</a>
         </h6>
@@ -109,11 +107,11 @@
               <ul>
                 <li>
                   <a href="../interlocked_cage_models/interlocked_memory_cage.html" title="Interlocked Memory Cage">
-            <code class="literal">Interlocked Memory Cage</code></a>
+            <code class="literal"><span class="bold"><strong>Interlocked Memory Cage</strong></span></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>
+            <code class="literal"><span class="bold"><strong>Interlocked Compiler Cage</strong></span></code></a>
                 </li>
               </ul>
             </div>
@@ -157,7 +155,7 @@
                 <dt>
                   <span class="term">
                     <code class="computeroutput">
-                      <span class="identifier">B</span>
+                      <span class="identifier">C</span>
                     </code>
                   </span>
                 </dt>
@@ -168,22 +166,22 @@
                 <dt>
                   <span class="term">
                     <code class="computeroutput">
-                      <span class="identifier">b</span>
+                      <span class="identifier">c</span>
                     </code>
                   </span>
                 </dt>
                 <dd>
-            An object of type <code class="computeroutput"><span class="identifier">B</span><span class="special">&</span></code>.
+            An object of type <code class="computeroutput"><span class="identifier">C</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>
+            <h6><a id="id456064"></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>
+              <a id="id456082"></a>
               <p class="title">
                 <b>Table 3. Interlocked Operation Requirements</b>
               </p>
@@ -248,12 +246,12 @@
                     <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>
+                <code class="computeroutput"><span class="identifier">c</span><span class="special">.~</span><span class="identifier">C</span><span class="special">()</span></code>
               </p>
               </td>
                       <td>
               <p>
-                Destroys the cage <code class="computeroutput"><span class="identifier">b</span></code>.
+                Destroys the cage <code class="computeroutput"><span class="identifier">c</span></code>.
               </p>
               </td>
                     </tr>
@@ -269,7 +267,7 @@
     </div>
     <div class="spirit-nav">
       <div class="spirit-nav-icon">
-        <a accesskey="p" href="interlocked_operation.html">
+        <a accesskey="p" href="interlocked_fence.html">
           <div class="prev-icon"></div>
         </a>
       </div>
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_fence.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_fence.html	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,261 @@
+<?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 Fence</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_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,
+            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_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_concepts.interlocked_fence"></a><a href="interlocked_fence.html" title="Interlocked Fence">Interlocked
+        Fence</a></h4>
+                </div>
+              </div>
+            </div>
+            <a id="boost_act.interlocked.interlocked_concepts.interlocked_fence.description"></a>
+            <h6><a id="id455407"></a>
+          Description
+        </h6>
+            <p>
+          An <code class="literal">Interlocked Fence</code> is a template whose instantiations
+          are functions which, when called, imply memory and/or compiler barriers
+          to guarantee order and visibility of unordered or partially ordered operations
+          relative to the call-site. Semantics may be specified by the programmer
+          at compile-time via explicit template arguments.
+        </p>
+            <a id="boost_act.interlocked.interlocked_concepts.interlocked_fence.concept_of"></a>
+            <h6><a id="id455457"></a>
+          <a href="interlocked_fence.html#boost_act.interlocked.interlocked_concepts.interlocked_fence.concept_of">Concept
+          of</a>
+        </h6>
+            <div class="itemizedlist">
+              <ul>
+                <li>
+                  <a href="../interlocked_fence_models/interlocked_memory_fence.html" title="Interlocked Memory Fence">
+            <code class="literal"><span class="bold"><strong>Interlocked Memory Fence</strong></span></code></a>
+                </li>
+                <li>
+                  <a href="../interlocked_fence_models/interlocked_compiler_fence.html" title="Interlocked Compiler Fence">
+            <code class="literal"><span class="bold"><strong>Interlocked Compiler Fence</strong></span></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 Fence</code>.
+          </dd>
+                <dt>
+                  <span class="term">
+                    <code class="computeroutput">
+                      <span class="identifier">S</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>
+              </dl>
+            </div>
+            <a id="boost_act.interlocked.interlocked_concepts.interlocked_fence.expression_requirements"></a>
+            <h6><a id="id455599"></a>
+          <a href="interlocked_fence.html#boost_act.interlocked.interlocked_concepts.interlocked_fence.expression_requirements">Expression
+          Requirements</a>
+        </h6>
+            <div class="table">
+              <a id="id455618"></a>
+              <p class="title">
+                <b>Table 2. 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>
+                Creates a fence with 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">S</span><span class="special">>()</span></code>
+              </p>
+              </td>
+                      <td>
+              <p>
+                Creates a fence with the specified semantics.
+              </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_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/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-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_integer_type.description"></a>
-            <h6><a id="id462840"></a>
+            <h6><a id="id462406"></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="id463060"></a>
+            <h6><a id="id462624"></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="id463108"></a>
+            <h6><a id="id462672"></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="id463325"></a>
+              <a id="id462890"></a>
               <p class="title">
                 <b>Table 7. Interlocked Integer Type Requirements</b>
               </p>
@@ -341,7 +341,7 @@
             </div>
             <br class="table-break" />
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_integer_type.headers"></a>
-            <h6><a id="id463964"></a>
+            <h6><a id="id463529"></a>
           <a href="interlocked_integer_type.html#boost_act.interlocked.interlocked_concepts.interlocked_integer_type.headers">Headers</a>
         </h6>
             <div class="programlisting">
@@ -350,10 +350,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
-                  <div class="style-switcher-box" id="id463983">
+                  <div class="style-switcher-box" id="id463548">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id463983',
+             'id463548',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -393,7 +393,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_integer_type.example"></a>
-            <h6><a id="id464991"></a>
+            <h6><a id="id464556"></a>
           <a href="interlocked_integer_type.html#boost_act.interlocked.interlocked_concepts.interlocked_integer_type.example">Example</a>
         </h6>
             <p>
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-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_natural_type.description"></a>
-            <h6><a id="id458925"></a>
+            <h6><a id="id458358"></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="id459324"></a>
+            <h6><a id="id458757"></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="id459371"></a>
+            <h6><a id="id458803"></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="id459571"></a>
+              <a id="id459003"></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="id459931"></a>
+            <h6><a id="id459363"></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="id459952">
+                  <div class="style-switcher-box" id="id459385">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id459952',
+             'id459385',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -353,10 +353,12 @@
 
 <span class="comment">// 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">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">assign</span><span class="special">/</span><span class="identifier">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">assign</span><span class="special">/</span><span class="identifier">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">assign</span><span class="special">/</span><span class="identifier">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">assign</span><span class="special">/</span><span class="identifier">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">assign</span><span class="special">/</span><span class="identifier">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">assign</span><span class="special">/</span><span class="identifier">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">assign</span><span class="special">/</span><span class="identifier">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">assign_fwd</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
@@ -377,7 +379,7 @@
             <p>
         </p>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_natural_type.example"></a>
-            <h6><a id="id460738"></a>
+            <h6><a id="id460316"></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-14 04:46:15 EDT (Sat, 14 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_cage.html" title="Interlocked Cage" /><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_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,
@@ -71,7 +71,7 @@
         </a>
       </div>
       <div class="spirit-nav-icon">
-        <a accesskey="n" href="interlocked_cage.html">
+        <a accesskey="n" href="interlocked_fence.html">
           <div class="next-icon"></div>
         </a>
       </div>
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_operation.description"></a>
-            <h6><a id="id455480"></a>
+            <h6><a id="id388710"></a>
           <a href="interlocked_operation.html#boost_act.interlocked.interlocked_concepts.interlocked_operation.description">Description</a>
         </h6>
             <p>
@@ -143,14 +143,14 @@
               </dl>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_operation.expression_requirements"></a>
-            <h6><a id="id455620"></a>
+            <h6><a id="id388850"></a>
           <a href="interlocked_operation.html#boost_act.interlocked.interlocked_concepts.interlocked_operation.expression_requirements">Expression
           Requirements</a>
         </h6>
             <div class="table">
-              <a id="id455638"></a>
+              <a id="id388869"></a>
               <p class="title">
-                <b>Table 2. Interlocked Operation Requirements</b>
+                <b>Table 1. Interlocked Operation Requirements</b>
               </p>
               <div class="table-contents">
                 <table class="table" summary="Interlocked Operation Requirements">
@@ -208,7 +208,7 @@
             </div>
             <br class="table-break" />
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_operation.example"></a>
-            <h6><a id="id455770"></a>
+            <h6><a id="id390218"></a>
           <a href="interlocked_operation.html#boost_act.interlocked.interlocked_concepts.interlocked_operation.example">Example</a>
         </h6>
             <p>
@@ -229,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="id455814">
+                  <div class="style-switcher-box" id="id390262">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id455814',
+             'id390262',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -314,7 +314,7 @@
         </a>
       </div>
       <div class="spirit-nav-icon">
-        <a accesskey="n" href="interlocked_cage.html">
+        <a accesskey="n" href="interlocked_fence.html">
           <div class="next-icon"></div>
         </a>
       </div>
Modified: 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_concepts/interlocked_semantic_type.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_semantic_type.html	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_semantic_type.description"></a>
-            <h6><a id="id456944"></a>
+            <h6><a id="id456376"></a>
           <a href="interlocked_semantic_type.html#boost_act.interlocked.interlocked_concepts.interlocked_semantic_type.description">Description</a>
         </h6>
             <p>
@@ -99,7 +99,7 @@
           <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>
+            <h6><a id="id456445"></a>
           <a href="interlocked_semantic_type.html#boost_act.interlocked.interlocked_concepts.interlocked_semantic_type.concept_of">Concept
           of</a>
         </h6>
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-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_type.description"></a>
-            <h6><a id="id457086"></a>
+            <h6><a id="id456519"></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="id457369"></a>
+            <h6><a id="id456802"></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="id457567"></a>
+              <a id="id457000"></a>
               <p class="title">
                 <b>Table 4. Interlocked Type Requirements</b>
               </p>
@@ -282,7 +282,7 @@
             </div>
             <br class="table-break" />
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_type.headers"></a>
-            <h6><a id="id457843"></a>
+            <h6><a id="id457276"></a>
           <a href="interlocked_type.html#boost_act.interlocked.interlocked_concepts.interlocked_type.headers">Headers</a>
         </h6>
             <p>
@@ -294,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="id457865">
+                  <div class="style-switcher-box" id="id457298">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id457865',
+             'id457298',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -339,7 +339,7 @@
             <p>
         </p>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_type.example"></a>
-            <h6><a id="id458869"></a>
+            <h6><a id="id458301"></a>
           <a href="interlocked_type.html#boost_act.interlocked.interlocked_concepts.interlocked_type.example">Example</a>
         </h6>
             <p>
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_fence_models.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_fence_models.html	2007-07-14 04:46:15 EDT (Sat, 14 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 Fence 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_fence_models/interlocked_memory_fence.html" title="Interlocked Memory 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_fence_models/interlocked_memory_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_fence_models"></a><a href="interlocked_fence_models.html" title="Interlocked Fence Models">Interlocked
+      Fence 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_fence_models/interlocked_memory_fence.html">Interlocked
+        Memory Fence</a>
+                      </span>
+                    </dt>
+                    <dt>
+                      <span class="section">
+                        <a href="interlocked_fence_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_fence_models/interlocked_memory_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_fence_models/interlocked_compiler_fence.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_fence_models/interlocked_compiler_fence.html	2007-07-14 04:46:15 EDT (Sat, 14 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 Fence</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_fence_models.html" title="Interlocked Fence Models" /><link rel="prev" href="interlocked_memory_fence.html" title="Interlocked Memory Fence" /><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_memory_fence.html">
+          <div class="prev-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="u" href="../interlocked_fence_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_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>
+                  <h4 class="title"><a id="boost_act.interlocked.interlocked_fence_models.interlocked_compiler_fence"></a><a href="interlocked_compiler_fence.html" title="Interlocked Compiler Fence">Interlocked
+        Compiler Fence</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_fence_models.interlocked_compiler_fence.description"></a>
+            <h6><a id="id466039"></a>
+          Description
+        </h6>
+            <p>
+          An <a href="../interlocked_concepts/interlocked_fence.html" title="Interlocked Fence">
+          <code class="literal">Interlocked Fence</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_fence_models.interlocked_compiler_fence.model_of"></a>
+            <h6><a id="id466090"></a>
+          <a href="interlocked_compiler_fence.html#boost_act.interlocked.interlocked_fence_models.interlocked_compiler_fence.model_of">Model
+          of</a>
+        </h6>
+            <div class="itemizedlist">
+              <ul>
+                <li>
+                  <a href="../interlocked_concepts/interlocked_fence.html" title="Interlocked Fence">
+            <code class="literal">Interlocked Fence</code></a>
+                </li>
+              </ul>
+            </div>
+            <a id="boost_act.interlocked.interlocked_fence_models.interlocked_compiler_fence.example"></a>
+            <h6><a id="id466141"></a>
+          Example
+        </h6>
+            <p>
+          ToDo: Make an example
+        </p>
+          </div>
+        </div>
+        <div class="clear"></div>
+      </div>
+    </div>
+    <div class="spirit-nav">
+      <div class="spirit-nav-icon">
+        <a accesskey="p" href="interlocked_memory_fence.html">
+          <div class="prev-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="u" href="../interlocked_fence_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_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>
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_fence_models/interlocked_memory_fence.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_fence_models/interlocked_memory_fence.html	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,210 @@
+<?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 Fence</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_fence_models.html" title="Interlocked Fence Models" /><link rel="prev" href="../interlocked_fence_models.html" title="Interlocked Fence Models" /><link rel="next" href="interlocked_compiler_fence.html" title="Interlocked Compiler 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_fence_models.html">
+          <div class="prev-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="u" href="../interlocked_fence_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_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>
+                  <h4 class="title"><a id="boost_act.interlocked.interlocked_fence_models.interlocked_memory_fence"></a><a href="interlocked_memory_fence.html" title="Interlocked Memory Fence">Interlocked
+        Memory Fence</a></h4>
+                </div>
+              </div>
+            </div>
+            <a id="boost_act.interlocked.interlocked_fence_models.interlocked_memory_fence.description"></a>
+            <h6><a id="id465824"></a>
+          Description
+        </h6>
+            <p>
+          An <a href="../interlocked_concepts/interlocked_fence.html" title="Interlocked Fence">
+          <code class="literal">Interlocked Fence</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.
+        </p>
+            <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 most cases, you should avoid explicit fences and should instead
+              favor the use of <a href="../interlocked_concepts/interlocked_operation.html" title="Interlocked Operation">
+              <code class="literal">Interlocked Operations</code></a> with proper semantics
+              or <a href="../interlocked_cage_models/interlocked_memory_cage.html" title="Interlocked Memory Cage">
+              <code class="literal"><span class="bold"><strong>Interlocked Memory Cages</strong></span></code></a>
+              as they may allow for more optimized code generation and are generally
+              less prone to error.
+            </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_fence_models.interlocked_memory_fence.model_of"></a>
+            <h6><a id="id465921"></a>
+          <a href="interlocked_memory_fence.html#boost_act.interlocked.interlocked_fence_models.interlocked_memory_fence.model_of">Model
+          of</a>
+        </h6>
+            <div class="itemizedlist">
+              <ul>
+                <li>
+                  <a href="../interlocked_concepts/interlocked_fence.html" title="Interlocked Fence">
+            <code class="literal">Interlocked Fence</code></a>
+                </li>
+              </ul>
+            </div>
+            <a id="boost_act.interlocked.interlocked_fence_models.interlocked_memory_fence.example"></a>
+            <h6><a id="id465973"></a>
+          Example
+        </h6>
+            <p>
+          ToDo: Make an example
+        </p>
+          </div>
+        </div>
+        <div class="clear"></div>
+      </div>
+    </div>
+    <div class="spirit-nav">
+      <div class="spirit-nav-icon">
+        <a accesskey="p" href="../interlocked_fence_models.html">
+          <div class="prev-icon"></div>
+        </a>
+      </div>
+      <div class="spirit-nav-icon">
+        <a accesskey="u" href="../interlocked_fence_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_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>
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-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.description"></a>
-            <h6><a id="id468184"></a>
+            <h6><a id="id468142"></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="id468290"></a>
+            <h6><a id="id468248"></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="id468312">
+                  <div class="style-switcher-box" id="id468271">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id468312',
+             'id468271',
              '../../../../../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="id468476"></a>
+            <h6><a id="id468435"></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="id468496">
+                  <div class="style-switcher-box" id="id468455">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id468496',
+             'id468455',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -211,7 +211,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.model_of"></a>
-            <h6><a id="id469278"></a>
+            <h6><a id="id469237"></a>
           <a href="interlocked_integer_metafunctions.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.model_of">Model
           of</a>
         </h6>
@@ -281,12 +281,12 @@
               </dl>
             </div>
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.expression_semantics"></a>
-            <h6><a id="id469491"></a>
+            <h6><a id="id469450"></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="id469510"></a>
+              <a id="id469470"></a>
               <p class="title">
                 <b>Table 9. Interlocked Integer Metafunction Requirements</b>
               </p>
@@ -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="id470420"></a>
+            <h6><a id="id470381"></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-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.description"></a>
-            <h6><a id="id467470"></a>
+            <h6><a id="id467428"></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="id467520"></a>
+            <h6><a id="id467478"></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="id467540">
+                  <div class="style-switcher-box" id="id467499">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id467540',
+             'id467499',
              '../../../../../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="id467692"></a>
+            <h6><a id="id467651"></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="id467712">
+                  <div class="style-switcher-box" id="id467670">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id467712',
+             'id467670',
              '../../../../../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="id468076"></a>
+            <h6><a id="id468035"></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="id468125"></a>
+            <h6><a id="id468083"></a>
           <a href="interlocked_integer_typedefs.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.example">Example</a>
         </h6>
             <p>
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_semantic_models.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_semantic_models.html	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_semantic_models.html	2007-07-14 04:46:15 EDT (Sat, 14 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 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>
+  <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_fence_models.html" title="Interlocked Fence 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_cage_models.html">
+        <a accesskey="n" href="interlocked_fence_models.html">
           <div class="next-icon"></div>
         </a>
       </div>
@@ -88,47 +88,19 @@
                 </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>
+            <h5><a id="id464610"></a>
         <a href="interlocked_semantic_models.html#boost_act.interlocked.interlocked_semantic_models.description">Description</a>
       </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>_.
+        <code class="literal">Interlocked Operations</code></a>, <a href="interlocked_concepts/interlocked_cage.html" title="Interlocked Cage">
+        <code class="literal">Interlocked Cages</code></a>, and <a href="interlocked_concepts/interlocked_fence.html" title="Interlocked Fence">
+        <code class="literal">Interlocked Fences</code></a>.
       </p>
             <a id="boost_act.interlocked.interlocked_semantic_models.model_of"></a>
-            <h5><a id="id465148"></a>
+            <h5><a id="id464700"></a>
         <a href="interlocked_semantic_models.html#boost_act.interlocked.interlocked_semantic_models.model_of">Model
         of</a>
       </h5>
@@ -170,7 +142,7 @@
               </div>
             </div>
             <div class="table">
-              <a id="id465203"></a>
+              <a id="id464755"></a>
               <p class="title">
                 <b>Table 8. Semantic Types</b>
               </p>
@@ -333,7 +305,7 @@
             </div>
             <br class="table-break" />
             <a id="boost_act.interlocked.interlocked_semantic_models.headers"></a>
-            <h5><a id="id465553"></a>
+            <h5><a id="id465105"></a>
         <a href="interlocked_semantic_models.html#boost_act.interlocked.interlocked_semantic_models.headers">Headers</a>
       </h5>
             <p>
@@ -353,10 +325,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
-                  <div class="style-switcher-box" id="id465598">
+                  <div class="style-switcher-box" id="id465150">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id465598',
+             'id465150',
              '../../../../doc/style/html/syntax.xml',
              '../../../../doc/style/html'
           );
@@ -384,7 +356,7 @@
             <p>
       </p>
             <a id="boost_act.interlocked.interlocked_semantic_models.example"></a>
-            <h5><a id="id466197"></a>
+            <h5><a id="id465750"></a>
         <a href="interlocked_semantic_models.html#boost_act.interlocked.interlocked_semantic_models.example">Example</a>
       </h5>
             <p>
@@ -412,7 +384,7 @@
         </a>
       </div>
       <div class="spirit-nav-icon">
-        <a accesskey="n" href="interlocked_cage_models.html">
+        <a accesskey="n" href="interlocked_fence_models.html">
           <div class="next-icon"></div>
         </a>
       </div>
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-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_support.checking_support.description"></a>
-            <h6><a id="id470497"></a>
+            <h6><a id="id470457"></a>
           <a href="checking_support.html#boost_act.interlocked.interlocked_support.checking_support.description">Description</a>
         </h6>
             <p>
@@ -135,12 +135,12 @@
               </dl>
             </div>
             <a id="boost_act.interlocked.interlocked_support.checking_support.expression_requirements"></a>
-            <h6><a id="id470651"></a>
+            <h6><a id="id470611"></a>
           <a href="checking_support.html#boost_act.interlocked.interlocked_support.checking_support.expression_requirements">Expression
           Requirements</a>
         </h6>
             <div class="table">
-              <a id="id470670"></a>
+              <a id="id470630"></a>
               <p class="title">
                 <b>Table 10. Interlocked Operation Requirements</b>
               </p>
@@ -185,7 +185,7 @@
             </div>
             <br class="table-break" />
             <a id="boost_act.interlocked.interlocked_support.checking_support.headers"></a>
-            <h6><a id="id470804"></a>
+            <h6><a id="id470765"></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="id470825">
+                  <div class="style-switcher-box" id="id470785">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
-             'id470825',
+             'id470785',
              '../../../../../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="id470933"></a>
+            <h6><a id="id470894"></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-14 04:46:15 EDT (Sat, 14 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>Introduction</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="../index.html" title="Boost.Act" /><link rel="prev" href="brief_description.html" title="Brief Description" /><link rel="next" href="compiler_setup.html" title="Compiler Setup" /><script type="text/javascript" src="../../../doc/javascript/main.js"></script>
+  <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Introduction</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="../index.html" title="Boost.Act" /><link rel="prev" href="beta_warning.html" title="Beta Warning" /><link rel="next" href="interlocked.html" title="Interlocked" /><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="brief_description.html">
+        <a accesskey="p" href="beta_warning.html">
           <div class="prev-icon"></div>
         </a>
       </div>
@@ -71,7 +71,7 @@
         </a>
       </div>
       <div class="spirit-nav-icon">
-        <a accesskey="n" href="compiler_setup.html">
+        <a accesskey="n" href="interlocked.html">
           <div class="next-icon"></div>
         </a>
       </div>
@@ -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="id388718"></a>
+            <h4><a id="id388699"></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="id388778"></a>
+            <h4><a id="id388764"></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="id388825"></a>
+            <h4><a id="id388811"></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="id388850"></a>
+            <h4><a id="id388836"></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="id390131"></a>
+            <h4><a id="id390117"></a>
       <a href="introduction.html#boost_act.introduction.active_objects">Active Objects</a>
     </h4>
             <p>
@@ -199,7 +199,7 @@
     </div>
     <div class="spirit-nav">
       <div class="spirit-nav-icon">
-        <a accesskey="p" href="brief_description.html">
+        <a accesskey="p" href="beta_warning.html">
           <div class="prev-icon"></div>
         </a>
       </div>
@@ -214,7 +214,7 @@
         </a>
       </div>
       <div class="spirit-nav-icon">
-        <a accesskey="n" href="compiler_setup.html">
+        <a accesskey="n" href="interlocked.html">
           <div class="next-icon"></div>
         </a>
       </div>
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-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -88,111 +88,42 @@
       decisions.
     </p>
             <a id="boost_act.rationale.interlocked_operation_names"></a>
-            <h4><a id="id471168"></a>
+            <h4><a id="id471129"></a>
       <a href="rationale.html#boost_act.rationale.interlocked_operation_names">Interlocked
       Operation Names</a>
     </h4>
             <p>
-      Those familiar with lock-free programming may have noticed that the "swap"
-      and "compare-and-swap" operations are named <code class="computeroutput"><span class="identifier">assign</span></code>
-      and <code class="computeroutput"><span class="identifier">assign_if_was</span></code> in <code class="literal">Boost.Act</code>
-      respectively. This was done for several reasons. Firstly, the term "swap"
-      already has a meaning in standard C++, and that is to swap the values of two
-      objects in memory. The "swap" operation when refering to lock-free
-      programming means to set the value of a variable and yield the old value. Rather
-      than keep this conflict in terms, it was decided that the term "assign"
-      was a more accurate name, since the operation is just an assignment which returns
-      the old value rather than a reference to the modified object.
+      Those familiar with lock-free programming may have noticed that the traditional
+      "swap" and "compare-and-swap" operations are named <code class="computeroutput"><span class="identifier">assign</span></code> and <code class="computeroutput"><span class="identifier">assign_if_was</span></code>
+      in <code class="literal">Boost.Act</code> respectively. This was done for several reasons.
+      Firstly, the term "swap" already has a meaning in standard C++, and
+      that is to swap the values of two objects in memory. The "swap" operation
+      when refering to lock-free programming means to set the value of a variable
+      and yield the old value. Note that this is very different from an atomic std::swap.
+      Rather than keep this conflict in terms, it was decided that the term "assign"
+      was a more accurate name, despite the fact that it is generally refered to
+      as "swap," since the operation is actually just an atomic assignment
+      which returns the old value rather than a reference to the modified object.
     </p>
             <p>
       Similarly, the "swap" in "compare-and-swap" is not the
-      traditional C++ "swap." What's more is, the name "compare-and-swap"
+      traditional C++ "swap" and is again more of an assignment operation
+      which just yields the old value. What's more is, the name "compare-and-swap"
       does not give a very clear order of arguments, and indeed, different implementations
       often choose varying orders of those arguments. <code class="computeroutput"><span class="identifier">assign_if_was</span></code>,
       on the other hand, has an argument order which can be determined much less
-      ambiguously from its name.
+      ambiguously from its name and the operation that is implied is much more clear
+      from the name.
     </p>
             <p>
       There are still some down-sides to the name choice, and that is that <code class="computeroutput"><span class="identifier">assign</span></code> and <code class="computeroutput"><span class="identifier">assign_if_was</span></code>,
       along with the other <code class="literal">Interlocked Operations</code>, return the
       old value of the object being modified, whereas in C++ a reference to the object
-      is generally returned (from which you may obtain the new value). For this reason,
-      there was a short period where the <code class="literal">Interlocked Operations</code>
-      all yielded objects with member functions <code class="computeroutput"><span class="identifier">old_value</span><span class="special">()</span></code> and <code class="computeroutput"><span class="identifier">new_value</span><span class="special">()</span></code> to make it very unlikely that the user assumes
-      the wrong meaning when reading or writing code. Problems with this approach
-      were that the object, which now had to contain both the old value and the argument
-      to the function call or the old value and the new value, was not completely
-      optimized away in at least one commonly used compiler, which is a problem considering
-      the primary use of such functions is for efficiency. As well, the need to call
-      <code class="computeroutput"><span class="identifier">old_value</span><span class="special">()</span></code>
-      and <code class="computeroutput"><span class="identifier">new_value</span><span class="special">()</span></code>
-      when accessing the result of the call made trivial code overly verbous. If
-      there are any objections, I would be glad to consider changing the library
-      around, especially if you have a desirable alternative.
-    </p>
-            <a id="boost_act.rationale.policy_based_design"></a>
-            <h4><a id="id471368"></a>
-      Policy-Based Design
-    </h4>
-            <p>
-      Boost.Act offers programmers customizability through two kinds of policies
-      which control algorithm execution and active qualification implementation.
-      These policies allow one to adjust whether algorithms run in parallel when
-      possible or always serially, and allow one to adjust whether active types create
-      their own thread or operate in the master thread. Default policies used can
-      be overriden at a global level or individually at points of instantiation.
-      The reason this may be considered controversial is that some may argue that
-      the use of policies here adds needless complexity at little gain. <span class="emphasis"><em>In
-      short, why not just use the STL in cases where algorithms need to be run serially
-      and why not just not use active objects in places where you do not need your
-      object to exist in its own thread?</em></span>
-    </p>
-            <p>
-      The reasons for choosing policies stem mostly from the fact that they provide
-      an easy way to switch execution models for arbitrary amounts of code with very
-      few changes to the code using the library. Reasons one may wish to switch policies
-      at the call-site range from reasons of optimization to reasons of debugging.
-      In terms of optimization, using active objects and parallel algorithms may
-      have a negative impact on performance in single-core systems, therefore the
-      ability to toggle the execution model by merely changing the default policy
-      used allows a programmer to target both single-core and multicore processors
-      by simply rebuilding after changing the policy being used. In theory, using
-      policies which target single-core sytems can be optimized to the same code
-      as a project which avoided the abstraction entirely.
-    </p>
-            <p>
-      As an example of switching policies for debugging, single-threaded algorithms
-      can often be more simple to debug than multi-threaded algorithms. If a bug
-      is narrowed down to a single algorithm which runs in parallel, one may easily
-      switch execution for that call to be serial, making it much easier to step
-      through in order to find the problem. This also helps in figuring out if certain
-      unwanted behavior is being caused by multi-threading issues or if there is
-      a more simple logical problem which exists at a higher-level in the algorithm's
-      design.
-    </p>
-            <a id="boost_act.rationale.actions_vs__futures"></a>
-            <h4><a id="id471720"></a>
-      Actions vs. Futures
-    </h4>
-            <p>
-      Another fairly controversial design decision is the absence of futures, or
-      at least futures as they are commonly known. Rather than returning futures
-      from asynchronous function calls and function calls queued on active objects,
-      <code class="literal">actions</code> are yielded which represent the running function
-      and provide an indirect interface to an instance of the active qualified form
-      of the return type. This choice was made for a variety of reasons. First and
-      foremost, this allows a programmer to work with the results of such function
-      calls without losing concurrency by default, as functions upon them are queued
-      rather than performed immediately after implicitly or explicitly forcing the
-      function to complete. The traditional blocking form of futures, while can potentially
-      be implemented in such a way that is [slightly] more optimized for single-core
-      processors, implies an unnecessary loss of concurrency and becomes less efficient
-      if multiple cores are available. Still, the traditional behavior of futures
-      can be forced through actions by simply copying the active result to an active-unqualified
-      form of the result type using <code class="literal">inactive_value</code>, forcing a
-      wait for the function to complete. This gives actions of Boost.Act a superset
-      of the functionality provided by futures meaning that those who wish to use
-      actions in a future-like manner may do so.
+      is generally returned (from which you may obtain the new value). Because of
+      this, in future releases the names may be changed to have the traditional "fetch<span class="underline">and</span>" prefix, or possibly the return type will
+      just be changed to an object with an "old_value()" member function,
+      such that the function name itself is not verbous, and you only have to be
+      explicit when you require the return value.
     </p>
           </div>
         </div>
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-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -109,21 +109,6 @@
                     </dt>
                     <dt>
                       <span class="section">
-                        Brief Description
-                      </span>
-                    </dt>
-                    <dt>
-                      <span class="section">
-                        Introduction
-                      </span>
-                    </dt>
-                    <dt>
-                      <span class="section">
-                        Compiler Setup
-                      </span>
-                    </dt>
-                    <dt>
-                      <span class="section">
                         <a href="boost_act/interlocked.html">Interlocked</a>
                       </span>
                     </dt>
@@ -145,6 +130,12 @@
                             </dt>
                             <dt>
                               <span class="section">
+                                <a href="boost_act/interlocked/interlocked_concepts/interlocked_fence.html">Interlocked
+        Fence</a>
+                              </span>
+                            </dt>
+                            <dt>
+                              <span class="section">
                                 <a href="boost_act/interlocked/interlocked_concepts/interlocked_cage.html">Interlocked
         Cage</a>
                               </span>
@@ -189,6 +180,28 @@
                         </dt>
                         <dt>
                           <span class="section">
+                            <a href="boost_act/interlocked/interlocked_fence_models.html">Interlocked
+      Fence Models</a>
+                          </span>
+                        </dt>
+                        <dd>
+                          <dl>
+                            <dt>
+                              <span class="section">
+                                <a href="boost_act/interlocked/interlocked_fence_models/interlocked_memory_fence.html">Interlocked
+        Memory Fence</a>
+                              </span>
+                            </dt>
+                            <dt>
+                              <span class="section">
+                                <a href="boost_act/interlocked/interlocked_fence_models/interlocked_compiler_fence.html">Interlocked
+        Compiler Fence</a>
+                              </span>
+                            </dt>
+                          </dl>
+                        </dd>
+                        <dt>
+                          <span class="section">
                             <a href="boost_act/interlocked/interlocked_cage_models.html">Interlocked
       Cage Models</a>
                           </span>
@@ -281,7 +294,7 @@
     </div>
     <div id="footer">
       <div id="footer-left">
-        <div id="revised">Revised: July 12, 2007 at 00:15:27 GMT</div>
+        <div id="revised">Revised: July 14, 2007 at 07:34:26 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-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -2,6 +2,7 @@
 
 [include interlocked/concepts.qbk]
 [include interlocked/interlocked_semantic_models.qbk]
+[include interlocked/interlocked_fence_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-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -1,6 +1,7 @@
 [section Interlocked Concepts]
 
 [include concepts/interlocked_operation.qbk]
+[include concepts/interlocked_fence.qbk]
 [include concepts/interlocked_cage.qbk]
 [include concepts/interlocked_semantic_type.qbk]
 [include concepts/interlocked_type.qbk]
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_cage.qbk
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_cage.qbk	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_cage.qbk	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -3,10 +3,9 @@
 [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.
+manage the order of read and write operations with respect to construction and
+destruction of the cage. Semantics may be specified by the programmer at
+compile-time via explicit template arguments.
 
 [heading Concept of]
 
@@ -17,10 +16,10 @@
 [[[~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
+[[`C`]              [A type which is an instantiation of `name` with or without
                      additional /cv-qualification/.
                     ]                                                          ]
-[[`b`]              [An object of type `B&`.]                                  ]
+[[`c`]              [An object of type `C&`.]                                  ]
 ]
 
 [heading Expression Requirements]
@@ -37,7 +36,7 @@
                                            semantic requirements of `S1` which
                                            are not already specified by `S2`.
                                           ]                                    ]
-[[`b.~B()`]                               [Destroys the cage `b`.]          ]
+[[`c.~C()`]                               [Destroys the cage `c`.]          ]
 ]
 
 [endsect]
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_fence.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_fence.qbk	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,33 @@
+[section Interlocked Fence]
+
+[heading Description]
+
+An [concept Interlocked Fence] is a template whose instantiations are functions
+which, when called, imply memory and/or compiler barriers to guarantee order and
+visibility of unordered or partially ordered operations relative to the
+call-site. Semantics may be specified by the programmer at compile-time via
+explicit template arguments.
+
+[heading Concept of]
+
+* __interlocked_memory_fence__
+* __interlocked_compiler_fence__
+
+[variablelist Notation
+[[[~name]]          [An [concept Interlocked Fence].]                          ]
+[[`S`]              [An __interlocked_semantic_type__.]                        ]
+]
+
+[heading Expression Requirements]
+
+[table Interlocked Operation Requirements
+[[Expression]                             [Pre/Post-Condition]                 ]
+[[`name()`]                               [Creates a fence with default
+                                           semantics (`sequential`).
+                                          ]                                    ]
+[[`name<S>()`]                            [Creates a fence with the specified
+                                           semantics.
+                                          ]                                    ]
+]
+
+[endsect]
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_natural_type.qbk
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_natural_type.qbk	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_natural_type.qbk	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -55,10 +55,12 @@
   
   // assign headers.
   #include <boost/act/interlocked/assign.hpp>
+  #include <boost/act/interlocked/assign/assign_thread_unsafe.hpp>
+  #include <boost/act/interlocked/assign/assign_unordered.hpp>
   #include <boost/act/interlocked/assign/assign_acquire.hpp>
   #include <boost/act/interlocked/assign/assign_release.hpp>
   #include <boost/act/interlocked/assign/assign_acq_rel.hpp>
-  #include <boost/act/interlocked/assign/assign_unordered.hpp>
+  #include <boost/act/interlocked/assign/assign_sequential.hpp>
   
   // Forward declarations.
   #include <boost/act/interlocked/assign_fwd.hpp>
Modified: 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_cage_models/interlocked_memory_cage.qbk	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_cage_models/interlocked_memory_cage.qbk	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -6,14 +6,12 @@
 
 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.
+with respect to other threads of execution.
+
+[note In most cases, you should avoid explicit cages and should instead favor
+ the use of __interlocked_operations__ with proper semantics as they may allow
+ for more optimized code generation and are generally less prone to error.
+]
 
 [heading Model of]
 
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_fence_models.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_fence_models.qbk	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,6 @@
+[section Interlocked Fence Models]
+
+[include interlocked_fence_models/interlocked_memory_fence.qbk]
+[include interlocked_fence_models/interlocked_compiler_fence.qbk]
+
+[endsect]
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_fence_models/interlocked_compiler_fence.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_fence_models/interlocked_compiler_fence.qbk	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,19 @@
+[section Interlocked Compiler Fence]
+
+[important The features described on this page are not yet implemented.]
+
+[heading Description]
+
+An __interlocked_fence__ 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_fence__
+
+[heading Example]
+
+ToDo: Make an example
+
+[endsect]
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_fence_models/interlocked_memory_fence.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_fence_models/interlocked_memory_fence.qbk	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -0,0 +1,23 @@
+[section Interlocked Memory Fence]
+
+[heading Description]
+
+An __interlocked_fence__ 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.
+
+[note In most cases, you should avoid explicit fences and should instead favor
+ the use of __interlocked_operations__ with proper semantics or
+ __interlocked_memory_cages__ as they may allow for more optimized code
+ generation and are generally less prone to error.
+]
+
+[heading Model of]
+
+* __interlocked_fence__
+
+[heading Example]
+
+ToDo: Make an example
+
+[endsect]
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_semantic_models.qbk
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_semantic_models.qbk	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_semantic_models.qbk	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -1,13 +1,10 @@
 [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__.
+use with __interlocked_operations__, __interlocked_cages__, and
+__interlocked_fences__.
 
 [heading Model of]
 
Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/rationale.qbk
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/rationale.qbk	(original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/rationale.qbk	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
@@ -6,38 +6,37 @@
 
 [heading Interlocked Operation Names]
 
-Those familiar with lock-free programming may have noticed that the
+Those familiar with lock-free programming may have noticed that the traditional
 "swap" and "compare-and-swap" operations are named `assign` and `assign_if_was`
 in =Boost.Act= respectively. This was done for several reasons. Firstly, the
 term "swap" already has a meaning in standard C++, and that is to swap the
 values of two objects in memory. The "swap" operation when refering to lock-free
-programming means to set the value of a variable and yield the old value. Rather
-than keep this conflict in terms, it was decided that the term "assign" was a
-more accurate name, since the operation is just an assignment which returns the
-old value rather than a reference to the modified object. 
+programming means to set the value of a variable and yield the old value. Note
+that this is very different from an atomic std::swap. Rather than keep this
+conflict in terms, it was decided that the term "assign" was a more accurate
+name, despite the fact that it is generally refered to as "swap," since the
+operation is actually just an atomic assignment which returns the old value
+rather than a reference to the modified object. 
 
-Similarly, the "swap" in "compare-and-swap" is not the traditional C++ "swap."
+Similarly, the "swap" in "compare-and-swap" is not the traditional C++ "swap"
+and is again more of an assignment operation which just yields the old value.
 What's more is, the name "compare-and-swap" does not give a very clear order of
 arguments, and indeed, different implementations often choose varying orders of
 those arguments. `assign_if_was`, on the other hand, has an argument order which
-can be determined much less ambiguously from its name.
+can be determined much less ambiguously from its name and the operation that is
+implied is much more clear from the name.
 
 There are still some down-sides to the name choice, and that is that `assign`
 and `assign_if_was`, along with the other [concept Interlocked Operations],
 return the old value of the object being modified, whereas in C++ a reference to
-the object is generally returned (from which you may obtain the new value). For
-this reason, there was a short period where the [concept Interlocked Operations]
-all yielded objects with member functions `old_value()` and `new_value()` to
-make it very unlikely that the user assumes the wrong meaning when reading or
-writing code. Problems with this approach were that the object, which now had to
-contain both the old value and the argument to the function call or the old
-value and the new value, was not completely optimized away in at least one
-commonly used compiler, which is a problem considering the primary use of such
-functions is for efficiency. As well, the need to call `old_value()` and
-`new_value()` when accessing the result of the call made trivial code overly
-verbous. If there are any objections, I would be glad to consider changing the
-library around, especially if you have a desirable alternative.
+the object is generally returned (from which you may obtain the new value).
+Because of this, in future releases the names may be changed to have the
+traditional "fetch_and_" prefix, or possibly the return type will just be
+changed to an object with an "old_value()" member function, such that the
+function name itself is not verbous, and you only have to be explicit when you
+require the return value.
 
+[/
 [heading Policy-Based Design]
 
 Boost.Act offers programmers customizability through two kinds of policies which
@@ -93,5 +92,5 @@
 wait for the function to complete. This gives actions of Boost.Act a superset of
 the functionality provided by futures meaning that those who wish to use actions
 in a future-like manner may do so.
-
+]
 [endsect]
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_sequential.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_sequential.cpp	2007-07-14 04:46:15 EDT (Sat, 14 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 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_sequential.cpp"
Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_thread_unsafe.h
==============================================================================
Deleted: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/cstdatomic.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/cstdatomic.hpp	2007-07-14 04:46:15 EDT (Sat, 14 Jul 2007)
+++ (empty file)
@@ -1,564 +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_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